зеркало из https://github.com/nextcloud/text.git
1 строка
590 KiB
Plaintext
1 строка
590 KiB
Plaintext
{"version":3,"file":"editor.js?v=e9ff85556fa394ef0109","mappings":";mUAwBO,MAAMA,EAASC,OAAO,iBAChBC,EAAOD,OAAO,eACdE,EAAsBF,OAAO,uBAC7BG,EAAYH,OAAO,oBACnBI,EAAYJ,OAAO,oBACnBK,EAAiBL,OAAO,yBACxBM,EAAoBN,OAAO,4BAC3BO,EAAeP,OAAO,gBACtBQ,EAAgBR,OAAO,iBACvBS,EAAsBT,OAAO,uBAC7BU,EAAsBV,OAAO,uBAE7BW,EAAiB,CAC7BC,OAAQ,CACPC,QAAS,CAAEC,KAAMf,EAAQgB,QAAS,QAIvBC,EAAsB,CAClCJ,OAAQ,CACPK,aAAc,CAAEH,KAAMP,EAAcQ,QAAS,QAIlCG,EAAmB,CAC/BN,OAAQ,CACPO,UAAW,CAAEL,KAAMV,EAAWW,SAAS,KAI5BK,EAA0B,CACtCR,OAAQ,CACPS,iBAAkB,CAAEP,KAAMR,EAAmBS,SAAS,KAI3CO,EAAuB,CACnCV,OAAQ,CACPW,cAAe,CAAET,KAAMT,EAAgBU,SAAS,KAIrCS,EAAmB,CAC/BZ,OAAQ,CACPa,UAAW,CAAEX,KAAMX,EAAWY,SAAS,KAI5BW,EAAe,CAC3Bd,OAAQ,CACPe,MAAO,CACNb,KAAMb,EACNc,QAASA,KAAA,CACRa,OAAQ,EACRC,aAAc,KACdC,SAAU,UAMDC,EAAwB,CACpCnB,OAAQ,CACPoB,oBAAqB,CACpBlB,KAAMZ,EACNa,QAAS,CACRkB,QAAQC,IACPC,EAAAA,EAAOC,KAAK,gFACL,CAACF,QAMAG,EAAkB,CAC9BzB,OAAQ,CACP0B,cAAe,CACdxB,KAAMN,EACNO,SAAS,oDCpGZ,SAAewB,WAAAA,iBAAgB,CAC9BC,KAAIA,KACI,CAENC,gBAAiB,EACjBC,QAAS,KAGXC,SAAU,CACTC,cAAAA,GACC,OAAOC,KAAKH,OACb,GAEDI,MAAO,CACNF,cAAAA,GACCC,KAAKE,WAAU,KAAM,IAAAC,GAChBH,KAAKJ,gBAAkBI,KAAKD,eAAeK,QAAmD,QAA7CD,EAAIH,KAAKD,eAAeC,KAAKJ,wBAAgB,IAAAO,GAAzCA,EAA2CE,WACnGL,KAAKM,kBACN,GAEF,GAEDC,QAAS,CAMRC,gBAAAA,CAAiBC,EAASC,GACzB,MAAMC,EAAQX,KAAKD,eAAea,WAAUC,IAAA,IAAC,IAAEC,GAAKD,EAAA,OAAKC,IAAQL,CAAO,IACxET,KAAKD,eAAeY,GAAON,SAAWK,GACxB,IAAVA,GAAmBV,KAAKJ,kBAAoBe,GAC/CX,KAAKE,WAAU,IAAMF,KAAKM,oBAE5B,EAIAA,gBAAAA,GAEC,MAAMS,EAASf,KAAKD,eAAeK,QAAUJ,KAAKgB,MAAMC,iBAAmB,EAAI,GAE/E,GACCjB,KAAKJ,iBAAmBI,KAAKJ,gBAAkB,GAAKmB,QAC5Cf,KAAKJ,gBAAkBI,KAAKD,eAAeK,QAAUJ,KAAKD,eAAeC,KAAKJ,iBAAiBS,SACzG,EAIAa,oBAAAA,GAEC,MAAMH,EAASf,KAAKD,eAAeK,QAAUJ,KAAKgB,MAAMC,iBAAmB,EAAI,GAE/E,EAAG,CACF,MAAMN,EAAQX,KAAKJ,gBAAkB,EACrCI,KAAKJ,iBAAoBe,EAAQI,EAAUA,GAAUA,CACtD,OAASf,KAAKJ,gBAAkBI,KAAKD,eAAeK,QAAUJ,KAAKD,eAAeC,KAAKJ,iBAAiBS,SACzG,EAMAc,uBAAAA,CAAwBC,GAOvB,GANkB,eAAdA,EAAMN,IACTd,KAAKM,mBACmB,cAAdc,EAAMN,KAChBd,KAAKkB,uBAGFlB,KAAKJ,kBAAoBI,KAAKD,eAAeK,OAAQ,KAAAiB,EAAAC,EAC7B,QAA3BD,EAAArB,KAAKgB,MAAMC,wBAAgB,IAAAI,GAAa,QAAbC,EAA3BD,EAA6BE,mBAAW,IAAAD,GAAxCA,EAAAE,KAAAH,EACD,KAAO,CAEU,IAAIrB,KAAKgB,MAAMS,aAAaC,MAAK,CAACC,EAAGC,IAAM5B,KAAKD,eAAea,WAAUiB,IAAA,IAAC,IAAEf,GAAKe,EAAA,OAAKf,IAAQa,EAAEG,OAAOnC,KAAKmB,GAAG,IAAId,KAAKD,eAAea,WAAUmB,IAAA,IAAC,IAAEjB,GAAKiB,EAAA,OAAKjB,IAAQc,EAAEE,OAAOnC,KAAKmB,GAAG,MAC/Ld,KAAKJ,iBAAiB2B,aAC/B,CACD,oDC7EF,MAAMjC,GAAS0C,WAAAA,MACbC,OAAO,QACPC,aACAC,uxBCsBF,MACMC,EAAiBC,EAAAA,QAAMC,QAAQ,uBAAsB,IAAAC,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAAAG,EAAA,IAAAH,QAAAI,EAAA,IAAAJ,QAAAK,EAAA,IAAAL,QAAAM,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAAAG,EAAA,IAAAH,QAAAI,EAAA,IAAAJ,QAE5C,MAAMK,EASpBC,WAAAA,CAAWxC,GAA0D,IAAzD,QAAEyC,EAAO,KAAEC,EAAI,WAAEC,EAAU,iBAAEC,EAAgB,OAAE1E,GAAQ8B,EAAA6C,EAAA,KAAAP,GAmFnEO,EAAA,KAAAR,GAAAQ,EAAA,KAAAT,GAAAS,EAAA,KAAAV,GAAAU,EAAA,KAAAZ,GAAAa,EAAA,KAAApB,EAAA,CAAAqB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAlB,EAAA,CAAAmB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAjB,EAAA,CAAAkB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAhB,EAAA,CAAAiB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAf,EAAA,CAAAgB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAd,EAAA,CAAAe,UAAA,EAAAC,WAAA,IAlFCC,EAAA9D,KAAIuC,EAAYe,GAChBQ,EAAA9D,KAAIyC,EAASc,GACbO,EAAA9D,KAAI0C,EAAec,GACnBM,EAAA9D,KAAI2C,EAAqBc,GACzBK,EAAA9D,KAAI4C,EAAe7D,QAAAA,EAAUuE,EAAQS,YACrCD,EAAA9D,KAAI6C,EAAAmB,EAA8BhE,KAAI8C,EAAAmB,GAAAzC,KAAJxB,MACnC,CAWA,aAAMZ,CAAQC,GAAsB,IAC/B6E,EADcC,IAAQC,UAAAhE,OAAA,QAAAiE,IAAAD,UAAA,KAAAA,UAAA,GAI1B,MAAME,EAAkB,wBACxB,GAAIjF,EAAIkF,MAAMD,GAAkB,CAC/B,MAAME,EAAgBC,mBAAmBpF,EAAIqF,QAAQJ,EAAiB,IAAIK,MAAM,KAAK,IAYrF,SATAC,EAAM5E,KAAI6C,GACVqB,EAAa9B,EAAeoC,GAExBL,IAAaD,UAEhBF,EAAMhE,KAAI8C,EAAAmB,GAAAzC,KAAJxB,MACNkE,EAAa9B,EAAeoC,IAGzBN,EACH,OAAOA,CAGT,CAGA,OAkEF,SAAqB7E,GACpB,OAAOA,EAAIwF,WAAW,YAClBxF,EAAIwF,WAAW,aACfxF,EAAIwF,WAAW,QACpB,CAtEMC,CAAYzF,GACR,CACN0F,SAAS,EACTC,KAAIhB,EAAEhE,KAAIgD,EAAAiC,GAAAzD,KAAJxB,KAAWX,GACjB6F,WAAY7F,EACZ8F,QAAS9F,GAKJ,CACN0F,SAAS,EACTC,KAAIhB,EAAEhE,KAAIgD,EAAAiC,GAAAzD,KAAJxB,KAAWX,GACjB6F,WAAUlB,EAAEhE,KAAIiD,EAAAmC,GAAA5D,KAAJxB,KAAaX,GACzB8F,QAAOnB,EAAEhE,KAAIiD,EAAAmC,GAAA5D,KAAJxB,KAAaX,GAExB,EA4CD,eAAA4E,IA7FE,OAtByBoB,EAsBA,CAAEtB,WAAUa,EAAE5E,KAAI4C,GAAcU,QAAOsB,EAAE5E,KAAIuC,GAAWiB,WAAUoB,EAAE5E,KAAI0C,IAtBhEL,EAAAA,QAAMiD,SAAS,yBAA0BD,GAAjDA,KAuB1B,CAAC,SAAAJ,EAkDK5F,GACL,OAAOA,EAAIsF,MAAM,KAAKY,KACvB,CAAC,SAAAH,EAEO/F,GACP,GAAAuF,EAAI5E,KAAIyC,GAAQ,CACf,MAAM+C,EAAMZ,EAAA5E,KAAIyC,GAAO+C,IACjBC,EAAUzB,EAAAhE,KAAImD,EAAAuC,GAAAlE,KAAJxB,KAAeX,GAAKsF,MAAM,KAAKgB,IAAIC,oBAAoBC,KAAK,KAC5E,OAAOC,EAAAA,EAAAA,GAAkB,aAADC,OAAcP,GAAGO,OAAGN,GAC7C,CAEA,MAAMO,EAAOhC,EAAAhE,KAAImD,EAAAuC,GAAAlE,KAAJxB,KAAeX,GAAKsF,MAAM,KACjCsB,EAAWD,EAAKT,MAChBW,EAAUF,EAAKH,KAAK,KAE1B,OAAOM,EAAAA,EAAAA,IAAY,sDAAuD,CACzEC,MAAKxB,EAAE5E,KAAI0C,GACXuD,WACAC,WAEF,CAAC,SAAAG,EAOahH,GACb,OAAOiH,UAAUjH,EAAIsF,MAAM,KAAK,GACjC,CAAC,SAAAe,EAESrG,GACT,MAAMkH,EAAI,CAAA3B,EACT5E,KAAI2C,GAAAqB,EACJhE,KAAIkD,EAAAmD,GAAA7E,KAAJxB,KAAmBX,IAClBwG,KAAK,KAEP,OAAOW,IAAcD,EACtB,k1BClHM,MAAME,UAA8BC,MAE1CrD,WAAAA,GAAkF,IAAtEsD,EAAOvC,UAAAhE,OAAA,QAAAiE,IAAAD,UAAA,GAAAA,UAAA,GAAG,kDAAiD,QAAAwC,EAAAxC,UAAAhE,OAAKyG,EAAI,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJF,EAAIE,EAAA,GAAA3C,UAAA2C,GAC/EC,MAAML,KAAYE,EACnB,EAEA,IAAAI,EAAA,IAAAzE,QAAA0E,EAAA,IAAAnE,QA0BA,SAAAoE,EALKC,GAEJ,OAAOC,EAAaD,IADDxC,EAAA5E,KAAIiH,GAAUzD,WAElC,CAAC,IAAA8D,EAAA,IAAA9E,QAAA+E,EAAA,IAAA/E,QAAAgF,EAAA,IAAAhF,QAAAiF,EAAA,IAAAjF,QAAAD,EAAA,IAAAC,QAAAkF,EAAA,IAAAlF,QAAAmF,EAAA,IAAAnF,QAAAoF,EAAA,IAAApF,QAAAqF,EAAA,IAAArF,QAAAsF,EAAA,IAAA/E,QAAAgF,EAAA,IAAAhF,QAIK,MAAMiF,EAWZ3E,WAAAA,CAAY4E,EAAUC,GAASxE,EAAA,KAAAqE,GAAArE,EAAA,KAAAoE,GAAAnE,EAAA,KAAAkE,EAAA,CAAAM,IAAAC,EAAAC,SAAA,IAAA1E,EAAA,KAAA2D,EAAA,CAAA1D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA4D,EAAA,CAAA3D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA6D,EAAA,CAAA5D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA8D,EAAA,CAAA7D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAApB,EAAA,CAAAqB,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA+D,EAAA,CAAA9D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAgE,EAAA,CAAA/D,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAiE,EAAA,CAAAhE,UAAA,EAAAC,WAAA,IAC9B,MAAM,SAAE5E,EAAQ,QAAEqE,EAAO,KAAEgF,EAAI,SAAEC,EAAQ,QAAEC,EAAO,cAAEC,GAAkBR,EAAStI,KAC/EmE,EAAA9D,KAAIyH,EAAaxI,GACjB6E,EAAA9D,KAAIuC,EAAYe,GAChBQ,EAAA9D,KAAI0H,EAASY,GACbxE,EAAA9D,KAAI2H,EAAaY,GACjBzE,EAAA9D,KAAIsH,EAAYkB,GAChB1E,EAAA9D,KAAIwH,EAAkBiB,GACtB3E,EAAA9D,KAAI4H,EAAYM,GAChBlI,KAAK0I,WAAaR,EAAQ1E,WAC1BxD,KAAK2I,QAAS,CACf,CAEA,WAAIrF,GACH,OAAAsB,EAAO5E,KAAIuC,EACZ,CAEA,YAAItD,GACH,OAAA2F,EAAO5E,KAAIyH,EACZ,CAEA,mBAAImB,GACH,OAAOhE,EAAA5E,KAAIwH,GAAkB5C,EAAA5E,KAAIyH,GAAWoB,iBAAmB,CAChE,CAEA,SAAInI,GACH,MAAO,CACNzB,SAAU,IAAE2F,EAAG5E,KAAIyH,GAAYc,SAAQ3D,EAAE5E,KAAI2H,IAC7CrE,QAAOsB,EAAE5E,KAAIuC,GACbuG,eAAgBlE,EAAA5E,KAAIsH,IAAa,GACjCmB,cAAa7D,EAAE5E,KAAIwH,GAErB,CAWAuB,IAAAA,CAAIlH,GAAc,IAAb,QAAEmH,GAASnH,EACf,OAAAmC,EAAOhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAIgE,EAAOhE,KAAI+H,EAAAmB,GAAA1H,KAAJxB,KAAI,WAAA+F,OAAiBnB,EAAA5E,KAAIyH,GAAW0B,GAAE,UAAU,IACjEvE,EAAG5E,KAAI6H,GACPuB,SAAUxE,EAAA5E,KAAI4H,GAAUwB,SACxBC,gBAAiBzE,EAAA5E,KAAIyH,GAAW4B,gBAChCL,WAEF,CAEAM,IAAAA,CAAIvH,GAAiE,IAAhE,QAAEiH,EAAO,gBAAEO,EAAe,cAAEd,EAAa,MAAEe,EAAK,WAAEC,GAAY1H,EAClE,OAAAiC,EAAOhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAIgE,EAAOhE,KAAI+H,EAAAmB,GAAA1H,KAAJxB,KAAI,WAAA+F,OAAiBnB,EAAA5E,KAAIyH,GAAW0B,GAAE,UAAU,IACjEvE,EAAG5E,KAAI6H,GACPuB,SAAUxE,EAAA5E,KAAI4H,GAAUwB,SACxBC,gBAAiBzE,EAAA5E,KAAIyH,GAAW4B,gBAChCL,UACAO,kBACAd,gBACAe,QACAC,cAEF,CAEAC,IAAAA,CAAIC,GAAgC,IAA/B,MAAEC,EAAK,QAAEZ,EAAO,UAAEa,GAAWF,EACjC,OAAA3F,EAAOhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAIgE,EAAOhE,KAAI+H,EAAAmB,GAAA1H,KAAJxB,KAAI,WAAA+F,OAAiBnB,EAAA5E,KAAIyH,GAAW0B,GAAE,UAAU,IACjEvE,EAAG5E,KAAI6H,GACPuB,SAAUxE,EAAA5E,KAAI4H,GAAUwB,SACxBC,gBAAiBzE,EAAA5E,KAAIyH,GAAW4B,gBAChCO,QACAZ,UACAa,aAEF,CAGAC,MAAAA,CAAOC,GACN,OAAO/F,EAAAhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAIgE,EAAOhE,KAAI+H,EAAAmB,GAAA1H,KAAJxB,KAAI,WAAA+F,OAAiBnB,EAAA5E,KAAIyH,GAAW0B,GAAE,aAAa,IACpEvE,EAAG5E,KAAI6H,GACPkC,cACEC,MAAKC,IAAc,IAAb,KAAEtK,GAAMsK,EAChBnG,EAAA9D,KAAIuC,EAAY5C,EAAI,GAEtB,CAEAuK,gBAAAA,CAAiBC,GAChB,MAAMC,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQH,GACxB,MAAMI,EAAMlD,EAAa,qBACtB,eAAiBzB,mBAAmBhB,EAAA5E,KAAIyH,GAAW0B,IACnD,cAAgBvD,mBAAmBhB,EAAA5E,KAAIuC,GAAU4G,IACjD,iBAAmBvD,mBAAmBhB,EAAA5E,KAAIuC,GAAU6D,OACpD,eAAiBR,mBAAmBhB,EAAA5E,KAAI4H,GAAUpE,YAAc,IACnE,OAAAQ,EAAOhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAWuK,EAAKH,EAAU,CAChCI,QAAS,CACR,eAAgB,wBAGnB,CAEAC,oBAAAA,CAAqBrB,GACpB,OAAApF,EAAOhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAWqH,EAAa,uBAAwB,CACtDtD,WAAYa,EAAA5E,KAAIyH,GAAW0B,GAC3BuB,UAAW9F,EAAA5E,KAAIuC,GAAU4G,GACzBwB,aAAc/F,EAAA5E,KAAIuC,GAAU6D,MAC5BgD,YAEF,CAEAwB,KAAAA,GACC,MAAMC,EAAO7G,EAAGhE,KAAI8H,EAAAmB,GAAAzH,KAAJxB,KAAIgE,EAAOhE,KAAI+H,EAAAmB,GAAA1H,KAAJxB,KAAI,WAAA+F,OAAiBnB,EAAA5E,KAAIyH,GAAW0B,GAAE,WAAAvE,EAAW5E,KAAI6H,IAEhF,OADA7H,KAAK2I,QAAS,EACPkC,CACR,CAGAC,kBAAAA,CAAmBzB,GAClBzE,EAAA5E,KAAIyH,GAAW4B,gBAAkBA,CAClC,EAgBD,SAAAjB,IApGE,MAAO,CACNrE,WAAYa,EAAA5E,KAAIyH,GAAW0B,GAC3BuB,UAAW9F,EAAA5E,KAAIuC,GAAU4G,GACzBwB,aAAc/F,EAAA5E,KAAIuC,GAAU6D,MAC5BA,MAAOxB,EAAA5E,KAAI4H,GAAUpE,WAEvB,CAAC,SAAAyF,IAiFA,OAAIjJ,KAAK2I,OACDoC,QAAQC,OAAO,IAAIvE,GAEpBwE,EAAAA,EAAMC,QAAK9G,UACnB,CAAC,SAAA8E,EAEI9B,GAEJ,OAAOC,EAAaD,IADDxC,EAAA5E,KAAI6H,GAAgBzB,MAExC,CASD,SAASiB,EAAaD,GAA4B,IAAlBsB,EAAQtE,UAAAhE,OAAA,QAAAiE,IAAAD,UAAA,IAAAA,UAAA,GACvC,MAAM+G,GAAWhF,EAAAA,EAAAA,IAAY,cAC7B,OAAIuC,EACI,GAAP3C,OAAUoF,EAAQ,YAAApF,OAAWqB,GAEvB,GAAPrB,OAAUoF,EAAQ,KAAApF,OAAIqB,EACvB,CAEA,QAzLA,MAIC/D,WAAAA,GAA0B,IAAd6E,EAAO9D,UAAAhE,OAAA,QAAAiE,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACV,EAAA,KAAAwD,GAAAvD,EAAA,KAAAsD,EAAA,CAAArD,UAAA,EAAAC,WAAA,IACvBC,EAAA9D,KAAIiH,EAAYiB,EACjB,CAEAkD,IAAAA,CAAIvK,GAA8B,IAA7B,OAAE9B,EAAM,gBAAEsK,GAAiBxI,EAC/B,OAAOoK,EAAAA,EAAMI,IAAGrH,EAAChE,KAAIkH,EAAAC,GAAA3F,KAAJxB,KAAI,WAAA+F,OAAiBhH,EAAM,YAAY,CACvDA,SACAsK,kBACAD,SAAUxE,EAAA5E,KAAIiH,GAAUmC,SACxBhD,MAAOxB,EAAA5E,KAAIiH,GAAUzD,WACrBuG,UAAWnF,EAAA5E,KAAIiH,GAAU8C,UACzBuB,cAAe1G,EAAA5E,KAAIiH,GAAUqE,gBAC3BtB,MAAK/B,GAAY,IAAID,EAAWC,EAAQrD,EAAE5E,KAAIiH,KAClD,uiBCYkE,IAAAsE,EAAA,IAAA/I,QAAAgJ,EAAA,IAAAhJ,QAAAiJ,EAAA,IAAAjJ,QAAAkJ,EAAA,IAAAlJ,QAAAmJ,EAAA,IAAAnJ,QAAAoJ,EAAA,IAAApJ,QAAAqJ,EAAA,IAAArJ,QAiKnE,QA/JA,MAaCa,WAAAA,CAAYyI,EAAaC,GAXzBpI,EAAA,KAAA4H,EAAA,CAAA3H,UAAA,EAAAC,WAAA,IAEAF,EAAA,KAAA6H,EAAA,CAAA5H,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA8H,EAAA,CAAA7H,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAA+H,EAAA,CAAA9H,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAgI,EAAA,CAAA/H,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAiI,EAAA,CAAAhI,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAkI,EAAA,CAAAjI,UAAA,EAAAC,WAAA,IAUCC,EAAA9D,KAAIuL,EAAgBO,GACpBhI,EAAA9D,KAAIwL,EAAeO,GACnBjI,EAAA9D,KAAI0L,EAjDiB,KAkDrB5H,EAAA9D,KAAI2L,EAAsB,GAC1B7H,EAAA9D,KAAIyL,EAAa,EAClB,CAEAO,OAAAA,GACKhM,KAAKiM,QAAU,EAClBC,QAAQC,MAAM,6CAGfrI,EAAA9D,KAAI6L,GAA2B,GAC/B7L,KAAKiM,QAAUG,YAAYpM,KAAKqM,YAAYC,KAAKtM,MAAO,IACxDf,SAASsN,iBAAiB,mBAAoBvM,KAAKwM,iBAAiBF,KAAKtM,OAC1E,CAKA,iBAAMqM,GACL,GAAAzH,EAAI5E,KAAI4L,GACP,OAGD,MAAMa,EAAMC,KAAKD,MAEb7H,EAAA5E,KAAIyL,GAAcgB,EAAG7H,EAAG5E,KAAI0L,KAI3B1L,KAAKiM,SAKVnI,EAAA9D,KAAI4L,GAAe,GAEnBtM,EAAAA,EAAOqN,MAAM,kCAAmC/H,EAAA5E,KAAIuL,GAAcvC,eAC5DpE,EAAA5E,KAAIwL,GAAazC,KAAK,CAC3BC,QAASpE,EAAA5E,KAAIuL,GAAcvC,UACzBgB,KAAKhK,KAAK4M,gBAAgBN,KAAKtM,MAAOA,KAAK6M,aAAaP,KAAKtM,OAChE8D,EAAA9D,KAAIyL,EAAaiB,KAAKD,OACtB3I,EAAA9D,KAAI4L,GAAe,IAXlBM,QAAQC,MAAM,6BAYhB,CAEAS,eAAAA,CAAe/L,GAAW,IAAV,KAAElB,GAAMkB,EACvB,MAAM,SAAE5B,EAAQ,SAAE6N,GAAanN,EAM/B,GALAmE,EAAA9D,KAAI2L,EAAsB,GAE1B/G,EAAA5E,KAAIuL,GAAcwB,KAAK,SAAU,CAAE9N,WAAU6N,aAC7ClI,EAAA5E,KAAIuL,GAAcyB,cAAcrN,GAEN,IAAtBA,EAAKiK,MAAMxJ,OAAc,CAI5B,GAHIwE,EAAC5E,KAAI6L,IACR/H,EAAA9D,KAAI6L,GAA2B,GAE5BjH,EAAA5E,KAAIuL,GAAc0B,YACrB,OAED,MAAMC,EAAaR,KAAKD,MA5EUU,IAoFlC,OAPcL,EAASM,QAAQC,GAAsB,IAAhBA,EAAEC,YAAqBJ,IAClD9M,OAAS,EAClBJ,KAAKuN,sBAELvN,KAAKwN,4BAEN5I,EAAA5E,KAAIuL,GAAcwB,KAAK,cAAe,CAAEU,gBAAgB,GAEzD,CAEA7I,EAAI5E,KAAI6L,IACP7L,KAAK0N,mBAEP,CAEAb,YAAAA,CAAac,GACkC,IAAAC,EAAAC,EAAzCF,EAAE1F,UAAuB,iBAAX0F,EAAEG,KAQY,MAAtBH,EAAE1F,SAAS8F,QAErB/N,KAAK4M,gBAAgBe,EAAE1F,UACvB3I,EAAAA,EAAO6M,MAAM,6CACbvH,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAC/BiB,KAAMC,GAAWC,gBACjBvO,KAAM,CACLwO,cAAeR,EAAE1F,SAAStI,KAAKwO,kBAGD,MAAtBR,EAAE1F,SAAS8F,QACrBnJ,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAAEiB,KAAMC,GAAWG,WAAYzO,KAAMgO,EAAE1F,WACvEjI,KAAKkN,cAC2B,MAAtBS,EAAE1F,SAAS8F,QAGW,MAAtBJ,EAAE1F,SAAS8F,QAFrBnJ,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAAEiB,KAAMC,GAAWI,iBAAkB1O,KAAM,CAAC,IAC5EK,KAAKkN,cAI2B,MAAtBS,EAAE1F,SAAS8F,QACrB/N,KAAKwN,uBACL5I,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAAEiB,KAAMC,GAAWK,kBAAmB3O,KAAM,CAAC,IAC7EL,EAAAA,EAAO6M,MAAM,mDAAoD,CAAEA,MAAOwB,MAE1E3N,KAAKkN,aACLtI,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAAEiB,KAAMC,GAAWK,kBAAmB3O,KAAM,CAAC,IAC7EL,EAAAA,EAAO6M,MAAM,4CAA6C,CAAEA,MAAOwB,MAjC/D7J,EAAA9D,KAAI2L,GAAAiC,EAAAhJ,EAAJ5E,KAAI2L,GAAAkC,EAAAD,IAAAA,IAAAC,GApGmB,GAqG1BvO,EAAAA,EAAO6M,MAAM,6FACbvH,EAAA5E,KAAIuL,GAAcwB,KAAK,QAAS,CAAEiB,KAAMC,GAAWK,kBAAmB3O,KAAM,CAAC,KAG7EL,EAAAA,EAAO6M,MAAM,wEAADpG,OAAAnB,EAAyE5E,KAAI2L,KA+B5F,CAEAuB,UAAAA,GACCqB,cAAcvO,KAAKiM,SACnBjM,KAAKiM,QAAU,EACfhN,SAASuP,oBAAoB,mBAAoBxO,KAAKwM,iBAAiBF,KAAKtM,MAC7E,CAEA0N,iBAAAA,GACC5J,EAAA9D,KAAI0L,EA1KiB,IA4KtB,CAEA8B,oBAAAA,GACC1J,EAAA9D,KAAI0L,EAAkB+C,KAAKC,IAA0B,EAAtB9J,EAAA5E,KAAI0L,GAxKV,KAyK1B,CAEA6B,mBAAAA,GACCzJ,EAAA9D,KAAI0L,EArK+B,IAsKpC,CAEAc,gBAAAA,GACkC,WAA7BvN,SAAS0P,gBACZ7K,EAAA9D,KAAI0L,EAlK0B,KAoK9B1L,KAAK0N,mBAEP,uiBCvLD,MAAMkB,EAAe,KASfC,GAAyB,GAEzBC,GAA+B,GAE/Bb,GAAa,CAKlBC,gBAAiB,EAIjBa,aAAc,EAEdX,WAAY,EAEZE,kBAAmB,EAEnBD,iBAAkB,GAClB,IAAAW,GAAA,IAAAxM,QAED,MAAMyM,GAIL5L,WAAAA,CAAWxC,GAA+D,IAA9D,gBAAEwI,EAAe,UAAE6F,EAAS,iBAAEC,KAAqBjH,GAASrH,EAoBvE,OApBuE8C,EAAA,KAAAqL,GAAA,CAAApL,UAAA,EAAAC,WAAA,IAEvE7D,KAAKoP,MAAOC,EAAAA,EAAAA,KAEZrP,KAAKkP,UAAYA,EACjBlP,KAAKmP,iBAAmBA,EACxBnP,KAAKsP,KAAO,IAAIC,EAAWrH,GAC3BlI,KAAK+L,WAAa,KAElB/L,KAAKwP,cAAgB,GAErBxP,KAAKyP,aAAe/C,KAAKD,MAEzBzM,KAAKgJ,QAAU,KACfhJ,KAAKqJ,gBAAkBA,EACvBrJ,KAAK0P,SAAU,EACf5L,EAAA9D,KAAIgP,GAAmB,MAEvBhP,KAAK2P,SAAWC,IAAS5P,KAAK6P,UAAUvD,KAAKtM,MA9CrB,KAgDjBA,IACR,CAEA,UAAMoL,CAAIvJ,GAA6B,IAA5B,OAAE9C,EAAM,eAAE+Q,GAAgBjO,EAEpC,MAAMmK,EAAU8D,EACb/E,QAAQ3L,QAAQ,IAAI4I,EAAW,CAAErI,KAAMmQ,GAAkB,CAAC,IAC1D9P,KAAKsP,KAAKlE,KAAK,CAAErM,SAAQsK,gBAAiBrJ,KAAKqJ,kBAC/C0G,OAAM5D,GAASnM,KAAKgQ,WAAW7D,KAElCnM,KAAK+L,iBAAmBC,EACnBhM,KAAK+L,aAIV/L,KAAKiQ,QAAU,IAAIC,EAAelQ,KAAMA,KAAK+L,YAC7C/L,KAAKgJ,QAAUhJ,KAAK+L,WAAWnD,gBAC/B5I,KAAKqJ,gBAAkBrJ,KAAK+L,WAAW9M,SAASoK,gBAChDrJ,KAAK+M,KAAK,SAAU,IAChB/M,KAAK+L,WAAWrL,MACnBsI,QAAShJ,KAAKgJ,UAEfhJ,KAAK+M,KAAK,SAAU,IAChB/M,KAAK+L,WAAWrL,MACnBsI,QAAShJ,KAAKgJ,UAEhB,CAEAmH,SAAAA,GACCnQ,KAAKiQ,QAAQjE,SACd,CAEAoE,MAAAA,GACCpQ,KAAKiQ,QAAQvC,mBACd,CAEAsC,UAAAA,CAAW7D,GACLA,EAAMlE,UAA2B,iBAAfkE,EAAM2B,KAG5B9N,KAAK+M,KAAK,QAAS,CAAEiB,KAAMC,GAAWG,WAAYzO,KAAMwM,EAAMlE,WAF9DjI,KAAK+M,KAAK,QAAS,CAAEiB,KAAMC,GAAWK,kBAAmB3O,KAAM,CAAC,GAIlE,CAEA0Q,aAAAA,CAActG,GACb,OAAK/J,KAAK+L,WAAWrD,SAGd1I,KAAK+L,WAAWjC,OAAOC,GAC5BgG,OAAO5D,IACP7M,EAAAA,EAAO6M,MAAM,+BAAgC,CAAEA,UACxCpB,QAAQC,OAAOmB,MALhBpB,QAAQC,OAAO,IAAItE,MAO5B,CAEA4J,SAAAA,CAAUC,GAET,IAAA3L,EAAI5E,KAAIgP,IAGR,OAAO,IAAIjE,SAAQ,CAAC3L,EAAS4L,KAC5BlH,EAAA9D,KAAIgP,GAAmB5C,aAAY,KAC9BpM,KAAK+L,aAAe/L,KAAK0P,SAC5B1P,KAAKwQ,aAAaD,GAAavG,KAAK5K,GAAS2Q,MAAM/E,EACpD,GACE,KAAI,GAET,CAEAwF,YAAAA,CAAaD,GACZvQ,KAAK0P,SAAU,EACfnB,cAAa3J,EAAC5E,KAAIgP,KAClBlL,EAAA9D,KAAIgP,GAAmB,MACvB,MAAMrP,EAAO4Q,IAIb,OAHI5Q,EAAKiK,MAAMxJ,OAAS,GACvBJ,KAAK+M,KAAK,cAAe,CAAE0D,OAAO,IAE5BzQ,KAAK+L,WAAWrC,KAAK/J,GAC1BqK,MAAM/B,IACNjI,KAAK0P,SAAU,EACf1P,KAAK+M,KAAK,OAAQ,CACjBnD,MAAO,GACP3K,SAAUe,KAAK+L,WAAW9M,SAC1B+J,QAAShJ,KAAKgJ,SACb,IACA+G,OAAMW,IACR,MAAM,SAAEzI,EAAQ,KAAE6F,GAAS4C,EAK3B,GAJA1Q,KAAK0P,SAAU,EACVzH,GAAqB,iBAAT6F,GAChB9N,KAAK+M,KAAK,QAAS,CAAEiB,KAAMC,GAAWK,kBAAmB3O,KAAM,CAAC,IAExC,OAArBsI,aAAQ,EAARA,EAAU8F,QACb/N,KAAK+M,KAAK,QAAS,CAAEiB,KAAMC,GAAWG,WAAYzO,KAAMsI,SAClD,GAAyB,OAArBA,aAAQ,EAARA,EAAU8F,QAAgB,KAAA4C,EAC/BhR,EAAKV,UAETK,EAAAA,EAAO6M,MAAM,8CAGY,QAAtBwE,EAAA1I,EAAStI,KAAKV,gBAAQ,IAAA0R,OAAA,EAAtBA,EAAwBC,kBAAmB5Q,KAAKgJ,UACnDhJ,KAAK+M,KAAK,QAAS,CAAEiB,KAAMC,GAAWc,aAAcpP,KAAM,CAAC,IAC3DkR,GAAGC,aAAaC,cAAc,iCAEhC,CACA,MAAM,IAAIrK,MAAM,gCAAiC,CAAEsK,MAAON,GAAM,GAEnE,CAEA1D,aAAAA,CAAajL,GAAgC,IAA/B,MAAE6H,EAAK,SAAE3K,EAAQ,SAAE6N,GAAU/K,EAC1C,MAMMkP,EAAW,IANCnE,EAChBM,QAAOC,GAAKA,EAAEC,YAAemB,KAAKyC,MAAMxE,KAAKD,MAAQ,KAAQqC,KAC7D1B,QAAOC,GAAKA,EAAE8D,uBACdxL,KAAI0H,IACG,CAAE+D,KAAM/D,EAAE8D,qBAAsBE,SAAUhE,EAAEgE,cAGrD,IAAK,IAAIC,EAAI,EAAGA,EAAI1H,EAAMxJ,OAAQkR,IAAK,CACtC,MAAMC,EAAc3H,EAAM0H,GAAG3R,KACzBK,KAAKgJ,QAAUY,EAAM0H,GAAGtI,UAC3BhJ,KAAKgJ,QAAUY,EAAM0H,GAAGtI,SAEpBlC,MAAM0K,QAAQD,GAKnBA,EAAYE,SAAQL,IACnBH,EAASvH,KAAK,CACb0H,OACAM,SAAU9H,EAAM0H,GAAG5G,WAClB,IARFpL,EAAAA,EAAO6M,MAAM,mCAAoC,CAAEiF,KAAMxH,EAAM0H,IAUjE,CACAtR,KAAKyP,aAAe/C,KAAKD,MACzBzM,KAAK+M,KAAK,OAAQ,CACjBnD,MAAOqH,EAEPhS,SAAUe,KAAK+L,WAAW9M,SAC1B+J,QAAShJ,KAAKgJ,SAEhB,CAEAiE,SAAAA,GAEC,OAD4BP,KAAKD,MAAQzM,KAAKyP,cAAgB,IAAO,GAC5Cb,IACxBtP,EAAAA,EAAOqN,MAAM,sCAAD5G,OAAuC/F,KAAK4O,aAAY,oCACpE5O,KAAK+M,KAAK,SACH,EAGT,CAEA4E,WAAAA,GACC,OAAO3R,KAAKkP,WACb,CAEA,UAAM5F,GAAgD,IAA3C,MAAEE,GAAQ,EAAK,WAAEC,GAAa,GAAMrF,UAAAhE,OAAA,QAAAiE,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAClD9E,EAAAA,EAAOqN,MAAM,uBAAwBvI,UAAU,IAC/C,IACC,MAAM6D,QAAiBjI,KAAK+L,WAAWzC,KAAK,CAC3CN,QAAShJ,KAAKgJ,QACdO,gBAAiBvJ,KAAK2R,cACtBlJ,cAAezI,KAAKmP,mBACpB3F,QACAC,eAEDzJ,KAAK+M,KAAK,cAAe,CAAE0D,OAAO,IAClCzQ,KAAK+L,WAAW9M,SAAS2S,qBAAuBlF,KAAKD,MAAQ,IAC7DnN,EAAAA,EAAOqN,MAAM,sBAAuB1E,GACpC,MAAM,SAAEhJ,EAAQ,SAAE6N,GAAa7E,EAAStI,KACxCK,KAAK+M,KAAK,OAAQ,CAAE9N,WAAU6N,aAC9B9M,KAAK2P,SAASkC,OACf,CAAE,MAAOlE,GAER,MADArO,EAAAA,EAAO6M,MAAM,2BAA4B,CAAEA,MAAOwB,IAC5CA,CACP,CACD,CAEAmE,SAAAA,GACC,OAAO9R,KAAKsJ,KAAK,CAAEE,OAAO,GAC3B,CAEAqG,SAAAA,GACC,OAAO7P,KAAKsJ,KAAK,CAAEG,YAAY,IAASsG,OAAO5D,IAC9C7M,EAAAA,EAAO6M,MAAM,+BAAgC,CAAEA,SAAQ,GAEzD,CAEA,WAAMvB,GAAQ,IAAAmH,EAIb,OAFA/R,KAAK2P,SAASkC,QACF,QAAZE,EAAA/R,KAAKiQ,eAAO,IAAA8B,GAAZA,EAAc7E,aACPlN,KAAKgS,QACb,CAEAA,MAAAA,GACC,OAAwB,OAApBhS,KAAK+L,WACDhB,QAAQ3L,WAEhBY,KAAKiQ,QAAQ/C,aACNlN,KAAK+L,WAAWnB,QACxB,CAEAV,gBAAAA,CAAiBC,GAChB,OAAOnK,KAAK+L,WAAW7B,iBAAiBC,EACzC,CAEAM,oBAAAA,CAAqBrB,GACpB,OAAOpJ,KAAK+L,WAAWtB,qBAAqBrB,EAC7C,CAEA6I,EAAAA,CAAG7Q,EAAO8Q,GAET,OADAlS,KAAKoP,KAAK6C,GAAG7Q,EAAO8Q,GACblS,IACR,CAEAmS,GAAAA,CAAI/Q,EAAO8Q,GAEV,OADAlS,KAAKoP,KAAK+C,IAAI/Q,EAAO8Q,GACdlS,IACR,CAEA+M,IAAAA,CAAK3L,EAAOzB,GACXK,KAAKoP,KAAKrC,KAAK3L,EAAOzB,EACvB,qFCtTGyS,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,k/BAAm/B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4CAA4C,MAAQ,GAAG,SAAW,6XAA6X,eAAiB,CAAC,uiCAAuiC,WAAa,MAE5jF,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,glBAAilB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6CAA6C,MAAQ,GAAG,SAAW,oIAAoI,eAAiB,CAAC,mgBAAmgB,WAAa,MAE93C,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,iJAAkJ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,gEAAgE,eAAiB,CAAC,4IAA4I,WAAa,MAEhhB,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,omCAAqmC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yCAAyC,MAAQ,GAAG,SAAW,4YAA4Y,eAAiB,CAAC,0sCAA0sC,WAAa,MAE71F,yHCHImJ,EAAgC,IAAIC,IAAI,cACxCH,EAA0B,IAA4B,KACtDI,EAAqC,IAAgCF,GAEzEF,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,y/MAAy/MqJ,4tQAA8vQ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,qCAAqC,iCAAiC,iCAAiC,uCAAuC,yCAAyC,MAAQ,GAAG,SAAW,8qHAA8qH,eAAiB,CAAC,mDAAmD,6iEAA6iE,8+FAA8+F,w1OAAw1O,w/CAAw/C,WAAa,MAEnnhC,4FCPIJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,0hCAA2hC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,iMAAiM,eAAiB,CAAC,y4BAAy4B,WAAa,MAExxE,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,8KAA+K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,sEAAsE,eAAiB,CAAC,4NAA4N,WAAa,MAEloB,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,2OAA4O,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,mFAAmF,eAAiB,CAAC,sPAAsP,WAAa,MAEruB,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,4dAA6d,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gDAAgD,MAAQ,GAAG,SAAW,8JAA8J,eAAiB,CAAC,yaAAya,WAAa,MAE7sC,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,0dAA2d,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,mGAAmG,eAAiB,CAAC,maAAma,WAAa,MAE3oC,yHCHImJ,EAAgC,IAAIC,IAAI,cACxCH,EAA0B,IAA4B,KACtDI,EAAqC,IAAgCF,GAEzEF,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,i7GAAi7GqJ,g7NAAk9N,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2CAA2C,wCAAwC,MAAQ,GAAG,SAAW,g3EAAg3E,eAAiB,CAAC,+nCAA+nC,y1OAAy1O,WAAa,MAEv5qB,4FCPIJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,qiCAAsiC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,yUAAyU,eAAiB,CAAC,8vCAA8vC,WAAa,MAErxF,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,+rCAAgsC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kDAAkD,MAAQ,GAAG,SAAW,wYAAwY,eAAiB,CAAC,2uCAA+uC,WAAa,MAEl+F,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,8KAA+K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yCAAyC,MAAQ,GAAG,SAAW,sEAAsE,eAAiB,CAAC,yMAAyM,WAAa,MAEhmB,yHCHImJ,EAAgC,IAAIC,IAAI,cACxCH,EAA0B,IAA4B,KACtDI,EAAqC,IAAgCF,GAEzEF,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,spEAAspEqJ,2lPAA6nP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uCAAuC,kCAAkC,MAAQ,GAAG,SAAW,0rFAA0rF,eAAiB,CAAC,w1OAAw1O,++FAA++F,WAAa,MAEt9tB,4FCPIJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,q2CAAs2C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kDAAkD,MAAQ,GAAG,SAAW,qgBAAqgB,eAAiB,CAAC,g7CAAg7C,WAAa,MAEt8G,yHCHImJ,EAAgC,IAAIC,IAAI,cACxCE,EAAgC,IAAIF,IAAI,cACxCG,EAAgC,IAAIH,IAAI,cACxCH,EAA0B,IAA4B,KACtDI,EAAqC,IAAgCF,GACrEK,EAAqC,IAAgCF,GACrEG,EAAqC,IAAgCF,GAEzEN,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,ylCAAylCqJ,8EAA+GG,qGAAsIC,+dAAigB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,8lBAA8lB,eAAiB,CAAC,6/DAA6/D,WAAa,MAE3mJ,4FCXIR,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,2OAA4O,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iEAAiE,MAAQ,GAAG,SAAW,0GAA0G,eAAiB,CAAC,2SAA2S,WAAa,MAE3zB,4FCJIiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,sHAAuH,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2CAA2C,MAAQ,GAAG,SAAW,sDAAsD,eAAiB,CAAC,2JAA2J,WAAa,MAE5e,QAAe,cAAuB,uFCJlCiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,sxBAAuxB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2CAA2C,MAAQ,GAAG,SAAW,yRAAyR,eAAiB,CAAC,uvBAAuvB,WAAa,MAE38D,QAAe,cAAuB,uFCJlCiJ,QAA0B,GAA4B,KAE1DA,EAAwB1I,KAAK,CAAC2I,EAAOlJ,GAAI,uJAQtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,sDAAsD,eAAiB,CAAC,6zCAAo0C,WAAa,MAEhgD,2BCfA,IAAIxD,EAAM,CACT,OAAQ,CACP,MACA,gBAED,UAAW,CACV,MACA,gBAED,aAAc,CACb,KACA,sBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,iBAAkB,CACjB,MACA,0BAED,oBAAqB,CACpB,MACA,0BAED,uBAAwB,CACvB,MACA,gCAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,gBAAiB,CAChB,MACA,yBAED,mBAAoB,CACnB,MACA,yBAED,sBAAuB,CACtB,MACA,+BAED,WAAY,CACX,KACA,oBAED,cAAe,CACd,KACA,oBAED,iBAAkB,CACjB,MACA,0BAED,gBAAiB,CAChB,MACA,yBAED,mBAAoB,CACnB,MACA,yBAED,sBAAuB,CACtB,MACA,+BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,KACA,2BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,KACA,4BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,WAAY,CACX,KACA,oBAED,cAAe,CACd,KACA,oBAED,iBAAkB,CACjB,MACA,0BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,KACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,MAAO,CACN,MACA,eAED,SAAU,CACT,MACA,eAED,YAAa,CACZ,MACA,qBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,KACA,0BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,YAAa,CACZ,MACA,qBAED,iBAAkB,CACjB,MACA,0BAED,oBAAqB,CACpB,MACA,0BAED,uBAAwB,CACvB,MACA,gCAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,iBAAkB,CACjB,MACA,0BAED,oBAAqB,CACpB,MACA,0BAED,uBAAwB,CACvB,KACA,gCAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,KACA,uBAED,QAAS,CACR,KACA,iBAED,WAAY,CACX,KACA,iBAED,cAAe,CACd,MACA,uBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,MAAO,CACN,IACA,eAED,SAAU,CACT,IACA,eAED,YAAa,CACZ,MACA,qBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,WAAY,CACX,KACA,oBAED,cAAe,CACd,KACA,oBAED,iBAAkB,CACjB,MACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,KACA,uBAED,aAAc,CACb,KACA,sBAED,gBAAiB,CAChB,KACA,sBAED,mBAAoB,CACnB,MACA,4BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,KACA,kBAED,YAAa,CACZ,KACA,kBAED,eAAgB,CACf,MACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,KACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,KACA,uBAED,WAAY,CACX,MACA,oBAED,gBAAiB,CAChB,MACA,yBAED,mBAAoB,CACnB,MACA,yBAED,sBAAuB,CACtB,MACA,+BAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,UAAW,CACV,KACA,mBAED,aAAc,CACb,KACA,mBAED,gBAAiB,CAChB,MACA,yBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,OAAQ,CACP,MACA,gBAED,UAAW,CACV,MACA,gBAED,aAAc,CACb,MACA,sBAED,SAAU,CACT,KACA,kBAED,YAAa,CACZ,KACA,kBAED,eAAgB,CACf,IACA,wBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,OAAQ,CACP,MACA,gBAED,UAAW,CACV,MACA,gBAED,aAAc,CACb,MACA,sBAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,iBACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,UAAW,CACV,MACA,mBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,mBAAoB,CACnB,MACA,4BAED,sBAAuB,CACtB,MACA,4BAED,yBAA0B,CACzB,MACA,kCAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,KACA,8BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,MACA,4BAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,MACA,4BAED,gBAAiB,CAChB,KACA,yBAED,mBAAoB,CACnB,KACA,yBAED,sBAAuB,CACtB,MACA,wBACA,+BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,gBAAiB,CAChB,KACA,yBAED,mBAAoB,CACnB,KACA,yBAED,sBAAuB,CACtB,MACA,+BAED,WAAY,CACX,KACA,oBAED,cAAe,CACd,KACA,oBAED,iBAAkB,CACjB,KACA,0BAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,KACA,wBAED,kBAAmB,CAClB,KACA,wBAED,qBAAsB,CACrB,MACA,8BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,SAAU,CACT,KACA,kBAED,YAAa,CACZ,KACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,KACA,wBAED,kBAAmB,CAClB,KACA,wBAED,qBAAsB,CACrB,KACA,8BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,aAAc,CACb,KACA,sBAED,gBAAiB,CAChB,KACA,sBAED,mBAAoB,CACnB,MACA,4BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,OAAQ,CACP,KACA,gBAED,UAAW,CACV,KACA,gBAED,aAAc,CACb,MACA,sBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,QAAS,CACR,MACA,iBAED,iBAAkB,CACjB,MACA,0BAED,oBAAqB,CACpB,MACA,0BAED,uBAAwB,CACvB,KACA,gCAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,MACA,4BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,IACA,0BAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,MACA,6BAED,WAAY,CACX,MACA,oBAED,gBAAiB,CAChB,KACA,yBAED,mBAAoB,CACnB,KACA,yBAED,sBAAuB,CACtB,MACA,+BAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,MAAO,CACN,MACA,eAED,SAAU,CACT,MACA,eAED,YAAa,CACZ,MACA,qBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,MAAO,CACN,MACA,eAED,SAAU,CACT,MACA,eAED,YAAa,CACZ,MACA,qBAED,aAAc,CACb,KACA,sBAED,gBAAiB,CAChB,KACA,sBAED,mBAAoB,CACnB,MACA,4BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,MACA,4BAED,aAAc,CACb,MACA,sBAED,gBAAiB,CAChB,MACA,sBAED,mBAAoB,CACnB,MACA,4BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,kBAAmB,CAClB,MACA,2BAED,qBAAsB,CACrB,MACA,2BAED,wBAAyB,CACxB,MACA,iCAED,SAAU,CACT,KACA,kBAED,YAAa,CACZ,KACA,kBAED,eAAgB,CACf,MACA,wBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,UAAW,CACV,KACA,mBAED,aAAc,CACb,KACA,mBAED,gBAAiB,CAChB,MACA,yBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,cAAe,CACd,MACA,uBAED,iBAAkB,CACjB,MACA,uBAED,oBAAqB,CACpB,KACA,6BAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,KACA,iBAED,WAAY,CACX,KACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,iBAAkB,CACjB,MACA,0BAED,oBAAqB,CACpB,MACA,0BAED,uBAAwB,CACvB,MACA,gCAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,KACA,0BAED,OAAQ,CACP,KACA,gBAED,UAAW,CACV,KACA,gBAED,aAAc,CACb,MACA,sBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,eAAgB,CACf,MACA,wBAED,kBAAmB,CAClB,MACA,wBAED,qBAAsB,CACrB,MACA,8BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,UAAW,CACV,MACA,mBAED,aAAc,CACb,MACA,mBAED,gBAAiB,CAChB,MACA,yBAED,aAAc,CACb,KACA,sBAED,kBAAmB,CAClB,MACA,2BAED,qBAAsB,CACrB,MACA,2BAED,wBAAyB,CACxB,MACA,iCAED,gBAAiB,CAChB,KACA,sBAED,mBAAoB,CACnB,MACA,4BAED,YAAa,CACZ,MACA,qBAED,eAAgB,CACf,MACA,qBAED,kBAAmB,CAClB,MACA,2BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,QAAS,CACR,MACA,iBAED,WAAY,CACX,MACA,iBAED,cAAe,CACd,MACA,uBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,MACA,wBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,0BAED,OAAQ,CACP,MACA,gBAED,UAAW,CACV,MACA,gBAED,aAAc,CACb,MACA,sBAED,QAAS,CACR,KACA,iBAED,WAAY,CACX,KACA,iBAED,cAAe,CACd,MACA,uBAED,WAAY,CACX,KACA,oBAED,cAAe,CACd,KACA,oBAED,iBAAkB,CACjB,KACA,0BAED,SAAU,CACT,MACA,kBAED,YAAa,CACZ,MACA,kBAED,eAAgB,CACf,KACA,wBAED,WAAY,CACX,MACA,oBAED,cAAe,CACd,MACA,oBAED,iBAAkB,CACjB,MACA,2BAGF,SAASkN,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAErN,EAAKmN,GAC9B,OAAO/H,QAAQ3L,UAAU4K,MAAK,KAC7B,IAAI2D,EAAI,IAAIjH,MAAM,uBAAyBoM,EAAM,KAEjD,MADAnF,EAAEG,KAAO,mBACHH,CAAC,IAIT,IAAIsF,EAAMtN,EAAImN,GAAM3J,EAAK8J,EAAI,GAC7B,OAAOlI,QAAQmI,IAAID,EAAIE,MAAM,GAAGxN,IAAIoN,EAAoBpF,IAAI3D,MAAK,IACzD+I,EAAoBK,EAAEjK,EAAI,KAEnC,CACA0J,EAAoBQ,KAAO,IAAOC,OAAOD,KAAK1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","sources":["webpack:///text/src/components/Editor.provider.js","webpack:///text/src/components/Menu/ToolBarLogic.js","webpack:///text/src/helpers/logger.js","webpack:///text/src/services/AttachmentResolver.js","webpack:///text/src/services/SessionApi.js","webpack:///text/src/services/PollingBackend.js","webpack:///text/src/services/SyncService.js","webpack:///text/src/components/Assistant.vue?vue&type=style&index=0&id=4c96cd80&prod&scoped=true&lang=scss","webpack:///text/src/components/BaseReader.vue?vue&type=style&index=0&id=151c6c0d&prod&scoped=true&lang=scss","webpack:///text/src/components/CollisionResolveDialog.vue?vue&type=style&index=0&id=f43ae8b6&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor.vue?vue&type=style&index=0&id=5c3f88f6&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor.vue?vue&type=style&index=1&id=5c3f88f6&prod&lang=scss","webpack:///text/src/components/Editor/ContentContainer.vue?vue&type=style&index=0&id=7394eeaa&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor/DocumentStatus.vue?vue&type=style&index=0&id=30c7e03a&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor/MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor/Status.vue?vue&type=style&index=0&id=42888af2&prod&scoped=true&lang=scss","webpack:///text/src/components/Editor/Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss","webpack:///text/src/components/HelpModal.vue?vue&type=style&index=0&id=0b17af4e&prod&lang=scss&scoped=true","webpack:///text/src/components/Menu/MenuBar.vue?vue&type=style&index=0&id=0b381e60&prod&scoped=true&lang=scss","webpack:///text/src/components/Modal/Translate.vue?vue&type=style&index=0&id=8498603c&prod&lang=scss&scoped=true","webpack:///text/src/components/Reader.vue?vue&type=style&index=0&id=71fbd370&prod&lang=scss","webpack:///text/src/components/RichTextReader.vue?vue&type=style&index=0&id=cc547c80&prod&lang=scss","webpack:///text/src/components/SkeletonLoading.vue?vue&type=style&index=0&id=5a5c7130&prod&lang=scss&scoped=true","webpack:///text/src/components/Suggestion/Mention/AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&prod&lang=scss&scoped=true","webpack:///text/src/components/Suggestion/Mention/MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss","webpack:///text/src/views/DirectEditing.vue?vue&type=style&index=0&id=d43914dc&prod&lang=scss","webpack:///text/src/views/DirectEditing.vue?vue&type=style&index=1&id=d43914dc&prod&scoped=true&lang=scss","webpack:///text/src/components/Menu/ReadonlyBar.vue?vue&type=style&index=0&id=27a921ca&prod&scoped=true&lang=css","webpack:///text/node_modules/highlight.js/lib/languages|lazy|/^\\.\\/.*$/|chunkName: highlight/[request]|groupOptions: {}|namespace object","webpack://text/./src/components/BaseReader.vue?51b8","webpack:///text/src/components/BaseReader.vue","webpack:///text/src/components/BaseReader.vue?vue&type=script&lang=js","webpack://text/./src/components/BaseReader.vue?c8ca","webpack://text/./src/components/BaseReader.vue?df2c","webpack://text/./src/components/Editor.vue?ceb0","webpack:///text/src/extensions/Autofocus.js","webpack:///text/src/helpers/base64.js","webpack:///text/src/services/SyncServiceProvider.js","webpack:///text/src/services/WebSocketPolyfill.js","webpack:///text/src/helpers/mappings.js","webpack:///text/src/components/Suggestion/Mention/AutoCompleteResult.vue","webpack:///text/src/components/Suggestion/Mention/AutoCompleteResult.vue?vue&type=script&lang=js","webpack://text/./src/components/Suggestion/Mention/AutoCompleteResult.vue?0cba","webpack:///text/src/components/Suggestion/Mention/MentionList.vue","webpack:///text/src/components/Suggestion/Mention/MentionList.vue?vue&type=script&lang=js","webpack://text/./src/components/Suggestion/Mention/AutoCompleteResult.vue?677c","webpack://text/./src/components/Suggestion/Mention/AutoCompleteResult.vue?3637","webpack://text/./src/components/Suggestion/Mention/MentionList.vue?eaa8","webpack://text/./src/components/Suggestion/Mention/MentionList.vue?0389","webpack://text/./src/components/Suggestion/Mention/MentionList.vue?d9b7","webpack:///text/src/components/Suggestion/Mention/suggestions.js","webpack:///text/src/EditorFactory.js","webpack:///text/src/mixins/setContent.js","webpack:///text/src/components/CollisionResolveDialog.vue?vue&type=script&lang=js","webpack:///text/src/components/CollisionResolveDialog.vue","webpack://text/./src/components/CollisionResolveDialog.vue?375a","webpack://text/./src/components/CollisionResolveDialog.vue?6ed8","webpack:///text/src/components/Editor/DocumentStatus.vue?vue&type=script&lang=js","webpack:///text/src/components/Editor/DocumentStatus.vue","webpack://text/./src/components/CollisionResolveDialog.vue?c7fb","webpack://text/./src/components/Editor/DocumentStatus.vue?78dd","webpack://text/./src/components/Editor/DocumentStatus.vue?2119","webpack://text/./src/components/Editor/DocumentStatus.vue?f2af","webpack:///text/src/mixins/isMobile.js","webpack:///text/src/mixins/refreshMoment.js","webpack:///text/src/components/Editor/Status.vue?vue&type=script&lang=js","webpack:///text/src/components/Editor/Status.vue","webpack://text/./src/components/Editor/Status.vue?d3b3","webpack://text/./src/components/Editor/Status.vue?87b7","webpack://text/./src/components/Editor/Status.vue?c6b1","webpack:///text/src/components/SkeletonLoading.vue","webpack:///text/src/components/SkeletonLoading.vue?vue&type=script&lang=js","webpack://text/./src/components/SkeletonLoading.vue?3ae3","webpack://text/./src/components/SkeletonLoading.vue?31bb","webpack://text/./src/components/SkeletonLoading.vue?2be1","webpack://text/./src/components/Assistant.vue?46b5","webpack:///text/src/components/Assistant.vue","webpack:///text/src/components/Assistant.vue?vue&type=script&lang=js","webpack://text/./src/components/Assistant.vue?dcf3","webpack://text/./src/components/Assistant.vue?92a3","webpack:///text/src/components/Modal/Translate.vue","webpack:///text/src/components/Modal/Translate.vue?vue&type=script&lang=js","webpack://text/./src/components/Modal/Translate.vue?1c17","webpack://text/./src/components/Modal/Translate.vue?a009","webpack://text/./src/components/Modal/Translate.vue?26d5","webpack:///text/src/components/Editor.vue","webpack:///text/src/helpers/yjs.js","webpack:///text/src/components/Editor.vue?vue&type=script&lang=js","webpack://text/./src/components/Editor.vue?2b66","webpack://text/./src/components/Editor.vue?70d9","webpack://text/./src/components/Editor.vue?1c80","webpack://text/./src/components/Editor/ContentContainer.vue?65c0","webpack:///text/src/components/Editor/ContentContainer.vue","webpack:///text/src/components/Editor/ContentContainer.vue?vue&type=script&lang=js","webpack://text/./src/components/Editor/ContentContainer.vue?21f8","webpack://text/./src/components/Editor/ContentContainer.vue?f234","webpack://text/./src/components/Editor/MainContainer.vue?5f06","webpack:///text/src/components/Editor/MediaHandler.vue","webpack:///text/src/components/Editor/MediaHandler.vue?vue&type=script&lang=js","webpack://text/./src/components/Editor/MediaHandler.vue?ce58","webpack:///text/src/components/Editor/MainContainer.vue?vue&type=script&lang=js","webpack:///text/src/components/Editor/MainContainer.vue","webpack://text/./src/components/Editor/MediaHandler.vue?7d77","webpack://text/./src/components/Editor/MainContainer.vue?e8e6","webpack://text/./src/components/Editor/MainContainer.vue?aca7","webpack://text/./src/components/Editor/MarkdownContentEditor.vue?d264","webpack:///text/src/components/Editor/MarkdownContentEditor.vue","webpack:///text/src/components/Editor/MarkdownContentEditor.vue?vue&type=script&lang=js","webpack://text/./src/components/Editor/MarkdownContentEditor.vue?b222","webpack://text/./src/components/Editor/Wrapper.vue?20f5","webpack:///text/src/components/Editor/Wrapper.vue","webpack:///text/src/components/Editor/Wrapper.vue?vue&type=script&lang=js","webpack://text/./src/components/Editor/Wrapper.vue?a4b4","webpack://text/./src/components/Editor/Wrapper.vue?1690","webpack://text/./src/components/Menu/ActionList.vue?b8c9","webpack:///text/src/components/Menu/ActionListItem.vue","webpack:///text/src/components/Menu/ActionListItem.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/ActionListItem.vue?a812","webpack://text/./src/components/Menu/ActionListItem.vue?1b9b","webpack:///text/src/components/Menu/ActionList.vue","webpack:///text/src/components/Menu/ActionList.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/ActionList.vue?0d46","webpack://text/./src/components/Menu/ActionSingle.vue?dbe0","webpack:///text/src/components/Menu/ActionSingle.vue","webpack:///text/src/components/Menu/ActionSingle.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/ActionSingle.vue?554b","webpack://text/./src/components/Menu/MenuBar.vue?a778","webpack:///text/src/components/Menu/ActionFormattingHelp.vue","webpack:///text/src/components/Menu/ActionFormattingHelp.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/ActionFormattingHelp.vue?5e68","webpack://text/./src/components/Menu/ActionFormattingHelp.vue?2e81","webpack:///text/src/components/Menu/CharacterCount.vue","webpack:///text/src/components/Menu/CharacterCount.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/CharacterCount.vue?5e3d","webpack://text/./src/components/Menu/CharacterCount.vue?f20d","webpack:///text/src/components/HelpModal.vue","webpack:///text/src/components/HelpModal.vue?vue&type=script&lang=js","webpack:///text/src/helpers/platform.js","webpack://text/./src/components/HelpModal.vue?72b0","webpack://text/./src/components/HelpModal.vue?e57d","webpack://text/./src/components/HelpModal.vue?f4f7","webpack:///text/src/components/Menu/MenuBar.vue","webpack:///text/src/components/Menu/MenuBar.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/MenuBar.vue?7a72","webpack://text/./src/components/Menu/MenuBar.vue?26e0","webpack://text/./src/components/Menu/ReadonlyBar.vue?1b02","webpack:///text/src/components/Menu/ReadonlyBar.vue","webpack:///text/src/components/Menu/ReadonlyBar.vue?vue&type=script&lang=js","webpack://text/./src/components/Menu/ReadonlyBar.vue?1746","webpack://text/./src/components/Menu/ReadonlyBar.vue?ee3c","webpack://text/./src/components/PlainTextReader.vue?f3b9","webpack:///text/src/components/PlainTextReader.vue","webpack:///text/src/components/PlainTextReader.vue?vue&type=script&lang=js","webpack://text/./src/components/PlainTextReader.vue?8d3f","webpack://text/./src/components/Reader.vue?fe2e","webpack:///text/src/components/Reader.vue","webpack:///text/src/components/Reader.vue?vue&type=script&lang=js","webpack://text/./src/components/Reader.vue?599c","webpack://text/./src/components/Reader.vue?231e","webpack://text/./src/components/RichTextReader.vue?2213","webpack:///text/src/components/RichTextReader.vue","webpack:///text/src/components/RichTextReader.vue?vue&type=script&lang=js","webpack://text/./src/components/RichTextReader.vue?8c03","webpack://text/./src/components/RichTextReader.vue?b0bc","webpack://text/./src/views/DirectEditing.vue?9bc2","webpack:///text/src/views/DirectEditing.vue","webpack:///text/src/views/DirectEditing.vue?vue&type=script&lang=js","webpack://text/./src/views/DirectEditing.vue?6278","webpack://text/./src/views/DirectEditing.vue?3f5e","webpack://text/./src/views/DirectEditing.vue?50c1"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n *\n * @author Vinicius Reis <vinicius@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { logger } from '../helpers/logger.js'\n\nexport const EDITOR = Symbol('tiptap:editor')\nexport const FILE = Symbol('editor:file')\nexport const ATTACHMENT_RESOLVER = Symbol('attachment:resolver')\nexport const IS_MOBILE = Symbol('editor:is-mobile')\nexport const IS_PUBLIC = Symbol('editor:is-public')\nexport const IS_RICH_EDITOR = Symbol('editor:is-rich-editor')\nexport const IS_RICH_WORKSPACE = Symbol('editor:is-rich-woskapace')\nexport const SYNC_SERVICE = Symbol('sync:service')\nexport const EDITOR_UPLOAD = Symbol('editor:upload')\nexport const HOOK_MENTION_SEARCH = Symbol('hook:mention-search')\nexport const HOOK_MENTION_INSERT = Symbol('hook:mention-insert')\n\nexport const useEditorMixin = {\n\tinject: {\n\t\t$editor: { from: EDITOR, default: null },\n\t},\n}\n\nexport const useSyncServiceMixin = {\n\tinject: {\n\t\t$syncService: { from: SYNC_SERVICE, default: null },\n\t},\n}\n\nexport const useIsPublicMixin = {\n\tinject: {\n\t\t$isPublic: { from: IS_PUBLIC, default: false },\n\t},\n}\n\nexport const useIsRichWorkspaceMixin = {\n\tinject: {\n\t\t$isRichWorkspace: { from: IS_RICH_WORKSPACE, default: false },\n\t},\n}\n\nexport const useIsRichEditorMixin = {\n\tinject: {\n\t\t$isRichEditor: { from: IS_RICH_EDITOR, default: false },\n\t},\n}\n\nexport const useIsMobileMixin = {\n\tinject: {\n\t\t$isMobile: { from: IS_MOBILE, default: false },\n\t},\n}\n\nexport const useFileMixin = {\n\tinject: {\n\t\t$file: {\n\t\t\tfrom: FILE,\n\t\t\tdefault: () => ({\n\t\t\t\tfileId: 0,\n\t\t\t\trelativePath: null,\n\t\t\t\tdocument: null,\n\t\t\t}),\n\t\t},\n\t},\n}\n\nexport const useAttachmentResolver = {\n\tinject: {\n\t\t$attachmentResolver: {\n\t\t\tfrom: ATTACHMENT_RESOLVER,\n\t\t\tdefault: {\n\t\t\t\tresolve(src) {\n\t\t\t\t\tlogger.warn('No attachment resolver provided. Some attachment sources cannot be resolved.')\n\t\t\t\t\treturn [src]\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\nexport const useEditorUpload = {\n\tinject: {\n\t\t$editorUpload: {\n\t\t\tfrom: EDITOR_UPLOAD,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\nexport const useMentionHook = {\n\tinject: {\n\t\t$mentionHookInsert: {\n\t\t\tfrom: HOOK_MENTION_INSERT,\n\t\t\tdefault: true,\n\t\t},\n\t\t$mentionHookSearch: {\n\t\t\tfrom: HOOK_MENTION_SEARCH,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n","import { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tdata() {\n\t\treturn {\n\t\t\t/** Current menu entry that has focus */\n\t\t\tactiveMenuEntry: 0,\n\t\t\tentries: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tvisibleEntries() {\n\t\t\treturn this.entries\n\t\t},\n\t},\n\twatch: {\n\t\tvisibleEntries() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.activeMenuEntry > this.visibleEntries.length || this.visibleEntries[this.activeMenuEntry]?.disabled) {\n\t\t\t\t\tthis.setNextMenuEntry()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update the disabled state of an menu entry\n\t\t * @param {string} menuKey The key of the menu entry that changed\n\t\t * @param {boolean} state The new disabled state\n\t\t */\n\t\tdisableMenuEntry(menuKey, state) {\n\t\t\tconst index = this.visibleEntries.findIndex(({ key }) => key === menuKey)\n\t\t\tthis.visibleEntries[index].disabled = state\n\t\t\tif (state === false && this.activeMenuEntry === index) {\n\t\t\t\tthis.$nextTick(() => this.setNextMenuEntry())\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set the active menu entry to the next one (or reset to first)\n\t\t */\n\t\tsetNextMenuEntry() {\n\t\t\t// refs is not reactive so we must check this every time\n\t\t\tconst modulo = this.visibleEntries.length + (this.$refs.remainingEntries ? 1 : 0)\n\n\t\t\tdo {\n\t\t\t\tthis.activeMenuEntry = (this.activeMenuEntry + 1) % modulo\n\t\t\t} while (this.activeMenuEntry < this.visibleEntries.length && this.visibleEntries[this.activeMenuEntry].disabled)\n\t\t},\n\t\t/**\n\t\t * Set the active menu entry to the previous one (or reset to last entry (remaining actions))\n\t\t */\n\t\tsetPreviousMenuEntry() {\n\t\t\t// refs is not reactive so we must check this every time\n\t\t\tconst modulo = this.visibleEntries.length + (this.$refs.remainingEntries ? 1 : 0)\n\n\t\t\tdo {\n\t\t\t\tconst index = this.activeMenuEntry - 1\n\t\t\t\tthis.activeMenuEntry = ((index % modulo) + modulo) % modulo // needed as JS does not work with negative modulos\n\t\t\t} while (this.activeMenuEntry < this.visibleEntries.length && this.visibleEntries[this.activeMenuEntry].disabled)\n\t\t},\n\n\t\t/**\n\t\t * Handle navigation in toolbar\n\t\t * @param {KeyboardEvent} event The keydown event\n\t\t */\n\t\thandleToolbarNavigation(event) {\n\t\t\tif (event.key === 'ArrowRight') {\n\t\t\t\tthis.setNextMenuEntry()\n\t\t\t} else if (event.key === 'ArrowLeft') {\n\t\t\t\tthis.setPreviousMenuEntry()\n\t\t\t}\n\n\t\t\tif (this.activeMenuEntry === this.visibleEntries.length) {\n\t\t\t\tthis.$refs.remainingEntries?.focusButton?.()\n\t\t\t} else {\n\t\t\t\t// The ref is in no order (ordered by the time they needed to mount), so we need to order them like they are shown on the menu\n\t\t\t\tconst entries = [...this.$refs.menuEntries].sort((a, b) => this.visibleEntries.findIndex(({ key }) => key === a.$vnode.data.key) - this.visibleEntries.findIndex(({ key }) => key === b.$vnode.data.key))\n\t\t\t\tentries[this.activeMenuEntry].focusButton()\n\t\t\t}\n\t\t},\n\t},\n})\n","import { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('text')\n\t.detectUser()\n\t.build()\n\nexport {\n\tlogger,\n}\n","/**\n * @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl, generateRemoteUrl } from '@nextcloud/router'\nimport pathNormalize from 'path-normalize'\n\nimport store from '../store/index.js'\n\nconst setAttachmentList = (val) => store.dispatch('text/setAttachmentList', val)\nconst findAttachment = store.getters['text/findAttachment']\n\nexport default class AttachmentResolver {\n\n\t#session\n\t#user\n\t#shareToken\n\t#currentDirectory\n\t#documentId\n\t#initAttachmentListPromise\n\n\tconstructor({ session, user, shareToken, currentDirectory, fileId }) {\n\t\tthis.#session = session\n\t\tthis.#user = user\n\t\tthis.#shareToken = shareToken\n\t\tthis.#currentDirectory = currentDirectory\n\t\tthis.#documentId = fileId ?? session.documentId\n\t\tthis.#initAttachmentListPromise = this.#updateAttachmentList()\n\t}\n\n\tasync #updateAttachmentList() {\n\t\treturn setAttachmentList({ documentId: this.#documentId, session: this.#session, shareToken: this.#shareToken })\n\t}\n\n\t/*\n\t * Resolve a given image/attachment src.\n\t * @param { string } src - the original src in the node.\n\t * @param { bool } fallback - fetch again attachmentsList if not found | defaul = true\n\t */\n\tasync resolve(src, fallback = true) {\n\t\tlet attachment\n\n\t\t// Native attachment\n\t\tconst directoryRegexp = /^\\.attachments\\.\\d+\\//\n\t\tif (src.match(directoryRegexp)) {\n\t\t\tconst imageFileName = decodeURIComponent(src.replace(directoryRegexp, '').split('?')[0])\n\n\t\t\t// Wait until attachment list got fetched (initialized by constructor)\n\t\t\tawait this.#initAttachmentListPromise\n\t\t\tattachment = findAttachment(imageFileName)\n\n\t\t\tif (fallback && !attachment) {\n\t\t\t\t// Update attachments list. Needed if attachments gets added to the session\n\t\t\t\tawait this.#updateAttachmentList()\n\t\t\t\tattachment = findAttachment(imageFileName)\n\t\t\t}\n\n\t\t\tif (attachment) {\n\t\t\t\treturn attachment\n\t\t\t}\n\n\t\t}\n\n\t\t// Direct URLs\n\t\tif (isDirectUrl(src)) {\n\t\t\treturn {\n\t\t\t\tisImage: true,\n\t\t\t\tname: this.#name(src),\n\t\t\t\tpreviewUrl: src,\n\t\t\t\tfullUrl: src,\n\t\t\t}\n\t\t}\n\n\t\t// Fallback: Return DAV url (e.g. for relative paths to images)\n\t\treturn {\n\t\t\tisImage: true,\n\t\t\tname: this.#name(src),\n\t\t\tpreviewUrl: this.#davUrl(src),\n\t\t\tfullUrl: this.#davUrl(src),\n\t\t}\n\t}\n\n\t#name(src) {\n\t\treturn src.split('/').pop()\n\t}\n\n\t#davUrl(src) {\n\t\tif (this.#user) {\n\t\t\tconst uid = this.#user.uid\n\t\t\tconst encoded = this.#filePath(src).split('/').map(encodeURIComponent).join('/')\n\t\t\treturn generateRemoteUrl(`dav/files/${uid}${encoded}`)\n\t\t}\n\n\t\tconst path = this.#filePath(src).split('/')\n\t\tconst basename = path.pop()\n\t\tconst dirname = path.join('/')\n\n\t\treturn generateUrl('/s/{token}/download?path={dirname}&files={basename}', {\n\t\t\ttoken: this.#shareToken,\n\t\t\tbasename,\n\t\t\tdirname,\n\t\t})\n\t}\n\n\t/**\n\t * Return the relativePath to a file specified in the url\n\t *\n\t * @param {string} src - url to extract path from\n\t */\n\t#relativePath(src) {\n\t\treturn decodeURI(src.split('?')[0])\n\t}\n\n\t#filePath(src) {\n\t\tconst f = [\n\t\t\tthis.#currentDirectory,\n\t\t\tthis.#relativePath(src),\n\t\t].join('/')\n\n\t\treturn pathNormalize(f)\n\t}\n\n}\n\n/**\n * Check if src is a direct URL.\n * Full URLs only work for images on the same Nextcloud instance (due to CORS restrictions).\n *\n * @param {string} src - the url to check\n */\nfunction isDirectUrl(src) {\n\treturn src.startsWith('http://')\n\t\t|| src.startsWith('https://')\n\t\t|| src.startsWith('data:')\n}\n","/**\n * @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nexport class ConnectionClosedError extends Error {\n\n\tconstructor(message = 'Close has already been called on the connection', ...rest) {\n\t\tsuper(message, ...rest)\n\t}\n\n}\n\nclass SessionApi {\n\n\t#options\n\n\tconstructor(options = {}) {\n\t\tthis.#options = options\n\t}\n\n\topen({ fileId, baseVersionEtag }) {\n\t\treturn axios.put(this.#url(`session/${fileId}/create`), {\n\t\t\tfileId,\n\t\t\tbaseVersionEtag,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\ttoken: this.#options.shareToken,\n\t\t\tguestName: this.#options.guestName,\n\t\t\tforceRecreate: this.#options.forceRecreate,\n\t\t}).then(response => new Connection(response, this.#options))\n\t}\n\n\t#url(endpoint) {\n\t\tconst isPublic = !!this.#options.shareToken\n\t\treturn _endpointUrl(endpoint, isPublic)\n\t}\n\n}\n\nexport class Connection {\n\n\t#content\n\t#closed\n\t#documentState\n\t#document\n\t#session\n\t#lock\n\t#readOnly\n\t#options\n\n\tconstructor(response, options) {\n\t\tconst { document, session, lock, readOnly, content, documentState } = response.data\n\t\tthis.#document = document\n\t\tthis.#session = session\n\t\tthis.#lock = lock\n\t\tthis.#readOnly = readOnly\n\t\tthis.#content = content\n\t\tthis.#documentState = documentState\n\t\tthis.#options = options\n\t\tthis.isPublic = !!options.shareToken\n\t\tthis.closed = false\n\t}\n\n\tget session() {\n\t\treturn this.#session\n\t}\n\n\tget document() {\n\t\treturn this.#document\n\t}\n\n\tget docStateVersion() {\n\t\treturn this.#documentState ? this.#document.lastSavedVersion : 0\n\t}\n\n\tget state() {\n\t\treturn {\n\t\t\tdocument: { ...this.#document, readOnly: this.#readOnly },\n\t\t\tsession: this.#session,\n\t\t\tdocumentSource: this.#content || '',\n\t\t\tdocumentState: this.#documentState,\n\t\t}\n\t}\n\n\tget #defaultParams() {\n\t\treturn {\n\t\t\tdocumentId: this.#document.id,\n\t\t\tsessionId: this.#session.id,\n\t\t\tsessionToken: this.#session.token,\n\t\t\ttoken: this.#options.shareToken,\n\t\t}\n\t}\n\n\tsync({ version }) {\n\t\treturn this.#post(this.#url(`session/${this.#document.id}/sync`), {\n\t\t\t...this.#defaultParams,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\tbaseVersionEtag: this.#document.baseVersionEtag,\n\t\t\tversion,\n\t\t})\n\t}\n\n\tsave({ version, autosaveContent, documentState, force, manualSave }) {\n\t\treturn this.#post(this.#url(`session/${this.#document.id}/save`), {\n\t\t\t...this.#defaultParams,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\tbaseVersionEtag: this.#document.baseVersionEtag,\n\t\t\tversion,\n\t\t\tautosaveContent,\n\t\t\tdocumentState,\n\t\t\tforce,\n\t\t\tmanualSave,\n\t\t})\n\t}\n\n\tpush({ steps, version, awareness }) {\n\t\treturn this.#post(this.#url(`session/${this.#document.id}/push`), {\n\t\t\t...this.#defaultParams,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\tbaseVersionEtag: this.#document.baseVersionEtag,\n\t\t\tsteps,\n\t\t\tversion,\n\t\t\tawareness,\n\t\t})\n\t}\n\n\t// TODO: maybe return a new connection here so connections have immutable state\n\tupdate(guestName) {\n\t\treturn this.#post(this.#url(`session/${this.#document.id}/session`), {\n\t\t\t...this.#defaultParams,\n\t\t\tguestName,\n\t\t}).then(({ data }) => {\n\t\t\tthis.#session = data\n\t\t})\n\t}\n\n\tuploadAttachment(file) {\n\t\tconst formData = new FormData()\n\t\tformData.append('file', file)\n\t\tconst url = _endpointUrl('attachment/upload')\n\t\t\t+ '?documentId=' + encodeURIComponent(this.#document.id)\n\t\t\t+ '&sessionId=' + encodeURIComponent(this.#session.id)\n\t\t\t+ '&sessionToken=' + encodeURIComponent(this.#session.token)\n\t\t\t+ '&shareToken=' + encodeURIComponent(this.#options.shareToken || '')\n\t\treturn this.#post(url, formData, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'multipart/form-data',\n\t\t\t},\n\t\t})\n\t}\n\n\tinsertAttachmentFile(filePath) {\n\t\treturn this.#post(_endpointUrl('attachment/filepath'), {\n\t\t\tdocumentId: this.#document.id,\n\t\t\tsessionId: this.#session.id,\n\t\t\tsessionToken: this.#session.token,\n\t\t\tfilePath,\n\t\t})\n\t}\n\n\tclose() {\n\t\tconst promise = this.#post(this.#url(`session/${this.#document.id}/close`), this.#defaultParams)\n\t\tthis.closed = true\n\t\treturn promise\n\t}\n\n\t// To be used in Cypress tests only\n\tsetBaseVersionEtag(baseVersionEtag) {\n\t\tthis.#document.baseVersionEtag = baseVersionEtag\n\t}\n\n\t#post(...args) {\n\t\tif (this.closed) {\n\t\t\treturn Promise.reject(new ConnectionClosedError())\n\t\t}\n\t\treturn axios.post(...args)\n\t}\n\n\t#url(endpoint) {\n\t\tconst isPublic = !!this.#defaultParams.token\n\t\treturn _endpointUrl(endpoint, isPublic)\n\t}\n\n}\n\n/**\n *\n * @param {string} endpoint - endpoint of the url inside apps/text\n * @param {boolean} isPublic - public url or not\n */\nfunction _endpointUrl(endpoint, isPublic = false) {\n\tconst _baseUrl = generateUrl('/apps/text')\n\tif (isPublic) {\n\t\treturn `${_baseUrl}/public/${endpoint}`\n\t}\n\treturn `${_baseUrl}/${endpoint}`\n}\n\nexport default SessionApi\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { logger } from '../helpers/logger.js'\nimport { SyncService, ERROR_TYPE } from './SyncService.js'\nimport { Connection } from './SessionApi.js'\n\n/**\n * Minimum inverval to refetch the document changes\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL = 300\n\n/**\n * Maximum interval between refetches of document state if multiple users have joined\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_MAX = 5000\n\n/**\n * Interval to check for changes when there is only one user joined\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_SINGLE_EDITOR = 5000\n\n/**\n * Interval to fetch for changes when a browser window is considered invisible by the\n * page visibility API https://developer.mozilla.org/de/docs/Web/API/Page_Visibility_API\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_INVISIBLE = 60000\n\n/* Maximum number of retries for fetching before emitting a connection error */\nconst MAX_RETRY_FETCH_COUNT = 5\n\n/**\n * Timeout for sessions to be marked as disconnected\n * Make sure that this is higher than any FETCH_INTERVAL_ values\n */\nconst COLLABORATOR_DISCONNECT_TIME = FETCH_INTERVAL_INVISIBLE * 1.5\n\nclass PollingBackend {\n\n\t/** @type {SyncService} */\n\t#syncService\n\t/** @type {Connection} */\n\t#connection\n\n\t#lastPoll\n\t#fetchInterval\n\t#fetchRetryCounter\n\t#pollActive\n\t#initialLoadingFinished\n\n\tconstructor(syncService, connection) {\n\t\tthis.#syncService = syncService\n\t\tthis.#connection = connection\n\t\tthis.#fetchInterval = FETCH_INTERVAL\n\t\tthis.#fetchRetryCounter = 0\n\t\tthis.#lastPoll = 0\n\t}\n\n\tconnect() {\n\t\tif (this.fetcher > 0) {\n\t\t\tconsole.error('Trying to connect, but already connected')\n\t\t\treturn\n\t\t}\n\t\tthis.#initialLoadingFinished = false\n\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), 50)\n\t\tdocument.addEventListener('visibilitychange', this.visibilitychange.bind(this))\n\t}\n\n\t/**\n\t * This method is only called though the timer\n\t */\n\tasync _fetchSteps() {\n\t\tif (this.#pollActive) {\n\t\t\treturn\n\t\t}\n\n\t\tconst now = Date.now()\n\n\t\tif (this.#lastPoll > (now - this.#fetchInterval)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.fetcher) {\n\t\t\tconsole.error('No inverval but triggered')\n\t\t\treturn\n\t\t}\n\n\t\tthis.#pollActive = true\n\n\t\tlogger.debug('[PollingBackend] Fetching steps', this.#syncService.version)\n\t\tawait this.#connection.sync({\n\t\t\tversion: this.#syncService.version,\n\t\t}).then(this._handleResponse.bind(this), this._handleError.bind(this))\n\t\tthis.#lastPoll = Date.now()\n\t\tthis.#pollActive = false\n\t}\n\n\t_handleResponse({ data }) {\n\t\tconst { document, sessions } = data\n\t\tthis.#fetchRetryCounter = 0\n\n\t\tthis.#syncService.emit('change', { document, sessions })\n\t\tthis.#syncService._receiveSteps(data)\n\n\t\tif (data.steps.length === 0) {\n\t\t\tif (!this.#initialLoadingFinished) {\n\t\t\t\tthis.#initialLoadingFinished = true\n\t\t\t}\n\t\t\tif (this.#syncService.checkIdle()) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst disconnect = Date.now() - COLLABORATOR_DISCONNECT_TIME\n\t\t\tconst alive = sessions.filter((s) => s.lastContact * 1000 > disconnect)\n\t\t\tif (alive.length < 2) {\n\t\t\t\tthis.maximumRefetchTimer()\n\t\t\t} else {\n\t\t\t\tthis.increaseRefetchTimer()\n\t\t\t}\n\t\t\tthis.#syncService.emit('stateChange', { initialLoading: true })\n\t\t\treturn\n\t\t}\n\n\t\tif (this.#initialLoadingFinished) {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n\t_handleError(e) {\n\t\tif (!e.response || e.code === 'ECONNABORTED') {\n\t\t\tif (this.#fetchRetryCounter++ >= MAX_RETRY_FETCH_COUNT) {\n\t\t\t\tlogger.error('[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED')\n\t\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\n\t\t\t} else {\n\t\t\t\tlogger.error(`[PollingBackend:fetchSteps] Network error when fetching steps, retry ${this.#fetchRetryCounter}`)\n\t\t\t}\n\t\t} else if (e.response.status === 409) {\n\t\t\t// Still apply the steps to update our version of the document\n\t\t\tthis._handleResponse(e.response)\n\t\t\tlogger.error('Conflict during file save, please resolve')\n\t\t\tthis.#syncService.emit('error', {\n\t\t\t\ttype: ERROR_TYPE.SAVE_COLLISSION,\n\t\t\t\tdata: {\n\t\t\t\t\toutsideChange: e.response.data.outsideChange,\n\t\t\t\t},\n\t\t\t})\n\t\t} else if (e.response.status === 412) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.LOAD_ERROR, data: e.response })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 403) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 404) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 503) {\n\t\t\tthis.increaseRefetchTimer()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\tlogger.error('Failed to fetch steps due to unavailable service', { error: e })\n\t\t} else {\n\t\t\tthis.disconnect()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\tlogger.error('Failed to fetch steps due to other reason', { error: e })\n\t\t}\n\n\t}\n\n\tdisconnect() {\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = 0\n\t\tdocument.removeEventListener('visibilitychange', this.visibilitychange.bind(this))\n\t}\n\n\tresetRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL\n\n\t}\n\n\tincreaseRefetchTimer() {\n\t\tthis.#fetchInterval = Math.min(this.#fetchInterval * 2, FETCH_INTERVAL_MAX)\n\t}\n\n\tmaximumRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL_SINGLE_EDITOR\n\t}\n\n\tvisibilitychange() {\n\t\tif (document.visibilityState === 'hidden') {\n\t\t\tthis.#fetchInterval = FETCH_INTERVAL_INVISIBLE\n\t\t} else {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n}\n\nexport default PollingBackend\n","/* eslint-disable jsdoc/valid-types */\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport mitt from 'mitt'\nimport debounce from 'debounce'\n\nimport PollingBackend from './PollingBackend.js'\nimport SessionApi, { Connection } from './SessionApi.js'\nimport { logger } from '../helpers/logger.js'\n\n/**\n * Timeout after which the editor will consider a document without changes being synced as idle\n * The session will be terminated and the document will stay open in read-only mode with a button to reconnect if needed\n *\n * @type {number}\n */\nconst IDLE_TIMEOUT = 1440\n\n/**\n * Interval to save the serialized document and the document state\n *\n * @type {number} time in ms\n */\nconst AUTOSAVE_INTERVAL = 30000\n\nconst COLLABORATOR_IDLE_TIME = 60\n\nconst COLLABORATOR_DISCONNECT_TIME = 90\n\nconst ERROR_TYPE = {\n\t/**\n\t * Failed to save collaborative document due to external change\n\t * collission needs to be resolved manually\n\t */\n\tSAVE_COLLISSION: 0,\n\t/**\n\t * Failed to push changes for MAX_REBASE_RETRY times\n\t */\n\tPUSH_FAILURE: 1,\n\n\tLOAD_ERROR: 2,\n\n\tCONNECTION_FAILED: 3,\n\n\tSOURCE_NOT_FOUND: 4,\n}\n\nclass SyncService {\n\n\t#sendIntervalId\n\n\tconstructor({ baseVersionEtag, serialize, getDocumentState, ...options }) {\n\t\t/** @type {import('mitt').Emitter<import('./SyncService').EventTypes>} _bus */\n\t\tthis._bus = mitt()\n\n\t\tthis.serialize = serialize\n\t\tthis.getDocumentState = getDocumentState\n\t\tthis._api = new SessionApi(options)\n\t\tthis.connection = null\n\n\t\tthis.stepClientIDs = []\n\n\t\tthis.lastStepPush = Date.now()\n\n\t\tthis.version = null\n\t\tthis.baseVersionEtag = baseVersionEtag\n\t\tthis.sending = false\n\t\tthis.#sendIntervalId = null\n\n\t\tthis.autosave = debounce(this._autosave.bind(this), AUTOSAVE_INTERVAL)\n\n\t\treturn this\n\t}\n\n\tasync open({ fileId, initialSession }) {\n\n\t\tconst connect = initialSession\n\t\t\t? Promise.resolve(new Connection({ data: initialSession }, {}))\n\t\t\t: this._api.open({ fileId, baseVersionEtag: this.baseVersionEtag })\n\t\t\t\t.catch(error => this._emitError(error))\n\n\t\tthis.connection = await connect\n\t\tif (!this.connection) {\n\t\t\t// Error was already emitted in connect\n\t\t\treturn\n\t\t}\n\t\tthis.backend = new PollingBackend(this, this.connection)\n\t\tthis.version = this.connection.docStateVersion\n\t\tthis.baseVersionEtag = this.connection.document.baseVersionEtag\n\t\tthis.emit('opened', {\n\t\t\t...this.connection.state,\n\t\t\tversion: this.version,\n\t\t})\n\t\tthis.emit('loaded', {\n\t\t\t...this.connection.state,\n\t\t\tversion: this.version,\n\t\t})\n\t}\n\n\tstartSync() {\n\t\tthis.backend.connect()\n\t}\n\n\tsyncUp() {\n\t\tthis.backend.resetRefetchTimer()\n\t}\n\n\t_emitError(error) {\n\t\tif (!error.response || error.code === 'ECONNABORTED') {\n\t\t\tthis.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t} else {\n\t\t\tthis.emit('error', { type: ERROR_TYPE.LOAD_ERROR, data: error.response })\n\t\t}\n\t}\n\n\tupdateSession(guestName) {\n\t\tif (!this.connection.isPublic) {\n\t\t\treturn Promise.reject(new Error())\n\t\t}\n\t\treturn this.connection.update(guestName)\n\t\t\t.catch((error) => {\n\t\t\t\tlogger.error('Failed to update the session', { error })\n\t\t\t\treturn Promise.reject(error)\n\t\t\t})\n\t}\n\n\tsendSteps(getSendable) {\n\t\t// If already waiting to send, do nothing.\n\t\tif (this.#sendIntervalId) {\n\t\t\treturn\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.#sendIntervalId = setInterval(() => {\n\t\t\t\tif (this.connection && !this.sending) {\n\t\t\t\t\tthis.sendStepsNow(getSendable).then(resolve).catch(reject)\n\t\t\t\t}\n\t\t\t}, 200)\n\t\t})\n\t}\n\n\tsendStepsNow(getSendable) {\n\t\tthis.sending = true\n\t\tclearInterval(this.#sendIntervalId)\n\t\tthis.#sendIntervalId = null\n\t\tconst data = getSendable()\n\t\tif (data.steps.length > 0) {\n\t\t\tthis.emit('stateChange', { dirty: true })\n\t\t}\n\t\treturn this.connection.push(data)\n\t\t\t.then((response) => {\n\t\t\t\tthis.sending = false\n\t\t\t\tthis.emit('sync', {\n\t\t\t\t\tsteps: [],\n\t\t\t\t\tdocument: this.connection.document,\n\t\t\t\t\tversion: this.version,\n\t\t\t\t})\n\t\t\t}).catch(err => {\n\t\t\t\tconst { response, code } = err\n\t\t\t\tthis.sending = false\n\t\t\t\tif (!response || code === 'ECONNABORTED') {\n\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\t\t}\n\t\t\t\tif (response?.status === 412) {\n\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.LOAD_ERROR, data: response })\n\t\t\t\t} else if (response?.status === 403) {\n\t\t\t\t\tif (!data.document) {\n\t\t\t\t\t\t// either the session is invalid or the document is read only.\n\t\t\t\t\t\tlogger.error('failed to write to document - not allowed')\n\t\t\t\t\t}\n\t\t\t\t\t// Only emit conflict event if we have synced until the latest version\n\t\t\t\t\tif (response.data.document?.currentVersion === this.version) {\n\t\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.PUSH_FAILURE, data: {} })\n\t\t\t\t\t\tOC.Notification.showTemporary('Changes could not be sent yet')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new Error('Failed to apply steps. Retry!', { cause: err })\n\t\t\t})\n\t}\n\n\t_receiveSteps({ steps, document, sessions }) {\n\t\tconst awareness = sessions\n\t\t\t.filter(s => s.lastContact > (Math.floor(Date.now() / 1000) - COLLABORATOR_DISCONNECT_TIME))\n\t\t\t.filter(s => s.lastAwarenessMessage)\n\t\t\t.map(s => {\n\t\t\t\treturn { step: s.lastAwarenessMessage, clientId: s.clientId }\n\t\t\t})\n\t\tconst newSteps = [...awareness]\n\t\tfor (let i = 0; i < steps.length; i++) {\n\t\t\tconst singleSteps = steps[i].data\n\t\t\tif (this.version < steps[i].version) {\n\t\t\t\tthis.version = steps[i].version\n\t\t\t}\n\t\t\tif (!Array.isArray(singleSteps)) {\n\t\t\t\tlogger.error('Invalid step data, skipping step', { step: steps[i] })\n\t\t\t\t// TODO: recover\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsingleSteps.forEach(step => {\n\t\t\t\tnewSteps.push({\n\t\t\t\t\tstep,\n\t\t\t\t\tclientID: steps[i].sessionId,\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tthis.lastStepPush = Date.now()\n\t\tthis.emit('sync', {\n\t\t\tsteps: newSteps,\n\t\t\t// TODO: do we actually need to dig into the connection here?\n\t\t\tdocument: this.connection.document,\n\t\t\tversion: this.version,\n\t\t})\n\t}\n\n\tcheckIdle() {\n\t\tconst lastPushMinutesAgo = (Date.now() - this.lastStepPush) / 1000 / 60\n\t\tif (lastPushMinutesAgo > IDLE_TIMEOUT) {\n\t\t\tlogger.debug(`[SyncService] Document is idle for ${this.IDLE_TIMEOUT} minutes, suspending connection`)\n\t\t\tthis.emit('idle')\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\n\t_getContent() {\n\t\treturn this.serialize()\n\t}\n\n\tasync save({ force = false, manualSave = true } = {}) {\n\t\tlogger.debug('[SyncService] saving', arguments[0])\n\t\ttry {\n\t\t\tconst response = await this.connection.save({\n\t\t\t\tversion: this.version,\n\t\t\t\tautosaveContent: this._getContent(),\n\t\t\t\tdocumentState: this.getDocumentState(),\n\t\t\t\tforce,\n\t\t\t\tmanualSave,\n\t\t\t})\n\t\t\tthis.emit('stateChange', { dirty: false })\n\t\t\tthis.connection.document.lastSavedVersionTime = Date.now() / 1000\n\t\t\tlogger.debug('[SyncService] saved', response)\n\t\t\tconst { document, sessions } = response.data\n\t\t\tthis.emit('save', { document, sessions })\n\t\t\tthis.autosave.clear()\n\t\t} catch (e) {\n\t\t\tlogger.error('Failed to save document.', { error: e })\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tforceSave() {\n\t\treturn this.save({ force: true })\n\t}\n\n\t_autosave() {\n\t\treturn this.save({ manualSave: false }).catch((error) => {\n\t\t\tlogger.error('Failed to autosave document.', { error })\n\t\t})\n\t}\n\n\tasync close() {\n\t\t// Make sure to leave no pending requests behind.\n\t\tthis.autosave.clear()\n\t\tthis.backend?.disconnect()\n\t\treturn this._close()\n\t}\n\n\t_close() {\n\t\tif (this.connection === null) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tthis.backend.disconnect()\n\t\treturn this.connection.close()\n\t}\n\n\tuploadAttachment(file) {\n\t\treturn this.connection.uploadAttachment(file)\n\t}\n\n\tinsertAttachmentFile(filePath) {\n\t\treturn this.connection.insertAttachmentFile(filePath)\n\t}\n\n\ton(event, callback) {\n\t\tthis._bus.on(event, callback)\n\t\treturn this\n\t}\n\n\toff(event, callback) {\n\t\tthis._bus.off(event, callback)\n\t\treturn this\n\t}\n\n\temit(event, data) {\n\t\tthis._bus.emit(event, data)\n\t}\n\n}\n\nexport default SyncService\nexport { SyncService, ERROR_TYPE, IDLE_TIMEOUT, COLLABORATOR_IDLE_TIME, COLLABORATOR_DISCONNECT_TIME }\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, `.text-assistant[data-v-4c96cd80]{position:fixed;top:calc(2*var(--header-height));right:0;margin:calc(var(--default-grid-baseline)*3);overflow:auto;width:250px;max-height:200px}.task-list[data-v-4c96cd80]{padding:24px}h4[data-v-4c96cd80]{display:flex;align-items:center;justify-items:center;justify-content:space-between;margin-bottom:12px}.assistant-bubble[data-v-4c96cd80]{display:flex;gap:8px;background-color:var(--color-primary-element-light);border-radius:var(--border-radius-rounded);padding:2px 8px}.assistant-bubble .icon[data-v-4c96cd80]{color:var(--color-primary)}ul[data-v-4c96cd80]{width:calc(100% - 16px)}ul[data-v-4c96cd80] .list-item{padding-top:0;padding-bottom:0}ul[data-v-4c96cd80] .line-two__additional_elements{margin-top:-22px}.floating-menu[data-v-4c96cd80]{position:relative}.floating-menu--badge[data-v-4c96cd80]{position:absolute;bottom:-2px;right:-2px}.icon-status--success[data-v-4c96cd80]{color:var(--color-success)}.icon-status--failed[data-v-4c96cd80]{color:var(--color-error)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Assistant.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,cAAA,CACA,gCAAA,CACA,OAAA,CACA,2CAAA,CACA,aAAA,CACA,WAAA,CACA,gBAAA,CAGD,4BACC,YAAA,CAGD,oBACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,6BAAA,CACA,kBAAA,CAGD,mCACC,YAAA,CACA,OAAA,CACA,mDAAA,CACA,0CAAA,CACA,eAAA,CAEA,yCACC,0BAAA,CAIF,oBACC,uBAAA,CAEA,+BACC,aAAA,CACA,gBAAA,CAGD,mDACC,gBAAA,CAIF,gCACC,iBAAA,CAEA,uCACC,iBAAA,CACA,WAAA,CACA,UAAA,CAIF,uCACC,0BAAA,CAGD,sCACC,wBAAA\",\"sourcesContent\":[\"\\n.text-assistant {\\n\\tposition: fixed;\\n\\ttop: calc(2 * var(--header-height));\\n\\tright: 0;\\n\\tmargin: calc(var(--default-grid-baseline) * 3);\\n\\toverflow: auto;\\n\\twidth: 250px;\\n\\tmax-height: 200px;\\n}\\n\\n.task-list {\\n\\tpadding: 24px;\\n}\\n\\nh4 {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-items: center;\\n\\tjustify-content: space-between;\\n\\tmargin-bottom: 12px;\\n}\\n\\n.assistant-bubble {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tbackground-color: var(--color-primary-element-light);\\n\\tborder-radius: var(--border-radius-rounded);\\n\\tpadding: 2px 8px;\\n\\n\\t.icon {\\n\\t\\tcolor: var(--color-primary);\\n\\t}\\n}\\n\\nul {\\n\\twidth: calc(100% - 16px);\\n\\n\\t& :deep(.list-item) {\\n\\t\\tpadding-top: 0;\\n\\t\\tpadding-bottom: 0;\\n\\t}\\n\\n\\t& :deep(.line-two__additional_elements) {\\n\\t\\tmargin-top: -22px;\\n\\t}\\n}\\n\\n.floating-menu {\\n\\tposition: relative;\\n\\n\\t&--badge {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: -2px;\\n\\t\\tright: -2px;\\n\\t}\\n}\\n\\n.icon-status--success {\\n\\tcolor: var(--color-success);\\n}\\n\\n.icon-status--failed {\\n\\tcolor: var(--color-error);\\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, `.editor__content[data-v-151c6c0d]{max-width:var(--text-editor-max-width);margin:auto;position:relative;width:100%}.text-editor__content-wrapper[data-v-151c6c0d]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-151c6c0d]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-151c6c0d],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-151c6c0d]{height:100%;position:relative}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/BaseReader.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,sCAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAGD,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.editor__content {\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\\n.text-editor__content-wrapper {\\n\\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\\n\\tdisplay: grid;\\n\\tgrid-template-columns: 1fr auto;\\n\\t&.--show-outline {\\n\\t\\tgrid-template-columns: var(--side-width) auto var(--side-width);\\n\\t}\\n\\t.text-editor__content-wrapper__left,\\n\\t.text-editor__content-wrapper__right {\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\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, `#resolve-conflicts[data-v-f43ae8b6]{display:flex;width:100%;margin:auto;padding:20px 0}#resolve-conflicts button[data-v-f43ae8b6]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/CollisionResolveDialog.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,YAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CAEA,2CACC,WAAA\",\"sourcesContent\":[\"\\n#resolve-conflicts {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\tmargin: auto;\\n\\tpadding: 20px 0;\\n\\n\\tbutton {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal-container .text-editor[data-v-5c3f88f6]{top:0;height:calc(100vh - var(--header-height))}.text-editor[data-v-5c3f88f6]{display:block;width:100%;max-width:100%;height:100%;left:0;margin:0 auto;position:relative;background-color:var(--color-main-background)}.text-editor .text-editor__wrapper.has-conflicts[data-v-5c3f88f6]{height:calc(100% - 50px)}#body-public[data-v-5c3f88f6]{height:auto}#files-public-content .text-editor[data-v-5c3f88f6]{top:0;width:100%}#files-public-content .text-editor .text-editor__main[data-v-5c3f88f6]{overflow:auto;z-index:20}#files-public-content .text-editor .has-conflicts .text-editor__main[data-v-5c3f88f6]{padding-top:0}.menubar-placeholder[data-v-5c3f88f6],.text-editor--readonly-bar[data-v-5c3f88f6]{position:fixed;position:-webkit-sticky;position:sticky;top:0;opacity:0;visibility:hidden;height:44px;padding-top:3px;padding-bottom:3px}.text-editor--readonly-bar[data-v-5c3f88f6],.menubar-placeholder--with-slot[data-v-5c3f88f6]{opacity:unset;visibility:unset;z-index:50;max-width:var(--text-editor-max-width);margin:auto;width:100%;background-color:var(--color-main-background)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,KAAA,CACA,yCAAA,CAGD,8BACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CACA,MAAA,CACA,aAAA,CACA,iBAAA,CACA,6CAAA,CAGD,kEACC,wBAAA,CAGD,8BACC,WAAA,CAIA,oDACC,KAAA,CACA,UAAA,CAEA,uEACC,aAAA,CACA,UAAA,CAED,sFACC,aAAA,CAKH,kFAEC,cAAA,CACA,uBAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CAGD,6FAEC,aAAA,CACA,gBAAA,CAEA,UAAA,CACA,sCAAA,CACA,WAAA,CACA,UAAA,CACA,6CAAA\",\"sourcesContent\":[\"\\n.modal-container .text-editor {\\n\\ttop: 0;\\n\\theight: calc(100vh - var(--header-height));\\n}\\n\\n.text-editor {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmax-width: 100%;\\n\\theight: 100%;\\n\\tleft: 0;\\n\\tmargin: 0 auto;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.text-editor .text-editor__wrapper.has-conflicts {\\n\\theight: calc(100% - 50px);\\n}\\n\\n#body-public {\\n\\theight: auto;\\n}\\n\\n#files-public-content {\\n\\t.text-editor {\\n\\t\\ttop: 0;\\n\\t\\twidth: 100%;\\n\\n\\t\\t.text-editor__main {\\n\\t\\t\\toverflow: auto;\\n\\t\\t\\tz-index: 20;\\n\\t\\t}\\n\\t\\t.has-conflicts .text-editor__main {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.menubar-placeholder,\\n.text-editor--readonly-bar {\\n\\tposition: fixed;\\n\\tposition: -webkit-sticky;\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\topacity: 0;\\n\\tvisibility: hidden;\\n\\theight: 44px; // important for mobile so that the buttons are always inside the container\\n\\tpadding-top:3px;\\n\\tpadding-bottom: 3px;\\n}\\n\\n.text-editor--readonly-bar,\\n.menubar-placeholder--with-slot {\\n\\topacity: unset;\\n\\tvisibility: unset;\\n\\n\\tz-index: 50;\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\twidth: 100%;\\n\\tbackground-color: var(--color-main-background);\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--text-editor-max-width: 670px }:root{--text-editor-max-width: 670px }.ProseMirror-hideselection{caret-color:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::-moz-selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}.has-conflicts .ProseMirror-menubar,.text-editor__wrapper.icon-loading .ProseMirror-menubar{display:none}.ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--color-main-text);animation:ProseMirror-cursor-blink 1.1s steps(2, start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.animation-rotate{animation:rotate var(--animation-duration, 0.8s) linear infinite}[data-handler=text]{background-color:var(--color-main-background);border-top:3px solid var(--color-primary-element)}[data-handler=text] .modal-title{font-weight:bold}@keyframes fadeInDown{from{opacity:0;transform:translate3d(0, -100%, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%, 0, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}.fadeInLeft{animation-name:fadeInLeft}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#header{display:none !important}#content{display:block !important;position:relative !important;border-radius:0;margin:0;width:100%;height:fit-content}footer{display:none !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor{height:fit-content !important}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor .text-editor__wrapper div.ProseMirror{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}.text-editor .text-editor__wrapper div.ProseMirror h1,.text-editor .text-editor__wrapper div.ProseMirror h2,.text-editor .text-editor__wrapper div.ProseMirror h3,.text-editor .text-editor__wrapper div.ProseMirror h4,.text-editor .text-editor__wrapper div.ProseMirror h5{break-after:avoid;page-break-after:avoid}.text-editor .text-editor__wrapper div.ProseMirror .image,.text-editor .text-editor__wrapper div.ProseMirror img,.text-editor .text-editor__wrapper div.ProseMirror table{break-inside:avoid-page;page-break-inside:avoid;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor .text-editor__wrapper div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor .text-editor__wrapper div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor .text-editor__wrapper div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor .text-editor__wrapper div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}.collaboration-cursor__caret,.collaboration-cursor__label{display:none}}.text-editor__wrapper div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:var(--default-font-size);outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}.text-editor__wrapper div.ProseMirror :target{scroll-margin-top:50px}.text-editor__wrapper div.ProseMirror[contenteditable=true],.text-editor__wrapper div.ProseMirror[contenteditable=false],.text-editor__wrapper div.ProseMirror [contenteditable=true],.text-editor__wrapper div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:var(--default-font-size)}.text-editor__wrapper div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}.text-editor__wrapper div.ProseMirror ul[data-type=taskList]{margin-left:1px}.text-editor__wrapper div.ProseMirror .checkbox-item{display:flex;align-items:start}.text-editor__wrapper div.ProseMirror .checkbox-item input[type=checkbox]{display:none}.text-editor__wrapper div.ProseMirror .checkbox-item:before{content:\"\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer;left:9px}.text-editor__wrapper div.ProseMirror .checkbox-item.checked:before{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-color:var(--color-primary-element);border-color:var(--color-primary-element)}.text-editor__wrapper div.ProseMirror .checkbox-item.checked>label>p{color:var(--color-text-maxcontrast);text-decoration:line-through}.text-editor__wrapper div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}.text-editor__wrapper div.ProseMirror>*:first-child{margin-top:10px}.text-editor__wrapper div.ProseMirror>h1:first-child,.text-editor__wrapper div.ProseMirror h2:first-child,.text-editor__wrapper div.ProseMirror h3:first-child,.text-editor__wrapper div.ProseMirror h4:first-child,.text-editor__wrapper div.ProseMirror h5:first-child,.text-editor__wrapper div.ProseMirror h6:first-child{margin-top:0}.text-editor__wrapper div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}.text-editor__wrapper div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}.text-editor__wrapper div.ProseMirror em{font-style:italic}.text-editor__wrapper div.ProseMirror h1,.text-editor__wrapper div.ProseMirror h2,.text-editor__wrapper div.ProseMirror h3,.text-editor__wrapper div.ProseMirror h4,.text-editor__wrapper div.ProseMirror h5,.text-editor__wrapper div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror h1{font-size:30px}.text-editor__wrapper div.ProseMirror h2{font-size:26px}.text-editor__wrapper div.ProseMirror h3{font-size:23px}.text-editor__wrapper div.ProseMirror h4{font-size:20px}.text-editor__wrapper div.ProseMirror h5{font-size:17px}.text-editor__wrapper div.ProseMirror h6{font-size:var(--default-font-size)}.text-editor__wrapper div.ProseMirror img{cursor:default;max-width:100%}.text-editor__wrapper div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}.text-editor__wrapper div.ProseMirror hr:after{content:\"\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}.text-editor__wrapper div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.text-editor__wrapper div.ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}.text-editor__wrapper div.ProseMirror pre code .hljs-comment,.text-editor__wrapper div.ProseMirror pre code .hljs-quote{color:#999}.text-editor__wrapper div.ProseMirror pre code .hljs-variable,.text-editor__wrapper div.ProseMirror pre code .hljs-template-variable,.text-editor__wrapper div.ProseMirror pre code .hljs-attribute,.text-editor__wrapper div.ProseMirror pre code .hljs-tag,.text-editor__wrapper div.ProseMirror pre code .hljs-name,.text-editor__wrapper div.ProseMirror pre code .hljs-regexp,.text-editor__wrapper div.ProseMirror pre code .hljs-link,.text-editor__wrapper div.ProseMirror pre code .hljs-selector-id,.text-editor__wrapper div.ProseMirror pre code .hljs-selector-class{color:#f2777a}.text-editor__wrapper div.ProseMirror pre code .hljs-number,.text-editor__wrapper div.ProseMirror pre code .hljs-meta,.text-editor__wrapper div.ProseMirror pre code .hljs-built_in,.text-editor__wrapper div.ProseMirror pre code .hljs-builtin-name,.text-editor__wrapper div.ProseMirror pre code .hljs-literal,.text-editor__wrapper div.ProseMirror pre code .hljs-type,.text-editor__wrapper div.ProseMirror pre code .hljs-params{color:#f99157}.text-editor__wrapper div.ProseMirror pre code .hljs-string,.text-editor__wrapper div.ProseMirror pre code .hljs-symbol,.text-editor__wrapper div.ProseMirror pre code .hljs-bullet{color:#9c9}.text-editor__wrapper div.ProseMirror pre code .hljs-title,.text-editor__wrapper div.ProseMirror pre code .hljs-section{color:#fc6}.text-editor__wrapper div.ProseMirror pre code .hljs-keyword,.text-editor__wrapper div.ProseMirror pre code .hljs-selector-tag{color:#69c}.text-editor__wrapper div.ProseMirror pre code .hljs-emphasis{font-style:italic}.text-editor__wrapper div.ProseMirror pre code .hljs-strong{font-weight:700}.text-editor__wrapper div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}.text-editor__wrapper div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}.text-editor__wrapper div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.text-editor__wrapper div.ProseMirror li{position:relative;padding-left:3px}.text-editor__wrapper div.ProseMirror li p .paragraph-content{margin-bottom:.5em}.text-editor__wrapper div.ProseMirror ul,.text-editor__wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}.text-editor__wrapper div.ProseMirror ul>li{list-style-type:disc}.text-editor__wrapper div.ProseMirror li ul>li{list-style-type:circle}.text-editor__wrapper div.ProseMirror li li ul>li{list-style-type:square}.text-editor__wrapper div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}.text-editor__wrapper div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}.text-editor__wrapper div.ProseMirror table+*{margin-top:1em}.text-editor__wrapper div.ProseMirror table td,.text-editor__wrapper div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}.text-editor__wrapper div.ProseMirror table td:first-child,.text-editor__wrapper div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}.text-editor__wrapper div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}.text-editor__wrapper div.ProseMirror table th>div{display:flex}.text-editor__wrapper div.ProseMirror table tr{background-color:var(--table-color-background)}.text-editor__wrapper div.ProseMirror table tr:hover,.text-editor__wrapper div.ProseMirror table tr:active,.text-editor__wrapper div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}.text-editor__wrapper div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.text-editor__wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}.text-editor__wrapper .editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.text-editor__wrapper .editor__content{tab-size:4}.text-editor__wrapper .tippy-content div{visibility:visible !important}.text-editor__wrapper .text-editor__main.draggedOver{background-color:var(--color-primary-element-light)}.text-editor__wrapper .text-editor__main .text-editor__content-wrapper{position:relative}.text-editor__wrapper.has-conflicts>.editor{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper #read-only-editor{margin:0px auto;padding-top:50px;overflow:initial}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid #0d0d0d;border-right:1px solid #0d0d0d;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-style:normal;font-weight:600;line-height:normal;user-select:none;color:#0d0d0d;padding:.1rem .3rem;border-radius:3px 3px 3px 0;white-space:nowrap;opacity:0}.collaboration-cursor__label.collaboration-cursor__label__active{opacity:1}.collaboration-cursor__label:not(.collaboration-cursor__label__active){transition:opacity .2s 5s}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/css/variables.scss\",\"webpack://./src/css/style.scss\",\"webpack://./src/css/print.scss\",\"webpack://./src/css/prosemirror.scss\",\"webpack://./src/components/Editor.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n\\t--text-editor-max-width: 670px\\n}\\n\\n\",\"@use 'sass:math';\\n\\n@import './variables';\\n\\n.ProseMirror-hideselection {\\n\\tcaret-color: transparent;\\n\\tcolor: var(--color-main-text);\\n\\n\\t*::selection {\\n\\t\\tbackground: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t*::-moz-selection {\\n\\t\\tbackground: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n}\\n\\n.ProseMirror-selectednode {\\n\\toutline: 2px solid #8cf;\\n}\\n\\n/* Make sure li selections wrap around markers */\\nli.ProseMirror-selectednode {\\n\\toutline: none;\\n\\n\\t&:after {\\n\\t\\tcontent: '';\\n\\t\\tposition: absolute;\\n\\t\\tleft: -32px;\\n\\t\\tright: -2px; top: -2px; bottom: -2px;\\n\\t\\tborder: 2px solid #8cf;\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\\n.has-conflicts,\\n.text-editor__wrapper.icon-loading {\\n\\t.ProseMirror-menubar {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.ProseMirror-gapcursor {\\n\\tdisplay: none;\\n\\tpointer-events: none;\\n\\tposition: absolute;\\n\\n\\t&:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\ttop: -2px;\\n\\t\\twidth: 20px;\\n\\t\\tborder-top: 1px solid var(--color-main-text);\\n\\t\\tanimation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n\\t}\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n\\tto {\\n\\t\\tvisibility: hidden;\\n\\t}\\n}\\n\\n.animation-rotate {\\n\\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\\n}\\n\\n[data-handler='text'] {\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-top: 3px solid var(--color-primary-element);\\n\\t.modal-title {\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInDown.css\\n@keyframes fadeInDown {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t\\ttransform: translate3d(0, -100%, 0);\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t\\ttransform: translate3d(0, 0, 0);\\n\\t}\\n}\\n\\n\\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInLeft.css\\n@keyframes fadeInLeft {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t\\ttransform: translate3d(-100%, 0, 0);\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t\\ttransform: translate3d(0, 0, 0);\\n\\t}\\n}\\n\\n.fadeInLeft {\\n\\tanimation-name: fadeInLeft;\\n}\\n\",\"@media print {\\n\\t@page {\\n\\t\\tsize: A4;\\n\\t\\tmargin: 2.5cm 2cm 2cm 2.5cm;\\n\\t}\\n\\n\\tbody {\\n\\t\\t// position: fixed does not support scrolling and as such only prints one page\\n\\t\\tposition: absolute;\\n\\t\\toverflow: visible!important;\\n\\t}\\n\\n\\t#header {\\n\\t\\tdisplay: none!important;\\n\\t}\\n\\n\\t#content {\\n\\t\\tdisplay: block!important;\\n\\t\\tposition: relative!important;\\n\\t\\tborder-radius: 0;\\n\\t\\tmargin: 0;\\n\\t\\twidth: 100%;\\n\\t\\theight: fit-content;\\n\\t}\\n\\n\\tfooter {\\n\\t\\tdisplay: none!important;\\n\\t}\\n\\n\\t#viewer[data-handler='text'] {\\n\\t\\t// Hide top border\\n\\t\\tborder: none;\\n\\t\\twidth: 100%!important;\\n\\t\\t// NcModal uses fixed, which will be cropped when printed\\n\\t\\tposition: absolute!important;\\n\\n\\t\\t.modal-header {\\n\\t\\t\\t// Hide modal header (close button)\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.modal-container {\\n\\t\\t\\t// Make sure top aligned as we hided the menubar */\\n\\t\\t\\ttop: 0px;\\n\\t\\t\\theight: fit-content;\\n\\t\\t}\\n\\t}\\n\\n\\t.text-editor {\\n\\t\\theight: fit-content!important;\\n\\n\\t\\t.text-menubar {\\n\\t\\t\\t// Hide menu bar\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.action-item {\\n\\t\\t\\t// Hide table settings\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.editor__content {\\n\\t\\t\\t// Margins set by page rule\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.text-editor__wrapper {\\n\\t\\t\\theight: fit-content;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\tdiv.ProseMirror {\\n\\t\\t\\t\\tmargin-top: 0;\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tpadding-top: 0;\\n\\t\\t\\t\\tpadding-bottom: 0;\\n\\n\\t\\t\\t\\th1, h2, h3, h4, h5 {\\n\\t\\t\\t\\t\\t// orphaned headlines are ugly\\n\\t\\t\\t\\t\\tbreak-after: avoid;\\n\\t\\t\\t\\t\\tpage-break-after: avoid;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.image, img, table {\\n\\t\\t\\t\\t\\t// try no page breaks within tables or images\\n\\t\\t\\t\\t\\tbreak-inside: avoid-page;\\n\\t\\t\\t\\t\\tpage-break-inside: avoid;\\n\\t\\t\\t\\t\\t// Some more indention\\n\\t\\t\\t\\t\\tmax-width: 90%!important;\\n\\t\\t\\t\\t\\tmargin: 5vw auto 5vw 5%!important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Add some borders below header and between columns\\n\\t\\t\\t\\tth {\\n\\t\\t\\t\\t\\tcolor: black!important;\\n\\t\\t\\t\\t\\tfont-weight: bold!important;\\n\\t\\t\\t\\t\\tborder-width: 0 1px 2px 0!important;\\n\\t\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\t\\tborder-style: none solid solid none!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tth:last-of-type {\\n\\t\\t\\t\\t\\tborder-width: 0 0 2px 0!important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttd {\\n\\t\\t\\t\\t\\tborder-style: none solid none none!important;\\n\\t\\t\\t\\t\\tborder-width: 1px!important;\\n\\t\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\ttd:last-of-type {\\n\\t\\t\\t\\t\\tborder: none!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.menubar-placeholder, .text-editor--readonly-bar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.text-editor__content-wrapper {\\n\\t\\t&.--show-outline {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.editor--outline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\theight: auto;\\n\\t\\t\\toverflow: unset;\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t\\t.editor--outline__btn-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t.collaboration-cursor__caret,\\n\\t.collaboration-cursor__label {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\",\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: var(--default-font-size);\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: var(--default-font-size);\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\t> label > p {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 26px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 23px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 20px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(data-language);\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttext-align: right;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 0.6rem;\\n\\t\\t}\\n\\t\\tcode {\\n\\t\\t\\t.hljs-comment,\\n\\t\\t\\t.hljs-quote {\\n\\t\\t\\t\\tcolor: #999999;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-variable,\\n\\t\\t\\t.hljs-template-variable,\\n\\t\\t\\t.hljs-attribute,\\n\\t\\t\\t.hljs-tag,\\n\\t\\t\\t.hljs-name,\\n\\t\\t\\t.hljs-regexp,\\n\\t\\t\\t.hljs-link,\\n\\t\\t\\t.hljs-selector-id,\\n\\t\\t\\t.hljs-selector-class {\\n\\t\\t\\t\\tcolor: #f2777a;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-number,\\n\\t\\t\\t.hljs-meta,\\n\\t\\t\\t.hljs-built_in,\\n\\t\\t\\t.hljs-builtin-name,\\n\\t\\t\\t.hljs-literal,\\n\\t\\t\\t.hljs-type,\\n\\t\\t\\t.hljs-params {\\n\\t\\t\\t\\tcolor: #f99157;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-string,\\n\\t\\t\\t.hljs-symbol,\\n\\t\\t\\t.hljs-bullet {\\n\\t\\t\\t\\tcolor: #99cc99;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-title,\\n\\t\\t\\t.hljs-section {\\n\\t\\t\\t\\tcolor: #ffcc66;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-keyword,\\n\\t\\t\\t.hljs-selector-tag {\\n\\t\\t\\t\\tcolor: #6699cc;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-emphasis {\\n\\t\\t\\t\\tfont-style: italic;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-strong {\\n\\t\\t\\t\\tfont-weight: 700;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\\n.tippy-content div {\\n\\tvisibility: visible !important;\\n}\\n\",\"\\n@import './../css/variables';\\n@import './../css/style';\\n@import './../css/print';\\n\\n.text-editor__wrapper {\\n\\t@import './../css/prosemirror';\\n\\n\\t// relative position for the alignment of the menububble\\n\\t.text-editor__main {\\n\\t\\t&.draggedOver {\\n\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t}\\n\\t\\t.text-editor__content-wrapper {\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t}\\n}\\n\\n.text-editor__wrapper.has-conflicts > .editor {\\n\\twidth: 50%;\\n}\\n\\n.text-editor__wrapper.has-conflicts > .content-wrapper {\\n\\twidth: 50%;\\n\\t#read-only-editor {\\n\\t\\tmargin: 0px auto;\\n\\t\\tpadding-top: 50px;\\n\\t\\toverflow: initial;\\n\\t}\\n}\\n\\n@keyframes spin {\\n\\t0% { transform: rotate(0deg); }\\n\\t100% { transform: rotate(360deg); }\\n}\\n\\n/* Give a remote user a caret */\\n.collaboration-cursor__caret {\\n\\tposition: relative;\\n\\tmargin-left: -1px;\\n\\tmargin-right: -1px;\\n\\tborder-left: 1px solid #0D0D0D;\\n\\tborder-right: 1px solid #0D0D0D;\\n\\tword-break: normal;\\n\\tpointer-events: none;\\n}\\n\\n/* Render the username above the caret */\\n.collaboration-cursor__label {\\n\\tposition: absolute;\\n\\ttop: -1.4em;\\n\\tleft: -1px;\\n\\tfont-size: 12px;\\n\\tfont-style: normal;\\n\\tfont-weight: 600;\\n\\tline-height: normal;\\n\\tuser-select: none;\\n\\tcolor: #0D0D0D;\\n\\tpadding: 0.1rem 0.3rem;\\n\\tborder-radius: 3px 3px 3px 0;\\n\\twhite-space: nowrap;\\n\\topacity: 0;\\n\\n\\t&.collaboration-cursor__label__active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&:not(.collaboration-cursor__label__active) {\\n\\t\\ttransition: opacity 0.2s 5s;\\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, `.editor__content[data-v-7394eeaa]{max-width:min(var(--text-editor-max-width),100vw - 16px);margin:auto;position:relative;width:100%}.ie .editor__content[data-v-7394eeaa] .ProseMirror{padding-top:50px}.text-editor__content-wrapper[data-v-7394eeaa]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-7394eeaa]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-7394eeaa],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-7394eeaa]{height:100%;position:relative}.is-rich-workspace .text-editor__content-wrapper[data-v-7394eeaa]{--side-width: var(--text-editor-max-width);grid-template-columns:var(--side-width) auto}.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-7394eeaa],.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-7394eeaa]{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/ContentContainer.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,wDAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAIA,mDACC,gBAAA,CAIF,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA,CAKD,kEACC,0CAAA,CACA,4CAAA,CACA,6MAEC,YAAA\",\"sourcesContent\":[\"\\n.editor__content {\\n\\tmax-width: min(var(--text-editor-max-width), calc(100vw - 16px));\\n\\tmargin: auto;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\\n.ie {\\n\\t.editor__content:deep(.ProseMirror) {\\n\\t\\tpadding-top: 50px;\\n\\t}\\n}\\n\\n.text-editor__content-wrapper {\\n\\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\\n\\tdisplay: grid;\\n\\tgrid-template-columns: 1fr auto;\\n\\t&.--show-outline {\\n\\t\\tgrid-template-columns: var(--side-width) auto var(--side-width);\\n\\t}\\n\\t.text-editor__content-wrapper__left,\\n\\t.text-editor__content-wrapper__right {\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\\n.is-rich-workspace {\\n\\t.text-editor__content-wrapper {\\n\\t\\t--side-width: var(--text-editor-max-width);\\n\\t\\tgrid-template-columns: var(--side-width) auto;\\n\\t\\t.text-editor__content-wrapper__left,\\n\\t\\t.text-editor__content-wrapper__right {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.document-status[data-v-30c7e03a]{position:sticky;top:16px;z-index:100000;max-width:var(--text-editor-max-width);margin:auto;background-color:var(--color-main-background)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/DocumentStatus.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,eAAA,CACA,QAAA,CACA,cAAA,CAEA,sCAAA,CACA,WAAA,CACA,6CAAA\",\"sourcesContent\":[\"\\n.document-status {\\n\\tposition: sticky;\\n\\ttop: 16px;\\n\\tz-index: 100000;\\n\\t// max-height: 50px;\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\tbackground-color: var(--color-main-background);\\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, `.text-editor__main[data-v-8ffa875e],.editor[data-v-8ffa875e]{background:var(--color-main-background);color:var(--color-main-text);background-clip:padding-box;border-radius:var(--border-radius);padding:0;position:relative;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/MainContainer.vue\"],\"names\":[],\"mappings\":\"AACA,6DACC,uCAAA,CACA,4BAAA,CACA,2BAAA,CACA,kCAAA,CACA,SAAA,CACA,iBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.text-editor__main, .editor {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-main-text);\\n\\tbackground-clip: padding-box;\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 0;\\n\\tposition: relative;\\n\\twidth: 100%;\\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, `.text-editor__session-list[data-v-42888af2]{display:flex}.text-editor__session-list input[data-v-42888af2],.text-editor__session-list div[data-v-42888af2]{vertical-align:middle;margin-left:3px}.save-status[data-v-42888af2]{border-radius:50%;color:var(--color-text-lighter);display:inline-flex;justify-content:center;padding:0;height:44px;width:44px}.save-status[data-v-42888af2]:hover{background-color:var(--color-background-hover)}.last-saved[data-v-42888af2]{padding:6px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/Status.vue\"],\"names\":[],\"mappings\":\"AACA,4CACC,YAAA,CAEA,kGACC,qBAAA,CACA,eAAA,CAIF,8BACC,iBAAA,CACA,+BAAA,CACA,mBAAA,CACA,sBAAA,CACA,SAAA,CACA,WAAA,CACA,UAAA,CAEA,oCACC,8CAAA,CAIF,6BACC,WAAA\",\"sourcesContent\":[\"\\n.text-editor__session-list {\\n\\tdisplay: flex;\\n\\n\\tinput, div {\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-left: 3px;\\n\\t}\\n}\\n\\n.save-status {\\n\\tborder-radius: 50%;\\n\\tcolor: var(--color-text-lighter);\\n\\tdisplay: inline-flex;\\n\\tjustify-content: center;\\n\\tpadding: 0;\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n}\\n\\n.last-saved {\\n\\tpadding: 6px;\\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, `.text-editor__wrapper[data-v-55273a24]{display:flex;width:100%;height:100%}.text-editor__wrapper.show-color-annotations[data-v-55273a24] .author-annotation{padding-top:2px;padding-bottom:2px}.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .author-annotation,.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .image{background-color:rgba(0,0,0,0) !important}.text-editor__wrapper .ProseMirror[data-v-55273a24]{margin-top:0 !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/Wrapper.vue\"],\"names\":[],\"mappings\":\"AAEA,uCACC,YAAA,CACA,UAAA,CACA,WAAA,CAEA,iFACC,eAAA,CACA,kBAAA,CAGD,kKAEC,yCAAA,CAGD,oDACC,uBAAA\",\"sourcesContent\":[\"\\n\\n.text-editor__wrapper {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t&.show-color-annotations:deep(.author-annotation) {\\n\\t\\tpadding-top: 2px;\\n\\t\\tpadding-bottom: 2px;\\n\\t}\\n\\n\\t&:not(.show-color-annotations):deep(.author-annotation),\\n\\t&:not(.show-color-annotations):deep(.image) {\\n\\t\\tbackground-color: transparent !important;\\n\\t}\\n\\n\\t.ProseMirror {\\n\\t\\tmargin-top: 0 !important;\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table[data-v-0b17af4e]{margin-top:24px;border-collapse:collapse}table tbody tr[data-v-0b17af4e]:hover,table tbody tr[data-v-0b17af4e]:focus,table tbody tr[data-v-0b17af4e]:active{background-color:rgba(0,0,0,0) !important}table thead tr[data-v-0b17af4e]{border:none}table th[data-v-0b17af4e]{font-weight:bold;padding:.75rem 1rem .75rem 0;border-bottom:2px solid var(--color-background-darker)}table td[data-v-0b17af4e]{padding:.75rem 1rem .75rem 0;border-top:1px solid var(--color-background-dark);border-bottom:unset}table td.noborder[data-v-0b17af4e]{border-top:unset}table td.ellipsis_top[data-v-0b17af4e]{padding-bottom:0}table td.ellipsis[data-v-0b17af4e]{padding-top:0;padding-bottom:0}table td.ellipsis_bottom[data-v-0b17af4e]{padding-top:0}table kbd[data-v-0b17af4e]{font-size:smaller}table code[data-v-0b17af4e]{padding:.2em .4em;font-size:90%;background-color:var(--color-background-dark);border-radius:6px}div.ProseMirror[data-v-0b17af4e]{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:var(--default-font-size);outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror[data-v-0b17af4e] :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true][data-v-0b17af4e],div.ProseMirror[contenteditable=false][data-v-0b17af4e],div.ProseMirror [contenteditable=true][data-v-0b17af4e],div.ProseMirror [contenteditable=false][data-v-0b17af4e]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:var(--default-font-size)}div.ProseMirror[contenteditable=true][data-v-0b17af4e]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false][data-v-0b17af4e]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true][data-v-0b17af4e]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false][data-v-0b17af4e]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true][data-v-0b17af4e]:focus,div.ProseMirror[contenteditable=true][data-v-0b17af4e]:focus-visible,div.ProseMirror[contenteditable=false][data-v-0b17af4e]:focus,div.ProseMirror[contenteditable=false][data-v-0b17af4e]:focus-visible,div.ProseMirror [contenteditable=true][data-v-0b17af4e]:focus,div.ProseMirror [contenteditable=true][data-v-0b17af4e]:focus-visible,div.ProseMirror [contenteditable=false][data-v-0b17af4e]:focus,div.ProseMirror [contenteditable=false][data-v-0b17af4e]:focus-visible{box-shadow:none !important}div.ProseMirror ul[data-type=taskList][data-v-0b17af4e]{margin-left:1px}div.ProseMirror .checkbox-item[data-v-0b17af4e]{display:flex;align-items:start}div.ProseMirror .checkbox-item input[type=checkbox][data-v-0b17af4e]{display:none}div.ProseMirror .checkbox-item[data-v-0b17af4e]:before{content:\"\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer;left:9px}div.ProseMirror .checkbox-item.checked[data-v-0b17af4e]:before{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked>label>p[data-v-0b17af4e]{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label[data-v-0b17af4e]{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*[data-v-0b17af4e]:first-child{margin-top:10px}div.ProseMirror>h1[data-v-0b17af4e]:first-child,div.ProseMirror h2[data-v-0b17af4e]:first-child,div.ProseMirror h3[data-v-0b17af4e]:first-child,div.ProseMirror h4[data-v-0b17af4e]:first-child,div.ProseMirror h5[data-v-0b17af4e]:first-child,div.ProseMirror h6[data-v-0b17af4e]:first-child{margin-top:0}div.ProseMirror a[data-v-0b17af4e]{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content[data-v-0b17af4e]{margin-bottom:1em;line-height:150%}div.ProseMirror em[data-v-0b17af4e]{font-style:italic}div.ProseMirror h1[data-v-0b17af4e],div.ProseMirror h2[data-v-0b17af4e],div.ProseMirror h3[data-v-0b17af4e],div.ProseMirror h4[data-v-0b17af4e],div.ProseMirror h5[data-v-0b17af4e],div.ProseMirror h6[data-v-0b17af4e]{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1[data-v-0b17af4e]{font-size:30px}div.ProseMirror h2[data-v-0b17af4e]{font-size:26px}div.ProseMirror h3[data-v-0b17af4e]{font-size:23px}div.ProseMirror h4[data-v-0b17af4e]{font-size:20px}div.ProseMirror h5[data-v-0b17af4e]{font-size:17px}div.ProseMirror h6[data-v-0b17af4e]{font-size:var(--default-font-size)}div.ProseMirror img[data-v-0b17af4e]{cursor:default;max-width:100%}div.ProseMirror hr[data-v-0b17af4e]{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr[data-v-0b17af4e]:after{content:\"\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre[data-v-0b17af4e]{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre[data-v-0b17af4e]::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}div.ProseMirror pre code .hljs-comment[data-v-0b17af4e],div.ProseMirror pre code .hljs-quote[data-v-0b17af4e]{color:#999}div.ProseMirror pre code .hljs-variable[data-v-0b17af4e],div.ProseMirror pre code .hljs-template-variable[data-v-0b17af4e],div.ProseMirror pre code .hljs-attribute[data-v-0b17af4e],div.ProseMirror pre code .hljs-tag[data-v-0b17af4e],div.ProseMirror pre code .hljs-name[data-v-0b17af4e],div.ProseMirror pre code .hljs-regexp[data-v-0b17af4e],div.ProseMirror pre code .hljs-link[data-v-0b17af4e],div.ProseMirror pre code .hljs-selector-id[data-v-0b17af4e],div.ProseMirror pre code .hljs-selector-class[data-v-0b17af4e]{color:#f2777a}div.ProseMirror pre code .hljs-number[data-v-0b17af4e],div.ProseMirror pre code .hljs-meta[data-v-0b17af4e],div.ProseMirror pre code .hljs-built_in[data-v-0b17af4e],div.ProseMirror pre code .hljs-builtin-name[data-v-0b17af4e],div.ProseMirror pre code .hljs-literal[data-v-0b17af4e],div.ProseMirror pre code .hljs-type[data-v-0b17af4e],div.ProseMirror pre code .hljs-params[data-v-0b17af4e]{color:#f99157}div.ProseMirror pre code .hljs-string[data-v-0b17af4e],div.ProseMirror pre code .hljs-symbol[data-v-0b17af4e],div.ProseMirror pre code .hljs-bullet[data-v-0b17af4e]{color:#9c9}div.ProseMirror pre code .hljs-title[data-v-0b17af4e],div.ProseMirror pre code .hljs-section[data-v-0b17af4e]{color:#fc6}div.ProseMirror pre code .hljs-keyword[data-v-0b17af4e],div.ProseMirror pre code .hljs-selector-tag[data-v-0b17af4e]{color:#69c}div.ProseMirror pre code .hljs-emphasis[data-v-0b17af4e]{font-style:italic}div.ProseMirror pre code .hljs-strong[data-v-0b17af4e]{font-weight:700}div.ProseMirror pre.frontmatter[data-v-0b17af4e]{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter[data-v-0b17af4e]::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code[data-v-0b17af4e]{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li[data-v-0b17af4e]{position:relative;padding-left:3px}div.ProseMirror li p .paragraph-content[data-v-0b17af4e]{margin-bottom:.5em}div.ProseMirror ul[data-v-0b17af4e],div.ProseMirror ol[data-v-0b17af4e]{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li[data-v-0b17af4e]{list-style-type:disc}div.ProseMirror li ul>li[data-v-0b17af4e]{list-style-type:circle}div.ProseMirror li li ul>li[data-v-0b17af4e]{list-style-type:square}div.ProseMirror blockquote[data-v-0b17af4e]{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table[data-v-0b17af4e]{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*[data-v-0b17af4e]{margin-top:1em}div.ProseMirror table td[data-v-0b17af4e],div.ProseMirror table th[data-v-0b17af4e]{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td[data-v-0b17af4e]:first-child,div.ProseMirror table th[data-v-0b17af4e]:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td[data-v-0b17af4e]{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th[data-v-0b17af4e]{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div[data-v-0b17af4e]{display:flex}div.ProseMirror table tr[data-v-0b17af4e]{background-color:var(--table-color-background)}div.ProseMirror table tr[data-v-0b17af4e]:hover,div.ProseMirror table tr[data-v-0b17af4e]:active,div.ProseMirror table tr[data-v-0b17af4e]:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th[data-v-0b17af4e]:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th[data-v-0b17af4e]:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-0b17af4e]:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-0b17af4e]:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor[data-v-0b17af4e]{display:block}.editor__content p.is-empty[data-v-0b17af4e]:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content[data-v-0b17af4e]{tab-size:4}.tippy-content div[data-v-0b17af4e]{visibility:visible !important}div.ProseMirror[data-v-0b17af4e]{display:inline;margin-top:unset;position:unset;padding:unset;line-height:unset}div.ProseMirror h1[data-v-0b17af4e],div.ProseMirror h6[data-v-0b17af4e]{display:inline;padding:0;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/HelpModal.vue\",\"webpack://./src/css/prosemirror.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\ntable {\\n\\tmargin-top: 24px;\\n\\tborder-collapse: collapse;\\n\\n\\ttbody tr {\\n\\t\\t&:hover, &:focus, &:active {\\n\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\tthead tr {\\n\\t\\tborder: none;\\n\\t}\\n\\n\\tth {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: .75rem 1rem .75rem 0;\\n\\t\\tborder-bottom: 2px solid var(--color-background-darker);\\n\\t}\\n\\n\\ttd {\\n\\t\\tpadding: .75rem 1rem .75rem 0;\\n\\t\\tborder-top: 1px solid var(--color-background-dark);\\n\\t\\tborder-bottom: unset;\\n\\n\\t\\t&.noborder {\\n\\t\\t\\tborder-top: unset;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis_top {\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis_bottom {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\tkbd {\\n\\t\\tfont-size: smaller;\\n\\t}\\n\\n\\tcode {\\n\\t\\tpadding: .2em .4em;\\n\\t\\tfont-size: 90%;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: 6px;\\n\\t}\\n}\\n\\n@import '../css/prosemirror';\\n\\ndiv.ProseMirror {\\n\\tdisplay: inline;\\n\\tmargin-top: unset;\\n\\tposition: unset;\\n\\tpadding: unset;\\n\\tline-height: unset;\\n\\n\\th1, h6 {\\n\\t\\tdisplay: inline;\\n\\t\\tpadding: 0;\\n\\t\\tmargin: 0;\\n\\t}\\n}\\n\",\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: var(--default-font-size);\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: var(--default-font-size);\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\t> label > p {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 26px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 23px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 20px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(data-language);\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttext-align: right;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 0.6rem;\\n\\t\\t}\\n\\t\\tcode {\\n\\t\\t\\t.hljs-comment,\\n\\t\\t\\t.hljs-quote {\\n\\t\\t\\t\\tcolor: #999999;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-variable,\\n\\t\\t\\t.hljs-template-variable,\\n\\t\\t\\t.hljs-attribute,\\n\\t\\t\\t.hljs-tag,\\n\\t\\t\\t.hljs-name,\\n\\t\\t\\t.hljs-regexp,\\n\\t\\t\\t.hljs-link,\\n\\t\\t\\t.hljs-selector-id,\\n\\t\\t\\t.hljs-selector-class {\\n\\t\\t\\t\\tcolor: #f2777a;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-number,\\n\\t\\t\\t.hljs-meta,\\n\\t\\t\\t.hljs-built_in,\\n\\t\\t\\t.hljs-builtin-name,\\n\\t\\t\\t.hljs-literal,\\n\\t\\t\\t.hljs-type,\\n\\t\\t\\t.hljs-params {\\n\\t\\t\\t\\tcolor: #f99157;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-string,\\n\\t\\t\\t.hljs-symbol,\\n\\t\\t\\t.hljs-bullet {\\n\\t\\t\\t\\tcolor: #99cc99;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-title,\\n\\t\\t\\t.hljs-section {\\n\\t\\t\\t\\tcolor: #ffcc66;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-keyword,\\n\\t\\t\\t.hljs-selector-tag {\\n\\t\\t\\t\\tcolor: #6699cc;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-emphasis {\\n\\t\\t\\t\\tfont-style: italic;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-strong {\\n\\t\\t\\t\\tfont-weight: 700;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\\n.tippy-content div {\\n\\tvisibility: visible !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.text-menubar[data-v-0b381e60]{--background-blur: blur(10px);position:sticky;top:0;z-index:10021;background-color:var(--color-main-background-translucent);backdrop-filter:var(--background-blur);max-height:44px;padding-top:3px;padding-bottom:3px;visibility:hidden;display:flex;justify-content:flex-end;align-items:center}.text-menubar.text-menubar--ready[data-v-0b381e60]:not(.text-menubar--hide){visibility:visible;animation-name:fadeInDown;animation-duration:.3s}.text-menubar.text-menubar--hide[data-v-0b381e60]{opacity:0;transition:visibility .2s .4s,opacity .2s .4s}.text-menubar .text-menubar__entries[data-v-0b381e60]{display:flex;flex-grow:1;margin-left:max(0px,(100% - var(--text-editor-max-width))/2)}.text-menubar .text-menubar__slot[data-v-0b381e60]{justify-content:flex-end;display:flex;min-width:max(0px,min(100px,(100% - var(--text-editor-max-width))/2))}.text-menubar.text-menubar--is-workspace .text-menubar__entries[data-v-0b381e60]{margin-left:0}@media(max-width: 660px){.text-menubar .text-menubar__entries[data-v-0b381e60]{margin-left:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/MenuBar.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,6BAAA,CACA,eAAA,CACA,KAAA,CACA,aAAA,CACA,yDAAA,CACA,sCAAA,CACA,eAAA,CACA,eAAA,CACA,kBAAA,CAEA,iBAAA,CAEA,YAAA,CACA,wBAAA,CACA,kBAAA,CAEA,4EACC,kBAAA,CACA,yBAAA,CACA,sBAAA,CAGD,kDACC,SAAA,CACA,6CAAA,CAED,sDACC,YAAA,CACA,WAAA,CACA,4DAAA,CAGD,mDACC,wBAAA,CACA,YAAA,CACA,qEAAA,CAIA,iFACC,aAAA,CAIF,yBACC,sDACC,aAAA,CAAA\",\"sourcesContent\":[\"\\n.text-menubar {\\n\\t--background-blur: blur(10px);\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tz-index: 10021; // above modal-header so menubar is always on top\\n\\tbackground-color: var(--color-main-background-translucent);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tmax-height: 44px; // important for mobile so that the buttons are always inside the container\\n\\tpadding-top:3px;\\n\\tpadding-bottom: 3px;\\n\\n\\tvisibility: hidden;\\n\\n\\tdisplay: flex;\\n\\tjustify-content: flex-end;\\n\\talign-items: center;\\n\\n\\t&.text-menubar--ready:not(.text-menubar--hide) {\\n\\t\\tvisibility: visible;\\n\\t\\tanimation-name: fadeInDown;\\n\\t\\tanimation-duration: 0.3s;\\n\\t}\\n\\n\\t&.text-menubar--hide {\\n\\t\\topacity: 0;\\n\\t\\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\\n\\t}\\n\\t.text-menubar__entries {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tmargin-left: max(0px, calc((100% - var(--text-editor-max-width)) / 2));\\n\\t}\\n\\n\\t.text-menubar__slot {\\n\\t\\tjustify-content: flex-end;\\n\\t\\tdisplay: flex;\\n\\t\\tmin-width: max(0px, min(100px, (100% - var(--text-editor-max-width)) / 2));\\n\\t}\\n\\n\\t&.text-menubar--is-workspace {\\n\\t\\t.text-menubar__entries {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 660px) {\\n\\t\\t.text-menubar__entries {\\n\\t\\t\\tmargin-left: 0;\\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, `.translate-dialog[data-v-8498603c]{margin:24px}.translate-dialog .wrapper[data-v-8498603c]{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:16px;margin-top:calc(var(--default-grid-baseline)*6)}.translate-dialog .wrapper .language-selector[data-v-8498603c]{font-weight:bold;flex-wrap:wrap;gap:var(--default-grid-baseline)}.translate-dialog .wrapper .col[data-v-8498603c]{grid-row:1/2}.translate-dialog[data-v-8498603c] .translate-textarea{display:block;width:100%;margin-bottom:12px;height:auto;resize:none;box-sizing:border-box;overflow-y:auto;min-height:62px;max-height:58vh}@media(max-width: 670px){.translate-dialog .wrapper[data-v-8498603c]{display:block}.translate-dialog .language-selector .select[data-v-8498603c]{width:100%}.translate-dialog[data-v-8498603c] .translate-textarea{max-height:20vh}label[for=fromLanguage][data-v-8498603c],label[for=toLanguage][data-v-8498603c]{display:none}}.language-selector[data-v-8498603c]{display:flex;align-items:center;margin-bottom:12px}.language-selector label[data-v-8498603c]{flex-grow:1}.translate-actions[data-v-8498603c]{display:flex;justify-content:flex-end}.translate-actions button[data-v-8498603c]{margin-left:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Modal/Translate.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,WAAA,CAEA,4CACC,YAAA,CACA,2DAAA,CACA,oBAAA,CACA,+CAAA,CAEA,+DACC,gBAAA,CACA,cAAA,CACA,gCAAA,CAGD,iDACC,YAAA,CAIF,uDACC,aAAA,CACA,UAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAIF,yBAEE,4CACC,aAAA,CAIA,8DACC,UAAA,CAIF,uDACC,eAAA,CAKD,gFAEC,YAAA,CAAA,CAKH,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,0CACC,WAAA,CAIF,oCACC,YAAA,CACA,wBAAA,CAEA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.translate-dialog {\\n\\tmargin: 24px;\\n\\n\\t.wrapper {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\\n\\t\\tgrid-column-gap: 16px;\\n\\t\\tmargin-top: calc(var(--default-grid-baseline) * 6);\\n\\n\\t\\t.language-selector {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t}\\n\\n\\t\\t.col {\\n\\t\\t\\tgrid-row: 1/2;\\n\\t\\t}\\n\\t}\\n\\n\\t:deep(.translate-textarea) {\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\theight: auto;\\n\\t\\tresize: none;\\n\\t\\tbox-sizing: border-box;\\n\\t\\toverflow-y: auto;\\n\\t\\tmin-height: 62px;\\n\\t\\tmax-height: 58vh;\\n\\t}\\n}\\n\\n@media (max-width: 670px) {\\n\\t.translate-dialog {\\n\\t\\t.wrapper {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.language-selector {\\n\\t\\t\\t.select {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t:deep(.translate-textarea) {\\n\\t\\t\\tmax-height: 20vh;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\t&[for=\\\"fromLanguage\\\"],\\n\\t\\t&[for=\\\"toLanguage\\\"] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.language-selector {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmargin-bottom: 12px;\\n\\n\\tlabel {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\\n.translate-actions {\\n\\tdisplay: flex;\\n\\tjustify-content: flex-end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 12px;\\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, `#read-only-editor{overflow:scroll}.thumbnailContainer #read-only-editor{width:100%}.thumbnailContainer #read-only-editor .ProseMirror{height:auto;margin:0 0 0 0;padding:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Reader.vue\"],\"names\":[],\"mappings\":\"AAEA,kBACC,eAAA,CAGD,sCACC,UAAA,CAEA,mDACC,WAAA,CACA,cAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n\\n#read-only-editor {\\n\\toverflow: scroll;\\n}\\n\\n.thumbnailContainer #read-only-editor {\\n\\twidth: 100%;\\n\\n\\t.ProseMirror {\\n\\t\\theight: auto;\\n\\t\\tmargin: 0 0 0 0;\\n\\t\\tpadding: 0;\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:var(--default-font-size);outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true],div.ProseMirror[contenteditable=false],div.ProseMirror [contenteditable=true],div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:var(--default-font-size)}div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true]:focus,div.ProseMirror[contenteditable=true]:focus-visible,div.ProseMirror[contenteditable=false]:focus,div.ProseMirror[contenteditable=false]:focus-visible,div.ProseMirror [contenteditable=true]:focus,div.ProseMirror [contenteditable=true]:focus-visible,div.ProseMirror [contenteditable=false]:focus,div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}div.ProseMirror ul[data-type=taskList]{margin-left:1px}div.ProseMirror .checkbox-item{display:flex;align-items:start}div.ProseMirror .checkbox-item input[type=checkbox]{display:none}div.ProseMirror .checkbox-item:before{content:\"\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer;left:9px}div.ProseMirror .checkbox-item.checked:before{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked>label>p{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*:first-child{margin-top:10px}div.ProseMirror>h1:first-child,div.ProseMirror h2:first-child,div.ProseMirror h3:first-child,div.ProseMirror h4:first-child,div.ProseMirror h5:first-child,div.ProseMirror h6:first-child{margin-top:0}div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}div.ProseMirror em{font-style:italic}div.ProseMirror h1,div.ProseMirror h2,div.ProseMirror h3,div.ProseMirror h4,div.ProseMirror h5,div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1{font-size:30px}div.ProseMirror h2{font-size:26px}div.ProseMirror h3{font-size:23px}div.ProseMirror h4{font-size:20px}div.ProseMirror h5{font-size:17px}div.ProseMirror h6{font-size:var(--default-font-size)}div.ProseMirror img{cursor:default;max-width:100%}div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr:after{content:\"\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}div.ProseMirror pre code .hljs-comment,div.ProseMirror pre code .hljs-quote{color:#999}div.ProseMirror pre code .hljs-variable,div.ProseMirror pre code .hljs-template-variable,div.ProseMirror pre code .hljs-attribute,div.ProseMirror pre code .hljs-tag,div.ProseMirror pre code .hljs-name,div.ProseMirror pre code .hljs-regexp,div.ProseMirror pre code .hljs-link,div.ProseMirror pre code .hljs-selector-id,div.ProseMirror pre code .hljs-selector-class{color:#f2777a}div.ProseMirror pre code .hljs-number,div.ProseMirror pre code .hljs-meta,div.ProseMirror pre code .hljs-built_in,div.ProseMirror pre code .hljs-builtin-name,div.ProseMirror pre code .hljs-literal,div.ProseMirror pre code .hljs-type,div.ProseMirror pre code .hljs-params{color:#f99157}div.ProseMirror pre code .hljs-string,div.ProseMirror pre code .hljs-symbol,div.ProseMirror pre code .hljs-bullet{color:#9c9}div.ProseMirror pre code .hljs-title,div.ProseMirror pre code .hljs-section{color:#fc6}div.ProseMirror pre code .hljs-keyword,div.ProseMirror pre code .hljs-selector-tag{color:#69c}div.ProseMirror pre code .hljs-emphasis{font-style:italic}div.ProseMirror pre code .hljs-strong{font-weight:700}div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li{position:relative;padding-left:3px}div.ProseMirror li p .paragraph-content{margin-bottom:.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li{list-style-type:disc}div.ProseMirror li ul>li{list-style-type:circle}div.ProseMirror li li ul>li{list-style-type:square}div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*{margin-top:1em}div.ProseMirror table td,div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td:first-child,div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div{display:flex}div.ProseMirror table tr{background-color:var(--table-color-background)}div.ProseMirror table tr:hover,div.ProseMirror table tr:active,div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content{tab-size:4}.tippy-content div{visibility:visible !important}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#header{display:none !important}#content{display:block !important;position:relative !important;border-radius:0;margin:0;width:100%;height:fit-content}footer{display:none !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor{height:fit-content !important}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor .text-editor__wrapper div.ProseMirror{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}.text-editor .text-editor__wrapper div.ProseMirror h1,.text-editor .text-editor__wrapper div.ProseMirror h2,.text-editor .text-editor__wrapper div.ProseMirror h3,.text-editor .text-editor__wrapper div.ProseMirror h4,.text-editor .text-editor__wrapper div.ProseMirror h5{break-after:avoid;page-break-after:avoid}.text-editor .text-editor__wrapper div.ProseMirror .image,.text-editor .text-editor__wrapper div.ProseMirror img,.text-editor .text-editor__wrapper div.ProseMirror table{break-inside:avoid-page;page-break-inside:avoid;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor .text-editor__wrapper div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor .text-editor__wrapper div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor .text-editor__wrapper div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor .text-editor__wrapper div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}.collaboration-cursor__caret,.collaboration-cursor__label{display:none}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/css/prosemirror.scss\",\"webpack://./src/css/print.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: var(--default-font-size);\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: var(--default-font-size);\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\t> label > p {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 26px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 23px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 20px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(data-language);\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttext-align: right;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 0.6rem;\\n\\t\\t}\\n\\t\\tcode {\\n\\t\\t\\t.hljs-comment,\\n\\t\\t\\t.hljs-quote {\\n\\t\\t\\t\\tcolor: #999999;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-variable,\\n\\t\\t\\t.hljs-template-variable,\\n\\t\\t\\t.hljs-attribute,\\n\\t\\t\\t.hljs-tag,\\n\\t\\t\\t.hljs-name,\\n\\t\\t\\t.hljs-regexp,\\n\\t\\t\\t.hljs-link,\\n\\t\\t\\t.hljs-selector-id,\\n\\t\\t\\t.hljs-selector-class {\\n\\t\\t\\t\\tcolor: #f2777a;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-number,\\n\\t\\t\\t.hljs-meta,\\n\\t\\t\\t.hljs-built_in,\\n\\t\\t\\t.hljs-builtin-name,\\n\\t\\t\\t.hljs-literal,\\n\\t\\t\\t.hljs-type,\\n\\t\\t\\t.hljs-params {\\n\\t\\t\\t\\tcolor: #f99157;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-string,\\n\\t\\t\\t.hljs-symbol,\\n\\t\\t\\t.hljs-bullet {\\n\\t\\t\\t\\tcolor: #99cc99;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-title,\\n\\t\\t\\t.hljs-section {\\n\\t\\t\\t\\tcolor: #ffcc66;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-keyword,\\n\\t\\t\\t.hljs-selector-tag {\\n\\t\\t\\t\\tcolor: #6699cc;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-emphasis {\\n\\t\\t\\t\\tfont-style: italic;\\n\\t\\t\\t}\\n\\t\\t\\t.hljs-strong {\\n\\t\\t\\t\\tfont-weight: 700;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\\n.tippy-content div {\\n\\tvisibility: visible !important;\\n}\\n\",\"@media print {\\n\\t@page {\\n\\t\\tsize: A4;\\n\\t\\tmargin: 2.5cm 2cm 2cm 2.5cm;\\n\\t}\\n\\n\\tbody {\\n\\t\\t// position: fixed does not support scrolling and as such only prints one page\\n\\t\\tposition: absolute;\\n\\t\\toverflow: visible!important;\\n\\t}\\n\\n\\t#header {\\n\\t\\tdisplay: none!important;\\n\\t}\\n\\n\\t#content {\\n\\t\\tdisplay: block!important;\\n\\t\\tposition: relative!important;\\n\\t\\tborder-radius: 0;\\n\\t\\tmargin: 0;\\n\\t\\twidth: 100%;\\n\\t\\theight: fit-content;\\n\\t}\\n\\n\\tfooter {\\n\\t\\tdisplay: none!important;\\n\\t}\\n\\n\\t#viewer[data-handler='text'] {\\n\\t\\t// Hide top border\\n\\t\\tborder: none;\\n\\t\\twidth: 100%!important;\\n\\t\\t// NcModal uses fixed, which will be cropped when printed\\n\\t\\tposition: absolute!important;\\n\\n\\t\\t.modal-header {\\n\\t\\t\\t// Hide modal header (close button)\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.modal-container {\\n\\t\\t\\t// Make sure top aligned as we hided the menubar */\\n\\t\\t\\ttop: 0px;\\n\\t\\t\\theight: fit-content;\\n\\t\\t}\\n\\t}\\n\\n\\t.text-editor {\\n\\t\\theight: fit-content!important;\\n\\n\\t\\t.text-menubar {\\n\\t\\t\\t// Hide menu bar\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.action-item {\\n\\t\\t\\t// Hide table settings\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.editor__content {\\n\\t\\t\\t// Margins set by page rule\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.text-editor__wrapper {\\n\\t\\t\\theight: fit-content;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\tdiv.ProseMirror {\\n\\t\\t\\t\\tmargin-top: 0;\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tpadding-top: 0;\\n\\t\\t\\t\\tpadding-bottom: 0;\\n\\n\\t\\t\\t\\th1, h2, h3, h4, h5 {\\n\\t\\t\\t\\t\\t// orphaned headlines are ugly\\n\\t\\t\\t\\t\\tbreak-after: avoid;\\n\\t\\t\\t\\t\\tpage-break-after: avoid;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.image, img, table {\\n\\t\\t\\t\\t\\t// try no page breaks within tables or images\\n\\t\\t\\t\\t\\tbreak-inside: avoid-page;\\n\\t\\t\\t\\t\\tpage-break-inside: avoid;\\n\\t\\t\\t\\t\\t// Some more indention\\n\\t\\t\\t\\t\\tmax-width: 90%!important;\\n\\t\\t\\t\\t\\tmargin: 5vw auto 5vw 5%!important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Add some borders below header and between columns\\n\\t\\t\\t\\tth {\\n\\t\\t\\t\\t\\tcolor: black!important;\\n\\t\\t\\t\\t\\tfont-weight: bold!important;\\n\\t\\t\\t\\t\\tborder-width: 0 1px 2px 0!important;\\n\\t\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\t\\tborder-style: none solid solid none!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tth:last-of-type {\\n\\t\\t\\t\\t\\tborder-width: 0 0 2px 0!important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttd {\\n\\t\\t\\t\\t\\tborder-style: none solid none none!important;\\n\\t\\t\\t\\t\\tborder-width: 1px!important;\\n\\t\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\ttd:last-of-type {\\n\\t\\t\\t\\t\\tborder: none!important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.menubar-placeholder, .text-editor--readonly-bar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.text-editor__content-wrapper {\\n\\t\\t&.--show-outline {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.editor--outline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\theight: auto;\\n\\t\\t\\toverflow: unset;\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t\\t.editor--outline__btn-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t.collaboration-cursor__caret,\\n\\t.collaboration-cursor__label {\\n\\t\\tdisplay: none;\\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, `.placeholder-main[data-v-5a5c7130]{max-width:670px;position:relative;margin-bottom:auto;z-index:1}.placeholder-main-text[data-v-5a5c7130]{margin:50px auto 0;width:100%}#rich-workspace .placeholder-main-text[data-v-5a5c7130]{margin:40px 0 0}.placeholder-list[data-v-5a5c7130]{position:absolute;transform:translateZ(0)}.placeholder-list-regular[data-v-5a5c7130]{animation:pulse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-list-reverse[data-v-5a5c7130]{animation:pulse-reverse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-gradient[data-v-5a5c7130]{position:fixed;height:0;width:0;z-index:-1}.text-placeholder[data-v-5a5c7130]{width:min(670px,100vw);height:6em;margin:8px auto;padding:4px 8px 0 14px;display:block}.text-placeholder-line-one[data-v-5a5c7130],.text-placeholder-line-two[data-v-5a5c7130],.text-placeholder-line-three[data-v-5a5c7130],.text-placeholder-line-four[data-v-5a5c7130]{width:670px;height:1em}.text-placeholder-line-one[data-v-5a5c7130]{y:.33em;width:175px}.text-placeholder-line-two[data-v-5a5c7130]{y:1.66em}.text-placeholder-line-three[data-v-5a5c7130]{y:3em}.text-placeholder-line-four[data-v-5a5c7130]{y:4.33em}@keyframes pulse-5a5c7130{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@keyframes pulse-reverse-5a5c7130{0%{opacity:0}50%{opacity:1}100%{opacity:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/SkeletonLoading.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,eAHyB,CAIzB,iBAAA,CACA,kBAAA,CACA,SAAA,CAEA,wCACC,kBAAA,CACA,UAAA,CAIF,wDACC,eAAA,CAGD,mCACC,iBAAA,CACA,uBAAA,CAGD,2CACC,2BAAA,CACA,kCAAA,CACA,gCAAA,CAGD,2CACC,mCAAA,CACA,kCAAA,CACA,gCAAA,CAGD,uCACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,mCACC,sBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,aAAA,CAEA,mLAIC,WAAA,CACA,UAAA,CAGD,4CACC,OAAA,CACA,WAAA,CAGD,4CACC,QAAA,CAGD,8CACC,KAAA,CAGD,6CACC,QAAA,CAIF,0BACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA,CAIF,kCACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA\",\"sourcesContent\":[\"\\n$margin: 8px;\\n$messages-list-max-width: 670px;\\n\\n.placeholder-main {\\n\\tmax-width: $messages-list-max-width;\\n\\tposition: relative;\\n\\tmargin-bottom: auto;\\n\\tz-index: 1;\\n\\n\\t&-text {\\n\\t\\tmargin: 50px auto 0;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n#rich-workspace .placeholder-main-text {\\n\\tmargin: 40px 0 0;\\n}\\n\\n.placeholder-list {\\n\\tposition: absolute;\\n\\ttransform: translateZ(0);\\n}\\n\\n.placeholder-list-regular {\\n\\tanimation: pulse 2s;\\n\\tanimation-iteration-count: infinite;\\n\\tanimation-timing-function: linear;\\n}\\n\\n.placeholder-list-reverse {\\n\\tanimation: pulse-reverse 2s;\\n\\tanimation-iteration-count: infinite;\\n\\tanimation-timing-function: linear;\\n}\\n\\n.placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.text-placeholder {\\n\\twidth: min($messages-list-max-width, 100vw);\\n\\theight: 6em;\\n\\tmargin: $margin auto;\\n\\tpadding: 4px 8px 0 14px;\\n\\tdisplay: block;\\n\\n\\t&-line-one,\\n\\t&-line-two,\\n\\t&-line-three,\\n\\t&-line-four {\\n\\t\\twidth: 670px;\\n\\t\\theight: 1em;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 0.33em;\\n\\t\\twidth: 175px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 1.66em;\\n\\t}\\n\\n\\t&-line-three {\\n\\t\\ty: 3em;\\n\\t}\\n\\n\\t&-line-four {\\n\\t\\ty: 4.33em;\\n\\t}\\n}\\n\\n@keyframes pulse {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n@keyframes pulse-reverse {\\n\\t0% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 0;\\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../assets/status-icons/user-status-online.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../../../assets/status-icons/user-status-dnd.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../../../assets/status-icons/user-status-away.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.autocomplete-result[data-v-2145738d]{display:flex;height:30px;padding:10px}.highlight .autocomplete-result[data-v-2145738d]{color:var(--color-main-text);background:var(--color-primary-element-light)}.highlight .autocomplete-result[data-v-2145738d],.highlight .autocomplete-result *[data-v-2145738d]{cursor:pointer}.autocomplete-result__icon[data-v-2145738d]{position:relative;flex:0 0 30px;width:30px;min-width:30px;height:30px;border-radius:30px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:10px}.autocomplete-result__icon--with-avatar[data-v-2145738d]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-2145738d]{position:absolute;right:-4px;bottom:-4px;box-sizing:border-box;width:18px;height:18px;border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:var(--default-font-size);line-height:15px;background-repeat:no-repeat;background-size:16px;background-position:center}.autocomplete-result__status--online[data-v-2145738d]{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.autocomplete-result__status--dnd[data-v-2145738d]{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});background-color:#fff}.autocomplete-result__status--away[data-v-2145738d]{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.autocomplete-result__status--icon[data-v-2145738d]{border:none;background-color:rgba(0,0,0,0)}.autocomplete-result__content[data-v-2145738d]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0;padding-left:10px}.autocomplete-result__title[data-v-2145738d],.autocomplete-result__subline[data-v-2145738d]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-2145738d]{color:var(--color-text-lighter)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/Mention/AutoCompleteResult.vue\"],\"names\":[],\"mappings\":\"AAIA,sCACC,YAAA,CACA,WALgB,CAMhB,YALsB,CAOtB,iDACC,4BAAA,CACA,6CAAA,CACA,oGACC,cAAA,CAIF,4CACC,iBAAA,CACA,aAAA,CACA,UAnBe,CAoBf,cApBe,CAqBf,WArBe,CAsBf,kBAtBe,CAuBf,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,yDACC,aAAA,CACA,qBAAA,CAIF,8CACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,6CAAA,CACA,iBAAA,CACA,6CAAA,CACA,kCAAA,CACA,gBAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CAEA,sDACC,wDAAA,CAED,mDACC,wDAAA,CACA,qBAAA,CAED,oDACC,wDAAA,CAED,oDACC,WAAA,CACA,8BAAA,CAIF,+CACC,YAAA,CACA,aAAA,CACA,qBAAA,CACA,sBAAA,CACA,WAAA,CACA,iBAtEqB,CAyEtB,4FAEC,kBAAA,CACA,eAAA,CACA,sBAAA,CAGD,+CACC,+BAAA\",\"sourcesContent\":[\"\\n$clickable-area: 30px;\\n$autocomplete-padding: 10px;\\n\\n.autocomplete-result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $autocomplete-padding;\\n\\n\\t.highlight & {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground: var(--color-primary-element-light);\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: $clickable-area;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: 18px;\\n\\t\\theight: 18px;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: 50%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: 15px;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\n\\n\\t\\t&--online{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-online.svg');\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-dnd.svg');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-away.svg');\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $autocomplete-padding;\\n\\t}\\n\\n\\t&__title,\\n\\t&__subline {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tcolor: var(--color-text-lighter);\\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, `.items{position:relative;border-radius:var(--border-radius);background:var(--color-main-background);overflow:hidden;font-size:.9rem;box-shadow:0 1px 5px var(--color-box-shadow);min-width:250px}.item-empty{padding:4px 8px;opacity:.8}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/Mention/MentionList.vue\"],\"names\":[],\"mappings\":\"AACA,OACC,iBAAA,CACA,kCAAA,CACA,uCAAA,CACA,eAAA,CACA,eAAA,CACA,4CAAA,CACA,eAAA,CAGD,YACC,eAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.items {\\n\\tposition: relative;\\n\\tborder-radius: var(--border-radius);\\n\\tbackground: var(--color-main-background);\\n\\toverflow: hidden;\\n\\tfont-size: 0.9rem;\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n\\tmin-width: 250px;\\n}\\n\\n.item-empty {\\n\\tpadding: 4px 8px;\\n\\topacity: 0.8;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body{position:fixed;background-color:var(--color-main-background)}#content[class=app-public]{margin:0;margin-top:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,cAAA,CACA,6CAAA,CAGD,2BACC,QAAA,CACA,YAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tposition: fixed;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n#content[class=app-public] {\\n\\tmargin: 0;\\n\\tmargin-top: 0;\\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, `#direct-editor[data-v-d43914dc]{width:100%;height:100%;position:fixed;overflow:auto}#direct-editor[data-v-d43914dc] .text-editor{height:100%;top:0}#direct-editor[data-v-d43914dc] .text-editor__wrapper div.ProseMirror{margin-top:0}pre[data-v-d43914dc]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-d43914dc]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:rgba(0,0,0,0);opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus,button[data-v-d43914dc]:active{background-color:var(--color-background-dark)}button.is-active[data-v-d43914dc],button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CAEA,6CACC,WAAA,CACA,KAAA,CAED,sEACC,YAAA,CAIF,qBACC,UAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CAGD,wBACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,oBAAA,CACA,QAAA,CACA,8BAAA,CACA,UAAA,CACA,4BAAA,CACA,iCAAA,CACA,kBAAA,CACA,2FACC,6CAAA,CAED,8FAGC,SAAA\",\"sourcesContent\":[\"\\n#direct-editor {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\n\\t&:deep(.text-editor) {\\n\\t\\theight: 100%;\\n\\t\\ttop: 0;\\n\\t}\\n\\t&:deep(.text-editor__wrapper div.ProseMirror) {\\n\\t\\tmargin-top: 0;\\n\\t}\\n}\\n\\npre {\\n\\twidth: 100%;\\n\\tmax-width: 700px;\\n\\tmargin: auto;\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\\nbutton {\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\tmargin: 0;\\n\\tbackground-size: 16px;\\n\\tborder: 0;\\n\\tbackground-color: transparent;\\n\\topacity: .5;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-position: center center;\\n\\tvertical-align: top;\\n\\t&:hover, &:focus, &:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\t&.is-active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.text-readonly-bar[data-v-27a921ca] {\n\tdisplay: flex;\n}\n.text-readonly-bar__entries[data-v-27a921ca] {\n\tdisplay: flex;\n\tflex-grow: 1;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/ReadonlyBar.vue\"],\"names\":[],\"mappings\":\";AA4CA;CACA,aAAA;AACA;AACA;CACA,aAAA;CACA,YAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div data-text-el=\\\"readonly-bar\\\" class=\\\"text-readonly-bar\\\">\\n\\t\\t<div ref=\\\"menubar\\\"\\n\\t\\t\\trole=\\\"toolbar\\\"\\n\\t\\t\\tclass=\\\"text-readonly-bar__entries\\\"\\n\\t\\t\\t:aria-label=\\\"t('text', 'Editor actions')\\\">\\n\\t\\t\\t<component :is=\\\"actionEntry.component ? actionEntry.component : (actionEntry.children ? 'ActionList' : 'ActionSingle')\\\"\\n\\t\\t\\t\\tv-for=\\\"(actionEntry, index) in visibleEntries\\\"\\n\\t\\t\\t\\tref=\\\"menuEntries\\\"\\n\\t\\t\\t\\t:key=\\\"actionEntry.key\\\"\\n\\t\\t\\t\\t:action-entry=\\\"actionEntry\\\"\\n\\t\\t\\t\\t:can-be-focussed=\\\"activeMenuEntry === index\\\"\\n\\t\\t\\t\\t@disabled=\\\"disableMenuEntry(actionEntry.key, $event)\\\" />\\n\\t\\t</div>\\n\\t\\t<div class=\\\"text-menubar__slot\\\">\\n\\t\\t\\t<slot />\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { defineComponent } from 'vue'\\nimport { ReadonlyEntries as entries } from './entries.js'\\n\\nimport ActionList from './ActionList.vue'\\nimport ActionSingle from './ActionSingle.vue'\\nimport ToolBarLogic from './ToolBarLogic.js'\\n\\nexport default defineComponent({\\n\\tname: 'ReadonlyBar',\\n\\tcomponents: {\\n\\t\\tActionList,\\n\\t\\tActionSingle,\\n\\t},\\n\\textends: ToolBarLogic,\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tentries,\\n\\t\\t}\\n\\t},\\n})\\n</script>\\n\\n<style scoped>\\n.text-readonly-bar {\\n\\tdisplay: flex;\\n}\\n.text-readonly-bar__entries {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./1c\": [\n\t\t30908,\n\t\t\"highlight/1c\"\n\t],\n\t\"./1c.js\": [\n\t\t30908,\n\t\t\"highlight/1c\"\n\t],\n\t\"./1c.js.js\": [\n\t\t9856,\n\t\t\"highlight/1c-js-js\"\n\t],\n\t\"./abnf\": [\n\t\t62853,\n\t\t\"highlight/abnf\"\n\t],\n\t\"./abnf.js\": [\n\t\t62853,\n\t\t\"highlight/abnf\"\n\t],\n\t\"./abnf.js.js\": [\n\t\t5116,\n\t\t\"highlight/abnf-js-js\"\n\t],\n\t\"./accesslog\": [\n\t\t35976,\n\t\t\"highlight/accesslog\"\n\t],\n\t\"./accesslog.js\": [\n\t\t35976,\n\t\t\"highlight/accesslog\"\n\t],\n\t\"./accesslog.js.js\": [\n\t\t36461,\n\t\t\"highlight/accesslog-js-js\"\n\t],\n\t\"./actionscript\": [\n\t\t55505,\n\t\t\"highlight/actionscript\"\n\t],\n\t\"./actionscript.js\": [\n\t\t55505,\n\t\t\"highlight/actionscript\"\n\t],\n\t\"./actionscript.js.js\": [\n\t\t78197,\n\t\t\"highlight/actionscript-js-js\"\n\t],\n\t\"./ada\": [\n\t\t40059,\n\t\t\"highlight/ada\"\n\t],\n\t\"./ada.js\": [\n\t\t40059,\n\t\t\"highlight/ada\"\n\t],\n\t\"./ada.js.js\": [\n\t\t16880,\n\t\t\"highlight/ada-js-js\"\n\t],\n\t\"./angelscript\": [\n\t\t72921,\n\t\t\"highlight/angelscript\"\n\t],\n\t\"./angelscript.js\": [\n\t\t72921,\n\t\t\"highlight/angelscript\"\n\t],\n\t\"./angelscript.js.js\": [\n\t\t62053,\n\t\t\"highlight/angelscript-js-js\"\n\t],\n\t\"./apache\": [\n\t\t4998,\n\t\t\"highlight/apache\"\n\t],\n\t\"./apache.js\": [\n\t\t4998,\n\t\t\"highlight/apache\"\n\t],\n\t\"./apache.js.js\": [\n\t\t69773,\n\t\t\"highlight/apache-js-js\"\n\t],\n\t\"./applescript\": [\n\t\t99733,\n\t\t\"highlight/applescript\"\n\t],\n\t\"./applescript.js\": [\n\t\t99733,\n\t\t\"highlight/applescript\"\n\t],\n\t\"./applescript.js.js\": [\n\t\t56323,\n\t\t\"highlight/applescript-js-js\"\n\t],\n\t\"./arcade\": [\n\t\t70149,\n\t\t\"highlight/arcade\"\n\t],\n\t\"./arcade.js\": [\n\t\t70149,\n\t\t\"highlight/arcade\"\n\t],\n\t\"./arcade.js.js\": [\n\t\t99434,\n\t\t\"highlight/arcade-js-js\"\n\t],\n\t\"./arduino\": [\n\t\t89860,\n\t\t\"highlight/arduino\"\n\t],\n\t\"./arduino.js\": [\n\t\t89860,\n\t\t\"highlight/arduino\"\n\t],\n\t\"./arduino.js.js\": [\n\t\t1345,\n\t\t\"highlight/arduino-js-js\"\n\t],\n\t\"./armasm\": [\n\t\t93138,\n\t\t\"highlight/armasm\"\n\t],\n\t\"./armasm.js\": [\n\t\t93138,\n\t\t\"highlight/armasm\"\n\t],\n\t\"./armasm.js.js\": [\n\t\t96358,\n\t\t\"highlight/armasm-js-js\"\n\t],\n\t\"./asciidoc\": [\n\t\t88699,\n\t\t\"highlight/asciidoc\"\n\t],\n\t\"./asciidoc.js\": [\n\t\t88699,\n\t\t\"highlight/asciidoc\"\n\t],\n\t\"./asciidoc.js.js\": [\n\t\t5301,\n\t\t\"highlight/asciidoc-js-js\"\n\t],\n\t\"./aspectj\": [\n\t\t59950,\n\t\t\"highlight/aspectj\"\n\t],\n\t\"./aspectj.js\": [\n\t\t59950,\n\t\t\"highlight/aspectj\"\n\t],\n\t\"./aspectj.js.js\": [\n\t\t79219,\n\t\t\"highlight/aspectj-js-js\"\n\t],\n\t\"./autohotkey\": [\n\t\t31599,\n\t\t\"highlight/autohotkey\"\n\t],\n\t\"./autohotkey.js\": [\n\t\t31599,\n\t\t\"highlight/autohotkey\"\n\t],\n\t\"./autohotkey.js.js\": [\n\t\t54598,\n\t\t\"highlight/autohotkey-js-js\"\n\t],\n\t\"./autoit\": [\n\t\t1892,\n\t\t\"highlight/autoit\"\n\t],\n\t\"./autoit.js\": [\n\t\t1892,\n\t\t\"highlight/autoit\"\n\t],\n\t\"./autoit.js.js\": [\n\t\t81923,\n\t\t\"highlight/autoit-js-js\"\n\t],\n\t\"./avrasm\": [\n\t\t53105,\n\t\t\"highlight/avrasm\"\n\t],\n\t\"./avrasm.js\": [\n\t\t53105,\n\t\t\"highlight/avrasm\"\n\t],\n\t\"./avrasm.js.js\": [\n\t\t66522,\n\t\t\"highlight/avrasm-js-js\"\n\t],\n\t\"./awk\": [\n\t\t44868,\n\t\t\"highlight/awk\"\n\t],\n\t\"./awk.js\": [\n\t\t44868,\n\t\t\"highlight/awk\"\n\t],\n\t\"./awk.js.js\": [\n\t\t36775,\n\t\t\"highlight/awk-js-js\"\n\t],\n\t\"./axapta\": [\n\t\t52059,\n\t\t\"highlight/axapta\"\n\t],\n\t\"./axapta.js\": [\n\t\t52059,\n\t\t\"highlight/axapta\"\n\t],\n\t\"./axapta.js.js\": [\n\t\t5432,\n\t\t\"highlight/axapta-js-js\"\n\t],\n\t\"./bash\": [\n\t\t98780,\n\t\t\"highlight/bash\"\n\t],\n\t\"./bash.js\": [\n\t\t98780,\n\t\t\"highlight/bash\"\n\t],\n\t\"./bash.js.js\": [\n\t\t13574,\n\t\t\"highlight/bash-js-js\"\n\t],\n\t\"./basic\": [\n\t\t80995,\n\t\t\"highlight/basic\"\n\t],\n\t\"./basic.js\": [\n\t\t80995,\n\t\t\"highlight/basic\"\n\t],\n\t\"./basic.js.js\": [\n\t\t18080,\n\t\t\"highlight/basic-js-js\"\n\t],\n\t\"./bnf\": [\n\t\t87061,\n\t\t\"highlight/bnf\"\n\t],\n\t\"./bnf.js\": [\n\t\t87061,\n\t\t\"highlight/bnf\"\n\t],\n\t\"./bnf.js.js\": [\n\t\t14060,\n\t\t\"highlight/bnf-js-js\"\n\t],\n\t\"./brainfuck\": [\n\t\t16380,\n\t\t\"highlight/brainfuck\"\n\t],\n\t\"./brainfuck.js\": [\n\t\t16380,\n\t\t\"highlight/brainfuck\"\n\t],\n\t\"./brainfuck.js.js\": [\n\t\t37195,\n\t\t\"highlight/brainfuck-js-js\"\n\t],\n\t\"./c\": [\n\t\t80612,\n\t\t\"highlight/c\"\n\t],\n\t\"./c.js\": [\n\t\t80612,\n\t\t\"highlight/c\"\n\t],\n\t\"./c.js.js\": [\n\t\t96991,\n\t\t\"highlight/c-js-js\"\n\t],\n\t\"./cal\": [\n\t\t15762,\n\t\t\"highlight/cal\"\n\t],\n\t\"./cal.js\": [\n\t\t15762,\n\t\t\"highlight/cal\"\n\t],\n\t\"./cal.js.js\": [\n\t\t65197,\n\t\t\"highlight/cal-js-js\"\n\t],\n\t\"./capnproto\": [\n\t\t90614,\n\t\t\"highlight/capnproto\"\n\t],\n\t\"./capnproto.js\": [\n\t\t90614,\n\t\t\"highlight/capnproto\"\n\t],\n\t\"./capnproto.js.js\": [\n\t\t79955,\n\t\t\"highlight/capnproto-js-js\"\n\t],\n\t\"./ceylon\": [\n\t\t33796,\n\t\t\"highlight/ceylon\"\n\t],\n\t\"./ceylon.js\": [\n\t\t33796,\n\t\t\"highlight/ceylon\"\n\t],\n\t\"./ceylon.js.js\": [\n\t\t1263,\n\t\t\"highlight/ceylon-js-js\"\n\t],\n\t\"./clean\": [\n\t\t52222,\n\t\t\"highlight/clean\"\n\t],\n\t\"./clean.js\": [\n\t\t52222,\n\t\t\"highlight/clean\"\n\t],\n\t\"./clean.js.js\": [\n\t\t45443,\n\t\t\"highlight/clean-js-js\"\n\t],\n\t\"./clojure\": [\n\t\t92177,\n\t\t\"highlight/clojure\"\n\t],\n\t\"./clojure-repl\": [\n\t\t42012,\n\t\t\"highlight/clojure-repl\"\n\t],\n\t\"./clojure-repl.js\": [\n\t\t42012,\n\t\t\"highlight/clojure-repl\"\n\t],\n\t\"./clojure-repl.js.js\": [\n\t\t21487,\n\t\t\"highlight/clojure-repl-js-js\"\n\t],\n\t\"./clojure.js\": [\n\t\t92177,\n\t\t\"highlight/clojure\"\n\t],\n\t\"./clojure.js.js\": [\n\t\t73864,\n\t\t\"highlight/clojure-js-js\"\n\t],\n\t\"./cmake\": [\n\t\t35849,\n\t\t\"highlight/cmake\"\n\t],\n\t\"./cmake.js\": [\n\t\t35849,\n\t\t\"highlight/cmake\"\n\t],\n\t\"./cmake.js.js\": [\n\t\t30520,\n\t\t\"highlight/cmake-js-js\"\n\t],\n\t\"./coffeescript\": [\n\t\t95437,\n\t\t\"highlight/coffeescript\"\n\t],\n\t\"./coffeescript.js\": [\n\t\t95437,\n\t\t\"highlight/coffeescript\"\n\t],\n\t\"./coffeescript.js.js\": [\n\t\t1493,\n\t\t\"highlight/coffeescript-js-js\"\n\t],\n\t\"./coq\": [\n\t\t99087,\n\t\t\"highlight/coq\"\n\t],\n\t\"./coq.js\": [\n\t\t99087,\n\t\t\"highlight/coq\"\n\t],\n\t\"./coq.js.js\": [\n\t\t36768,\n\t\t\"highlight/coq-js-js\"\n\t],\n\t\"./cos\": [\n\t\t72569,\n\t\t\"highlight/cos\"\n\t],\n\t\"./cos.js\": [\n\t\t72569,\n\t\t\"highlight/cos\"\n\t],\n\t\"./cos.js.js\": [\n\t\t2210,\n\t\t\"highlight/cos-js-js\"\n\t],\n\t\"./cpp\": [\n\t\t6248,\n\t\t\"highlight/cpp\"\n\t],\n\t\"./cpp.js\": [\n\t\t6248,\n\t\t\"highlight/cpp\"\n\t],\n\t\"./cpp.js.js\": [\n\t\t16365,\n\t\t\"highlight/cpp-js-js\"\n\t],\n\t\"./crmsh\": [\n\t\t77740,\n\t\t\"highlight/crmsh\"\n\t],\n\t\"./crmsh.js\": [\n\t\t77740,\n\t\t\"highlight/crmsh\"\n\t],\n\t\"./crmsh.js.js\": [\n\t\t31965,\n\t\t\"highlight/crmsh-js-js\"\n\t],\n\t\"./crystal\": [\n\t\t83147,\n\t\t\"highlight/crystal\"\n\t],\n\t\"./crystal.js\": [\n\t\t83147,\n\t\t\"highlight/crystal\"\n\t],\n\t\"./crystal.js.js\": [\n\t\t63882,\n\t\t\"highlight/crystal-js-js\"\n\t],\n\t\"./csharp\": [\n\t\t63707,\n\t\t\"highlight/csharp\"\n\t],\n\t\"./csharp.js\": [\n\t\t63707,\n\t\t\"highlight/csharp\"\n\t],\n\t\"./csharp.js.js\": [\n\t\t29676,\n\t\t\"highlight/csharp-js-js\"\n\t],\n\t\"./csp\": [\n\t\t89534,\n\t\t\"highlight/csp\"\n\t],\n\t\"./csp.js\": [\n\t\t89534,\n\t\t\"highlight/csp\"\n\t],\n\t\"./csp.js.js\": [\n\t\t82162,\n\t\t\"highlight/csp-js-js\"\n\t],\n\t\"./css\": [\n\t\t15064,\n\t\t\"highlight/css\"\n\t],\n\t\"./css.js\": [\n\t\t15064,\n\t\t\"highlight/css\"\n\t],\n\t\"./css.js.js\": [\n\t\t45429,\n\t\t\"highlight/css-js-js\"\n\t],\n\t\"./d\": [\n\t\t118,\n\t\t\"highlight/d\"\n\t],\n\t\"./d.js\": [\n\t\t118,\n\t\t\"highlight/d\"\n\t],\n\t\"./d.js.js\": [\n\t\t51484,\n\t\t\"highlight/d-js-js\"\n\t],\n\t\"./dart\": [\n\t\t26642,\n\t\t\"highlight/dart\"\n\t],\n\t\"./dart.js\": [\n\t\t26642,\n\t\t\"highlight/dart\"\n\t],\n\t\"./dart.js.js\": [\n\t\t86573,\n\t\t\"highlight/dart-js-js\"\n\t],\n\t\"./delphi\": [\n\t\t7762,\n\t\t\"highlight/delphi\"\n\t],\n\t\"./delphi.js\": [\n\t\t7762,\n\t\t\"highlight/delphi\"\n\t],\n\t\"./delphi.js.js\": [\n\t\t71839,\n\t\t\"highlight/delphi-js-js\"\n\t],\n\t\"./diff\": [\n\t\t87731,\n\t\t\"highlight/diff\"\n\t],\n\t\"./diff.js\": [\n\t\t87731,\n\t\t\"highlight/diff\"\n\t],\n\t\"./diff.js.js\": [\n\t\t11612,\n\t\t\"highlight/diff-js-js\"\n\t],\n\t\"./django\": [\n\t\t33189,\n\t\t\"highlight/django\"\n\t],\n\t\"./django.js\": [\n\t\t33189,\n\t\t\"highlight/django\"\n\t],\n\t\"./django.js.js\": [\n\t\t94723,\n\t\t\"highlight/django-js-js\"\n\t],\n\t\"./dns\": [\n\t\t31344,\n\t\t\"highlight/dns\"\n\t],\n\t\"./dns.js\": [\n\t\t31344,\n\t\t\"highlight/dns\"\n\t],\n\t\"./dns.js.js\": [\n\t\t37854,\n\t\t\"highlight/dns-js-js\"\n\t],\n\t\"./dockerfile\": [\n\t\t57360,\n\t\t\"highlight/dockerfile\"\n\t],\n\t\"./dockerfile.js\": [\n\t\t57360,\n\t\t\"highlight/dockerfile\"\n\t],\n\t\"./dockerfile.js.js\": [\n\t\t33866,\n\t\t\"highlight/dockerfile-js-js\"\n\t],\n\t\"./dos\": [\n\t\t20605,\n\t\t\"highlight/dos\"\n\t],\n\t\"./dos.js\": [\n\t\t20605,\n\t\t\"highlight/dos\"\n\t],\n\t\"./dos.js.js\": [\n\t\t5378,\n\t\t\"highlight/dos-js-js\"\n\t],\n\t\"./dsconfig\": [\n\t\t7522,\n\t\t\"highlight/dsconfig\"\n\t],\n\t\"./dsconfig.js\": [\n\t\t7522,\n\t\t\"highlight/dsconfig\"\n\t],\n\t\"./dsconfig.js.js\": [\n\t\t63264,\n\t\t\"highlight/dsconfig-js-js\"\n\t],\n\t\"./dts\": [\n\t\t11729,\n\t\t\"highlight/dts\"\n\t],\n\t\"./dts.js\": [\n\t\t11729,\n\t\t\"highlight/dts\"\n\t],\n\t\"./dts.js.js\": [\n\t\t24232,\n\t\t\"highlight/dts-js-js\"\n\t],\n\t\"./dust\": [\n\t\t1450,\n\t\t\"highlight/dust\"\n\t],\n\t\"./dust.js\": [\n\t\t1450,\n\t\t\"highlight/dust\"\n\t],\n\t\"./dust.js.js\": [\n\t\t26229,\n\t\t\"highlight/dust-js-js\"\n\t],\n\t\"./ebnf\": [\n\t\t13039,\n\t\t\"highlight/ebnf\"\n\t],\n\t\"./ebnf.js\": [\n\t\t13039,\n\t\t\"highlight/ebnf\"\n\t],\n\t\"./ebnf.js.js\": [\n\t\t82808,\n\t\t\"highlight/ebnf-js-js\"\n\t],\n\t\"./elixir\": [\n\t\t62543,\n\t\t\"highlight/elixir\"\n\t],\n\t\"./elixir.js\": [\n\t\t62543,\n\t\t\"highlight/elixir\"\n\t],\n\t\"./elixir.js.js\": [\n\t\t40785,\n\t\t\"highlight/elixir-js-js\"\n\t],\n\t\"./elm\": [\n\t\t25658,\n\t\t\"highlight/elm\"\n\t],\n\t\"./elm.js\": [\n\t\t25658,\n\t\t\"highlight/elm\"\n\t],\n\t\"./elm.js.js\": [\n\t\t7977,\n\t\t\"highlight/elm-js-js\"\n\t],\n\t\"./erb\": [\n\t\t32151,\n\t\t\"highlight/erb\"\n\t],\n\t\"./erb.js\": [\n\t\t32151,\n\t\t\"highlight/erb\"\n\t],\n\t\"./erb.js.js\": [\n\t\t9214,\n\t\t\"highlight/erb-js-js\"\n\t],\n\t\"./erlang\": [\n\t\t57569,\n\t\t\"highlight/erlang\"\n\t],\n\t\"./erlang-repl\": [\n\t\t12282,\n\t\t\"highlight/erlang-repl\"\n\t],\n\t\"./erlang-repl.js\": [\n\t\t12282,\n\t\t\"highlight/erlang-repl\"\n\t],\n\t\"./erlang-repl.js.js\": [\n\t\t78191,\n\t\t\"highlight/erlang-repl-js-js\"\n\t],\n\t\"./erlang.js\": [\n\t\t57569,\n\t\t\"highlight/erlang\"\n\t],\n\t\"./erlang.js.js\": [\n\t\t84485,\n\t\t\"highlight/erlang-js-js\"\n\t],\n\t\"./excel\": [\n\t\t5817,\n\t\t\"highlight/excel\"\n\t],\n\t\"./excel.js\": [\n\t\t5817,\n\t\t\"highlight/excel\"\n\t],\n\t\"./excel.js.js\": [\n\t\t72276,\n\t\t\"highlight/excel-js-js\"\n\t],\n\t\"./fix\": [\n\t\t13146,\n\t\t\"highlight/fix\"\n\t],\n\t\"./fix.js\": [\n\t\t13146,\n\t\t\"highlight/fix\"\n\t],\n\t\"./fix.js.js\": [\n\t\t29274,\n\t\t\"highlight/fix-js-js\"\n\t],\n\t\"./flix\": [\n\t\t93090,\n\t\t\"highlight/flix\"\n\t],\n\t\"./flix.js\": [\n\t\t93090,\n\t\t\"highlight/flix\"\n\t],\n\t\"./flix.js.js\": [\n\t\t2556,\n\t\t\"highlight/flix-js-js\"\n\t],\n\t\"./fortran\": [\n\t\t13532,\n\t\t\"highlight/fortran\"\n\t],\n\t\"./fortran.js\": [\n\t\t13532,\n\t\t\"highlight/fortran\"\n\t],\n\t\"./fortran.js.js\": [\n\t\t33800,\n\t\t\"highlight/fortran-js-js\"\n\t],\n\t\"./fsharp\": [\n\t\t36652,\n\t\t\"highlight/fsharp\"\n\t],\n\t\"./fsharp.js\": [\n\t\t36652,\n\t\t\"highlight/fsharp\"\n\t],\n\t\"./fsharp.js.js\": [\n\t\t11770,\n\t\t\"highlight/fsharp-js-js\"\n\t],\n\t\"./gams\": [\n\t\t47903,\n\t\t\"highlight/gams\"\n\t],\n\t\"./gams.js\": [\n\t\t47903,\n\t\t\"highlight/gams\"\n\t],\n\t\"./gams.js.js\": [\n\t\t3060,\n\t\t\"highlight/gams-js-js\"\n\t],\n\t\"./gauss\": [\n\t\t45004,\n\t\t\"highlight/gauss\"\n\t],\n\t\"./gauss.js\": [\n\t\t45004,\n\t\t\"highlight/gauss\"\n\t],\n\t\"./gauss.js.js\": [\n\t\t51715,\n\t\t\"highlight/gauss-js-js\"\n\t],\n\t\"./gcode\": [\n\t\t11871,\n\t\t\"highlight/gcode\"\n\t],\n\t\"./gcode.js\": [\n\t\t11871,\n\t\t\"highlight/gcode\"\n\t],\n\t\"./gcode.js.js\": [\n\t\t84025,\n\t\t\"highlight/gcode-js-js\"\n\t],\n\t\"./gherkin\": [\n\t\t16499,\n\t\t\"highlight/gherkin\"\n\t],\n\t\"./gherkin.js\": [\n\t\t16499,\n\t\t\"highlight/gherkin\"\n\t],\n\t\"./gherkin.js.js\": [\n\t\t21442,\n\t\t\"highlight/gherkin-js-js\"\n\t],\n\t\"./glsl\": [\n\t\t21942,\n\t\t\"highlight/glsl\"\n\t],\n\t\"./glsl.js\": [\n\t\t21942,\n\t\t\"highlight/glsl\"\n\t],\n\t\"./glsl.js.js\": [\n\t\t79958,\n\t\t\"highlight/glsl-js-js\"\n\t],\n\t\"./gml\": [\n\t\t81921,\n\t\t\"highlight/gml\"\n\t],\n\t\"./gml.js\": [\n\t\t81921,\n\t\t\"highlight/gml\"\n\t],\n\t\"./gml.js.js\": [\n\t\t98186,\n\t\t\"highlight/gml-js-js\"\n\t],\n\t\"./go\": [\n\t\t92399,\n\t\t\"highlight/go\"\n\t],\n\t\"./go.js\": [\n\t\t92399,\n\t\t\"highlight/go\"\n\t],\n\t\"./go.js.js\": [\n\t\t64368,\n\t\t\"highlight/go-js-js\"\n\t],\n\t\"./golo\": [\n\t\t9574,\n\t\t\"highlight/golo\"\n\t],\n\t\"./golo.js\": [\n\t\t9574,\n\t\t\"highlight/golo\"\n\t],\n\t\"./golo.js.js\": [\n\t\t361,\n\t\t\"highlight/golo-js-js\"\n\t],\n\t\"./gradle\": [\n\t\t89878,\n\t\t\"highlight/gradle\"\n\t],\n\t\"./gradle.js\": [\n\t\t89878,\n\t\t\"highlight/gradle\"\n\t],\n\t\"./gradle.js.js\": [\n\t\t57741,\n\t\t\"highlight/gradle-js-js\"\n\t],\n\t\"./graphql\": [\n\t\t21738,\n\t\t\"highlight/graphql\"\n\t],\n\t\"./graphql.js\": [\n\t\t21738,\n\t\t\"highlight/graphql\"\n\t],\n\t\"./graphql.js.js\": [\n\t\t94840,\n\t\t\"highlight/graphql-js-js\"\n\t],\n\t\"./groovy\": [\n\t\t54658,\n\t\t\"highlight/groovy\"\n\t],\n\t\"./groovy.js\": [\n\t\t54658,\n\t\t\"highlight/groovy\"\n\t],\n\t\"./groovy.js.js\": [\n\t\t56464,\n\t\t\"highlight/groovy-js-js\"\n\t],\n\t\"./haml\": [\n\t\t21950,\n\t\t\"highlight/haml\"\n\t],\n\t\"./haml.js\": [\n\t\t21950,\n\t\t\"highlight/haml\"\n\t],\n\t\"./haml.js.js\": [\n\t\t31061,\n\t\t\"highlight/haml-js-js\"\n\t],\n\t\"./handlebars\": [\n\t\t71407,\n\t\t\"highlight/handlebars\"\n\t],\n\t\"./handlebars.js\": [\n\t\t71407,\n\t\t\"highlight/handlebars\"\n\t],\n\t\"./handlebars.js.js\": [\n\t\t74313,\n\t\t\"highlight/handlebars-js-js\"\n\t],\n\t\"./haskell\": [\n\t\t67077,\n\t\t\"highlight/haskell\"\n\t],\n\t\"./haskell.js\": [\n\t\t67077,\n\t\t\"highlight/haskell\"\n\t],\n\t\"./haskell.js.js\": [\n\t\t98107,\n\t\t\"highlight/haskell-js-js\"\n\t],\n\t\"./haxe\": [\n\t\t42720,\n\t\t\"highlight/haxe\"\n\t],\n\t\"./haxe.js\": [\n\t\t42720,\n\t\t\"highlight/haxe\"\n\t],\n\t\"./haxe.js.js\": [\n\t\t43127,\n\t\t\"highlight/haxe-js-js\"\n\t],\n\t\"./hsp\": [\n\t\t69662,\n\t\t\"highlight/hsp\"\n\t],\n\t\"./hsp.js\": [\n\t\t69662,\n\t\t\"highlight/hsp\"\n\t],\n\t\"./hsp.js.js\": [\n\t\t67423,\n\t\t\"highlight/hsp-js-js\"\n\t],\n\t\"./http\": [\n\t\t78937,\n\t\t\"highlight/http\"\n\t],\n\t\"./http.js\": [\n\t\t78937,\n\t\t\"highlight/http\"\n\t],\n\t\"./http.js.js\": [\n\t\t49706,\n\t\t\"highlight/http-js-js\"\n\t],\n\t\"./hy\": [\n\t\t99358,\n\t\t\"highlight/hy\"\n\t],\n\t\"./hy.js\": [\n\t\t99358,\n\t\t\"highlight/hy\"\n\t],\n\t\"./hy.js.js\": [\n\t\t85952,\n\t\t\"highlight/hy-js-js\"\n\t],\n\t\"./inform7\": [\n\t\t84458,\n\t\t\"highlight/inform7\"\n\t],\n\t\"./inform7.js\": [\n\t\t84458,\n\t\t\"highlight/inform7\"\n\t],\n\t\"./inform7.js.js\": [\n\t\t96955,\n\t\t\"highlight/inform7-js-js\"\n\t],\n\t\"./ini\": [\n\t\t94762,\n\t\t\"highlight/ini\"\n\t],\n\t\"./ini.js\": [\n\t\t94762,\n\t\t\"highlight/ini\"\n\t],\n\t\"./ini.js.js\": [\n\t\t38305,\n\t\t\"highlight/ini-js-js\"\n\t],\n\t\"./irpf90\": [\n\t\t60320,\n\t\t\"highlight/irpf90\"\n\t],\n\t\"./irpf90.js\": [\n\t\t60320,\n\t\t\"highlight/irpf90\"\n\t],\n\t\"./irpf90.js.js\": [\n\t\t78463,\n\t\t\"highlight/irpf90-js-js\"\n\t],\n\t\"./isbl\": [\n\t\t14664,\n\t\t\"highlight/isbl\"\n\t],\n\t\"./isbl.js\": [\n\t\t14664,\n\t\t\"highlight/isbl\"\n\t],\n\t\"./isbl.js.js\": [\n\t\t77648,\n\t\t\"highlight/isbl\",\n\t\t\"highlight/isbl-js-js\"\n\t],\n\t\"./java\": [\n\t\t28257,\n\t\t\"highlight/java\"\n\t],\n\t\"./java.js\": [\n\t\t28257,\n\t\t\"highlight/java\"\n\t],\n\t\"./java.js.js\": [\n\t\t53664,\n\t\t\"highlight/java-js-js\"\n\t],\n\t\"./javascript\": [\n\t\t40978,\n\t\t\"highlight/javascript\"\n\t],\n\t\"./javascript.js\": [\n\t\t40978,\n\t\t\"highlight/javascript\"\n\t],\n\t\"./javascript.js.js\": [\n\t\t14204,\n\t\t\"highlight/javascript-js-js\"\n\t],\n\t\"./jboss-cli\": [\n\t\t84111,\n\t\t\"highlight/jboss-cli\"\n\t],\n\t\"./jboss-cli.js\": [\n\t\t84111,\n\t\t\"highlight/jboss-cli\"\n\t],\n\t\"./jboss-cli.js.js\": [\n\t\t28948,\n\t\t\"highlight/jboss-cli-js-js\"\n\t],\n\t\"./json\": [\n\t\t40014,\n\t\t\"highlight/json\"\n\t],\n\t\"./json.js\": [\n\t\t40014,\n\t\t\"highlight/json\"\n\t],\n\t\"./json.js.js\": [\n\t\t14547,\n\t\t\"highlight/json-js-js\"\n\t],\n\t\"./julia\": [\n\t\t24629,\n\t\t\"highlight/julia\"\n\t],\n\t\"./julia-repl\": [\n\t\t25850,\n\t\t\"highlight/julia-repl\"\n\t],\n\t\"./julia-repl.js\": [\n\t\t25850,\n\t\t\"highlight/julia-repl\"\n\t],\n\t\"./julia-repl.js.js\": [\n\t\t40996,\n\t\t\"highlight/julia-repl-js-js\"\n\t],\n\t\"./julia.js\": [\n\t\t24629,\n\t\t\"highlight/julia\"\n\t],\n\t\"./julia.js.js\": [\n\t\t34380,\n\t\t\"highlight/julia-js-js\"\n\t],\n\t\"./kotlin\": [\n\t\t65812,\n\t\t\"highlight/kotlin\"\n\t],\n\t\"./kotlin.js\": [\n\t\t65812,\n\t\t\"highlight/kotlin\"\n\t],\n\t\"./kotlin.js.js\": [\n\t\t15847,\n\t\t\"highlight/kotlin-js-js\"\n\t],\n\t\"./lasso\": [\n\t\t73530,\n\t\t\"highlight/lasso\"\n\t],\n\t\"./lasso.js\": [\n\t\t73530,\n\t\t\"highlight/lasso\"\n\t],\n\t\"./lasso.js.js\": [\n\t\t88178,\n\t\t\"highlight/lasso-js-js\"\n\t],\n\t\"./latex\": [\n\t\t47408,\n\t\t\"highlight/latex\"\n\t],\n\t\"./latex.js\": [\n\t\t47408,\n\t\t\"highlight/latex\"\n\t],\n\t\"./latex.js.js\": [\n\t\t32429,\n\t\t\"highlight/latex-js-js\"\n\t],\n\t\"./ldif\": [\n\t\t57604,\n\t\t\"highlight/ldif\"\n\t],\n\t\"./ldif.js\": [\n\t\t57604,\n\t\t\"highlight/ldif\"\n\t],\n\t\"./ldif.js.js\": [\n\t\t57137,\n\t\t\"highlight/ldif-js-js\"\n\t],\n\t\"./leaf\": [\n\t\t23961,\n\t\t\"highlight/leaf\"\n\t],\n\t\"./leaf.js\": [\n\t\t23961,\n\t\t\"highlight/leaf\"\n\t],\n\t\"./leaf.js.js\": [\n\t\t10822,\n\t\t\"highlight/leaf-js-js\"\n\t],\n\t\"./less\": [\n\t\t44210,\n\t\t\"highlight/less\"\n\t],\n\t\"./less.js\": [\n\t\t44210,\n\t\t\"highlight/less\"\n\t],\n\t\"./less.js.js\": [\n\t\t63224,\n\t\t\"highlight/less-js-js\"\n\t],\n\t\"./lisp\": [\n\t\t91943,\n\t\t\"highlight/lisp\"\n\t],\n\t\"./lisp.js\": [\n\t\t91943,\n\t\t\"highlight/lisp\"\n\t],\n\t\"./lisp.js.js\": [\n\t\t59998,\n\t\t\"highlight/lisp-js-js\"\n\t],\n\t\"./livecodeserver\": [\n\t\t82299,\n\t\t\"highlight/livecodeserver\"\n\t],\n\t\"./livecodeserver.js\": [\n\t\t82299,\n\t\t\"highlight/livecodeserver\"\n\t],\n\t\"./livecodeserver.js.js\": [\n\t\t99261,\n\t\t\"highlight/livecodeserver-js-js\"\n\t],\n\t\"./livescript\": [\n\t\t69735,\n\t\t\"highlight/livescript\"\n\t],\n\t\"./livescript.js\": [\n\t\t69735,\n\t\t\"highlight/livescript\"\n\t],\n\t\"./livescript.js.js\": [\n\t\t3079,\n\t\t\"highlight/livescript-js-js\"\n\t],\n\t\"./llvm\": [\n\t\t14972,\n\t\t\"highlight/llvm\"\n\t],\n\t\"./llvm.js\": [\n\t\t14972,\n\t\t\"highlight/llvm\"\n\t],\n\t\"./llvm.js.js\": [\n\t\t43195,\n\t\t\"highlight/llvm-js-js\"\n\t],\n\t\"./lsl\": [\n\t\t37034,\n\t\t\"highlight/lsl\"\n\t],\n\t\"./lsl.js\": [\n\t\t37034,\n\t\t\"highlight/lsl\"\n\t],\n\t\"./lsl.js.js\": [\n\t\t64675,\n\t\t\"highlight/lsl-js-js\"\n\t],\n\t\"./lua\": [\n\t\t28841,\n\t\t\"highlight/lua\"\n\t],\n\t\"./lua.js\": [\n\t\t28841,\n\t\t\"highlight/lua\"\n\t],\n\t\"./lua.js.js\": [\n\t\t58353,\n\t\t\"highlight/lua-js-js\"\n\t],\n\t\"./makefile\": [\n\t\t97903,\n\t\t\"highlight/makefile\"\n\t],\n\t\"./makefile.js\": [\n\t\t97903,\n\t\t\"highlight/makefile\"\n\t],\n\t\"./makefile.js.js\": [\n\t\t49591,\n\t\t\"highlight/makefile-js-js\"\n\t],\n\t\"./markdown\": [\n\t\t52003,\n\t\t\"highlight/markdown\"\n\t],\n\t\"./markdown.js\": [\n\t\t52003,\n\t\t\"highlight/markdown\"\n\t],\n\t\"./markdown.js.js\": [\n\t\t11855,\n\t\t\"highlight/markdown-js-js\"\n\t],\n\t\"./mathematica\": [\n\t\t8601,\n\t\t\"highlight/mathematica\"\n\t],\n\t\"./mathematica.js\": [\n\t\t8601,\n\t\t\"highlight/mathematica\"\n\t],\n\t\"./mathematica.js.js\": [\n\t\t68752,\n\t\t\"highlight/mathematica\",\n\t\t\"highlight/mathematica-js-js\"\n\t],\n\t\"./matlab\": [\n\t\t48009,\n\t\t\"highlight/matlab\"\n\t],\n\t\"./matlab.js\": [\n\t\t48009,\n\t\t\"highlight/matlab\"\n\t],\n\t\"./matlab.js.js\": [\n\t\t53959,\n\t\t\"highlight/matlab-js-js\"\n\t],\n\t\"./maxima\": [\n\t\t27020,\n\t\t\"highlight/maxima\"\n\t],\n\t\"./maxima.js\": [\n\t\t27020,\n\t\t\"highlight/maxima\"\n\t],\n\t\"./maxima.js.js\": [\n\t\t11307,\n\t\t\"highlight/maxima-js-js\"\n\t],\n\t\"./mel\": [\n\t\t67739,\n\t\t\"highlight/mel\"\n\t],\n\t\"./mel.js\": [\n\t\t67739,\n\t\t\"highlight/mel\"\n\t],\n\t\"./mel.js.js\": [\n\t\t85316,\n\t\t\"highlight/mel-js-js\"\n\t],\n\t\"./mercury\": [\n\t\t44261,\n\t\t\"highlight/mercury\"\n\t],\n\t\"./mercury.js\": [\n\t\t44261,\n\t\t\"highlight/mercury\"\n\t],\n\t\"./mercury.js.js\": [\n\t\t64896,\n\t\t\"highlight/mercury-js-js\"\n\t],\n\t\"./mipsasm\": [\n\t\t74807,\n\t\t\"highlight/mipsasm\"\n\t],\n\t\"./mipsasm.js\": [\n\t\t74807,\n\t\t\"highlight/mipsasm\"\n\t],\n\t\"./mipsasm.js.js\": [\n\t\t61511,\n\t\t\"highlight/mipsasm-js-js\"\n\t],\n\t\"./mizar\": [\n\t\t49291,\n\t\t\"highlight/mizar\"\n\t],\n\t\"./mizar.js\": [\n\t\t49291,\n\t\t\"highlight/mizar\"\n\t],\n\t\"./mizar.js.js\": [\n\t\t59718,\n\t\t\"highlight/mizar-js-js\"\n\t],\n\t\"./mojolicious\": [\n\t\t8895,\n\t\t\"highlight/mojolicious\"\n\t],\n\t\"./mojolicious.js\": [\n\t\t8895,\n\t\t\"highlight/mojolicious\"\n\t],\n\t\"./mojolicious.js.js\": [\n\t\t54368,\n\t\t\"highlight/mojolicious-js-js\"\n\t],\n\t\"./monkey\": [\n\t\t9676,\n\t\t\"highlight/monkey\"\n\t],\n\t\"./monkey.js\": [\n\t\t9676,\n\t\t\"highlight/monkey\"\n\t],\n\t\"./monkey.js.js\": [\n\t\t9724,\n\t\t\"highlight/monkey-js-js\"\n\t],\n\t\"./moonscript\": [\n\t\t56486,\n\t\t\"highlight/moonscript\"\n\t],\n\t\"./moonscript.js\": [\n\t\t56486,\n\t\t\"highlight/moonscript\"\n\t],\n\t\"./moonscript.js.js\": [\n\t\t94766,\n\t\t\"highlight/moonscript-js-js\"\n\t],\n\t\"./n1ql\": [\n\t\t71414,\n\t\t\"highlight/n1ql\"\n\t],\n\t\"./n1ql.js\": [\n\t\t71414,\n\t\t\"highlight/n1ql\"\n\t],\n\t\"./n1ql.js.js\": [\n\t\t85334,\n\t\t\"highlight/n1ql-js-js\"\n\t],\n\t\"./nestedtext\": [\n\t\t5384,\n\t\t\"highlight/nestedtext\"\n\t],\n\t\"./nestedtext.js\": [\n\t\t5384,\n\t\t\"highlight/nestedtext\"\n\t],\n\t\"./nestedtext.js.js\": [\n\t\t82574,\n\t\t\"highlight/nestedtext-js-js\"\n\t],\n\t\"./nginx\": [\n\t\t94028,\n\t\t\"highlight/nginx\"\n\t],\n\t\"./nginx.js\": [\n\t\t94028,\n\t\t\"highlight/nginx\"\n\t],\n\t\"./nginx.js.js\": [\n\t\t68815,\n\t\t\"highlight/nginx-js-js\"\n\t],\n\t\"./nim\": [\n\t\t45968,\n\t\t\"highlight/nim\"\n\t],\n\t\"./nim.js\": [\n\t\t45968,\n\t\t\"highlight/nim\"\n\t],\n\t\"./nim.js.js\": [\n\t\t51698,\n\t\t\"highlight/nim-js-js\"\n\t],\n\t\"./nix\": [\n\t\t84802,\n\t\t\"highlight/nix\"\n\t],\n\t\"./nix.js\": [\n\t\t84802,\n\t\t\"highlight/nix\"\n\t],\n\t\"./nix.js.js\": [\n\t\t54831,\n\t\t\"highlight/nix-js-js\"\n\t],\n\t\"./node-repl\": [\n\t\t69609,\n\t\t\"highlight/node-repl\"\n\t],\n\t\"./node-repl.js\": [\n\t\t69609,\n\t\t\"highlight/node-repl\"\n\t],\n\t\"./node-repl.js.js\": [\n\t\t75233,\n\t\t\"highlight/node-repl-js-js\"\n\t],\n\t\"./nsis\": [\n\t\t9968,\n\t\t\"highlight/nsis\"\n\t],\n\t\"./nsis.js\": [\n\t\t9968,\n\t\t\"highlight/nsis\"\n\t],\n\t\"./nsis.js.js\": [\n\t\t49113,\n\t\t\"highlight/nsis-js-js\"\n\t],\n\t\"./objectivec\": [\n\t\t2446,\n\t\t\"highlight/objectivec\"\n\t],\n\t\"./objectivec.js\": [\n\t\t2446,\n\t\t\"highlight/objectivec\"\n\t],\n\t\"./objectivec.js.js\": [\n\t\t3707,\n\t\t\"highlight/objectivec-js-js\"\n\t],\n\t\"./ocaml\": [\n\t\t57552,\n\t\t\"highlight/ocaml\"\n\t],\n\t\"./ocaml.js\": [\n\t\t57552,\n\t\t\"highlight/ocaml\"\n\t],\n\t\"./ocaml.js.js\": [\n\t\t63808,\n\t\t\"highlight/ocaml-js-js\"\n\t],\n\t\"./openscad\": [\n\t\t6277,\n\t\t\"highlight/openscad\"\n\t],\n\t\"./openscad.js\": [\n\t\t6277,\n\t\t\"highlight/openscad\"\n\t],\n\t\"./openscad.js.js\": [\n\t\t11393,\n\t\t\"highlight/openscad-js-js\"\n\t],\n\t\"./oxygene\": [\n\t\t80136,\n\t\t\"highlight/oxygene\"\n\t],\n\t\"./oxygene.js\": [\n\t\t80136,\n\t\t\"highlight/oxygene\"\n\t],\n\t\"./oxygene.js.js\": [\n\t\t93871,\n\t\t\"highlight/oxygene-js-js\"\n\t],\n\t\"./parser3\": [\n\t\t43412,\n\t\t\"highlight/parser3\"\n\t],\n\t\"./parser3.js\": [\n\t\t43412,\n\t\t\"highlight/parser3\"\n\t],\n\t\"./parser3.js.js\": [\n\t\t93773,\n\t\t\"highlight/parser3-js-js\"\n\t],\n\t\"./perl\": [\n\t\t12482,\n\t\t\"highlight/perl\"\n\t],\n\t\"./perl.js\": [\n\t\t12482,\n\t\t\"highlight/perl\"\n\t],\n\t\"./perl.js.js\": [\n\t\t35740,\n\t\t\"highlight/perl-js-js\"\n\t],\n\t\"./pf\": [\n\t\t4485,\n\t\t\"highlight/pf\"\n\t],\n\t\"./pf.js\": [\n\t\t4485,\n\t\t\"highlight/pf\"\n\t],\n\t\"./pf.js.js\": [\n\t\t85243,\n\t\t\"highlight/pf-js-js\"\n\t],\n\t\"./pgsql\": [\n\t\t89814,\n\t\t\"highlight/pgsql\"\n\t],\n\t\"./pgsql.js\": [\n\t\t89814,\n\t\t\"highlight/pgsql\"\n\t],\n\t\"./pgsql.js.js\": [\n\t\t64460,\n\t\t\"highlight/pgsql-js-js\"\n\t],\n\t\"./php\": [\n\t\t92656,\n\t\t\"highlight/php\"\n\t],\n\t\"./php-template\": [\n\t\t35112,\n\t\t\"highlight/php-template\"\n\t],\n\t\"./php-template.js\": [\n\t\t35112,\n\t\t\"highlight/php-template\"\n\t],\n\t\"./php-template.js.js\": [\n\t\t6511,\n\t\t\"highlight/php-template-js-js\"\n\t],\n\t\"./php.js\": [\n\t\t92656,\n\t\t\"highlight/php\"\n\t],\n\t\"./php.js.js\": [\n\t\t70693,\n\t\t\"highlight/php-js-js\"\n\t],\n\t\"./plaintext\": [\n\t\t62437,\n\t\t\"highlight/plaintext\"\n\t],\n\t\"./plaintext.js\": [\n\t\t62437,\n\t\t\"highlight/plaintext\"\n\t],\n\t\"./plaintext.js.js\": [\n\t\t13651,\n\t\t\"highlight/plaintext-js-js\"\n\t],\n\t\"./pony\": [\n\t\t46874,\n\t\t\"highlight/pony\"\n\t],\n\t\"./pony.js\": [\n\t\t46874,\n\t\t\"highlight/pony\"\n\t],\n\t\"./pony.js.js\": [\n\t\t56170,\n\t\t\"highlight/pony-js-js\"\n\t],\n\t\"./powershell\": [\n\t\t85040,\n\t\t\"highlight/powershell\"\n\t],\n\t\"./powershell.js\": [\n\t\t85040,\n\t\t\"highlight/powershell\"\n\t],\n\t\"./powershell.js.js\": [\n\t\t23003,\n\t\t\"highlight/powershell-js-js\"\n\t],\n\t\"./processing\": [\n\t\t25371,\n\t\t\"highlight/processing\"\n\t],\n\t\"./processing.js\": [\n\t\t25371,\n\t\t\"highlight/processing\"\n\t],\n\t\"./processing.js.js\": [\n\t\t81414,\n\t\t\"highlight/processing-js-js\"\n\t],\n\t\"./profile\": [\n\t\t73476,\n\t\t\"highlight/profile\"\n\t],\n\t\"./profile.js\": [\n\t\t73476,\n\t\t\"highlight/profile\"\n\t],\n\t\"./profile.js.js\": [\n\t\t13445,\n\t\t\"highlight/profile-js-js\"\n\t],\n\t\"./prolog\": [\n\t\t63944,\n\t\t\"highlight/prolog\"\n\t],\n\t\"./prolog.js\": [\n\t\t63944,\n\t\t\"highlight/prolog\"\n\t],\n\t\"./prolog.js.js\": [\n\t\t45640,\n\t\t\"highlight/prolog-js-js\"\n\t],\n\t\"./properties\": [\n\t\t17546,\n\t\t\"highlight/properties\"\n\t],\n\t\"./properties.js\": [\n\t\t17546,\n\t\t\"highlight/properties\"\n\t],\n\t\"./properties.js.js\": [\n\t\t19862,\n\t\t\"highlight/properties-js-js\"\n\t],\n\t\"./protobuf\": [\n\t\t15559,\n\t\t\"highlight/protobuf\"\n\t],\n\t\"./protobuf.js\": [\n\t\t15559,\n\t\t\"highlight/protobuf\"\n\t],\n\t\"./protobuf.js.js\": [\n\t\t88241,\n\t\t\"highlight/protobuf-js-js\"\n\t],\n\t\"./puppet\": [\n\t\t93867,\n\t\t\"highlight/puppet\"\n\t],\n\t\"./puppet.js\": [\n\t\t93867,\n\t\t\"highlight/puppet\"\n\t],\n\t\"./puppet.js.js\": [\n\t\t973,\n\t\t\"highlight/puppet-js-js\"\n\t],\n\t\"./purebasic\": [\n\t\t92938,\n\t\t\"highlight/purebasic\"\n\t],\n\t\"./purebasic.js\": [\n\t\t92938,\n\t\t\"highlight/purebasic\"\n\t],\n\t\"./purebasic.js.js\": [\n\t\t53893,\n\t\t\"highlight/purebasic-js-js\"\n\t],\n\t\"./python\": [\n\t\t38245,\n\t\t\"highlight/python\"\n\t],\n\t\"./python-repl\": [\n\t\t3722,\n\t\t\"highlight/python-repl\"\n\t],\n\t\"./python-repl.js\": [\n\t\t3722,\n\t\t\"highlight/python-repl\"\n\t],\n\t\"./python-repl.js.js\": [\n\t\t53693,\n\t\t\"highlight/python-repl-js-js\"\n\t],\n\t\"./python.js\": [\n\t\t38245,\n\t\t\"highlight/python\"\n\t],\n\t\"./python.js.js\": [\n\t\t43720,\n\t\t\"highlight/python-js-js\"\n\t],\n\t\"./q\": [\n\t\t82623,\n\t\t\"highlight/q\"\n\t],\n\t\"./q.js\": [\n\t\t82623,\n\t\t\"highlight/q\"\n\t],\n\t\"./q.js.js\": [\n\t\t90999,\n\t\t\"highlight/q-js-js\"\n\t],\n\t\"./qml\": [\n\t\t23797,\n\t\t\"highlight/qml\"\n\t],\n\t\"./qml.js\": [\n\t\t23797,\n\t\t\"highlight/qml\"\n\t],\n\t\"./qml.js.js\": [\n\t\t96012,\n\t\t\"highlight/qml-js-js\"\n\t],\n\t\"./r\": [\n\t\t54730,\n\t\t\"highlight/r\"\n\t],\n\t\"./r.js\": [\n\t\t54730,\n\t\t\"highlight/r\"\n\t],\n\t\"./r.js.js\": [\n\t\t26930,\n\t\t\"highlight/r-js-js\"\n\t],\n\t\"./reasonml\": [\n\t\t2318,\n\t\t\"highlight/reasonml\"\n\t],\n\t\"./reasonml.js\": [\n\t\t2318,\n\t\t\"highlight/reasonml\"\n\t],\n\t\"./reasonml.js.js\": [\n\t\t39057,\n\t\t\"highlight/reasonml-js-js\"\n\t],\n\t\"./rib\": [\n\t\t94820,\n\t\t\"highlight/rib\"\n\t],\n\t\"./rib.js\": [\n\t\t94820,\n\t\t\"highlight/rib\"\n\t],\n\t\"./rib.js.js\": [\n\t\t50363,\n\t\t\"highlight/rib-js-js\"\n\t],\n\t\"./roboconf\": [\n\t\t41874,\n\t\t\"highlight/roboconf\"\n\t],\n\t\"./roboconf.js\": [\n\t\t41874,\n\t\t\"highlight/roboconf\"\n\t],\n\t\"./roboconf.js.js\": [\n\t\t25875,\n\t\t\"highlight/roboconf-js-js\"\n\t],\n\t\"./routeros\": [\n\t\t74005,\n\t\t\"highlight/routeros\"\n\t],\n\t\"./routeros.js\": [\n\t\t74005,\n\t\t\"highlight/routeros\"\n\t],\n\t\"./routeros.js.js\": [\n\t\t95873,\n\t\t\"highlight/routeros-js-js\"\n\t],\n\t\"./rsl\": [\n\t\t92852,\n\t\t\"highlight/rsl\"\n\t],\n\t\"./rsl.js\": [\n\t\t92852,\n\t\t\"highlight/rsl\"\n\t],\n\t\"./rsl.js.js\": [\n\t\t25978,\n\t\t\"highlight/rsl-js-js\"\n\t],\n\t\"./ruby\": [\n\t\t67905,\n\t\t\"highlight/ruby\"\n\t],\n\t\"./ruby.js\": [\n\t\t67905,\n\t\t\"highlight/ruby\"\n\t],\n\t\"./ruby.js.js\": [\n\t\t7453,\n\t\t\"highlight/ruby-js-js\"\n\t],\n\t\"./ruleslanguage\": [\n\t\t32192,\n\t\t\"highlight/ruleslanguage\"\n\t],\n\t\"./ruleslanguage.js\": [\n\t\t32192,\n\t\t\"highlight/ruleslanguage\"\n\t],\n\t\"./ruleslanguage.js.js\": [\n\t\t51506,\n\t\t\"highlight/ruleslanguage-js-js\"\n\t],\n\t\"./rust\": [\n\t\t9880,\n\t\t\"highlight/rust\"\n\t],\n\t\"./rust.js\": [\n\t\t9880,\n\t\t\"highlight/rust\"\n\t],\n\t\"./rust.js.js\": [\n\t\t75391,\n\t\t\"highlight/rust-js-js\"\n\t],\n\t\"./sas\": [\n\t\t93129,\n\t\t\"highlight/sas\"\n\t],\n\t\"./sas.js\": [\n\t\t93129,\n\t\t\"highlight/sas\"\n\t],\n\t\"./sas.js.js\": [\n\t\t56262,\n\t\t\"highlight/sas-js-js\"\n\t],\n\t\"./scala\": [\n\t\t30729,\n\t\t\"highlight/scala\"\n\t],\n\t\"./scala.js\": [\n\t\t30729,\n\t\t\"highlight/scala\"\n\t],\n\t\"./scala.js.js\": [\n\t\t76940,\n\t\t\"highlight/scala-js-js\"\n\t],\n\t\"./scheme\": [\n\t\t82254,\n\t\t\"highlight/scheme\"\n\t],\n\t\"./scheme.js\": [\n\t\t82254,\n\t\t\"highlight/scheme\"\n\t],\n\t\"./scheme.js.js\": [\n\t\t76613,\n\t\t\"highlight/scheme-js-js\"\n\t],\n\t\"./scilab\": [\n\t\t85149,\n\t\t\"highlight/scilab\"\n\t],\n\t\"./scilab.js\": [\n\t\t85149,\n\t\t\"highlight/scilab\"\n\t],\n\t\"./scilab.js.js\": [\n\t\t47731,\n\t\t\"highlight/scilab-js-js\"\n\t],\n\t\"./scss\": [\n\t\t71062,\n\t\t\"highlight/scss\"\n\t],\n\t\"./scss.js\": [\n\t\t71062,\n\t\t\"highlight/scss\"\n\t],\n\t\"./scss.js.js\": [\n\t\t61258,\n\t\t\"highlight/scss-js-js\"\n\t],\n\t\"./shell\": [\n\t\t7874,\n\t\t\"highlight/shell\"\n\t],\n\t\"./shell.js\": [\n\t\t7874,\n\t\t\"highlight/shell\"\n\t],\n\t\"./shell.js.js\": [\n\t\t16605,\n\t\t\"highlight/shell-js-js\"\n\t],\n\t\"./smali\": [\n\t\t10943,\n\t\t\"highlight/smali\"\n\t],\n\t\"./smali.js\": [\n\t\t10943,\n\t\t\"highlight/smali\"\n\t],\n\t\"./smali.js.js\": [\n\t\t21216,\n\t\t\"highlight/smali-js-js\"\n\t],\n\t\"./smalltalk\": [\n\t\t17659,\n\t\t\"highlight/smalltalk\"\n\t],\n\t\"./smalltalk.js\": [\n\t\t17659,\n\t\t\"highlight/smalltalk\"\n\t],\n\t\"./smalltalk.js.js\": [\n\t\t5229,\n\t\t\"highlight/smalltalk-js-js\"\n\t],\n\t\"./sml\": [\n\t\t45935,\n\t\t\"highlight/sml\"\n\t],\n\t\"./sml.js\": [\n\t\t45935,\n\t\t\"highlight/sml\"\n\t],\n\t\"./sml.js.js\": [\n\t\t26301,\n\t\t\"highlight/sml-js-js\"\n\t],\n\t\"./sqf\": [\n\t\t3677,\n\t\t\"highlight/sqf\"\n\t],\n\t\"./sqf.js\": [\n\t\t3677,\n\t\t\"highlight/sqf\"\n\t],\n\t\"./sqf.js.js\": [\n\t\t27351,\n\t\t\"highlight/sqf-js-js\"\n\t],\n\t\"./sql\": [\n\t\t98935,\n\t\t\"highlight/sql\"\n\t],\n\t\"./sql.js\": [\n\t\t98935,\n\t\t\"highlight/sql\"\n\t],\n\t\"./sql.js.js\": [\n\t\t43066,\n\t\t\"highlight/sql-js-js\"\n\t],\n\t\"./stan\": [\n\t\t50052,\n\t\t\"highlight/stan\"\n\t],\n\t\"./stan.js\": [\n\t\t50052,\n\t\t\"highlight/stan\"\n\t],\n\t\"./stan.js.js\": [\n\t\t41047,\n\t\t\"highlight/stan-js-js\"\n\t],\n\t\"./stata\": [\n\t\t60454,\n\t\t\"highlight/stata\"\n\t],\n\t\"./stata.js\": [\n\t\t60454,\n\t\t\"highlight/stata\"\n\t],\n\t\"./stata.js.js\": [\n\t\t78525,\n\t\t\"highlight/stata-js-js\"\n\t],\n\t\"./step21\": [\n\t\t37022,\n\t\t\"highlight/step21\"\n\t],\n\t\"./step21.js\": [\n\t\t37022,\n\t\t\"highlight/step21\"\n\t],\n\t\"./step21.js.js\": [\n\t\t85098,\n\t\t\"highlight/step21-js-js\"\n\t],\n\t\"./stylus\": [\n\t\t88688,\n\t\t\"highlight/stylus\"\n\t],\n\t\"./stylus.js\": [\n\t\t88688,\n\t\t\"highlight/stylus\"\n\t],\n\t\"./stylus.js.js\": [\n\t\t91613,\n\t\t\"highlight/stylus-js-js\"\n\t],\n\t\"./subunit\": [\n\t\t40726,\n\t\t\"highlight/subunit\"\n\t],\n\t\"./subunit.js\": [\n\t\t40726,\n\t\t\"highlight/subunit\"\n\t],\n\t\"./subunit.js.js\": [\n\t\t93299,\n\t\t\"highlight/subunit-js-js\"\n\t],\n\t\"./swift\": [\n\t\t77690,\n\t\t\"highlight/swift\"\n\t],\n\t\"./swift.js\": [\n\t\t77690,\n\t\t\"highlight/swift\"\n\t],\n\t\"./swift.js.js\": [\n\t\t82974,\n\t\t\"highlight/swift-js-js\"\n\t],\n\t\"./taggerscript\": [\n\t\t15460,\n\t\t\"highlight/taggerscript\"\n\t],\n\t\"./taggerscript.js\": [\n\t\t15460,\n\t\t\"highlight/taggerscript\"\n\t],\n\t\"./taggerscript.js.js\": [\n\t\t43700,\n\t\t\"highlight/taggerscript-js-js\"\n\t],\n\t\"./tap\": [\n\t\t30422,\n\t\t\"highlight/tap\"\n\t],\n\t\"./tap.js\": [\n\t\t30422,\n\t\t\"highlight/tap\"\n\t],\n\t\"./tap.js.js\": [\n\t\t17532,\n\t\t\"highlight/tap-js-js\"\n\t],\n\t\"./tcl\": [\n\t\t78158,\n\t\t\"highlight/tcl\"\n\t],\n\t\"./tcl.js\": [\n\t\t78158,\n\t\t\"highlight/tcl\"\n\t],\n\t\"./tcl.js.js\": [\n\t\t16925,\n\t\t\"highlight/tcl-js-js\"\n\t],\n\t\"./thrift\": [\n\t\t30906,\n\t\t\"highlight/thrift\"\n\t],\n\t\"./thrift.js\": [\n\t\t30906,\n\t\t\"highlight/thrift\"\n\t],\n\t\"./thrift.js.js\": [\n\t\t9377,\n\t\t\"highlight/thrift-js-js\"\n\t],\n\t\"./tp\": [\n\t\t6123,\n\t\t\"highlight/tp\"\n\t],\n\t\"./tp.js\": [\n\t\t6123,\n\t\t\"highlight/tp\"\n\t],\n\t\"./tp.js.js\": [\n\t\t12686,\n\t\t\"highlight/tp-js-js\"\n\t],\n\t\"./twig\": [\n\t\t71973,\n\t\t\"highlight/twig\"\n\t],\n\t\"./twig.js\": [\n\t\t71973,\n\t\t\"highlight/twig\"\n\t],\n\t\"./twig.js.js\": [\n\t\t73660,\n\t\t\"highlight/twig-js-js\"\n\t],\n\t\"./typescript\": [\n\t\t28987,\n\t\t\"highlight/typescript\"\n\t],\n\t\"./typescript.js\": [\n\t\t28987,\n\t\t\"highlight/typescript\"\n\t],\n\t\"./typescript.js.js\": [\n\t\t92373,\n\t\t\"highlight/typescript-js-js\"\n\t],\n\t\"./vala\": [\n\t\t41462,\n\t\t\"highlight/vala\"\n\t],\n\t\"./vala.js\": [\n\t\t41462,\n\t\t\"highlight/vala\"\n\t],\n\t\"./vala.js.js\": [\n\t\t2239,\n\t\t\"highlight/vala-js-js\"\n\t],\n\t\"./vbnet\": [\n\t\t27531,\n\t\t\"highlight/vbnet\"\n\t],\n\t\"./vbnet.js\": [\n\t\t27531,\n\t\t\"highlight/vbnet\"\n\t],\n\t\"./vbnet.js.js\": [\n\t\t48701,\n\t\t\"highlight/vbnet-js-js\"\n\t],\n\t\"./vbscript\": [\n\t\t4703,\n\t\t\"highlight/vbscript\"\n\t],\n\t\"./vbscript-html\": [\n\t\t48704,\n\t\t\"highlight/vbscript-html\"\n\t],\n\t\"./vbscript-html.js\": [\n\t\t48704,\n\t\t\"highlight/vbscript-html\"\n\t],\n\t\"./vbscript-html.js.js\": [\n\t\t43992,\n\t\t\"highlight/vbscript-html-js-js\"\n\t],\n\t\"./vbscript.js\": [\n\t\t4703,\n\t\t\"highlight/vbscript\"\n\t],\n\t\"./vbscript.js.js\": [\n\t\t55872,\n\t\t\"highlight/vbscript-js-js\"\n\t],\n\t\"./verilog\": [\n\t\t54494,\n\t\t\"highlight/verilog\"\n\t],\n\t\"./verilog.js\": [\n\t\t54494,\n\t\t\"highlight/verilog\"\n\t],\n\t\"./verilog.js.js\": [\n\t\t44118,\n\t\t\"highlight/verilog-js-js\"\n\t],\n\t\"./vhdl\": [\n\t\t48110,\n\t\t\"highlight/vhdl\"\n\t],\n\t\"./vhdl.js\": [\n\t\t48110,\n\t\t\"highlight/vhdl\"\n\t],\n\t\"./vhdl.js.js\": [\n\t\t63461,\n\t\t\"highlight/vhdl-js-js\"\n\t],\n\t\"./vim\": [\n\t\t53638,\n\t\t\"highlight/vim\"\n\t],\n\t\"./vim.js\": [\n\t\t53638,\n\t\t\"highlight/vim\"\n\t],\n\t\"./vim.js.js\": [\n\t\t54971,\n\t\t\"highlight/vim-js-js\"\n\t],\n\t\"./wasm\": [\n\t\t81533,\n\t\t\"highlight/wasm\"\n\t],\n\t\"./wasm.js\": [\n\t\t81533,\n\t\t\"highlight/wasm\"\n\t],\n\t\"./wasm.js.js\": [\n\t\t7809,\n\t\t\"highlight/wasm-js-js\"\n\t],\n\t\"./wren\": [\n\t\t68563,\n\t\t\"highlight/wren\"\n\t],\n\t\"./wren.js\": [\n\t\t68563,\n\t\t\"highlight/wren\"\n\t],\n\t\"./wren.js.js\": [\n\t\t87106,\n\t\t\"highlight/wren-js-js\"\n\t],\n\t\"./x86asm\": [\n\t\t19947,\n\t\t\"highlight/x86asm\"\n\t],\n\t\"./x86asm.js\": [\n\t\t19947,\n\t\t\"highlight/x86asm\"\n\t],\n\t\"./x86asm.js.js\": [\n\t\t50923,\n\t\t\"highlight/x86asm-js-js\"\n\t],\n\t\"./xl\": [\n\t\t49338,\n\t\t\"highlight/xl\"\n\t],\n\t\"./xl.js\": [\n\t\t49338,\n\t\t\"highlight/xl\"\n\t],\n\t\"./xl.js.js\": [\n\t\t66778,\n\t\t\"highlight/xl-js-js\"\n\t],\n\t\"./xml\": [\n\t\t4610,\n\t\t\"highlight/xml\"\n\t],\n\t\"./xml.js\": [\n\t\t4610,\n\t\t\"highlight/xml\"\n\t],\n\t\"./xml.js.js\": [\n\t\t20722,\n\t\t\"highlight/xml-js-js\"\n\t],\n\t\"./xquery\": [\n\t\t5595,\n\t\t\"highlight/xquery\"\n\t],\n\t\"./xquery.js\": [\n\t\t5595,\n\t\t\"highlight/xquery\"\n\t],\n\t\"./xquery.js.js\": [\n\t\t8001,\n\t\t\"highlight/xquery-js-js\"\n\t],\n\t\"./yaml\": [\n\t\t71392,\n\t\t\"highlight/yaml\"\n\t],\n\t\"./yaml.js\": [\n\t\t71392,\n\t\t\"highlight/yaml\"\n\t],\n\t\"./yaml.js.js\": [\n\t\t8564,\n\t\t\"highlight/yaml-js-js\"\n\t],\n\t\"./zephir\": [\n\t\t42222,\n\t\t\"highlight/zephir\"\n\t],\n\t\"./zephir.js\": [\n\t\t42222,\n\t\t\"highlight/zephir\"\n\t],\n\t\"./zephir.js.js\": [\n\t\t64181,\n\t\t\"highlight/zephir-js-js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 63497;\nmodule.exports = webpackAsyncContext;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-wrapper text-editor__content-wrapper\",class:{\n\t\t'--show-outline': _vm.showOutline\n\t},attrs:{\"data-text-el\":\"editor-content-wrapper\"}},[(_vm.showOutline)?_c('div',{staticClass:\"text-editor__content-wrapper__left\"},[_c('EditorOutline')],1):_vm._e(),_vm._v(\" \"),(_vm.$editor)?_c('EditorContent',{staticClass:\"editor__content text-editor__content\",attrs:{\"id\":\"read-only-editor\",\"editor\":_vm.$editor}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-editor__content-wrapper__right\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div data-text-el=\"editor-content-wrapper\"\n\t\tclass=\"content-wrapper text-editor__content-wrapper\"\n\t\t:class=\"{\n\t\t\t'--show-outline': showOutline\n\t\t}\">\n\t\t<div v-if=\"showOutline\" class=\"text-editor__content-wrapper__left\">\n\t\t\t<EditorOutline />\n\t\t</div>\n\t\t<EditorContent v-if=\"$editor\"\n\t\t\tid=\"read-only-editor\"\n\t\t\tclass=\"editor__content text-editor__content\"\n\t\t\t:editor=\"$editor\" />\n\t\t<div class=\"text-editor__content-wrapper__right\" />\n\t</div>\n</template>\n\n<script>\nimport { Editor } from '@tiptap/core'\nimport { EditorContent } from '@tiptap/vue-2'\nimport { EDITOR } from './Editor.provider.js'\nimport { useOutlineStateMixin, useOutlineActions } from './Editor/Wrapper.provider.js'\nimport EditorOutline from './Editor/EditorOutline.vue'\n\nexport default {\n\tname: 'BaseReader',\n\tcomponents: {\n\t\tEditorContent,\n\t\tEditorOutline,\n\t},\n\n\tmixins: [useOutlineStateMixin, useOutlineActions],\n\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[EDITOR]: {\n\t\t\t\tget: () => this.$editor,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\n\t// extensions is a factory building a list of extensions for the editor\n\tinject: ['renderHtml', 'extensions'],\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thtmlContent() {\n\t\t\treturn this.renderHtml(this.content)\n\t\t},\n\t\tshowOutline() {\n\t\t\treturn this.$outlineState.visible\n\t\t},\n\t},\n\n\twatch: {\n\t\tcontent() {\n\t\t\tthis.updateContent()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.$editor = this.createEditor()\n\t\tthis.$editor.setEditable(false)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.$editor.destroy()\n\t},\n\n\tmethods: {\n\t\tcreateEditor() {\n\t\t\treturn new Editor({\n\t\t\t\tcontent: this.htmlContent,\n\t\t\t\textensions: this.extensions(),\n\t\t\t})\n\t\t},\n\n\t\tupdateContent() {\n\t\t\tthis.$editor.commands.setContent(this.htmlContent, true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.editor__content {\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\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!./BaseReader.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!./BaseReader.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseReader.vue?vue&type=style&index=0&id=151c6c0d&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseReader.vue?vue&type=style&index=0&id=151c6c0d&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BaseReader.vue?vue&type=template&id=151c6c0d&scoped=true\"\nimport script from \"./BaseReader.vue?vue&type=script&lang=js\"\nexport * from \"./BaseReader.vue?vue&type=script&lang=js\"\nimport style0 from \"./BaseReader.vue?vue&type=style&index=0&id=151c6c0d&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"151c6c0d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor\",attrs:{\"id\":\"editor-container\",\"data-text-el\":\"editor-container\",\"tabindex\":\"-1\"},on:{\"keydown\":function($event){$event.stopPropagation();return _vm.onKeyDown.apply(null, arguments)}}},[(_vm.displayedStatus)?_c('DocumentStatus',{attrs:{\"idle\":_vm.idle,\"lock\":_vm.lock,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue},on:{\"reconnect\":_vm.reconnect}}):_vm._e(),_vm._v(\" \"),(_vm.showLoadingSkeleton)?_c('SkeletonLoading'):_vm._e(),_vm._v(\" \"),(_vm.displayed)?_c('Wrapper',{attrs:{\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue,\"content-loaded\":_vm.contentLoaded,\"show-author-annotations\":_vm.showAuthorAnnotations,\"show-outline-outside\":_vm.showOutlineOutside},on:{\"outline-toggled\":_vm.outlineToggled}},[(_vm.hasEditor)?_c('MainContainer',[(_vm.readOnly)?_c('div',{staticClass:\"text-editor--readonly-bar\"},[_vm._t(\"readonlyBar\",function(){return [_c('ReadonlyBar',[_c('Status',{attrs:{\"document\":_vm.document,\"dirty\":_vm.dirty,\"sessions\":_vm.filteredSessions,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue}})],1)]})],2):[(_vm.renderMenus)?_c('MenuBar',{ref:\"menubar\",attrs:{\"is-hidden\":_vm.hideMenu,\"loaded\":_vm.menubarLoaded},on:{\"update:loaded\":function($event){_vm.menubarLoaded=$event}}},[_c('Status',{attrs:{\"document\":_vm.document,\"dirty\":_vm.dirty,\"sessions\":_vm.filteredSessions,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue}}),_vm._v(\" \"),_vm._t(\"header\")],2):_c('div',{staticClass:\"menubar-placeholder\"})],_vm._v(\" \"),_c('ContentContainer',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.contentLoaded),expression:\"contentLoaded\"}],ref:\"contentWrapper\"})],2):_vm._e(),_vm._v(\" \"),(_vm.hasSyncCollission)?_c('Reader',{attrs:{\"content\":_vm.syncError.data.outsideChange,\"is-rich-editor\":_vm.isRichEditor}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.$editor)?_c('Assistant'):_vm._e(),_vm._v(\" \"),_c('Translate',{attrs:{\"show\":_vm.translateModal,\"content\":_vm.translateContent},on:{\"insert-content\":_vm.translateInsert,\"replace-content\":_vm.translateReplace,\"close\":_vm.hideTranslate}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Extension } from '@tiptap/core'\n\nexport default Extension.create({\n\taddOptions() {\n\t\treturn {\n\t\t\tfileId: null,\n\t\t}\n\t},\n\taddStorage() {\n\t\treturn {\n\t\t\tstarted: false,\n\t\t}\n\t},\n\tonCreate() {\n\t\tif (this.options.fileId === null) {\n\t\t\tthrow new Error('fileId needs to be provided')\n\t\t}\n\t\tthis.storage.started = true\n\t},\n\tonSelectionUpdate({ editor }) {\n\t\tif (!this.storage.started) {\n\t\t\treturn\n\t\t}\n\n\t\tconst pos = editor.state.selection.$anchor.pos\n\t\tsessionStorage.setItem('text-lastPos-' + this.options.fileId, pos)\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tautofocus: () => ({ commands, editor }) => {\n\t\t\t\tconst pos = sessionStorage.getItem('text-lastPos-' + this.options.fileId)\n\t\t\t\tif (pos) {\n\t\t\t\t\treturn commands.focus(pos)\n\t\t\t\t}\n\n\t\t\t\treturn commands.focus('start')\n\t\t\t},\n\t\t}\n\t},\n})\n","/*\n * @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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/*\n * This helper provides Base64 encoding and decoding for ArrayBuffers.\n *\n * We use lib0/buffer for now as it's a dependency of y.js\n * and does not add new dependencies.\n *\n */\n\nimport { toBase64, fromBase64 } from 'lib0/buffer'\n\n/**\n *\n * @param {ArrayBuffer} data - binary data to encode\n */\nexport function encodeArrayBuffer(data) {\n\tconst view = new Uint8Array(data)\n\treturn toBase64(view)\n}\n\n/**\n *\n * @param {string} encoded - base64 encoded string to decode\n */\nexport function decodeArrayBuffer(encoded) {\n\treturn fromBase64(encoded)\n}\n","/*\n * @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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\nimport { WebsocketProvider } from 'y-websocket'\nimport initWebSocketPolyfill from './WebSocketPolyfill.js'\nimport { logger } from '../helpers/logger.js'\n\n/**\n *\n * @param {object} options - options for the sync provider\n * @param {object} options.ydoc - the Ydoc\n * @param {object} options.syncService - sync service to build upon\n * @param {number} options.fileId - file id of the file to open\n * @param {number} options.queue - queue for outgoing steps\n * @param {object} options.initialSession - initialSession to start from\n * @param {boolean} options.disableBc - disable broadcast channel synchronization (default: disabled in debug mode, enabled otherwise)\n */\nexport default function createSyncServiceProvider({ ydoc, syncService, fileId, initialSession, queue, disableBc }) {\n\tif (!fileId) {\n\t\t// We need a file id as a unique identifier for y.js as otherwise state might leak between different files\n\t\tthrow new Error('fileId is required')\n\t}\n\tconst WebSocketPolyfill = initWebSocketPolyfill(syncService, fileId, initialSession, queue)\n\tdisableBc = disableBc ?? !!window?._oc_debug\n\tconst websocketProvider = new WebsocketProvider(\n\t\t'ws://localhost:1234',\n\t\t'file:' + fileId,\n\t\tydoc,\n\t\t{ WebSocketPolyfill, disableBc },\n\t)\n\twebsocketProvider.on('status', event => logger.debug('status', event))\n\treturn websocketProvider\n}\n","/*\n * @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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\nimport { logger } from '../helpers/logger.js'\nimport { encodeArrayBuffer, decodeArrayBuffer } from '../helpers/base64.js'\n\n/**\n *\n * @param {object} syncService - the sync service to build upon\n * @param {number} fileId - id of the file to open\n * @param {object} initialSession - initial session to open\n * @param {object[]} queue - queue for the outgoing steps\n */\nexport default function initWebSocketPolyfill(syncService, fileId, initialSession, queue) {\n\treturn class WebSocketPolyfill {\n\n\t\t#url\n\t\t#session\n\t\t#version\n\t\tbinaryType\n\t\tonmessage\n\t\tonerror\n\t\tonclose\n\t\tonopen\n\t\t#handlers\n\n\t\tconstructor(url) {\n\t\t\tthis.url = url\n\t\t\tlogger.debug('WebSocketPolyfill#constructor', { url, fileId, initialSession })\n\t\t\tthis.#registerHandlers({\n\t\t\t\topened: ({ version, session }) => {\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tlogger.debug('opened ', { version, session })\n\t\t\t\t\tthis.#session = session\n\t\t\t\t\tthis.onopen?.()\n\t\t\t\t},\n\t\t\t\tloaded: ({ version, session, content }) => {\n\t\t\t\t\tlogger.debug('loaded ', { version, session })\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tthis.#session = session\n\t\t\t\t},\n\t\t\t\tsync: ({ steps, version }) => {\n\t\t\t\t\tlogger.debug('synced ', { version, steps })\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tif (steps) {\n\t\t\t\t\t\tsteps.forEach(s => {\n\t\t\t\t\t\t\tconst data = decodeArrayBuffer(s.step)\n\t\t\t\t\t\t\tthis.onmessage({ data })\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t\t\tsyncService.open({ fileId, initialSession })\n\t\t}\n\n\t\t#registerHandlers(handlers) {\n\t\t\tthis.#handlers = handlers\n\t\t\tObject.entries(this.#handlers)\n\t\t\t\t.forEach(([key, value]) => syncService.on(key, value))\n\t\t}\n\n\t\tsend(...data) {\n\t\t\t// Useful for debugging what steps are sent and how they were initiated\n\t\t\t// data.forEach(logStep)\n\n\t\t\tqueue.push(...data)\n\t\t\tlet outbox = []\n\t\t\treturn syncService.sendSteps(() => {\n\t\t\t\tconst data = {\n\t\t\t\t\tsteps: this.#steps,\n\t\t\t\t\tawareness: this.#awareness,\n\t\t\t\t\tversion: this.#version,\n\t\t\t\t}\n\t\t\t\toutbox = [...queue]\n\t\t\t\tlogger.debug('sending steps ', data)\n\t\t\t\treturn data\n\t\t\t})?.then(ret => {\n\t\t\t\t// only keep the steps that were not send yet\n\t\t\t\tqueue.splice(0,\n\t\t\t\t\tqueue.length,\n\t\t\t\t\t...queue.filter(s => !outbox.includes(s)),\n\t\t\t\t)\n\t\t\t\treturn ret\n\t\t\t}, err => logger.error(err))\n\t\t}\n\n\t\tget #steps() {\n\t\t\treturn queue.map(s => encodeArrayBuffer(s))\n\t\t\t\t.filter(s => s < 'AQ')\n\t\t}\n\n\t\tget #awareness() {\n\t\t\treturn queue.map(s => encodeArrayBuffer(s))\n\t\t\t\t.findLast(s => s > 'AQ') || ''\n\t\t}\n\n\t\tasync close() {\n\t\t\tawait this.#sendRemainingSteps()\n\t\t\tObject.entries(this.#handlers)\n\t\t\t\t.forEach(([key, value]) => syncService.off(key, value))\n\t\t\tthis.#handlers = []\n\t\t\tsyncService.close().then(() => {\n\t\t\t\tthis.onclose()\n\t\t\t})\n\t\t\tlogger.debug('Websocket closed')\n\t\t}\n\n\t\t#sendRemainingSteps() {\n\t\t\tif (queue.length) {\n\t\t\t\tlet outbox = []\n\t\t\t\treturn syncService.sendStepsNow(() => {\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tsteps: this.#steps,\n\t\t\t\t\t\tawareness: this.#awareness,\n\t\t\t\t\t\tversion: this.#version,\n\t\t\t\t\t}\n\t\t\t\t\toutbox = [...queue]\n\t\t\t\t\tlogger.debug('sending final steps ', data)\n\t\t\t\t\treturn data\n\t\t\t\t})?.then(() => {\n\t\t\t\t\t// only keep the steps that were not send yet\n\t\t\t\t\tqueue.splice(0,\n\t\t\t\t\t\tqueue.length,\n\t\t\t\t\t\t...queue.filter(s => !outbox.includes(s)),\n\t\t\t\t\t)\n\t\t\t\t}, err => logger.error(err))\n\t\t\t}\n\t\t}\n\n\t}\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license 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\nconst extensionHighlight = {\n\tpy: 'python',\n\tgyp: 'python',\n\twsgi: 'python',\n\thtm: 'html',\n\txhtml: 'html',\n\terl: 'erlang',\n\tjsp: 'java',\n\tpl: 'perl',\n\trss: 'xml',\n\tatom: 'xml',\n\txsl: 'xml',\n\tplist: 'xml',\n\trb: 'ruby',\n\tbuilder: 'ruby',\n\tgemspec: 'ruby',\n\tpodspec: 'ruby',\n\tthor: 'ruby',\n\tdiff: 'patch',\n\ths: 'haskell',\n\ticl: 'haskell',\n\tphp3: 'php',\n\tphp4: 'php',\n\tphp5: 'php',\n\tphp6: 'php',\n\tsh: 'bash',\n\tzsh: 'bash',\n\tst: 'smalltalk',\n\tas: 'actionscript',\n\tapacheconf: 'apache',\n\tosacript: 'applescript',\n\tb: 'brainfuck',\n\tbf: 'brainfuck',\n\tclj: 'clojure',\n\t'cmake.in': 'cmake',\n\tcoffee: 'coffeescript',\n\tcson: 'coffescript',\n\ticed: 'coffescript',\n\tc: 'cpp',\n\th: 'cpp',\n\t'c++': 'cpp',\n\t'h++': 'cpp',\n\thh: 'cpp',\n\tjinja: 'django',\n\tbat: 'dos',\n\tcmd: 'dos',\n\tfs: 'fsharp',\n\thbs: 'handlebars',\n\t'html.hbs': 'handlebars',\n\t'html.handlebars': 'handlebars',\n\tsublime_metrics: 'json',\n\tsublime_session: 'json',\n\t'sublime-keymap': 'json',\n\t'sublime-mousemap': 'json',\n\t'sublime-project': 'json',\n\t'sublime-settings': 'json',\n\t'sublime-workspace': 'json',\n\tjs: 'javascript',\n\tmk: 'makefile',\n\tmak: 'makefile',\n\tmd: 'markdown',\n\tmkdown: 'markdown',\n\tmkd: 'markdown',\n\tnginxconf: 'nginx',\n\tm: 'objectivec',\n\tmm: 'objectivec',\n\tml: 'ocaml',\n\trs: 'rust',\n\tsci: 'scilab',\n\ttxt: 'plaintext',\n\tvb: 'vbnet',\n\tvbs: 'vbscript',\n}\n\nexport default extensionHighlight\nexport {\n\textensionHighlight,\n}\n","<template>\n\t<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<div v-if=\"haveStatus\"\n\t\t\t\t:class=\"[`autocomplete-result__status--${status && status.icon ? 'icon' : status.status}`]\"\n\t\t\t\tclass=\"autocomplete-result__status\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Title and subtitle -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\">\n\t\t\t\t{{ label }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AutoCompleteResult',\n\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\thaveStatus() {\n\t\t\treturn this.status?.icon || this.status?.status\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl(user, size) {\n\t\t\treturn generateUrl('/avatar/{user}/{size}', {\n\t\t\t\tuser,\n\t\t\t\tsize,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 30px;\n$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-main-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tbox-sizing: border-box;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-lighter);\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!./AutoCompleteResult.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!./AutoCompleteResult.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&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/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","<template>\n\t<SuggestionListWrapper ref=\"suggestionList\" :command=\"command\" :items=\"items\">\n\t\t<template #default=\"{ item, active}\">\n\t\t\t<AutoCompleteResult :id=\"item.id\"\n\t\t\t\t:label=\"item.label\"\n\t\t\t\ticon=\"icon-user\"\n\t\t\t\tsource=\"users\"\n\t\t\t\t:class=\"active ? 'highlight' : null\" />\n\t\t</template>\n\t\t<template #empty>\n\t\t\t{{ t('text', 'No user found') }}\n\t\t</template>\n\t</SuggestionListWrapper>\n</template>\n\n<script>\nimport AutoCompleteResult from './AutoCompleteResult.vue'\nimport SuggestionListWrapper from '../SuggestionListWrapper.vue'\n\nexport default {\n\tcomponents: {\n\t\tAutoCompleteResult,\n\t\tSuggestionListWrapper,\n\t},\n\tprops: {\n\t\titems: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tcommand: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmethods: {\n\t\tonKeyDown({ event }) {\n\t\t\t// Ignore any key modifier combinations\n\t\t\treturn this.$refs.suggestionList?.onKeyDown({ event })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.items {\n\tposition: relative;\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\toverflow: hidden;\n\tfont-size: 0.9rem;\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\tmin-width: 250px;\n}\n\n.item-empty {\n\tpadding: 4px 8px;\n\topacity: 0.8;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.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!./MentionList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AutoCompleteResult.vue?vue&type=template&id=2145738d&scoped=true\"\nimport script from \"./AutoCompleteResult.vue?vue&type=script&lang=js\"\nexport * from \"./AutoCompleteResult.vue?vue&type=script&lang=js\"\nimport style0 from \"./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&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 \"2145738d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"autocomplete-result\"},[_c('div',{staticClass:\"autocomplete-result__icon\",class:[_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? 'with-avatar' : ''}`],style:(_vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null)},[(_vm.haveStatus)?_c('div',{staticClass:\"autocomplete-result__status\",class:[`autocomplete-result__status--${_vm.status && _vm.status.icon ? 'icon' : _vm.status.status}`]},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.status && _vm.status.icon || '')+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"autocomplete-result__content\"},[_c('span',{staticClass:\"autocomplete-result__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"autocomplete-result__subline\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\\t\")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./MentionList.vue?vue&type=template&id=a58c38da\"\nimport script from \"./MentionList.vue?vue&type=script&lang=js\"\nexport * from \"./MentionList.vue?vue&type=script&lang=js\"\nimport style0 from \"./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SuggestionListWrapper',{ref:\"suggestionList\",attrs:{\"command\":_vm.command,\"items\":_vm.items},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active}){return [_c('AutoCompleteResult',{class:active ? 'highlight' : null,attrs:{\"id\":item.id,\"label\":item.label,\"icon\":\"icon-user\",\"source\":\"users\"}})]}},{key:\"empty\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'No user found'))+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport MentionList from './MentionList.vue'\nimport createSuggestions from '../suggestions.js'\n\nconst USERS_LIST_ENDPOINT_URL = generateUrl('apps/text/api/v1/users')\n\nconst emitMention = ({ session, props }) => {\n\tconst documentId = session.documentId\n\taxios.put(generateUrl(`apps/text/session/${documentId}/mention`), {\n\t\tdocumentId,\n\t\tsessionId: session.id,\n\t\tsessionToken: session.token,\n\t\tmention: props.id,\n\t})\n}\n\nexport default ({ session, params }) => createSuggestions({\n\tlistComponent: MentionList,\n\titems: async ({ query }) => {\n\t\tconst params = {\n\t\t\tdocumentId: session.documentId,\n\t\t\tsessionId: session.id,\n\t\t\tsessionToken: session.token,\n\t\t\tfilter: query,\n\t\t}\n\t\tconst response = await axios.post(USERS_LIST_ENDPOINT_URL, params)\n\t\tconst users = JSON.parse(JSON.stringify(response.data))\n\t\tconst result = []\n\n\t\tObject.keys(users).map(key => result.push({\n\t\t\tid: key,\n\t\t\tlabel: users[key],\n\t\t}))\n\n\t\treturn result\n\t},\n\n\tcommand: ({ editor, range, props }) => {\n\t\tif (params?.emitMention) {\n\t\t\tparams.emitMention({ props })\n\t\t} else {\n\t\t\temitMention({\n\t\t\t\tsession,\n\t\t\t\tprops,\n\t\t\t})\n\t\t}\n\n\t\t// Insert mention\n\t\t// from https://github.com/ueberdosis/tiptap/blob/9a254bf9daf6d839bd02c968e14837098b903b38/packages/extension-mention/src/mention.ts\n\n\t\t// increase range.to by one when the next node is of type \"text\"\n\t\t// and starts with a space character\n\t\tconst nodeAfter = editor.view.state.selection.$to.nodeAfter\n\t\tconst overrideSpace = nodeAfter?.text?.startsWith(' ')\n\n\t\tif (overrideSpace) {\n\t\t\trange.to += 1\n\t\t}\n\n\t\teditor\n\t\t\t.chain()\n\t\t\t.focus()\n\t\t\t.insertContentAt(range, [\n\t\t\t\t{\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tattrs: props,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\ttext: ' ',\n\t\t\t\t},\n\t\t\t])\n\t\t\t.run()\n\n\t\twindow.getSelection()?.collapseToEnd()\n\t},\n\t...params,\n})\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport MentionSuggestion from './components/Suggestion/Mention/suggestions.js'\n\nimport 'proxy-polyfill'\n\nimport { Editor } from '@tiptap/core'\nimport { lowlight } from 'lowlight/lib/core.js'\nimport hljs from 'highlight.js/lib/core'\n\nimport { logger } from './helpers/logger.js'\nimport { FocusTrap, Mention, PlainText, RichText } from './extensions/index.js'\n// eslint-disable-next-line import/no-named-as-default\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\n\nconst loadSyntaxHighlight = async (language) => {\n\tconst list = hljs.listLanguages()\n\tlogger.debug('Supported languages', { list })\n\tif (!lowlight.listLanguages().includes(language)) {\n\t\ttry {\n\t\t\tlogger.debug('Loading language', language)\n\t\t\t// eslint-disable-next-line n/no-missing-import\n\t\t\tconst syntax = await import(/* webpackChunkName: \"highlight/[request]\" */`../node_modules/highlight.js/lib/languages/${language}`)\n\t\t\tlowlight.registerLanguage(language, syntax.default)\n\t\t} catch (error) {\n\t\t\t// fallback to none\n\t\t\tlogger.debug('No matching highlighing found', { error })\n\t\t}\n\t}\n}\n\nconst createEditor = ({ language, onCreate = () => {}, onUpdate = () => {}, extensions, enableRichEditing, session, relativePath, isEmbedded = false }) => {\n\tlet defaultExtensions\n\tif (enableRichEditing) {\n\t\tdefaultExtensions = [\n\t\t\tRichText.configure({\n\t\t\t\trelativePath,\n\t\t\t\tisEmbedded,\n\t\t\t\tcomponent: this,\n\t\t\t\textensions: [\n\t\t\t\t\tMention.configure({\n\t\t\t\t\t\tsuggestion: MentionSuggestion({\n\t\t\t\t\t\t\tsession,\n\t\t\t\t\t\t}),\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t}),\n\t\t\tFocusTrap,\n\t\t]\n\t} else {\n\t\tdefaultExtensions = [PlainText, CodeBlockLowlight.configure({ lowlight, defaultLanguage: language })]\n\t}\n\n\treturn new Editor({\n\t\tonCreate,\n\t\tonUpdate,\n\t\teditorProps: {\n\t\t\tscrollMargin: 50,\n\t\t\tscrollThreshold: 50,\n\t\t},\n\t\textensions: defaultExtensions.concat(extensions || []),\n\t})\n}\n\nconst serializePlainText = (doc) => {\n\treturn doc.textContent\n}\n\nexport default createEditor\nexport { createEditor, serializePlainText, loadSyntaxHighlight }\n","/*\n * @copyright Copyright (c) 2023 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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\nimport escapeHtml from 'escape-html'\nimport markdownit from './../markdownit/index.js'\nimport { Doc, encodeStateAsUpdate, XmlFragment, applyUpdate } from 'yjs'\nimport { generateJSON } from '@tiptap/core'\nimport { prosemirrorToYXmlFragment } from 'y-prosemirror'\nimport { Node } from '@tiptap/pm/model'\nimport { createEditor } from '../EditorFactory.js'\n\nexport default {\n\tmethods: {\n\t\tsetContent(content, { isRichEditor, addToHistory = true } = {}) {\n\t\t\tconst html = isRichEditor\n\t\t\t\t? markdownit.render(content) + '<p/>'\n\t\t\t\t: `<pre>${escapeHtml(content)}</pre>`\n\t\t\tthis.$editor.chain()\n\t\t\t\t.setContent(html, addToHistory)\n\t\t\t\t.command(({ tr }) => {\n\t\t\t\t\ttr.setMeta('addToHistory', addToHistory)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.run()\n\t\t},\n\n\t\tsetInitialYjsState(content, { isRichEditor }) {\n\t\t\tconst html = isRichEditor\n\t\t\t\t? markdownit.render(content) + '<p/>'\n\t\t\t\t: `<pre>${escapeHtml(content)}</pre>`\n\n\t\t\tconst editor = createEditor({\n\t\t\t\tenableRichEditing: isRichEditor,\n\t\t\t})\n\t\t\tconst json = generateJSON(html, editor.extensionManager.extensions)\n\n\t\t\tconst doc = Node.fromJSON(editor.schema, json)\n\t\t\tconst getBaseDoc = (doc) => {\n\t\t\t\tconst ydoc = new Doc()\n\t\t\t\t// In order to make the initial document state idempotent, we need to reset the clientID\n\t\t\t\t// While this is not recommended, we cannot avoid it here as we lack another mechanism\n\t\t\t\t// to generate the initial state on the server side\n\t\t\t\t// The only other option to avoid this could be to generate the initial state once and push\n\t\t\t\t// it to the server immediately, however this would require read only sessions to be able\n\t\t\t\t// to still push a state\n\t\t\t\tydoc.clientID = 0\n\t\t\t\tconst type = /** @type {XmlFragment} */ (ydoc.get('default', XmlFragment))\n\t\t\t\tif (!type.doc) {\n\t\t\t\t\t// This should not happen but is aligned with the upstream implementation\n\t\t\t\t\t// https://github.com/yjs/y-prosemirror/blob/8db24263770c2baaccb08e08ea9ef92dbcf8a9da/src/lib.js#L209\n\t\t\t\t\treturn ydoc\n\t\t\t\t}\n\n\t\t\t\tprosemirrorToYXmlFragment(doc, type)\n\t\t\t\treturn ydoc\n\t\t\t}\n\n\t\t\tconst baseUpdate = encodeStateAsUpdate(getBaseDoc(doc))\n\t\t\tapplyUpdate(this.$ydoc, baseUpdate)\n\t\t},\n\t},\n}\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.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!./CollisionResolveDialog.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"resolve-conflicts\" class=\"collision-resolve-dialog\" :class=\"{'icon-loading': clicked }\">\n\t\t<NcButton :disabled=\"clicked\" data-cy=\"resolveThisVersion\" @click=\"resolveThisVersion\">\n\t\t\t{{ t('text', 'Use current version') }}\n\t\t</NcButton>\n\t\t<NcButton :disabled=\"clicked\" data-cy=\"resolveServerVersion\" @click=\"resolveServerVersion\">\n\t\t\t{{ t('text', 'Use the saved version') }}\n\t\t</NcButton>\n\t</div>\n</template>\n\n<script>\nimport {\n\tuseEditorMixin,\n\tuseIsRichEditorMixin,\n\tuseSyncServiceMixin,\n} from './Editor.provider.js'\nimport { NcButton } from '@nextcloud/vue'\nimport setContent from './../mixins/setContent.js'\nexport default {\n\tname: 'CollisionResolveDialog',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tmixins: [\n\t\tuseEditorMixin,\n\t\tuseIsRichEditorMixin,\n\t\tsetContent,\n\t\tuseSyncServiceMixin,\n\t],\n\tprops: {\n\t\tsyncError: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tclicked: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tresolveThisVersion() {\n\t\t\tthis.clicked = true\n\t\t\tthis.$syncService.forceSave().then(() => this.$syncService.syncUp())\n\t\t\tthis.$editor.setEditable(!this.readOnly)\n\t\t},\n\t\tresolveServerVersion() {\n\t\t\tconst { outsideChange } = this.syncError.data\n\t\t\tthis.clicked = true\n\t\t\tthis.$editor.setEditable(!this.readOnly)\n\t\t\tthis.setContent(outsideChange, { isRichEditor: this.$isRichEditor })\n\t\t\tthis.$syncService.forceSave().then(() => this.$syncService.syncUp())\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#resolve-conflicts {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin: auto;\n\t\tpadding: 20px 0;\n\n\t\tbutton {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n</style>\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=style&index=0&id=f43ae8b6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=style&index=0&id=f43ae8b6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollisionResolveDialog.vue?vue&type=template&id=f43ae8b6&scoped=true\"\nimport script from \"./CollisionResolveDialog.vue?vue&type=script&lang=js\"\nexport * from \"./CollisionResolveDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./CollisionResolveDialog.vue?vue&type=style&index=0&id=f43ae8b6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f43ae8b6\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.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!./DocumentStatus.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n -\n - @author Max <max@nextcloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"document-status\">\n\t\t<NcNoteCard v-if=\"hasWarning\" type=\"warning\">\n\t\t\t<p v-if=\"isLoadingError\">\n\t\t\t\t{{ syncError.data.data.error }}\n\t\t\t\t<!-- Display reload button on PRECONDITION_FAILED response type -->\n\t\t\t\t<a v-if=\"syncError.data.status === 412\" class=\"button primary\" @click=\"reload\">{{ t('text', 'Reload') }}</a>\n\t\t\t</p>\n\t\t\t<p v-else-if=\"hasSyncCollission\">\n\t\t\t\t{{ t('text', 'Document has been changed outside of the editor. The changes cannot be applied') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"hasConnectionIssue\">\n\t\t\t\t{{ t('text', 'Document could not be loaded. Please check your internet connection.') }}\n\t\t\t\t<a class=\"button primary\" @click=\"reconnect\">{{ t('text', 'Reconnect') }}</a>\n\t\t\t</p>\n\t\t</NcNoteCard>\n\t\t<NcNoteCard v-else-if=\"idle\" type=\"info\">\n\t\t\t<p>\n\t\t\t\t{{ t('text', 'Document idle for {timeout} minutes, click to continue editing', { timeout: IDLE_TIMEOUT }) }}\n\t\t\t\t<a class=\"button primary\" @click=\"reconnect\">{{ t('text', 'Reconnect') }}</a>\n\t\t\t</p>\n\t\t</NcNoteCard>\n\t\t<NcNoteCard v-if=\"lock\" type=\"info\">\n\t\t\t<template #icon>\n\t\t\t\t<Lock :size=\"20\" />\n\t\t\t</template>\n\t\t\t<p>\n\t\t\t\t{{ t('text', 'This file is opened read-only as it is currently locked by {user}.', { user: lock.displayName }) }}\n\t\t\t</p>\n\t\t</NcNoteCard>\n\n\t\t<CollisionResolveDialog v-if=\"hasSyncCollission\" :sync-error=\"syncError\" />\n\t</div>\n</template>\n\n<script>\n\nimport { ERROR_TYPE, IDLE_TIMEOUT } from './../../services/SyncService.js'\nimport Lock from 'vue-material-design-icons/Lock.vue'\nimport { NcNoteCard } from '@nextcloud/vue'\nimport CollisionResolveDialog from '../CollisionResolveDialog.vue'\n\nexport default {\n\tname: 'DocumentStatus',\n\n\tcomponents: {\n\t\tCollisionResolveDialog,\n\t\tLock,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tidle: {\n\t\t\ttype: Boolean,\n\t\t\trequire: true,\n\t\t},\n\t\tlock: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tsyncError: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\thasConnectionIssue: {\n\t\t\ttype: Boolean,\n\t\t\trequire: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tIDLE_TIMEOUT,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasSyncCollission() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.SAVE_COLLISSION\n\t\t},\n\t\tisLoadingError() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.LOAD_ERROR\n\t\t},\n\t\thasWarning() {\n\t\t\treturn this.syncError || this.hasConnectionIssue\n\t\t},\n\t},\n\n\tmethods: {\n\t\treconnect() {\n\t\t\tthis.$emit('reconnect')\n\t\t},\n\t\treload() {\n\t\t\twindow.location.reload()\n\t\t},\n\t},\n\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.document-status {\n\t\tposition: sticky;\n\t\ttop: 16px;\n\t\tz-index: 100000;\n\t\t// max-height: 50px;\n\t\tmax-width: var(--text-editor-max-width);\n\t\tmargin: auto;\n\t\tbackground-color: var(--color-main-background);\n\t}\n</style>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"collision-resolve-dialog\",class:{'icon-loading': _vm.clicked },attrs:{\"id\":\"resolve-conflicts\"}},[_c('NcButton',{attrs:{\"disabled\":_vm.clicked,\"data-cy\":\"resolveThisVersion\"},on:{\"click\":_vm.resolveThisVersion}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use current version'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":_vm.clicked,\"data-cy\":\"resolveServerVersion\"},on:{\"click\":_vm.resolveServerVersion}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use the saved version'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./DocumentStatus.vue?vue&type=style&index=0&id=30c7e03a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.vue?vue&type=style&index=0&id=30c7e03a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DocumentStatus.vue?vue&type=template&id=30c7e03a&scoped=true\"\nimport script from \"./DocumentStatus.vue?vue&type=script&lang=js\"\nexport * from \"./DocumentStatus.vue?vue&type=script&lang=js\"\nimport style0 from \"./DocumentStatus.vue?vue&type=style&index=0&id=30c7e03a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30c7e03a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"document-status\"},[(_vm.hasWarning)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[(_vm.isLoadingError)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.syncError.data.data.error)+\"\\n\\t\\t\\t\"),_vm._v(\" \"),(_vm.syncError.data.status === 412)?_c('a',{staticClass:\"button primary\",on:{\"click\":_vm.reload}},[_vm._v(_vm._s(_vm.t('text', 'Reload')))]):_vm._e()]):(_vm.hasSyncCollission)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Document has been changed outside of the editor. The changes cannot be applied'))+\"\\n\\t\\t\")]):(_vm.hasConnectionIssue)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Document could not be loaded. Please check your internet connection.'))+\"\\n\\t\\t\\t\"),_c('a',{staticClass:\"button primary\",on:{\"click\":_vm.reconnect}},[_vm._v(_vm._s(_vm.t('text', 'Reconnect')))])]):_vm._e()]):(_vm.idle)?_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Document idle for {timeout} minutes, click to continue editing', { timeout: _vm.IDLE_TIMEOUT }))+\"\\n\\t\\t\\t\"),_c('a',{staticClass:\"button primary\",on:{\"click\":_vm.reconnect}},[_vm._v(_vm._s(_vm.t('text', 'Reconnect')))])])]):_vm._e(),_vm._v(\" \"),(_vm.lock)?_c('NcNoteCard',{attrs:{\"type\":\"info\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Lock',{attrs:{\"size\":20}})]},proxy:true}],null,false,326953187)},[_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'This file is opened read-only as it is currently locked by {user}.', { user: _vm.lock.displayName }))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.hasSyncCollission)?_c('CollisionResolveDialog',{attrs:{\"sync-error\":_vm.syncError}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport debounce from 'debounce'\n\nconst getClientWidth = () => document.documentElement.clientWidth\nconst isMobile = () => getClientWidth() < 768\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis.$onResize = debounce(() => {\n\t\t\tthis.isMobile = isMobile()\n\t\t}, 100)\n\n\t\twindow.addEventListener('resize', this.$onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.$onResize)\n\t},\n}\n","/*\n * @copyright Copyright (c) 2023 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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/* moment.js displays intervals as \"Some seconds ago\" and the like.\n * Use `this.refreshMoment` in a computed to live update these.\n *\n * Updates happen every 20 seconds as that is enough\n * given the granularity of moment.js\n */\nexport default {\n\n\tdata() {\n\t\treturn {\n\t\t\trefreshMoment: 0,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tthis.$refreshInterval = setInterval(() => {\n\t\t\tthis.refreshMoment++\n\t\t}, 20000)\n\t},\n\n\tbeforeDestroy() {\n\t\tclearInterval(this.$refreshInterval)\n\t},\n\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.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!./Status.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n -\n - @author Max <max@nextcloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"text-editor__session-list\">\n\t\t<div :title=\"lastSavedStatusTooltip\" class=\"save-status\" :class=\"saveStatusClass\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:aria-label=\"t('text', 'Save document')\"\n\t\t\t\t@click=\"onClickSave\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcSavingIndicatorIcon :saving=\"saveStatusClass === 'saving'\"\n\t\t\t\t\t\t:error=\"saveStatusClass === 'error'\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<SessionList :sessions=\"sessions\">\n\t\t\t<p slot=\"lastSaved\" class=\"last-saved\">\n\t\t\t\t{{ t('text', 'Last saved') }}: {{ lastSavedString }}\n\t\t\t</p>\n\t\t\t<GuestNameDialog v-if=\"$isPublic && currentSession && !currentSession.userId\" :session=\"currentSession\" />\n\t\t</SessionList>\n\t</div>\n</template>\n\n<script>\n\nimport { ERROR_TYPE } from '../../services/SyncService.js'\nimport moment from '@nextcloud/moment'\nimport { NcButton, NcSavingIndicatorIcon } from '@nextcloud/vue'\nimport {\n\tuseIsMobileMixin,\n\tuseIsPublicMixin,\n\tuseSyncServiceMixin,\n} from '../Editor.provider.js'\nimport refreshMoment from '../../mixins/refreshMoment.js'\n\nexport default {\n\tname: 'Status',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcSavingIndicatorIcon,\n\t\tSessionList: () => import(/* webpackChunkName: \"editor-collab\" */'./SessionList.vue'),\n\t\tGuestNameDialog: () => import(/* webpackChunkName: \"editor-guest\" */'./GuestNameDialog.vue'),\n\t},\n\n\tmixins: [\n\t\tuseIsMobileMixin,\n\t\tuseIsPublicMixin,\n\t\tuseSyncServiceMixin,\n\t\trefreshMoment,\n\t],\n\n\tprops: {\n\t\thasConnectionIssue: {\n\t\t\ttype: Boolean,\n\t\t\trequire: true,\n\t\t},\n\t\tdirty: {\n\t\t\ttype: Boolean,\n\t\t\trequire: true,\n\t\t},\n\t\tdocument: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tsyncError: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tsessions: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tlastSavedStatus() {\n\t\t\tif (this.hasConnectionIssue) {\n\t\t\t\treturn this.$isMobile\n\t\t\t\t\t? t('text', 'Offline')\n\t\t\t\t\t: t('text', 'Offline, changes will be saved when online')\n\t\t\t}\n\t\t\treturn this.dirtyStateIndicator ? t('text', 'Saving …') : t('text', 'Saved')\n\t\t},\n\t\tdirtyStateIndicator() {\n\t\t\treturn this.dirty || this.hasUnsavedChanges\n\t\t},\n\t\tlastSavedStatusTooltip() {\n\t\t\tlet message = t('text', 'Last saved {lastSave}', { lastSave: this.lastSavedString })\n\t\t\tif (this.hasSyncCollission) {\n\t\t\t\tmessage = t('text', 'The document has been changed outside of the editor. The changes cannot be applied.')\n\t\t\t}\n\t\t\tif (this.dirty || this.hasUnsavedChanges) {\n\t\t\t\tmessage += ' - ' + t('text', 'Unsaved changes')\n\t\t\t}\n\t\t\treturn message\n\t\t},\n\n\t\thasUnsavedChanges() {\n\t\t\treturn this.document && this.document.lastSavedVersion < this.document.currentVersion\n\t\t},\n\t\thasSyncCollission() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.SAVE_COLLISSION\n\t\t},\n\t\tsaveStatusClass() {\n\t\t\tif (this.syncError && this.lastSavedString !== '') {\n\t\t\t\treturn 'error'\n\t\t\t}\n\t\t\treturn this.dirtyStateIndicator ? 'saving' : 'saved'\n\t\t},\n\t\tcurrentSession() {\n\t\t\treturn Object.values(this.sessions).find((session) => session.isCurrent)\n\t\t},\n\t\tlastSavedString() {\n\t\t\t// Make this a dependent of refreshMoment, so it will be recomputed\n\t\t\t/* eslint-disable-next-line no-unused-expressions */\n\t\t\tthis.refreshMoment\n\t\t\treturn moment(this.document.lastSavedVersionTime * 1000).fromNow()\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClickSave() {\n\t\t\tif (this.dirtyStateIndicator) {\n\t\t\t\tthis.$syncService.forceSave()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.text-editor__session-list {\n\t\tdisplay: flex;\n\n\t\tinput, div {\n\t\t\tvertical-align: middle;\n\t\t\tmargin-left: 3px;\n\t\t}\n\t}\n\n\t.save-status {\n\t\tborder-radius: 50%;\n\t\tcolor: var(--color-text-lighter);\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\tpadding: 0;\n\t\theight: 44px;\n\t\twidth: 44px;\n\n\t\t&:hover {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t.last-saved {\n\t\tpadding: 6px;\n\t}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=style&index=0&id=42888af2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=style&index=0&id=42888af2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=42888af2&scoped=true\"\nimport script from \"./Status.vue?vue&type=script&lang=js\"\nexport * from \"./Status.vue?vue&type=script&lang=js\"\nimport style0 from \"./Status.vue?vue&type=style&index=0&id=42888af2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42888af2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor__session-list\"},[_c('div',{staticClass:\"save-status\",class:_vm.saveStatusClass,attrs:{\"title\":_vm.lastSavedStatusTooltip}},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('text', 'Save document')},on:{\"click\":_vm.onClickSave},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcSavingIndicatorIcon',{attrs:{\"saving\":_vm.saveStatusClass === 'saving',\"error\":_vm.saveStatusClass === 'error'}})]},proxy:true}])})],1),_vm._v(\" \"),_c('SessionList',{attrs:{\"sessions\":_vm.sessions}},[_c('p',{staticClass:\"last-saved\",attrs:{\"slot\":\"lastSaved\"},slot:\"lastSaved\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Last saved'))+\": \"+_vm._s(_vm.lastSavedString)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.$isPublic && _vm.currentSession && !_vm.currentSession.userId)?_c('GuestNameDialog',{attrs:{\"session\":_vm.currentSession}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"placeholder-main placeholder-main-text\">\n\t\t<!-- Placeholder animation -->\n\t\t<template v-for=\"(suffix, gradientIndex) in ['-regular', '-reverse']\">\n\t\t\t<svg :key=\"'gradient' + suffix\" :class=\"'placeholder-gradient placeholder-gradient' + suffix\">\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient :id=\"'placeholder-gradient' + suffix\">\n\t\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"(gradientIndex === 0) ? colorPlaceholderLight : colorPlaceholderDark\" />\n\t\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"(gradientIndex === 0) ? colorPlaceholderDark : colorPlaceholderLight\" />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t</svg>\n\n\t\t\t<ul :key=\"'list' + suffix\" :class=\"'placeholder-list placeholder-list' + suffix\">\n\t\t\t\t<li v-for=\"index in count\" :key=\"'placeholder' + suffix + index\">\n\t\t\t\t\t<svg class=\"text-placeholder\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t:fill=\"'url(#placeholder-gradient' + suffix + ')'\">\n\t\t\t\t\t\t<rect class=\"text-placeholder-line-one\" :style=\"textPlaceholderData[0]\" />\n\t\t\t\t\t\t<rect class=\"text-placeholder-line-two\" :style=\"textPlaceholderData[1]\" />\n\t\t\t\t\t\t<rect class=\"text-placeholder-line-three\" :style=\"textPlaceholderData[2]\" />\n\t\t\t\t\t\t<rect class=\"text-placeholder-line-four\" :style=\"textPlaceholderData[3]\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nconst bodyStyles = window.getComputedStyle(document.body)\nconst colorPlaceholderDark = bodyStyles.getPropertyValue('--color-placeholder-dark')\nconst colorPlaceholderLight = bodyStyles.getPropertyValue('--color-placeholder-light')\n\nexport default {\n\tname: 'SkeletonLoading',\n\n\tprops: {\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\t},\n\n\tsetup() {\n\t\treturn {\n\t\t\tcolorPlaceholderDark,\n\t\t\tcolorPlaceholderLight,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttextPlaceholderData() {\n\t\t\tconst data = []\n\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\t// generate random widths\n\t\t\t\tdata.push('width: ' + (Math.floor(Math.random() * 50) + 60) + '%')\n\t\t\t}\n\t\t\treturn data\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$margin: 8px;\n$messages-list-max-width: 670px;\n\n.placeholder-main {\n\tmax-width: $messages-list-max-width;\n\tposition: relative;\n\tmargin-bottom: auto;\n\tz-index: 1;\n\n\t&-text {\n\t\tmargin: 50px auto 0;\n\t\twidth: 100%;\n\t}\n}\n\n#rich-workspace .placeholder-main-text {\n\tmargin: 40px 0 0;\n}\n\n.placeholder-list {\n\tposition: absolute;\n\ttransform: translateZ(0);\n}\n\n.placeholder-list-regular {\n\tanimation: pulse 2s;\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n}\n\n.placeholder-list-reverse {\n\tanimation: pulse-reverse 2s;\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n}\n\n.placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.text-placeholder {\n\twidth: min($messages-list-max-width, 100vw);\n\theight: 6em;\n\tmargin: $margin auto;\n\tpadding: 4px 8px 0 14px;\n\tdisplay: block;\n\n\t&-line-one,\n\t&-line-two,\n\t&-line-three,\n\t&-line-four {\n\t\twidth: 670px;\n\t\theight: 1em;\n\t}\n\n\t&-line-one {\n\t\ty: 0.33em;\n\t\twidth: 175px;\n\t}\n\n\t&-line-two {\n\t\ty: 1.66em;\n\t}\n\n\t&-line-three {\n\t\ty: 3em;\n\t}\n\n\t&-line-four {\n\t\ty: 4.33em;\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes pulse-reverse {\n\t0% {\n\t\topacity: 0;\n\t}\n\t50% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\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!./SkeletonLoading.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!./SkeletonLoading.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkeletonLoading.vue?vue&type=style&index=0&id=5a5c7130&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/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SkeletonLoading.vue?vue&type=style&index=0&id=5a5c7130&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SkeletonLoading.vue?vue&type=template&id=5a5c7130&scoped=true\"\nimport script from \"./SkeletonLoading.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoading.vue?vue&type=script&lang=js\"\nimport style0 from \"./SkeletonLoading.vue?vue&type=style&index=0&id=5a5c7130&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 \"5a5c7130\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"placeholder-main placeholder-main-text\"},[_vm._l((['-regular', '-reverse']),function(suffix,gradientIndex){return [_c('svg',{key:'gradient' + suffix,class:'placeholder-gradient placeholder-gradient' + suffix},[_c('defs',[_c('linearGradient',{attrs:{\"id\":'placeholder-gradient' + suffix}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":(gradientIndex === 0) ? _vm.colorPlaceholderLight : _vm.colorPlaceholderDark}}),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":(gradientIndex === 0) ? _vm.colorPlaceholderDark : _vm.colorPlaceholderLight}})],1)],1)]),_vm._v(\" \"),_c('ul',{key:'list' + suffix,class:'placeholder-list placeholder-list' + suffix},_vm._l((_vm.count),function(index){return _c('li',{key:'placeholder' + suffix + index},[_c('svg',{staticClass:\"text-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":'url(#placeholder-gradient' + suffix + ')'}},[_c('rect',{staticClass:\"text-placeholder-line-one\",style:(_vm.textPlaceholderData[0])}),_vm._v(\" \"),_c('rect',{staticClass:\"text-placeholder-line-two\",style:(_vm.textPlaceholderData[1])}),_vm._v(\" \"),_c('rect',{staticClass:\"text-placeholder-line-three\",style:(_vm.textPlaceholderData[2])}),_vm._v(\" \"),_c('rect',{staticClass:\"text-placeholder-line-four\",style:(_vm.textPlaceholderData[3])})])])}),0)]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showAssistant)?_c('div',{staticClass:\"text-assistant\"},[(_vm.$editor)?_c('FloatingMenu',{staticClass:\"floating-menu\",attrs:{\"editor\":_vm.$editor,\"tippy-options\":_vm.floatingOptions(),\"should-show\":_vm.floatingShow,\"data-cy\":\"assistantMenu\"}},[_c('NcActions',{attrs:{\"title\":_vm.t('text', 'Nextcloud Assistant'),\"type\":'secondary'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CreationIcon',{staticClass:\"icon\",attrs:{\"size\":20}})]},proxy:true}],null,false,3374928481)},[_vm._v(\" \"),_vm._l((_vm.providers),function(provider){return _c('NcActionButton',{key:provider.task,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.openAssistantForm(provider.task)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(provider.task == 'OCP\\\\TextProcessing\\\\FreePromptTaskType')?_c('PencilIcon',{attrs:{\"size\":20}}):(provider.task == 'OCP\\\\TextProcessing\\\\SummarizeTaskType')?_c('TextShort',{attrs:{\"size\":20}}):(provider.task == 'OCP\\\\TextProcessing\\\\HeadlineTaskType')?_c('FormatHeader1',{attrs:{\"size\":20}}):(provider.task == 'OCA\\\\OpenAi\\\\TextProcessing\\\\ReformulateTaskType')?_c('Shuffle',{attrs:{\"size\":20}}):_c('CreationIcon')]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(provider.name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-cy\":\"open-translate\",\"close-after-click\":\"\"},on:{\"click\":_vm.openTranslateDialog},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TranslateVariant',{attrs:{\"size\":20}})]},proxy:true}],null,false,722262457)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Translate'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_vm.showTaskList=true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CreationIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2994082090)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Show assistant results'))+\"\\n\\t\\t\\t\")])],2),_vm._v(\" \"),(_vm.badgeStateIcon)?_c(_vm.badgeStateIcon,{tag:\"component\",staticClass:\"floating-menu--badge\",attrs:{\"size\":16}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('NcModal',{attrs:{\"show\":_vm.showTaskList},on:{\"update:show\":function($event){_vm.showTaskList=$event}}},[_c('div',{staticClass:\"task-list\"},[(_vm.tasks.length > 0)?_c('h4',[_c('span',{staticClass:\"assistant-bubble\"},[_c('CreationIcon',{staticClass:\"icon\",attrs:{\"size\":16}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('text', 'Nextcloud Assistant')))])],1)]):_vm._e(),_vm._v(\" \"),(_vm.tasks.length > 0)?_c('ul',_vm._l((_vm.tasks),function(task){return _c('NcListItem',{key:task.id,attrs:{\"name\":task.title,\"bold\":false,\"force-display-actions\":true},on:{\"click\":() => _vm.openResult(task)},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(task.input)+\"\\n\\t\\t\\t\\t\\t\")]},proxy:true},{key:\"icon\",fn:function(){return [(task.status === _vm.STATUS_SUCCESSFUL)?_c('CheckCircleIcon',{staticClass:\"icon-status--success\",attrs:{\"size\":20}}):(task.status === _vm.STATUS_FAILED)?_c('ErrorIcon',{staticClass:\"icon-status--failed\",attrs:{\"size\":20}}):_c('ClockOutline',{attrs:{\"size\":20}})]},proxy:true},{key:\"indicator\",fn:function(){return [_c('NcActions',{attrs:{\"inline\":2}},[(task.status === _vm.STATUS_SUCCESSFUL)?_c('NcActionButton',{attrs:{\"title\":task.output},on:{\"click\":function($event){$event.stopPropagation();return (() => _vm.copyResult(task)).apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ClipboardTextOutlineIcon',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Insert result'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)]},proxy:true},{key:\"actions\",fn:function(){return [(task.status === _vm.STATUS_SUCCESSFUL)?_c('NcActionButton',{attrs:{\"title\":task.output},on:{\"click\":function($event){$event.stopPropagation();return (() => _vm.openResult(task)).apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CreationIcon',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Show result'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(task.status === _vm.STATUS_SUCCESSFUL)?_c('NcActionButton',{attrs:{\"title\":task.output},on:{\"click\":() => _vm.insertResult(task)},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TextBoxPlusOutlineIcon',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Insert result'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":() => _vm.deleteTask(task)},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DeleteIcon',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Delete task'))+\"\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}],null,true)})}),1):_vm._e()])])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<div v-if=\"showAssistant\" class=\"text-assistant\">\n\t\t<FloatingMenu v-if=\"$editor\"\n\t\t\t:editor=\"$editor\"\n\t\t\t:tippy-options=\"floatingOptions()\"\n\t\t\t:should-show=\"floatingShow\"\n\t\t\tclass=\"floating-menu\"\n\t\t\tdata-cy=\"assistantMenu\">\n\t\t\t<NcActions :title=\"t('text', 'Nextcloud Assistant')\" :type=\"'secondary'\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CreationIcon :size=\"20\" class=\"icon\" />\n\t\t\t\t</template>\n\t\t\t\t<NcActionButton v-for=\"provider in providers\"\n\t\t\t\t\t:key=\"provider.task\"\n\t\t\t\t\tclose-after-click\n\t\t\t\t\t@click=\"openAssistantForm(provider.task)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<PencilIcon v-if=\"provider.task == 'OCP\\\\TextProcessing\\\\FreePromptTaskType'\" :size=\"20\" />\n\t\t\t\t\t\t<TextShort v-else-if=\"provider.task == 'OCP\\\\TextProcessing\\\\SummarizeTaskType'\" :size=\"20\" />\n\t\t\t\t\t\t<FormatHeader1 v-else-if=\"provider.task == 'OCP\\\\TextProcessing\\\\HeadlineTaskType'\" :size=\"20\" />\n\t\t\t\t\t\t<Shuffle v-else-if=\"provider.task == 'OCA\\\\OpenAi\\\\TextProcessing\\\\ReformulateTaskType'\" :size=\"20\" />\n\t\t\t\t\t\t<CreationIcon v-else />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ provider.name }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton data-cy=\"open-translate\" close-after-click @click=\"openTranslateDialog\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<TranslateVariant :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('text', 'Translate') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionSeparator />\n\t\t\t\t<NcActionButton close-after-click @click=\"showTaskList=true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CreationIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('text', 'Show assistant results') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t\t<component :is=\"badgeStateIcon\"\n\t\t\t\tv-if=\"badgeStateIcon\"\n\t\t\t\t:size=\"16\"\n\t\t\t\tclass=\"floating-menu--badge\" />\n\t\t</FloatingMenu>\n\n\t\t<NcModal :show.sync=\"showTaskList\">\n\t\t\t<div class=\"task-list\">\n\t\t\t\t<h4 v-if=\"tasks.length > 0\">\n\t\t\t\t\t<span class=\"assistant-bubble\">\n\t\t\t\t\t\t<CreationIcon :size=\"16\" class=\"icon\" />\n\t\t\t\t\t\t<span>{{ t('text', 'Nextcloud Assistant') }}</span>\n\t\t\t\t\t</span>\n\t\t\t\t</h4>\n\t\t\t\t<ul v-if=\"tasks.length > 0\">\n\t\t\t\t\t<NcListItem v-for=\"task in tasks\"\n\t\t\t\t\t\t:key=\"task.id\"\n\t\t\t\t\t\t:name=\"task.title\"\n\t\t\t\t\t\t:bold=\"false\"\n\t\t\t\t\t\t:force-display-actions=\"true\"\n\t\t\t\t\t\t@click=\"() => openResult(task)\">\n\t\t\t\t\t\t<template #subname>\n\t\t\t\t\t\t\t{{ task.input }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<CheckCircleIcon v-if=\"task.status === STATUS_SUCCESSFUL\" :size=\"20\" class=\"icon-status--success\" />\n\t\t\t\t\t\t\t<ErrorIcon v-else-if=\"task.status === STATUS_FAILED\" :size=\"20\" class=\"icon-status--failed\" />\n\t\t\t\t\t\t\t<ClockOutline v-else :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #indicator>\n\t\t\t\t\t\t\t<NcActions :inline=\"2\">\n\t\t\t\t\t\t\t\t<NcActionButton v-if=\"task.status === STATUS_SUCCESSFUL\" :title=\"task.output\" @click.stop=\"() => copyResult(task)\">\n\t\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t\t<ClipboardTextOutlineIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t{{ t('text', 'Insert result') }}\n\t\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #actions>\n\t\t\t\t\t\t\t<NcActionButton v-if=\"task.status === STATUS_SUCCESSFUL\" :title=\"task.output\" @click.stop=\"() => openResult(task)\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<CreationIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t{{ t('text', 'Show result') }}\n\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t\t<NcActionButton v-if=\"task.status === STATUS_SUCCESSFUL\" :title=\"task.output\" @click=\"() => insertResult(task)\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<TextBoxPlusOutlineIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t{{ t('text', 'Insert result') }}\n\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t\t<NcActionButton @click=\"() => deleteTask(task)\">\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<DeleteIcon :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t{{ t('text', 'Delete task') }}\n\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcListItem>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n<script>\nimport axios from '@nextcloud/axios'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ErrorIcon from 'vue-material-design-icons/AlertCircle.vue'\nimport CreationIcon from 'vue-material-design-icons/Creation.vue'\nimport ClockOutline from 'vue-material-design-icons/ClockOutline.vue'\nimport DeleteIcon from 'vue-material-design-icons/Delete.vue'\nimport CheckCircleIcon from 'vue-material-design-icons/CheckCircle.vue'\nimport TextBoxPlusOutlineIcon from 'vue-material-design-icons/TextBoxPlusOutline.vue'\nimport PencilIcon from 'vue-material-design-icons/Pencil.vue'\nimport TextShort from 'vue-material-design-icons/TextShort.vue'\nimport FormatHeader1 from 'vue-material-design-icons/FormatHeader1.vue'\nimport Shuffle from 'vue-material-design-icons/Shuffle.vue'\nimport TranslateVariant from 'vue-material-design-icons/TranslateVariant.vue'\nimport ClipboardTextOutlineIcon from 'vue-material-design-icons/ClipboardTextOutline.vue'\nimport { posToDOMRect } from '@tiptap/core'\nimport { loadState } from '@nextcloud/initial-state'\nimport { NcActions, NcActionButton, NcActionSeparator, NcListItem, NcModal } from '@nextcloud/vue'\nimport {\n\tuseEditorMixin,\n\tuseIsRichWorkspaceMixin,\n\tuseFileMixin,\n\tuseIsPublicMixin,\n} from './Editor.provider.js'\nimport { FloatingMenu } from '@tiptap/vue-2'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nconst limitInRange = (num, min, max) => {\n\treturn Math.min(Math.max(parseInt(num), parseInt(min)), parseInt(max))\n}\n\nconst STATUS_FAILED = 4\nconst STATUS_SUCCESSFUL = 3\nconst STATUS_RUNNING = 2\nconst STATUS_SCHEDULED = 1\nconst STATUS_UNKNOWN = 0\n\nexport default {\n\tname: 'Assistant',\n\tcomponents: {\n\t\tFloatingMenu,\n\t\tErrorIcon,\n\t\tCreationIcon,\n\t\tClockOutline,\n\t\tCheckCircleIcon,\n\t\tDeleteIcon,\n\t\tTextBoxPlusOutlineIcon,\n\t\tPencilIcon,\n\t\tTextShort,\n\t\tFormatHeader1,\n\t\tShuffle,\n\t\tTranslateVariant,\n\t\tClipboardTextOutlineIcon,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionSeparator,\n\t\tNcListItem,\n\t\tNcModal,\n\t},\n\tmixins: [\n\t\tuseEditorMixin,\n\t\tuseIsPublicMixin,\n\t\tuseIsRichWorkspaceMixin,\n\t\tuseFileMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tproviders: OCP.InitialState.loadState('text', 'textprocessing'),\n\t\t\tselection: '',\n\t\t\ttasks: [],\n\n\t\t\tSTATUS_FAILED,\n\t\t\tSTATUS_RUNNING,\n\t\t\tSTATUS_SCHEDULED,\n\t\t\tSTATUS_SUCCESSFUL,\n\t\t\tSTATUS_UNKNOWN,\n\n\t\t\tshowTaskList: false,\n\t\t\tcanTranslate: loadState('text', 'translation_languages', []).length > 0,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowAssistant() {\n\t\t\treturn !this.$isRichWorkspace && !this.$isPublic && window?.OCA?.TPAssistant?.openAssistantForm\n\t\t},\n\t\tidentifier() {\n\t\t\treturn 'text-file:' + this.$file.fileId\n\t\t},\n\t\tbadgeStateIcon() {\n\t\t\tif (this.tasks.filter((t) => t.status === STATUS_SCHEDULED || t.status === STATUS_RUNNING).length > 0) {\n\t\t\t\treturn ClockOutline\n\t\t\t}\n\n\t\t\tif (this.tasks.filter((t) => t.status === STATUS_FAILED).length > 0) {\n\t\t\t\treturn ErrorIcon\n\t\t\t}\n\n\t\t\tif (this.tasks.filter((t) => t.status === STATUS_SUCCESSFUL).length > 0) {\n\t\t\t\treturn CheckCircleIcon\n\t\t\t}\n\n\t\t\treturn null\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tif (!this.showAssistant) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.$editor.on('selectionUpdate', this.onSelection)\n\t\tthis.fetchTasks()\n\t\tsubscribe('notifications:notification:received', this.checkNotification)\n\t},\n\tbeforeDestroy() {\n\t\tif (!this.showAssistant) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.$editor.off('selectionUpdate', this.onSelection)\n\t\tunsubscribe('notifications:notification:received', this.checkNotification)\n\t},\n\tmethods: {\n\t\tasync fetchTasks() {\n\t\t\tconst result = await axios.get(generateOcsUrl('/textprocessing/tasks/app/text') + '?identifier=' + this.identifier)\n\n\t\t\tconst taskMap = {}\n\t\t\tfor (const index in this.providers) {\n\t\t\t\tconst provider = this.providers[index]\n\t\t\t\ttaskMap[provider.task] = provider\n\t\t\t}\n\n\t\t\tthis.tasks = result.data.ocs.data.tasks.map((task) => {\n\t\t\t\treturn {\n\t\t\t\t\t...task,\n\t\t\t\t\ttitle: taskMap[task.type].name,\n\t\t\t\t}\n\t\t\t}).sort((a, b) => b.id - a.id)\n\t\t},\n\t\tasync checkNotification(event) {\n\t\t\tif (event.notification.app !== 'assistant' || event.notification.actions[0].type !== 'WEB') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tawait this.fetchTasks()\n\t\t},\n\t\tonSelection() {\n\t\t\tconst { state } = this.$editor\n\t\t\tconst { from, to } = state.selection\n\t\t\tthis.selection = state.doc.textBetween(from, to, ' ')\n\t\t},\n\t\tasync openAssistantForm(taskType = null) {\n\t\t\tawait window.OCA.TPAssistant.openAssistantForm(\n\t\t\t\t{\n\t\t\t\t\tappId: 'text',\n\t\t\t\t\tidentifier: this.identifier,\n\t\t\t\t\ttaskType,\n\t\t\t\t\tinput: this.selection,\n\t\t\t\t\tisInsideViewer: true,\n\t\t\t\t\tcloseOnResult: false,\n\t\t\t\t\tactionButtons: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\t\ttitle: t('text', 'Insert result'),\n\t\t\t\t\t\t\tlabel: t('text', 'Insert result'),\n\t\t\t\t\t\t\tonClick: (lastTask) => {\n\t\t\t\t\t\t\t\tthis.insertResult(lastTask)\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})\n\t\t\tawait this.fetchTasks()\n\t\t},\n\t\topenTranslateDialog() {\n\t\t\tif (!this.selection.trim().length) {\n\t\t\t\tthis.$editor.commands.selectAll()\n\t\t\t}\n\t\t\temit('text:translate-modal:show', { content: this.selection || '' })\n\t\t},\n\t\tasync openResult(task) {\n\t\t\twindow.OCA?.TPAssistant.openAssistantResult(task)\n\t\t},\n\t\tasync insertResult(task) {\n\t\t\tthis.$editor.commands.insertContent(task.output)\n\t\t\tthis.showTaskList = false\n\t\t},\n\t\tasync copyResult(task) {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(task.output)\n\t\t\t\tshowSuccess(t('text', 'Nextcloud Assistant result copied'))\n\t\t\t\tthis.showTaskList = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(t('text', 'Could not copy result to clipboard'))\n\t\t\t}\n\t\t},\n\t\tasync deleteTask(task) {\n\t\t\ttry {\n\t\t\t\tawait axios.delete(generateOcsUrl(`/textprocessing/task/${task.id}`))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete task', e)\n\t\t\t}\n\t\t\tconst taskIndex = this.tasks.findIndex(t => t.id === task.id)\n\t\t\tif (taskIndex > -1) {\n\t\t\t\tthis.$delete(this.tasks, taskIndex)\n\t\t\t}\n\t\t},\n\t\tfloatingOptions() {\n\t\t\tconst buttonSize = 44\n\t\t\tconst topSpacing = 110 + 22\n\t\t\tconst bottomSpacing = 50 + 22\n\t\t\treturn {\n\t\t\t\tplacement: 'right',\n\t\t\t\tgetReferenceClientRect: () => {\n\t\t\t\t\tconst editorRect = this.$parent.$el.querySelector('.ProseMirror').getBoundingClientRect()\n\t\t\t\t\tconst pos = posToDOMRect(this.$editor.view, this.$editor.state.selection.from, this.$editor.state.selection.to)\n\t\t\t\t\tlet rightSpacing = 0\n\t\t\t\t\tlet addTopSpacing = 0\n\n\t\t\t\t\tif (editorRect.width < 670) {\n\t\t\t\t\t\trightSpacing = 20\n\t\t\t\t\t}\n\n\t\t\t\t\tif (editorRect.width < 425) {\n\t\t\t\t\t\trightSpacing = 66\n\t\t\t\t\t\taddTopSpacing = 30\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...pos,\n\t\t\t\t\t\twidth: editorRect.width - rightSpacing,\n\t\t\t\t\t\theight: limitInRange(pos.height, buttonSize, window.innerHeight),\n\t\t\t\t\t\ttop: limitInRange(pos.top, topSpacing, window.innerHeight - bottomSpacing) + addTopSpacing,\n\t\t\t\t\t\tleft: editorRect.left,\n\t\t\t\t\t\tright: editorRect.right,\n\t\t\t\t\t\tbottom: limitInRange(pos.top + buttonSize, bottomSpacing, window.innerHeight - topSpacing) + 22,\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\tfloatingShow() {\n\t\t\treturn true\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.text-assistant {\n\tposition: fixed;\n\ttop: calc(2 * var(--header-height));\n\tright: 0;\n\tmargin: calc(var(--default-grid-baseline) * 3);\n\toverflow: auto;\n\twidth: 250px;\n\tmax-height: 200px;\n}\n\n.task-list {\n\tpadding: 24px;\n}\n\nh4 {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: 12px;\n}\n\n.assistant-bubble {\n\tdisplay: flex;\n\tgap: 8px;\n\tbackground-color: var(--color-primary-element-light);\n\tborder-radius: var(--border-radius-rounded);\n\tpadding: 2px 8px;\n\n\t.icon {\n\t\tcolor: var(--color-primary);\n\t}\n}\n\nul {\n\twidth: calc(100% - 16px);\n\n\t& :deep(.list-item) {\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t& :deep(.line-two__additional_elements) {\n\t\tmargin-top: -22px;\n\t}\n}\n\n.floating-menu {\n\tposition: relative;\n\n\t&--badge {\n\t\tposition: absolute;\n\t\tbottom: -2px;\n\t\tright: -2px;\n\t}\n}\n\n.icon-status--success {\n\tcolor: var(--color-success);\n}\n\n.icon-status--failed {\n\tcolor: var(--color-error);\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Assistant.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!./Assistant.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Assistant.vue?vue&type=style&index=0&id=4c96cd80&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Assistant.vue?vue&type=style&index=0&id=4c96cd80&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Assistant.vue?vue&type=template&id=4c96cd80&scoped=true\"\nimport script from \"./Assistant.vue?vue&type=script&lang=js\"\nexport * from \"./Assistant.vue?vue&type=script&lang=js\"\nimport style0 from \"./Assistant.vue?vue&type=style&index=0&id=4c96cd80&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c96cd80\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcModal :show=\"show\" size=\"large\" @close=\"$emit('close')\">\n\t\t<div class=\"translate-dialog\">\n\t\t\t<h2>{{ t('text', 'Translate') }}</h2>\n\t\t\t<em>{{ t('text', 'To translate individual parts of the text, select it before using the translate function.') }}</em>\n\t\t\t<div class=\"wrapper\">\n\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<div class=\"language-selector\">\n\t\t\t\t\t\t<label for=\"fromLanguage\">{{ t('text', 'Translate from') }}</label>\n\t\t\t\t\t\t<NcSelect v-model=\"fromLanguage\"\n\t\t\t\t\t\t\tinput-id=\"fromLanguage\"\n\t\t\t\t\t\t\t:placeholder=\"t('text', 'Select language')\"\n\t\t\t\t\t\t\t:options=\"fromLanguages\"\n\t\t\t\t\t\t\t:disabled=\"disableFromLanguageSelect\"\n\t\t\t\t\t\t\t:append-to-body=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<NcTextArea ref=\"input\"\n\t\t\t\t\t\t:value.sync=\"input\"\n\t\t\t\t\t\t:label=\"t('text', 'Text to translate from')\"\n\t\t\t\t\t\tautofocus\n\t\t\t\t\t\tdata-cy=\"translate-input\"\n\t\t\t\t\t\tinput-class=\"translate-textarea\"\n\t\t\t\t\t\tresize=\"none\"\n\t\t\t\t\t\t@focus=\"onInputFocus\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<div class=\"language-selector\">\n\t\t\t\t\t\t<label for=\"toLanguage\">{{ t('text', 'to') }}</label>\n\t\t\t\t\t\t<NcSelect v-model=\"toLanguage\"\n\t\t\t\t\t\t\tinput-id=\"toLanguage\"\n\t\t\t\t\t\t\t:placeholder=\"t('text', 'Select language')\"\n\t\t\t\t\t\t\t:options=\"toLanguages\"\n\t\t\t\t\t\t\t:disabled=\"!fromLanguage\"\n\t\t\t\t\t\t\t:append-to-body=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<NcTextArea ref=\"result\"\n\t\t\t\t\t\t:value.sync=\"result\"\n\t\t\t\t\t\t:label=\"t('text', 'Translated text result')\"\n\t\t\t\t\t\treadonly\n\t\t\t\t\t\tinput-class=\"translate-textarea\"\n\t\t\t\t\t\tresize=\"none\"\n\t\t\t\t\t\t:class=\"{'icon-loading': loading }\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"translate-actions\">\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t<NcButton v-if=\"!result\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t@click=\"translate\">\n\t\t\t\t\t{{ t('text', 'Translate') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-if=\"result && content\" type=\"secondary\" @click=\"contentReplace\">\n\t\t\t\t\t{{ t('text', 'Replace') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-if=\"result\" type=\"primary\" @click=\"contentInsert\">\n\t\t\t\t\t{{ t('text', 'Insert') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { NcModal, NcButton, NcSelect, NcLoadingIcon, NcTextArea } from '@nextcloud/vue'\nimport { useIsMobileMixin } from '../Editor.provider.js'\n\nconst detectLanguageEntry = {\n\tid: null,\n\tlabel: t('text', 'Detect language'),\n}\n\nexport default {\n\tname: 'Translate',\n\tcomponents: {\n\t\tNcModal,\n\t\tNcButton,\n\t\tNcSelect,\n\t\tNcLoadingIcon,\n\t\tNcTextArea,\n\t},\n\tmixins: [\n\t\tuseIsMobileMixin,\n\t],\n\tprops: {\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinput: 'Hallo welt. Das ist ein Test.',\n\t\t\tresult: '',\n\t\t\tfromLanguage: loadState('text', 'translation_can_detect', false) === true ? detectLanguageEntry : null,\n\t\t\ttoLanguage: null,\n\t\t\tlanguages: loadState('text', 'translation_languages', []),\n\t\t\tcanDetect: loadState('text', 'translation_can_detect'),\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tdisableFromLanguageSelect: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tfromLanguages() {\n\t\t\tconst result = this.canDetect ? [detectLanguageEntry] : []\n\t\t\tconst set = new Set()\n\t\t\tfor (const item of this.languages) {\n\t\t\t\tif (!set.has(item.from)) {\n\t\t\t\t\tset.add(item.from)\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tid: item.from,\n\t\t\t\t\t\tlabel: !this.$isMobile ? item.fromLabel : t('text', 'Translate from {language}', { language: item.fromLabel }),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\t\ttoLanguages() {\n\t\t\tif (this.fromLanguage === null) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst languages = this.languages.filter(l => {\n\t\t\t\tif (this.fromLanguage.id === null) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn l.from === this.fromLanguage.id\n\t\t\t})\n\t\t\tconst result = []\n\t\t\tconst set = new Set()\n\t\t\tfor (const item of languages) {\n\t\t\t\tif (!set.has(item.to)) {\n\t\t\t\t\tset.add(item.to)\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tid: item.to,\n\t\t\t\t\t\tlabel: !this.$isMobile ? item.toLabel : t('text', 'Translate to {language}', { language: item.toLabel }),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\t},\n\twatch: {\n\t\tcontent() {\n\t\t\tthis.input = this.content\n\t\t},\n\t\tinput() {\n\t\t\tthis.result = null\n\t\t\tthis.error = null\n\t\t\tthis.autosize()\n\t\t},\n\t\ttoLanguage() {\n\t\t\tthis.result = null\n\t\t\tthis.error = null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.input = this.content\n\t},\n\tmethods: {\n\t\tasync translate() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst result = await axios.post(generateOcsUrl('translation/translate'), {\n\t\t\t\t\ttext: this.input,\n\t\t\t\t\tfromLanguage: this.fromLanguage?.id ?? null,\n\t\t\t\t\ttoLanguage: this.toLanguage.id,\n\t\t\t\t})\n\t\t\t\tthis.result = result.data.ocs.data.text\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to translate', e)\n\t\t\t\tthis.error = t('text', 'Translation failed')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync contentInsert() {\n\t\t\tthis.$emit('insert-content', this.result)\n\t\t},\n\t\tasync contentReplace() {\n\t\t\tthis.$emit('replace-content', this.result)\n\t\t},\n\t\tautosize() {\n\t\t\tthis.$refs.input.$refs.input.style.overflowY = 'hidden'\n\t\t\tthis.$refs.input.$refs.input.style.height = 'auto'\n\t\t\tconst height = this.$refs.input.$refs.input.scrollHeight + 10\n\t\t\tthis.$refs.input.$refs.input.style.height = height + 'px'\n\t\t\tthis.$refs.result.$refs.input.style.height = height + 'px'\n\t\t\tthis.$refs.input.$refs.input.style.overflowY = 'auto'\n\t\t},\n\t\tonInputFocus() {\n\t\t\tthis.disableFromLanguageSelect = false\n\t\t\tthis.autosize()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.translate-dialog {\n\tmargin: 24px;\n\n\t.wrapper {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n\t\tgrid-column-gap: 16px;\n\t\tmargin-top: calc(var(--default-grid-baseline) * 6);\n\n\t\t.language-selector {\n\t\t\tfont-weight: bold;\n\t\t\tflex-wrap: wrap;\n\t\t\tgap: var(--default-grid-baseline);\n\t\t}\n\n\t\t.col {\n\t\t\tgrid-row: 1/2;\n\t\t}\n\t}\n\n\t:deep(.translate-textarea) {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmargin-bottom: 12px;\n\t\theight: auto;\n\t\tresize: none;\n\t\tbox-sizing: border-box;\n\t\toverflow-y: auto;\n\t\tmin-height: 62px;\n\t\tmax-height: 58vh;\n\t}\n}\n\n@media (max-width: 670px) {\n\t.translate-dialog {\n\t\t.wrapper {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.language-selector {\n\t\t\t.select {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\t:deep(.translate-textarea) {\n\t\t\tmax-height: 20vh;\n\t\t}\n\t}\n\n\tlabel {\n\t\t&[for=\"fromLanguage\"],\n\t\t&[for=\"toLanguage\"] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.language-selector {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: 12px;\n\n\tlabel {\n\t\tflex-grow: 1;\n\t}\n}\n\n.translate-actions {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\n\tbutton {\n\t\tmargin-left: 12px;\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!./Translate.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!./Translate.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Translate.vue?vue&type=style&index=0&id=8498603c&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/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Translate.vue?vue&type=style&index=0&id=8498603c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Translate.vue?vue&type=template&id=8498603c&scoped=true\"\nimport script from \"./Translate.vue?vue&type=script&lang=js\"\nexport * from \"./Translate.vue?vue&type=script&lang=js\"\nimport style0 from \"./Translate.vue?vue&type=style&index=0&id=8498603c&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 \"8498603c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{attrs:{\"show\":_vm.show,\"size\":\"large\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"translate-dialog\"},[_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Translate')))]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('text', 'To translate individual parts of the text, select it before using the translate function.')))]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"fromLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'Translate from')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"fromLanguage\",\"placeholder\":_vm.t('text', 'Select language'),\"options\":_vm.fromLanguages,\"disabled\":_vm.disableFromLanguageSelect,\"append-to-body\":false},model:{value:(_vm.fromLanguage),callback:function ($$v) {_vm.fromLanguage=$$v},expression:\"fromLanguage\"}})],1),_vm._v(\" \"),_c('NcTextArea',{ref:\"input\",attrs:{\"value\":_vm.input,\"label\":_vm.t('text', 'Text to translate from'),\"autofocus\":\"\",\"data-cy\":\"translate-input\",\"input-class\":\"translate-textarea\",\"resize\":\"none\"},on:{\"update:value\":function($event){_vm.input=$event},\"focus\":_vm.onInputFocus}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"toLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'to')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"toLanguage\",\"placeholder\":_vm.t('text', 'Select language'),\"options\":_vm.toLanguages,\"disabled\":!_vm.fromLanguage,\"append-to-body\":false},model:{value:(_vm.toLanguage),callback:function ($$v) {_vm.toLanguage=$$v},expression:\"toLanguage\"}})],1),_vm._v(\" \"),_c('NcTextArea',{ref:\"result\",class:{'icon-loading': _vm.loading },attrs:{\"value\":_vm.result,\"label\":_vm.t('text', 'Translated text result'),\"readonly\":\"\",\"input-class\":\"translate-textarea\",\"resize\":\"none\"},on:{\"update:value\":function($event){_vm.result=$event}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"translate-actions\"},[(_vm.loading)?_c('NcLoadingIcon'):_vm._e(),_vm._v(\" \"),(!_vm.result)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.translate}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Translate'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.result && _vm.content)?_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":_vm.contentReplace}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Replace'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.result)?_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.contentInsert}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Insert'))+\"\\n\\t\\t\\t\")]):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"editor-container\"\n\t\tdata-text-el=\"editor-container\"\n\t\tclass=\"text-editor\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop=\"onKeyDown\">\n\t\t<DocumentStatus v-if=\"displayedStatus\"\n\t\t\t:idle=\"idle\"\n\t\t\t:lock=\"lock\"\n\t\t\t:sync-error=\"syncError\"\n\t\t\t:has-connection-issue=\"hasConnectionIssue\"\n\t\t\t@reconnect=\"reconnect\" />\n\n\t\t<SkeletonLoading v-if=\"showLoadingSkeleton\" />\n\t\t<Wrapper v-if=\"displayed\"\n\t\t\t:sync-error=\"syncError\"\n\t\t\t:has-connection-issue=\"hasConnectionIssue\"\n\t\t\t:content-loaded=\"contentLoaded\"\n\t\t\t:show-author-annotations=\"showAuthorAnnotations\"\n\t\t\t:show-outline-outside=\"showOutlineOutside\"\n\t\t\t@outline-toggled=\"outlineToggled\">\n\t\t\t<MainContainer v-if=\"hasEditor\">\n\t\t\t\t<!-- Readonly -->\n\t\t\t\t<div v-if=\"readOnly\" class=\"text-editor--readonly-bar\">\n\t\t\t\t\t<slot name=\"readonlyBar\">\n\t\t\t\t\t\t<ReadonlyBar>\n\t\t\t\t\t\t\t<Status :document=\"document\"\n\t\t\t\t\t\t\t\t:dirty=\"dirty\"\n\t\t\t\t\t\t\t\t:sessions=\"filteredSessions\"\n\t\t\t\t\t\t\t\t:sync-error=\"syncError\"\n\t\t\t\t\t\t\t\t:has-connection-issue=\"hasConnectionIssue\" />\n\t\t\t\t\t\t</ReadonlyBar>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t\t<!-- Rich Menu -->\n\t\t\t\t<template v-else>\n\t\t\t\t\t<MenuBar v-if=\"renderMenus\"\n\t\t\t\t\t\tref=\"menubar\"\n\t\t\t\t\t\t:is-hidden=\"hideMenu\"\n\t\t\t\t\t\t:loaded.sync=\"menubarLoaded\">\n\t\t\t\t\t\t<Status :document=\"document\"\n\t\t\t\t\t\t\t:dirty=\"dirty\"\n\t\t\t\t\t\t\t:sessions=\"filteredSessions\"\n\t\t\t\t\t\t\t:sync-error=\"syncError\"\n\t\t\t\t\t\t\t:has-connection-issue=\"hasConnectionIssue\" />\n\t\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t\t</MenuBar>\n\t\t\t\t\t<div v-else class=\"menubar-placeholder\" />\n\t\t\t\t</template>\n\t\t\t\t<ContentContainer v-show=\"contentLoaded\"\n\t\t\t\t\tref=\"contentWrapper\" />\n\t\t\t</MainContainer>\n\t\t\t<Reader v-if=\"hasSyncCollission\"\n\t\t\t\t:content=\"syncError.data.outsideChange\"\n\t\t\t\t:is-rich-editor=\"isRichEditor\" />\n\t\t</Wrapper>\n\t\t<Assistant v-if=\"$editor\" />\n\t\t<Translate :show=\"translateModal\"\n\t\t\t:content=\"translateContent\"\n\t\t\t@insert-content=\"translateInsert\"\n\t\t\t@replace-content=\"translateReplace\"\n\t\t\t@close=\"hideTranslate\" />\n\t</div>\n</template>\n\n<script>\nimport Vue, { set } from 'vue'\nimport { mapState } from 'vuex'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Collaboration } from '@tiptap/extension-collaboration'\nimport Autofocus from '../extensions/Autofocus.js'\nimport { Doc } from 'yjs'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport {\n\tEDITOR,\n\tFILE,\n\tATTACHMENT_RESOLVER,\n\tIS_MOBILE,\n\tIS_PUBLIC,\n\tIS_RICH_EDITOR,\n\tIS_RICH_WORKSPACE,\n\tSYNC_SERVICE,\n} from './Editor.provider.js'\nimport ReadonlyBar from './Menu/ReadonlyBar.vue'\n\nimport { logger } from '../helpers/logger.js'\nimport { getDocumentState, applyDocumentState, getUpdateMessage } from '../helpers/yjs.js'\nimport { SyncService, ERROR_TYPE, IDLE_TIMEOUT } from './../services/SyncService.js'\nimport createSyncServiceProvider from './../services/SyncServiceProvider.js'\nimport AttachmentResolver from './../services/AttachmentResolver.js'\nimport { extensionHighlight } from '../helpers/mappings.js'\nimport { createEditor, serializePlainText, loadSyntaxHighlight } from './../EditorFactory.js'\nimport { createMarkdownSerializer } from './../extensions/Markdown.js'\nimport markdownit from './../markdownit/index.js'\n\nimport { CollaborationCursor } from '../extensions/index.js'\nimport DocumentStatus from './Editor/DocumentStatus.vue'\nimport isMobile from './../mixins/isMobile.js'\nimport setContent from './../mixins/setContent.js'\nimport store from './../mixins/store.js'\nimport MenuBar from './Menu/MenuBar.vue'\nimport ContentContainer from './Editor/ContentContainer.vue'\nimport Status from './Editor/Status.vue'\nimport MainContainer from './Editor/MainContainer.vue'\nimport Wrapper from './Editor/Wrapper.vue'\nimport SkeletonLoading from './SkeletonLoading.vue'\nimport Assistant from './Assistant.vue'\nimport Translate from './Modal/Translate.vue'\n\nexport default {\n\tname: 'Editor',\n\tcomponents: {\n\t\tSkeletonLoading,\n\t\tDocumentStatus,\n\t\tWrapper,\n\t\tMainContainer,\n\t\tReadonlyBar,\n\t\tContentContainer,\n\t\tMenuBar,\n\t\tReader: () => import(/* webpackChunkName: \"editor\" */'./Reader.vue'),\n\t\tStatus,\n\t\tAssistant,\n\t\tTranslate,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t\tsetContent,\n\t\tstore,\n\t],\n\tprovide() {\n\t\tconst val = {}\n\n\t\t// providers aren't naturally reactive\n\t\t// and $editor will start as null\n\t\t// using getters we can always provide the\n\t\t// actual $editor, and other values without being reactive\n\t\tObject.defineProperties(val, {\n\t\t\t[EDITOR]: {\n\t\t\t\tget: () => this.$editor,\n\t\t\t},\n\t\t\t[SYNC_SERVICE]: {\n\t\t\t\tget: () => this.$syncService,\n\t\t\t},\n\t\t\t[FILE]: {\n\t\t\t\tget: () => this.fileData,\n\t\t\t},\n\t\t\t[ATTACHMENT_RESOLVER]: {\n\t\t\t\tget: () => this.$attachmentResolver,\n\t\t\t},\n\t\t\t[IS_PUBLIC]: {\n\t\t\t\tget: () => this.isPublic,\n\t\t\t},\n\t\t\t[IS_RICH_EDITOR]: {\n\t\t\t\tget: () => this.isRichEditor,\n\t\t\t},\n\t\t\t[IS_RICH_WORKSPACE]: {\n\t\t\t\tget: () => this.isRichWorkspace,\n\t\t\t},\n\t\t\t[IS_MOBILE]: {\n\t\t\t\tget: () => this.isMobile,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\tinject: ['isEmbedded'],\n\tprops: {\n\t\trichWorkspace: {\n\t\t\ttype: Boolean,\n\t\t\trequire: false,\n\t\t\tdefault: false,\n\t\t},\n\t\tinitialSession: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautofocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\thideMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisDirectEditing: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshowOutlineOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tIDLE_TIMEOUT,\n\n\t\t\tdocument: null,\n\t\t\tsessions: [],\n\t\t\tcurrentSession: null,\n\n\t\t\tfilteredSessions: {},\n\n\t\t\tidle: false,\n\t\t\tdirty: false,\n\t\t\tcontentLoaded: false,\n\t\t\tsyncError: null,\n\t\t\thasConnectionIssue: false,\n\t\t\thasEditor: false,\n\t\t\treadOnly: true,\n\t\t\tforceRecreate: false,\n\t\t\tmenubarLoaded: false,\n\t\t\tdraggedOver: false,\n\n\t\t\tcontentWrapper: null,\n\t\t\ttranslateModal: false,\n\t\t\ttranslateContent: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tshowAuthorAnnotations: (state) => state.text.showAuthorAnnotations,\n\t\t}),\n\t\tisRichWorkspace() {\n\t\t\treturn this.richWorkspace\n\t\t},\n\t\thasSyncCollission() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.SAVE_COLLISSION\n\t\t},\n\t\thasDocumentParameters() {\n\t\t\treturn this.fileId || this.shareToken || this.initialSession\n\t\t},\n\t\tisPublic() {\n\t\t\treturn this.isDirectEditing || (document.getElementById('isPublic') && document.getElementById('isPublic').value === '1')\n\t\t},\n\t\tisRichEditor() {\n\t\t\treturn loadState('text', 'rich_editing_enabled', true) && this.mime === 'text/markdown'\n\t\t},\n\t\tfileExtension() {\n\t\t\treturn this.relativePath ? this.relativePath.split('/').pop().split('.').pop() : 'txt'\n\t\t},\n\t\tcurrentDirectory() {\n\t\t\treturn this.relativePath\n\t\t\t\t? this.relativePath.split('/').slice(0, -1).join('/')\n\t\t\t\t: '/'\n\t\t},\n\t\tdisplayed() {\n\t\t\treturn this.currentSession && this.active\n\t\t},\n\t\tdisplayedStatus() {\n\t\t\treturn this.displayed || !!this.syncError\n\t\t},\n\t\tshowLoadingSkeleton() {\n\t\t\treturn (!this.contentLoaded || !this.displayed) && !this.syncError\n\t\t},\n\t\trenderRichEditorMenus() {\n\t\t\treturn this.contentLoaded\n\t\t\t\t&& this.isRichEditor\n\t\t\t\t&& !this.syncError\n\t\t\t\t&& !this.readOnly\n\t\t},\n\t\trenderMenus() {\n\t\t\treturn this.contentLoaded\n\t\t\t\t&& !this.syncError\n\t\t},\n\t\timagePath() {\n\t\t\treturn this.relativePath.split('/').slice(0, -1).join('/')\n\t\t},\n\t\tfileData() {\n\t\t\treturn {\n\t\t\t\tfileId: this.fileId,\n\t\t\t\trelativePath: this.relativePath,\n\t\t\t\tdocument: {\n\t\t\t\t\t...this.document,\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\tdisplayed() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.contentWrapper = this.$refs.contentWrapper\n\t\t\t})\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.active && (this.hasDocumentParameters)) {\n\t\t\tthis.initSession()\n\t\t}\n\t\tif (!this.richWorkspace) {\n\t\t\t/* If the editor is shown in the viewer we need to hide the content,\n\t\t\t if richt workspace is used we **must** not hide the content */\n\t\t\twindow.addEventListener('beforeprint', this.preparePrinting)\n\t\t\twindow.addEventListener('afterprint', this.preparePrinting)\n\t\t}\n\t\tsubscribe('text:image-node:add', this.onAddImageNode)\n\t\tsubscribe('text:image-node:delete', this.onDeleteImageNode)\n\t\tthis.emit('update:loaded', true)\n\t\tuseResizeObserver(this.$el, (entries) => {\n\t\t\tconst entry = entries[0]\n\t\t\tconst { width } = entry.contentRect\n\t\t\tconst maxWidth = width - 36\n\t\t\tthis.$el.style.setProperty('--widget-full-width', `${maxWidth}px`)\n\t\t})\n\t\tsubscribe('text:translate-modal:show', this.showTranslateModal)\n\t},\n\tcreated() {\n\t\tthis.$ydoc = new Doc()\n\t\tthis.$queue = []\n\t\t// The following can be useful for debugging ydoc updates\n\t\t// this.$ydoc.on('update', function(update, origin, doc, tr) {\n\t\t// console.debug('ydoc update', update, origin, doc, tr)\n\t\t// Y.logUpdate(update)\n\t\t// });\n\t\tthis.$providers = []\n\t\tthis.$editor = null\n\t\tthis.$syncService = null\n\t\tthis.$attachmentResolver = null\n\t},\n\tasync beforeDestroy() {\n\t\tif (!this.richWorkspace) {\n\t\t\twindow.removeEventListener('beforeprint', this.preparePrinting)\n\t\t\twindow.removeEventListener('afterprint', this.preparePrinting)\n\t\t}\n\t\tunsubscribe('text:image-node:add', this.onAddImageNode)\n\t\tunsubscribe('text:image-node:delete', this.onDeleteImageNode)\n\t\tif (this.dirty) {\n\t\t\tconst timeout = new Promise((resolve) => setTimeout(resolve, 2000))\n\t\t\tawait Promise.any([timeout, this.$syncService.save()])\n\t\t}\n\t\tthis.$providers.forEach(p => p.destroy())\n\t\tunsubscribe('text:translate-modal:show', this.showTranslateModal)\n\t},\n\tmethods: {\n\t\tinitSession() {\n\t\t\tif (!this.hasDocumentParameters) {\n\t\t\t\tthis.emit('error', 'No valid file provided')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst guestName = localStorage.getItem('nick') ? localStorage.getItem('nick') : ''\n\n\t\t\tthis.$syncService = new SyncService({\n\t\t\t\tguestName,\n\t\t\t\tshareToken: this.shareToken,\n\t\t\t\tfilePath: this.relativePath,\n\t\t\t\tbaseVersionEtag: this.$syncService?.baseVersionEtag,\n\t\t\t\tforceRecreate: this.forceRecreate,\n\t\t\t\tserialize: this.isRichEditor\n\t\t\t\t\t? (content) => createMarkdownSerializer(this.$editor.schema).serialize(content ?? this.$editor.state.doc)\n\t\t\t\t\t: (content) => serializePlainText(content ?? this.$editor.state.doc),\n\t\t\t\tgetDocumentState: () => getDocumentState(this.$ydoc),\n\t\t\t})\n\n\t\t\tthis.listenSyncServiceEvents()\n\n\t\t\tthis.$providers.forEach(p => p?.destroy())\n\t\t\tthis.$providers = []\n\t\t\tconst syncServiceProvider = createSyncServiceProvider({\n\t\t\t\tydoc: this.$ydoc,\n\t\t\t\tsyncService: this.$syncService,\n\t\t\t\tfileId: this.fileId,\n\t\t\t\tqueue: this.$queue,\n\t\t\t\tinitialSession: this.initialSession,\n\t\t\t})\n\t\t\tthis.$providers.push(syncServiceProvider)\n\t\t\tthis.forceRecreate = false\n\t\t},\n\n\t\tlistenEditorEvents() {\n\t\t\tthis.$editor.on('focus', this.onFocus)\n\t\t\tthis.$editor.on('blur', this.onBlur)\n\t\t},\n\t\tunlistenEditorEvents() {\n\t\t\tthis.$editor.off('focus', this.onFocus)\n\t\t\tthis.$editor.off('blur', this.onBlur)\n\t\t},\n\n\t\tlistenSyncServiceEvents() {\n\t\t\tthis.$syncService\n\t\t\t\t.on('opened', this.onOpened)\n\t\t\t\t.on('change', this.onChange)\n\t\t\t\t.on('loaded', this.onLoaded)\n\t\t\t\t.on('sync', this.onSync)\n\t\t\t\t.on('error', this.onError)\n\t\t\t\t.on('stateChange', this.onStateChange)\n\t\t\t\t.on('idle', this.onIdle)\n\t\t\t\t.on('save', this.onSave)\n\t\t},\n\n\t\tunlistenSyncServiceEvents() {\n\t\t\tthis.$syncService\n\t\t\t\t.off('opened', this.onOpened)\n\t\t\t\t.off('change', this.onChange)\n\t\t\t\t.off('loaded', this.onLoaded)\n\t\t\t\t.off('sync', this.onSync)\n\t\t\t\t.off('error', this.onError)\n\t\t\t\t.off('stateChange', this.onStateChange)\n\t\t\t\t.off('idle', this.onIdle)\n\t\t\t\t.off('save', this.onSave)\n\t\t},\n\n\t\treconnect() {\n\t\t\tthis.contentLoaded = false\n\t\t\tthis.hasConnectionIssue = false\n\t\t\tthis.close().then(this.initSession)\n\t\t\tthis.idle = false\n\t\t},\n\n\t\tupdateSessions(sessions) {\n\t\t\tthis.sessions = sessions.sort((a, b) => b.lastContact - a.lastContact)\n\n\t\t\t// Make sure we get our own session updated\n\t\t\t// This should ideally be part of a global store where we can have that updated on the actual name change for guests\n\t\t\tconst currentUpdatedSession = this.sessions.find(session => session.id === this.currentSession.id)\n\t\t\tset(this, 'currentSession', currentUpdatedSession)\n\n\t\t\tconst currentSessionIds = this.sessions.map((session) => session.userId)\n\t\t\tconst currentGuestIds = this.sessions.map((session) => session.guestId)\n\n\t\t\tconst removedSessions = Object.keys(this.filteredSessions)\n\t\t\t\t.filter(sessionId => !currentSessionIds.includes(sessionId) && !currentGuestIds.includes(sessionId))\n\n\t\t\tfor (const index in removedSessions) {\n\t\t\t\tVue.delete(this.filteredSessions, removedSessions[index])\n\t\t\t}\n\t\t\tfor (const index in this.sessions) {\n\t\t\t\tconst session = this.sessions[index]\n\t\t\t\tconst sessionKey = session.displayName ? session.userId : session.id\n\t\t\t\tif (this.filteredSessions[sessionKey]) {\n\t\t\t\t\t// update timestamp if relevant\n\t\t\t\t\tif (this.filteredSessions[sessionKey].lastContact < session.lastContact) {\n\t\t\t\t\t\tset(this.filteredSessions[sessionKey], 'lastContact', session.lastContact)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tset(this.filteredSessions, sessionKey, session)\n\t\t\t\t}\n\t\t\t\tif (session.id === this.currentSession.id) {\n\t\t\t\t\tset(this.filteredSessions[sessionKey], 'isCurrent', true)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonOpened({ document, session }) {\n\t\t\tthis.currentSession = session\n\t\t\tthis.document = document\n\t\t\tthis.readOnly = document.readOnly\n\t\t\tif (this.$editor) {\n\t\t\t\tthis.$editor.setEditable(!this.readOnly)\n\t\t\t}\n\t\t\tthis.lock = this.$syncService.lock\n\t\t\tlocalStorage.setItem('nick', this.currentSession.guestName)\n\t\t\tthis.$attachmentResolver = new AttachmentResolver({\n\t\t\t\tsession: this.currentSession,\n\t\t\t\tuser: getCurrentUser(),\n\t\t\t\tshareToken: this.shareToken,\n\t\t\t\tcurrentDirectory: this.currentDirectory,\n\t\t\t})\n\t\t},\n\n\t\tonLoaded({ documentSource, documentState }) {\n\t\t\tif (documentState) {\n\t\t\t\tapplyDocumentState(this.$ydoc, documentState, this.$providers[0])\n\t\t\t\t// distribute additional state that may exist locally\n\t\t\t\tconst updateMessage = getUpdateMessage(this.$ydoc, documentState)\n\t\t\t\tif (updateMessage) {\n\t\t\t\t\tlogger.debug('onLoaded: Pushing local changes to server')\n\t\t\t\t\tthis.$queue.push(updateMessage)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setInitialYjsState(documentSource, { isRichEditor: this.isRichEditor })\n\t\t\t}\n\n\t\t\tthis.hasConnectionIssue = false\n\t\t\tconst language = extensionHighlight[this.fileExtension] || this.fileExtension;\n\n\t\t\t(this.isRichEditor ? Promise.resolve() : loadSyntaxHighlight(language))\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst session = this.currentSession\n\t\t\t\t\tif (!this.$editor) {\n\t\t\t\t\t\tthis.$editor = createEditor({\n\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\trelativePath: this.relativePath,\n\t\t\t\t\t\t\tsession,\n\t\t\t\t\t\t\tonCreate: ({ editor }) => {\n\t\t\t\t\t\t\t\tthis.$syncService.startSync()\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonUpdate: ({ editor }) => {\n\t\t\t\t\t\t\t\t// this.debugContent(editor)\n\t\t\t\t\t\t\t\tconst proseMirrorMarkdown = this.$syncService.serialize(editor.state.doc)\n\t\t\t\t\t\t\t\tthis.emit('update:content', {\n\t\t\t\t\t\t\t\t\tmarkdown: proseMirrorMarkdown,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t\tAutofocus.configure({\n\t\t\t\t\t\t\t\t\tfileId: this.fileId,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tCollaboration.configure({\n\t\t\t\t\t\t\t\t\tdocument: this.$ydoc,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tCollaborationCursor.configure({\n\t\t\t\t\t\t\t\t\tprovider: this.$providers[0],\n\t\t\t\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\t\t\t\tname: session?.userId\n\t\t\t\t\t\t\t\t\t\t\t? session.displayName\n\t\t\t\t\t\t\t\t\t\t\t: (session?.guestName || t('text', 'Guest')),\n\t\t\t\t\t\t\t\t\t\tcolor: session?.color,\n\t\t\t\t\t\t\t\t\t\tclientId: this.$ydoc.clientID,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tenableRichEditing: this.isRichEditor,\n\t\t\t\t\t\t\tisEmbedded: this.isEmbedded,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.hasEditor = true\n\t\t\t\t\t\tthis.listenEditorEvents()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// $editor already existed. So this is a reconnect.\n\t\t\t\t\t\tthis.$syncService.startSync()\n\t\t\t\t\t}\n\n\t\t\t\t})\n\n\t\t},\n\n\t\tonChange({ document, sessions }) {\n\t\t\tthis.updateSessions.bind(this)(sessions)\n\t\t\tthis.document = document\n\n\t\t\tthis.syncError = null\n\t\t\tthis.$editor.setEditable(!this.readOnly)\n\t\t},\n\n\t\tonSync({ steps, document }) {\n\t\t\tthis.hasConnectionIssue = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.emit('sync-service:sync')\n\t\t\t})\n\t\t\tthis.document = document\n\t\t},\n\n\t\tonError({ type, data }) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$editor?.setEditable(false)\n\t\t\t\tthis.emit('sync-service:error')\n\t\t\t})\n\n\t\t\tif (type === ERROR_TYPE.LOAD_ERROR) {\n\t\t\t\tthis.syncError = {\n\t\t\t\t\ttype,\n\t\t\t\t\tdata,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (type === ERROR_TYPE.SAVE_COLLISSION && (!this.syncError || this.syncError.type !== ERROR_TYPE.SAVE_COLLISSION)) {\n\t\t\t\tthis.contentLoaded = true\n\t\t\t\tthis.syncError = {\n\t\t\t\t\ttype,\n\t\t\t\t\tdata,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === ERROR_TYPE.CONNECTION_FAILED && !this.hasConnectionIssue) {\n\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t\tOC.Notification.showTemporary(t('text', 'Connection failed.'))\n\t\t\t}\n\t\t\tif (type === ERROR_TYPE.SOURCE_NOT_FOUND) {\n\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t}\n\n\t\t\tthis.emit('ready')\n\t\t},\n\n\t\tonStateChange(state) {\n\t\t\tif (state.initialLoading && !this.contentLoaded) {\n\t\t\t\tthis.contentLoaded = true\n\t\t\t\tif (this.autofocus && !this.readOnly) {\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$editor.commands.autofocus()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tthis.emit('ready')\n\t\t\t}\n\t\t\tif (Object.prototype.hasOwnProperty.call(state, 'dirty')) {\n\t\t\t\t// ignore initial loading and other automated changes\n\t\t\t\tif (this.$editor\n\t\t\t\t\t&& (this.$editor.can().undo() || this.$editor.can().redo())\n\t\t\t\t) {\n\t\t\t\t\tthis.dirty = state.dirty\n\t\t\t\t\tif (this.dirty) {\n\t\t\t\t\t\tthis.$syncService.autosave()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonIdle() {\n\t\t\tthis.$syncService.close()\n\t\t\tthis.idle = true\n\t\t\tthis.readOnly = true\n\t\t\tthis.$editor.setEditable(!this.readOnly)\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.emit('sync-service:idle')\n\t\t\t})\n\t\t},\n\n\t\tonSave() {\n\t\t\temit('files:file:updated', { fileid: this.fileId })\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.emit('sync-service:save')\n\t\t\t})\n\t\t},\n\n\t\tonFocus() {\n\t\t\tthis.emit('focus')\n\t\t},\n\n\t\tonBlur() {\n\t\t\tthis.emit('blur')\n\t\t},\n\n\t\tonAddImageNode() {\n\t\t\tthis.emit('add-image-node')\n\t\t},\n\n\t\tonDeleteImageNode(imageUrl) {\n\t\t\tthis.emit('delete-image-node', imageUrl)\n\t\t},\n\n\t\tasync save() {\n\t\t\tawait this.$syncService.save()\n\t\t},\n\n\t\tasync close() {\n\t\t\tif (this.currentSession && this.$syncService) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$syncService.close()\n\t\t\t\t\tthis.unlistenSyncServiceEvents()\n\t\t\t\t\tthis.currentSession = null\n\t\t\t\t\tthis.$syncService = null\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Ignore issues closing the session since those might happen due to network issues\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.$editor) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.unlistenEditorEvents()\n\t\t\t\t\tthis.$editor.destroy()\n\t\t\t\t\tthis.$editor = null\n\t\t\t\t\tthis.hasEditor = false\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.warn('Failed to destroy editor', { error })\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Wrapper to emit events on our own and the parent component\n\t\t *\n\t\t * The parent might be either the root component of src/editor.js or Viewer.vue which collectives currently uses\n\t\t *\n\t\t * Ideally this would be done in a generic way in the src/editor.js API abstraction, but it seems\n\t\t * that there is no proper way to pass any received event along in vue, the only option I've found\n\t\t * in https://github.com/vuejs/vue/issues/230 feels too hacky to me, so we just emit twice for now\n\t\t *\n\t\t * @param {string} event The event name\n\t\t * @param {any} data The data to pass along\n\t\t */\n\t\temit(event, data) {\n\t\t\tthis.$emit(event, data)\n\t\t\tthis.$parent?.$emit(event, data)\n\t\t},\n\n\t\t/** @param {Event} event The passed event */\n\t\tpreparePrinting(event) {\n\t\t\tconst content = document.getElementById('content')\n\t\t\t// Hide Content behind modal, this also hides the sidebar if open\n\t\t\tif (content && event.type === 'beforeprint') {\n\t\t\t\tcontent.style.display = 'none'\n\t\t\t} else if (content) {\n\t\t\t\tcontent.style.display = ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Helper method to debug serialization of content between markdown and HTML\n\t\t *\n\t\t * @param {object} editor The Tiptap editor\n\t\t */\n\t\tdebugContent(editor) {\n\t\t\tconst proseMirrorMarkdown = this.$syncService.serialize(editor.state.doc)\n\t\t\tconst markdownItHtml = markdownit.render(proseMirrorMarkdown)\n\n\t\t\tlogger.debug('markdown, serialized from editor state by prosemirror-markdown')\n\t\t\tconsole.debug(proseMirrorMarkdown)\n\t\t\tlogger.debug('HTML, serialized from markdown by markdown-it')\n\t\t\tconsole.debug(markdownItHtml)\n\t\t\tlogger.debug('HTML, as rendered in the browser by Tiptap')\n\t\t\tconsole.debug(editor.getHTML())\n\t\t},\n\n\t\toutlineToggled(visible) {\n\t\t\tthis.emit('outline-toggled', visible)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tevent.preventDefault()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (event.key === 'Tab' && !event.shiftKey && !event.ctrlKey && !event.metaKey && this.$editor.isActive('codeBlock')) {\n\t\t\t\tthis.$editor.commands.insertContent('\\t')\n\t\t\t\tthis.$editor.commands.focus()\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif ((event.ctrlKey || event.metaKey) && event.key === 's') {\n\t\t\t\tthis.$syncService.save()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\n\t\tshowTranslateModal(e) {\n\t\t\tthis.translateContent = e.content\n\t\t\tthis.translateModal = true\n\t\t},\n\t\thideTranslate() {\n\t\t\tthis.translateModal = false\n\t\t},\n\t\ttranslateInsert(content) {\n\t\t\tthis.$editor.commands.command(({ tr, commands }) => {\n\t\t\t\treturn commands.insertContentAt(tr.selection.to, content)\n\t\t\t})\n\t\t\tthis.translateModal = false\n\t\t},\n\t\ttranslateReplace(content) {\n\t\t\tthis.$editor.commands.command(({ tr, commands }) => {\n\t\t\t\tconst selection = tr.selection\n\t\t\t\tconst range = {\n\t\t\t\t\tfrom: selection.from,\n\t\t\t\t\tto: selection.to,\n\t\t\t\t}\n\t\t\t\treturn commands.insertContentAt(range, content)\n\t\t\t})\n\t\t\tthis.translateModal = false\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.modal-container .text-editor {\n\ttop: 0;\n\theight: calc(100vh - var(--header-height));\n}\n\n.text-editor {\n\tdisplay: block;\n\twidth: 100%;\n\tmax-width: 100%;\n\theight: 100%;\n\tleft: 0;\n\tmargin: 0 auto;\n\tposition: relative;\n\tbackground-color: var(--color-main-background);\n}\n\n.text-editor .text-editor__wrapper.has-conflicts {\n\theight: calc(100% - 50px);\n}\n\n#body-public {\n\theight: auto;\n}\n\n#files-public-content {\n\t.text-editor {\n\t\ttop: 0;\n\t\twidth: 100%;\n\n\t\t.text-editor__main {\n\t\t\toverflow: auto;\n\t\t\tz-index: 20;\n\t\t}\n\t\t.has-conflicts .text-editor__main {\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n}\n\n.menubar-placeholder,\n.text-editor--readonly-bar {\n\tposition: fixed;\n\tposition: -webkit-sticky;\n\tposition: sticky;\n\ttop: 0;\n\topacity: 0;\n\tvisibility: hidden;\n\theight: 44px; // important for mobile so that the buttons are always inside the container\n\tpadding-top:3px;\n\tpadding-bottom: 3px;\n}\n\n.text-editor--readonly-bar,\n.menubar-placeholder--with-slot {\n\topacity: unset;\n\tvisibility: unset;\n\n\tz-index: 50;\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\twidth: 100%;\n\tbackground-color: var(--color-main-background);\n}\n</style>\n\n<style lang=\"scss\">\n\t@import './../css/variables';\n\t@import './../css/style';\n\t@import './../css/print';\n\n\t.text-editor__wrapper {\n\t\t@import './../css/prosemirror';\n\n\t\t// relative position for the alignment of the menububble\n\t\t.text-editor__main {\n\t\t\t&.draggedOver {\n\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t}\n\t\t\t.text-editor__content-wrapper {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t}\n\t}\n\n\t.text-editor__wrapper.has-conflicts > .editor {\n\t\twidth: 50%;\n\t}\n\n\t.text-editor__wrapper.has-conflicts > .content-wrapper {\n\t\twidth: 50%;\n\t\t#read-only-editor {\n\t\t\tmargin: 0px auto;\n\t\t\tpadding-top: 50px;\n\t\t\toverflow: initial;\n\t\t}\n\t}\n\n\t@keyframes spin {\n\t\t0% { transform: rotate(0deg); }\n\t\t100% { transform: rotate(360deg); }\n\t}\n\n\t/* Give a remote user a caret */\n\t.collaboration-cursor__caret {\n\t\tposition: relative;\n\t\tmargin-left: -1px;\n\t\tmargin-right: -1px;\n\t\tborder-left: 1px solid #0D0D0D;\n\t\tborder-right: 1px solid #0D0D0D;\n\t\tword-break: normal;\n\t\tpointer-events: none;\n\t}\n\n\t/* Render the username above the caret */\n\t.collaboration-cursor__label {\n\t\tposition: absolute;\n\t\ttop: -1.4em;\n\t\tleft: -1px;\n\t\tfont-size: 12px;\n\t\tfont-style: normal;\n\t\tfont-weight: 600;\n\t\tline-height: normal;\n\t\tuser-select: none;\n\t\tcolor: #0D0D0D;\n\t\tpadding: 0.1rem 0.3rem;\n\t\tborder-radius: 3px 3px 3px 0;\n\t\twhite-space: nowrap;\n\t\topacity: 0;\n\n\t\t&.collaboration-cursor__label__active {\n\t\t\topacity: 1;\n\t\t}\n\n\t\t&:not(.collaboration-cursor__label__active) {\n\t\t\ttransition: opacity 0.2s 5s;\n\t\t}\n\t}\n</style>\n","/*\n * @copyright Copyright (c) 2023 Max <max@nextcloud.com>\n *\n * @author Max <max@nextcloud.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\nimport { encodeArrayBuffer, decodeArrayBuffer } from '../helpers/base64.js'\nimport * as Y from 'yjs'\nimport * as decoding from 'lib0/decoding.js'\nimport * as encoding from 'lib0/encoding.js'\nimport * as syncProtocol from 'y-protocols/sync'\nimport { messageSync } from 'y-websocket'\n\n/**\n * Get Document state encode as base64.\n *\n * Used to store yjs state on the server.\n * @param {Y.Doc} ydoc - encode state of this doc\n * @return {string}\n */\nexport function getDocumentState(ydoc) {\n\tconst update = Y.encodeStateAsUpdate(ydoc)\n\treturn encodeArrayBuffer(update)\n}\n\n/**\n *\n * @param {Y.Doc} ydoc - apply state to this doc\n * @param {string} documentState - base64 encoded doc state\n * @param {object} origin - initiator object e.g. WebsocketProvider\n */\nexport function applyDocumentState(ydoc, documentState, origin) {\n\tconst update = decodeArrayBuffer(documentState)\n\tY.applyUpdate(ydoc, update, origin)\n}\n\n/**\n * Update message for everything in ydoc that is not in encodedBaseUpdate\n *\n * @param {Y.Doc} ydoc - encode state of this doc\n * @param {string} encodedBaseUpdate - base64 encoded doc update to build upon\n * @return {Uint8Array|undefined}\n */\nexport function getUpdateMessage(ydoc, encodedBaseUpdate) {\n\tconst baseUpdate = decodeArrayBuffer(encodedBaseUpdate)\n\tconst baseStateVector = Y.encodeStateVectorFromUpdate(baseUpdate)\n\tconst docStateVector = Y.encodeStateVector(ydoc)\n\tif (sameState(baseStateVector, docStateVector)) {\n\t\t// no additional state in the ydoc - early return\n\t\treturn\n\t}\n\tconst encoder = encoding.createEncoder()\n\tencoding.writeVarUint(encoder, messageSync)\n\tconst update = Y.encodeStateAsUpdate(ydoc, baseStateVector)\n\tsyncProtocol.writeUpdate(encoder, update)\n\treturn encoding.toUint8Array(encoder)\n}\n\n/**\n * Apply an updated message to the ydoc.\n *\n * Only used in tests right now.\n * @param {Y.Doc} ydoc - encode state of this doc\n * @param {Uint8Array} updateMessage - y-websocket sync message with update\n * @param {object} origin - initiator object e.g. WebsocketProvider\n */\nexport function applyUpdateMessage(ydoc, updateMessage, origin = 'origin') {\n\tconst decoder = decoding.createDecoder(updateMessage)\n\tconst messageType = decoding.readVarUint(decoder)\n\tif (messageType !== messageSync) {\n\t\tconsole.error('y.js update message with invalid type', messageType)\n\t\treturn\n\t}\n\t// There are no responses to updates - so this is a dummy.\n\tconst encoder = encoding.createEncoder()\n\tsyncProtocol.readSyncMessage(\n\t\tdecoder,\n\t\tencoder,\n\t\tydoc,\n\t\torigin,\n\t)\n}\n\n/**\n * Log y.js messages with their type and initiator call stack\n *\n * @param {string} step - Y.js message\n */\nexport function logStep(step) {\n\t// Create error for stack trace\n\tconst err = new Error()\n\n\tconst decoder = decoding.createDecoder(step)\n\n\tconst messageType = decoding.readVarUint(decoder)\n\tconst subType = decoding.readVarUint(decoder)\n\n\tconst encodedStep = encodeArrayBuffer(step)\n\tswitch (messageType) {\n\tcase 0:\n\t\tconsole.debug('y.js message sync', subType, encodedStep, err.stack)\n\t\tbreak\n\tcase 3:\n\t\tconsole.debug('y.js message awareness_query', encodedStep, err.stack)\n\t\tbreak\n\tcase 1:\n\t\tconsole.debug('y.js message awareness', encodedStep, err.stack)\n\t\tbreak\n\t}\n}\n\n/**\n * Helper function to check if two state vectors have the same state\n * @param {Array} arr - state vector to compare\n * @param {Array} other - state vector to compare against\n */\nfunction sameState(arr, other) {\n\treturn arr.length === other.length\n\t\t&& arr.every((value, index) => other[index] === value)\n}\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.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!./Editor.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&id=5c3f88f6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&id=5c3f88f6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\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!./Editor.vue?vue&type=style&index=1&id=5c3f88f6&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=1&id=5c3f88f6&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=5c3f88f6&scoped=true\"\nimport script from \"./Editor.vue?vue&type=script&lang=js\"\nexport * from \"./Editor.vue?vue&type=script&lang=js\"\nimport style0 from \"./Editor.vue?vue&type=style&index=0&id=5c3f88f6&prod&scoped=true&lang=scss\"\nimport style1 from \"./Editor.vue?vue&type=style&index=1&id=5c3f88f6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c3f88f6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-wrapper text-editor__content-wrapper\",class:{\n\t\t'--show-outline': _vm.showOutline\n\t},attrs:{\"data-text-el\":\"editor-content-wrapper\"}},[(_vm.showOutline)?_c('div',{staticClass:\"text-editor__content-wrapper__left\"},[_c('EditorOutline')],1):_vm._e(),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),_c('EditorContent',{staticClass:\"editor__content text-editor__content\",attrs:{\"role\":\"document\",\"editor\":_vm.$editor}}),_vm._v(\" \"),_c('div',{staticClass:\"text-editor__content-wrapper__right\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n -\n - @author Max <max@nextcloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div data-text-el=\"editor-content-wrapper\"\n\t\tclass=\"content-wrapper text-editor__content-wrapper\"\n\t\t:class=\"{\n\t\t\t'--show-outline': showOutline\n\t\t}\">\n\t\t<div v-if=\"showOutline\" class=\"text-editor__content-wrapper__left\">\n\t\t\t<EditorOutline />\n\t\t</div>\n\t\t<slot />\n\t\t<EditorContent role=\"document\"\n\t\t\tclass=\"editor__content text-editor__content\"\n\t\t\t:editor=\"$editor\" />\n\t\t<div class=\"text-editor__content-wrapper__right\" />\n\t</div>\n</template>\n\n<script>\nimport { EditorContent } from '@tiptap/vue-2'\nimport { useEditorMixin } from '../Editor.provider.js'\nimport { useOutlineStateMixin } from './Wrapper.provider.js'\nimport EditorOutline from './EditorOutline.vue'\n\nexport default {\n\tname: 'ContentContainer',\n\tcomponents: {\n\t\tEditorContent,\n\t\tEditorOutline,\n\t},\n\tmixins: [useEditorMixin, useOutlineStateMixin],\n\tcomputed: {\n\t\tshowOutline() {\n\t\t\treturn this.$outlineState.visible\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.editor__content {\n\t\tmax-width: min(var(--text-editor-max-width), calc(100vw - 16px));\n\t\tmargin: auto;\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\n\t.ie {\n\t\t.editor__content:deep(.ProseMirror) {\n\t\t\tpadding-top: 50px;\n\t\t}\n\t}\n\n\t.text-editor__content-wrapper {\n\t\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t\t&.--show-outline {\n\t\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t\t}\n\t\t.text-editor__content-wrapper__left,\n\t\t.text-editor__content-wrapper__right {\n\t\t\theight: 100%;\n\t\t\tposition: relative;\n\t\t}\n\t}\n\n\t.is-rich-workspace {\n\t\t.text-editor__content-wrapper {\n\t\t\t--side-width: var(--text-editor-max-width);\n\t\t\tgrid-template-columns: var(--side-width) auto;\n\t\t\t.text-editor__content-wrapper__left,\n\t\t\t.text-editor__content-wrapper__right {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.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!./ContentContainer.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=style&index=0&id=7394eeaa&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=style&index=0&id=7394eeaa&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContentContainer.vue?vue&type=template&id=7394eeaa&scoped=true\"\nimport script from \"./ContentContainer.vue?vue&type=script&lang=js\"\nexport * from \"./ContentContainer.vue?vue&type=script&lang=js\"\nimport style0 from \"./ContentContainer.vue?vue&type=style&index=0&id=7394eeaa&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7394eeaa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor\"},[(_vm.$editorUpload)?_c('MediaHandler',{staticClass:\"text-editor__main\"},[_vm._t(\"default\")],2):_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n -\n - @author Vinicius Reis <vinicius@nextcloud.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"editor editor-media-handler\"\n\t\tdata-text-el=\"editor-media-handler\"\n\t\t:class=\"{ draggedOver }\"\n\t\t@image-paste=\"onPaste\"\n\t\t@dragover.prevent.stop=\"setDraggedOver(true)\"\n\t\t@dragleave.prevent.stop=\"setDraggedOver(false)\"\n\t\t@file-drop=\"onEditorDrop\">\n\t\t<input v-show=\"false\"\n\t\t\tref=\"attachmentFileInput\"\n\t\t\tdata-text-el=\"attachment-file-input\"\n\t\t\ttype=\"file\"\n\t\t\taccept=\"*/*\"\n\t\t\tmultiple\n\t\t\t@change=\"onAttachmentUploadFilePicked\">\n\t\t<slot />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { logger } from '../../helpers/logger.js'\n\nimport {\n\tuseEditorMixin,\n\tuseFileMixin,\n\tuseSyncServiceMixin,\n} from '../Editor.provider.js'\n\nimport {\n\tACTION_ATTACHMENT_PROMPT,\n\tACTION_CHOOSE_LOCAL_ATTACHMENT,\n\tSTATE_UPLOADING,\n} from './MediaHandler.provider.js'\n\nconst getDir = (val) => val.split('/').slice(0, -1).join('/')\n\nexport default {\n\tname: 'MediaHandler',\n\tmixins: [useEditorMixin, useFileMixin, useSyncServiceMixin],\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[ACTION_ATTACHMENT_PROMPT]: {\n\t\t\t\tget: () => this.showAttachmentPrompt,\n\t\t\t},\n\t\t\t[ACTION_CHOOSE_LOCAL_ATTACHMENT]: {\n\t\t\t\tget: () => this.chooseLocalFile,\n\t\t\t},\n\t\t\t[STATE_UPLOADING]: {\n\t\t\t\tget: () => this.state,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlastFilePath: null,\n\t\t\tdraggedOver: false,\n\t\t\t// make it reactive to be used inject/provide\n\t\t\tstate: {\n\t\t\t\tisUploadingAttachments: false,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\tinitialFilePath() {\n\t\t\treturn this.lastFilePath ?? getDir(this.$file?.relativePath ?? '/')\n\t\t},\n\t},\n\tmethods: {\n\t\tsetDraggedOver(val) {\n\t\t\tthis.draggedOver = val\n\t\t},\n\t\tonPaste(e) {\n\t\t\tthis.uploadAttachmentFiles(e.detail.files)\n\t\t},\n\t\tonEditorDrop(e) {\n\t\t\tthis.uploadAttachmentFiles(e.detail.files, e.detail.position)\n\t\t\tthis.draggedOver = false\n\t\t},\n\t\tonAttachmentUploadFilePicked(event) {\n\t\t\tthis.uploadAttachmentFiles(event.target.files)\n\t\t\t// Clear input to ensure that the change event will be emitted if\n\t\t\t// the same file is picked again.\n\t\t\tevent.target.value = ''\n\t\t},\n\t\tchooseLocalFile() {\n\t\t\tthis.$refs.attachmentFileInput.click()\n\t\t},\n\t\tasync uploadAttachmentFiles(files, position = null) {\n\t\t\tif (!files) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.state.isUploadingAttachments = true\n\n\t\t\tconst uploadPromises = [...files].map((file) => {\n\t\t\t\treturn this.uploadAttachmentFile(file, position)\n\t\t\t})\n\n\t\t\treturn Promise.all(uploadPromises)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tlogger.error('Uploading multiple images failed', { error })\n\t\t\t\t\tshowError(error?.response?.data?.error || error.message)\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.state.isUploadingAttachments = false\n\t\t\t\t})\n\t\t},\n\t\tasync uploadAttachmentFile(file, position = null) {\n\t\t\tthis.state.isUploadingAttachments = true\n\n\t\t\treturn this.$syncService.uploadAttachment(file)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.insertAttachment(\n\t\t\t\t\t\tresponse.data?.name, response.data?.id, file.type,\n\t\t\t\t\t\tposition, response.data?.dirname,\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error('Uploading image failed', { error })\n\t\t\t\t\tshowError(error?.response?.data?.error)\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.state.isUploadingAttachments = false\n\t\t\t\t})\n\t\t},\n\t\tshowAttachmentPrompt() {\n\t\t\tconst currentUser = getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tOC.dialogs.filepicker(t('text', 'Insert an attachment'), (filePath) => {\n\t\t\t\tthis.insertFromPath(filePath)\n\t\t\t}, false, [], true, undefined, this.initialFilePath)\n\t\t},\n\t\tinsertFromPath(filePath) {\n\t\t\tthis.lastFilePath = getDir(filePath)\n\n\t\t\tthis.state.isUploadingAttachments = true\n\n\t\t\treturn this.$syncService.insertAttachmentFile(filePath).then((response) => {\n\t\t\t\tthis.insertAttachment(\n\t\t\t\t\tresponse.data?.name, response.data?.id, response.data?.mimetype,\n\t\t\t\t\tnull, response.data?.dirname,\n\t\t\t\t)\n\t\t\t}).catch((error) => {\n\t\t\t\tlogger.error('Failed to insert image path', { error })\n\t\t\t\tshowError(error?.response?.data?.error || error.message)\n\t\t\t}).then(() => {\n\t\t\t\tthis.state.isUploadingAttachments = false\n\t\t\t})\n\t\t},\n\t\tinsertAttachment(name, fileId, mimeType, position = null, dirname = '') {\n\t\t\t// inspired by the fixedEncodeURIComponent function suggested in\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n\t\t\tconst src = dirname + '/'\n\t\t\t\t+ encodeURIComponent(name).replace(/[!'()*]/g, (c) => {\n\t\t\t\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase()\n\t\t\t\t})\n\t\t\t// simply get rid of brackets to make sure link text is valid\n\t\t\t// as it does not need to be unique and matching the real file name\n\t\t\tconst alt = name.replaceAll(/[[\\]]/g, '')\n\n\t\t\tconst chain = position\n\t\t\t\t? this.$editor.chain().focus(position)\n\t\t\t\t: this.$editor.chain()\n\n\t\t\tchain.setImage({ src, alt }).run()\n\n\t\t\tconst selection = this.$editor.view.state.selection\n\t\t\tif (!selection.empty) {\n\t\t\t\t// If inserted image is first element, it is selected and would get overwritten by\n\t\t\t\t// subsequent editor inserts (see tiptap#3355). So unselect the image by placing\n\t\t\t\t// the cursor at the end of the selection.\n\t\t\t\tthis.$editor.commands.focus(selection.to)\n\t\t\t}\n\n\t\t\t// Scroll image into view\n\t\t\tthis.$editor.commands.scrollIntoView()\n\n\t\t\temit('text:image-node:add', null)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaHandler.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!./MediaHandler.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MediaHandler.vue?vue&type=template&id=1901ede0\"\nimport script from \"./MediaHandler.vue?vue&type=script&lang=js\"\nexport * from \"./MediaHandler.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.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!./MainContainer.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n -\n - @author Max <max@nextcloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"editor\">\n\t\t<MediaHandler v-if=\"$editorUpload\" class=\"text-editor__main\">\n\t\t\t<slot />\n\t\t</MediaHandler>\n\t\t<slot v-else />\n\t</div>\n</template>\n\n<script>\nimport MediaHandler from './MediaHandler.vue'\nimport { useEditorUpload } from '../Editor.provider.js'\n\nexport default {\n\tname: 'MainContainer',\n\tcomponents: {\n\t\tMediaHandler,\n\t},\n\tmixins: [\n\t\tuseEditorUpload,\n\t],\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.text-editor__main, .editor {\n\t\tbackground: var(--color-main-background);\n\t\tcolor: var(--color-main-text);\n\t\tbackground-clip: padding-box;\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n</style>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor editor-media-handler\",class:{ draggedOver: _vm.draggedOver },attrs:{\"data-text-el\":\"editor-media-handler\"},on:{\"image-paste\":_vm.onPaste,\"dragover\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.setDraggedOver(true)},\"dragleave\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.setDraggedOver(false)},\"file-drop\":_vm.onEditorDrop}},[_c('input',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],ref:\"attachmentFileInput\",attrs:{\"data-text-el\":\"attachment-file-input\",\"type\":\"file\",\"accept\":\"*/*\",\"multiple\":\"\"},on:{\"change\":_vm.onAttachmentUploadFilePicked}}),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./MainContainer.vue?vue&type=template&id=8ffa875e&scoped=true\"\nimport script from \"./MainContainer.vue?vue&type=script&lang=js\"\nexport * from \"./MainContainer.vue?vue&type=script&lang=js\"\nimport style0 from \"./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8ffa875e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Wrapper',{attrs:{\"content-loaded\":true,\"show-outline-outside\":_vm.showOutlineOutside},on:{\"outline-toggled\":_vm.outlineToggled}},[_c('MainContainer',[(!_vm.readOnly)?_c('MenuBar',{attrs:{\"autohide\":false}}):_vm._t(\"readonlyBar\",function(){return [_c('ReadonlyBar')]}),_vm._v(\" \"),_c('ContentContainer')],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<Wrapper :content-loaded=\"true\"\n\t\t:show-outline-outside=\"showOutlineOutside\"\n\t\t@outline-toggled=\"outlineToggled\">\n\t\t<MainContainer>\n\t\t\t<MenuBar v-if=\"!readOnly\" :autohide=\"false\" />\n\t\t\t<slot v-else name=\"readonlyBar\">\n\t\t\t\t<ReadonlyBar />\n\t\t\t</slot>\n\t\t\t<ContentContainer />\n\t\t</MainContainer>\n\t</Wrapper>\n</template>\n\n<script>\nimport Wrapper from './Wrapper.vue'\nimport MainContainer from './MainContainer.vue'\nimport MenuBar from '../Menu/MenuBar.vue'\nimport { Editor } from '@tiptap/core'\n/* eslint-disable import/no-named-as-default */\nimport History from '@tiptap/extension-history'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { ATTACHMENT_RESOLVER, EDITOR, IS_RICH_EDITOR } from '../Editor.provider.js'\nimport { createMarkdownSerializer } from '../../extensions/Markdown.js'\nimport AttachmentResolver from '../../services/AttachmentResolver.js'\nimport markdownit from '../../markdownit/index.js'\nimport { RichText } from '../../extensions/index.js'\nimport ReadonlyBar from '../Menu/ReadonlyBar.vue'\nimport ContentContainer from './ContentContainer.vue'\n\nexport default {\n\tname: 'MarkdownContentEditor',\n\tcomponents: { ContentContainer, ReadonlyBar, MenuBar, MainContainer, Wrapper },\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[EDITOR]: {\n\t\t\t\tget: () => this.$editor,\n\t\t\t},\n\t\t\t[ATTACHMENT_RESOLVER]: {\n\t\t\t\tget: () => this.$attachmentResolver ?? null,\n\t\t\t},\n\t\t\t[IS_RICH_EDITOR]: {\n\t\t\t\tget: () => true,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\treadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tshowOutlineOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: ['update:content'],\n\n\tcomputed: {\n\t\thtmlContent() {\n\t\t\treturn this.renderHtml(this.content)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcontent() {\n\t\t\tthis.updateContent()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.$editor = this.createEditor()\n\t\tthis.$editor.setEditable(!this.readOnly)\n\t\tif (this.fileId) {\n\t\t\tthis.$attachmentResolver = new AttachmentResolver({\n\t\t\t\tcurrentDirectory: this.relativePath?.match(/.*\\//),\n\t\t\t\tuser: getCurrentUser(),\n\t\t\t\tshareToken: this.shareToken,\n\t\t\t\tfileId: this.fileId,\n\t\t\t})\n\t\t}\n\t},\n\n\tupdated() {\n\t\tthis.$editor.setEditable(!this.readOnly)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.$editor.destroy()\n\t},\n\n\tmethods: {\n\t\trenderHtml(content) {\n\t\t\treturn markdownit.render(content)\n\t\t},\n\t\textensions() {\n\t\t\treturn [\n\t\t\t\tRichText.configure({\n\t\t\t\t\tcomponent: this,\n\t\t\t\t\textensions: [\n\t\t\t\t\t\tHistory,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t]\n\t\t},\n\t\tcreateEditor() {\n\t\t\treturn new Editor({\n\t\t\t\tcontent: this.htmlContent,\n\t\t\t\textensions: this.extensions(),\n\t\t\t\tonUpdate: ({ editor }) => {\n\t\t\t\t\tconst markdown = (createMarkdownSerializer(this.$editor.schema)).serialize(editor.state.doc)\n\t\t\t\t\tthis.emit('update:content', {\n\t\t\t\t\t\tjson: editor.state.doc,\n\t\t\t\t\t\tmarkdown,\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tonCreate: ({ editor }) => {\n\t\t\t\t\tthis.$emit('ready')\n\t\t\t\t\tthis.$parent.$emit('ready')\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\n\t\tupdateContent() {\n\t\t\tthis.$editor.commands.setContent(this.htmlContent, true)\n\t\t},\n\n\t\toutlineToggled(visible) {\n\t\t\tthis.emit('outline-toggled', visible)\n\t\t},\n\n\t\t/**\n\t\t * Wrapper to emit events on our own and the parent component\n\t\t *\n\t\t * The parent might be either the root component of src/editor.js or Viewer.vue which collectives currently uses\n\t\t *\n\t\t * Ideally this would be done in a generic way in the src/editor.js API abstraction, but it seems\n\t\t * that there is no proper way to pass any received event along in vue, the only option I've found\n\t\t * in https://github.com/vuejs/vue/issues/230 feels too hacky to me, so we just emit twice for now\n\t\t *\n\t\t * @param {string} event The event name\n\t\t * @param {any} data The data to pass along\n\t\t */\n\t\temit(event, data) {\n\t\t\tthis.$emit(event, data)\n\t\t\tthis.$parent?.$emit(event, data)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownContentEditor.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!./MarkdownContentEditor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MarkdownContentEditor.vue?vue&type=template&id=64ff351a&scoped=true\"\nimport script from \"./MarkdownContentEditor.vue?vue&type=script&lang=js\"\nexport * from \"./MarkdownContentEditor.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64ff351a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor__wrapper\",class:{\n\t\t'has-conflicts': _vm.hasSyncCollission,\n\t\t'is-rich-workspace': _vm.$isRichWorkspace,\n\t\t'is-rich-editor': _vm.$isRichEditor,\n\t\t'show-color-annotations': _vm.showAuthorAnnotations\n\t}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Max <max@nextcloud.com>\n -\n - @author Max <max@nextcloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"text-editor__wrapper\"\n\t\t:class=\"{\n\t\t\t'has-conflicts': hasSyncCollission,\n\t\t\t'is-rich-workspace': $isRichWorkspace,\n\t\t\t'is-rich-editor': $isRichEditor,\n\t\t\t'show-color-annotations': showAuthorAnnotations\n\t\t}\">\n\t\t<slot />\n\t</div>\n</template>\n\n<script>\nimport { ERROR_TYPE } from './../../services/SyncService.js'\nimport { useIsRichEditorMixin, useIsRichWorkspaceMixin } from './../Editor.provider.js'\nimport { OUTLINE_STATE, OUTLINE_ACTIONS } from './Wrapper.provider.js'\nimport useStore from '../../mixins/store.js'\nimport { mapState } from 'vuex'\n\nexport default {\n\tname: 'Wrapper',\n\tmixins: [useStore, useIsRichEditorMixin, useIsRichWorkspaceMixin],\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[OUTLINE_STATE]: {\n\t\t\t\tget: () => this.outline,\n\t\t\t},\n\t\t\t[OUTLINE_ACTIONS]: {\n\t\t\t\tget: () => ({\n\t\t\t\t\ttoggle: this.outlineToggle,\n\t\t\t\t}),\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\n\tprops: {\n\t\tsyncError: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\thasConnectionIssue: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcontentLoaded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshowAuthorAnnotations: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshowOutlineOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: () => ({\n\t\toutline: {\n\t\t\tvisible: false,\n\t\t\tenable: false,\n\t\t},\n\t}),\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\tviewWidth: (state) => state.text.viewWidth,\n\t\t}),\n\n\t\thasSyncCollission() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.SAVE_COLLISSION\n\t\t},\n\t\tshowOutline() {\n\t\t\treturn this.isAbleToShowOutline\n\t\t\t\t? this.outline.visible\n\t\t\t\t: false\n\t\t},\n\t\tisAbleToShowOutline() {\n\t\t\tif (this.$isRichWorkspace) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn this.viewWidth > 1265\n\t\t},\n\t},\n\n\twatch: {\n\t\t'showOutlineOutside'() {\n\t\t\tthis.outline.visible = this.showOutlineOutside\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.outline.enable = this.isAbleToShowOutline\n\n\t\tthis.$watch(\n\t\t\t() => this.isAbleToShowOutline,\n\t\t\t(enable) => {\n\t\t\t\t// make outline state reactive through the provider\n\t\t\t\tObject.assign(this.outline, { enable })\n\t\t\t},\n\t\t)\n\t},\n\tmethods: {\n\t\toutlineToggle() {\n\t\t\tthis.outline.visible = !this.outline.visible\n\t\t\tthis.$emit('outline-toggled', this.outline.visible)\n\t\t},\n\t},\n\n}\n</script>\n\n<style scoped lang=\"scss\">\n\n\t.text-editor__wrapper {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t&.show-color-annotations:deep(.author-annotation) {\n\t\t\tpadding-top: 2px;\n\t\t\tpadding-bottom: 2px;\n\t\t}\n\n\t\t&:not(.show-color-annotations):deep(.author-annotation),\n\t\t&:not(.show-color-annotations):deep(.image) {\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\n\t\t.ProseMirror {\n\t\t\tmargin-top: 0 !important;\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!./Wrapper.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!./Wrapper.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Wrapper.vue?vue&type=template&id=55273a24&scoped=true\"\nimport script from \"./Wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./Wrapper.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55273a24\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',_vm._b({staticClass:\"entry-list-action entry-action\",attrs:{\"title\":_vm.tooltip,\"container\":_vm.menuIDSelector,\"aria-label\":_vm.labelWithSelected,\"type\":_vm.state.active ? 'primary': 'tertiary',\"force-menu\":true,\"data-text-action-entry\":_vm.actionEntry.key,\"data-text-action-active\":_vm.activeKey,\"disabled\":!_vm.isEnabled},on:{\"update:open\":_vm.onOpenChange},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{key:_vm.iconKey,tag:\"component\"})]},proxy:true}])},'NcActions',_vm.state,false),[_vm._v(\" \"),_vm._l((_vm.children),function(child){return [(child.isSeparator)?_c('NcActionSeparator',{key:`child-${child.key}`}):_c('ActionListItem',_vm._g({key:`child-${child.key}`,attrs:{\"active\":_vm.currentChild?.key === child.key,\"is-item\":\"\",\"action-entry\":child},on:{\"trigged\":_vm.onTrigger}},_vm.$listeners))]}),_vm._v(\" \"),_vm._t(\"lastAction\",null,null,{ visible: _vm.visible })],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n -\n - @author Vinicius Reis <vinicius@nextcloud.com>\n - @author Grigorii K. Shartsev <me@shgk.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NextcloudVueNcActionButton class=\"entry-single-action entry-action entry-action-item\"\n\t\t:class=\"state.class\"\n\t\t:disabled=\"state.disabled\"\n\t\t:aria-keyshortcuts=\"keyshortcuts || undefined\"\n\t\t:data-text-action-entry=\"actionEntry.key\"\n\t\t:type=\"state.type\"\n\t\t:model-value=\"state.type !== 'button' ? state.active : undefined\"\n\t\tclose-after-click\n\t\tv-on=\"$listeners\"\n\t\t@click=\"runAction\">\n\t\t<template #icon>\n\t\t\t<component :is=\"icon\" />\n\t\t</template>\n\t\t{{ label }}\n\t</NextcloudVueNcActionButton>\n</template>\n\n<script>\nimport { NcActionButton as NextcloudVueNcActionButton } from '@nextcloud/vue'\nimport { BaseActionEntry } from './BaseActionEntry.js'\n\nexport default {\n\t// This component is used as a direct child of NcActions.\n\t// Even if it actually renders NcActionButton, NcActions cannot see it due to rendering limitations in Vue.\n\t// Though it works in general, NcActions doesn't handle it correctly. See NcActions docs for details.\n\t// Hotfix - rename the component to NcActionButton because it represents and renders it.\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'NcActionButton',\n\n\tcomponents: {\n\t\tNextcloudVueNcActionButton,\n\t},\n\n\textends: BaseActionEntry,\n\n\tmounted() {\n\t\tthis.$editor.on('transaction', () => this.updateState())\n\t},\n\n\tmethods: {\n\t\trunAction() {\n\t\t\tconst { actionEntry } = this\n\n\t\t\tif (actionEntry.click) {\n\t\t\t\tactionEntry.click(this)\n\t\t\t} else {\n\t\t\t\t// Some actions run themselves.\n\t\t\t\t// others still need to have .run() called upon them.\n\t\t\t\tactionEntry.action(this.$editor.chain().focus())?.run()\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$emit('trigged', { ...actionEntry })\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionListItem.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!./ActionListItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionListItem.vue?vue&type=template&id=e358b396\"\nimport script from \"./ActionListItem.vue?vue&type=script&lang=js\"\nexport * from \"./ActionListItem.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NextcloudVueNcActionButton',_vm._g({staticClass:\"entry-single-action entry-action entry-action-item\",class:_vm.state.class,attrs:{\"disabled\":_vm.state.disabled,\"aria-keyshortcuts\":_vm.keyshortcuts || undefined,\"data-text-action-entry\":_vm.actionEntry.key,\"type\":_vm.state.type,\"model-value\":_vm.state.type !== 'button' ? _vm.state.active : undefined,\"close-after-click\":\"\"},on:{\"click\":_vm.runAction},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\"})]},proxy:true}])},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.label)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n -\n - @author Vinicius Reis <vinicius@nextcloud.com>\n - @author Grigorii K. Shartsev <me@shgk.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcActions :title=\"tooltip\"\n\t\tclass=\"entry-list-action entry-action\"\n\t\tv-bind=\"state\"\n\t\t:container=\"menuIDSelector\"\n\t\t:aria-label=\"labelWithSelected\"\n\t\t:type=\"state.active ? 'primary': 'tertiary'\"\n\t\t:force-menu=\"true\"\n\t\t:data-text-action-entry=\"actionEntry.key\"\n\t\t:data-text-action-active=\"activeKey\"\n\t\t:disabled=\"!isEnabled\"\n\t\t@update:open=\"onOpenChange\">\n\t\t<template #icon>\n\t\t\t<component :is=\"icon\" :key=\"iconKey\" />\n\t\t</template>\n\t\t<template v-for=\"child in children\">\n\t\t\t<NcActionSeparator v-if=\"child.isSeparator\" :key=\"`child-${child.key}`\" />\n\t\t\t<ActionListItem v-else\n\t\t\t\t:key=\"`child-${child.key}`\"\n\t\t\t\t:active=\"currentChild?.key === child.key\"\n\t\t\t\tis-item\n\t\t\t\t:action-entry=\"child\"\n\t\t\t\tv-on=\"$listeners\"\n\t\t\t\t@trigged=\"onTrigger\" />\n\t\t</template>\n\t\t<slot v-bind=\"{ visible }\" name=\"lastAction\" />\n\t</NcActions>\n</template>\n\n<script>\nimport { NcActions, NcActionSeparator } from '@nextcloud/vue'\nimport { BaseActionEntry } from './BaseActionEntry.js'\nimport ActionListItem from './ActionListItem.vue'\nimport { getActionState, getIsActive } from './utils.js'\nimport { useOutlineStateMixin } from '../Editor/Wrapper.provider.js'\nimport useStore from '../../mixins/store.js'\nimport { useMenuIDMixin } from './MenuBar.provider.js'\nimport debounce from 'debounce'\n\nexport default {\n\tname: 'ActionList',\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionSeparator,\n\t\tActionListItem,\n\t},\n\textends: BaseActionEntry,\n\tmixins: [useStore, useOutlineStateMixin, useMenuIDMixin],\n\tprops: {\n\t\tforceEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata: () => ({\n\t\tvisible: false,\n\t\thasEnabledChild: true,\n\t}),\n\tcomputed: {\n\t\tcurrentChild() {\n\t\t\tconst {\n\t\t\t\tstate,\n\t\t\t\t$editor,\n\t\t\t\tactionEntry: { children },\n\t\t\t} = this\n\n\t\t\tif (!state.active) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn children.find(child => {\n\t\t\t\treturn getIsActive(child, $editor)\n\t\t\t})\n\t\t},\n\t\ticon() {\n\t\t\tif (this.currentChild) {\n\t\t\t\treturn this.currentChild.icon\n\t\t\t}\n\n\t\t\treturn this.actionEntry.icon\n\t\t},\n\t\ticonKey() {\n\t\t\treturn `${this.actionEntry.key}/${this.activeKey}`\n\t\t},\n\t\tactiveKey() {\n\t\t\treturn this.currentChild?.key\n\t\t},\n\t\tchildren() {\n\t\t\treturn this.actionEntry.children.filter(({ visible }) => {\n\t\t\t\tif (visible === undefined) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\treturn typeof visible === 'function'\n\t\t\t\t\t? visible(this)\n\t\t\t\t\t: visible\n\t\t\t})\n\t\t},\n\t\tlabelWithSelected() {\n\t\t\tif (this.currentChild) {\n\t\t\t\t// TRANSLATORS: examples - Headings, \"Heading 1\" is selected - Callouts, \"Info\" is selected\n\t\t\t\treturn t('text', '{menuItemName}, \"{selectedSubMenuItemName}\" is selected', {\n\t\t\t\t\tmenuItemName: this.actionEntry.label,\n\t\t\t\t\tselectedSubMenuItemName: this.currentChild.label,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn this.actionEntry.label\n\t\t},\n\t\tisEnabled() {\n\t\t\treturn this.forceEnabled || this.hasEnabledChild\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$_updateState = debounce(this.checkStateOfChildren.bind(this), 50)\n\t\tthis.$editor.on('update', this.$_updateState)\n\t\tthis.$editor.on('selectionUpdate', this.$_updateState)\n\t},\n\tbeforeDestroy() {\n\t\tthis.$editor.off('update', this.$_updateState)\n\t\tthis.$editor.off('selectionUpdate', this.$_updateState)\n\t},\n\tmethods: {\n\t\tonOpenChange(val) {\n\t\t\tthis.visible = val\n\t\t},\n\t\trunAction() {\n\t\t\t// nothing todo\n\t\t},\n\t\tonTrigger(entry) {\n\t\t\tif (entry?.click) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$editor.chain().focus().run()\n\t\t\tthis.$emit('trigged', entry)\n\t\t},\n\t\tcheckStateOfChildren() {\n\t\t\tthis.hasEnabledChild = this.children.some(child => this.isChildEnabled(child))\n\t\t},\n\t\tisChildEnabled(child) {\n\t\t\treturn !child.isSeparator\n\t\t\t\t&& !getActionState(child, this.$editor).disabled\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionList.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!./ActionList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionList.vue?vue&type=template&id=35b03224\"\nimport script from \"./ActionList.vue?vue&type=script&lang=js\"\nexport * from \"./ActionList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',_vm._g({staticClass:\"entry-single-action entry-action\",class:_vm.state.class,attrs:{\"disabled\":_vm.state.disabled,\"aria-keyshortcuts\":_vm.keyshortcuts || undefined,\"data-text-action-entry\":_vm.actionEntry.key,\"aria-label\":_vm.label,\"title\":_vm.tooltip,\"type\":\"tertiary\",\"pressed\":_vm.state.type !== 'button' ? _vm.state.active : undefined},on:{\"click\":_vm.runAction},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\"})]},proxy:true},(_vm.actionEntry.forceLabel)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\")]},proxy:true}:null],null,true)},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n -\n - @author Vinicius Reis <vinicius@nextcloud.com>\n - @author Grigorii K. Shartsev <me@shgk.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcButton class=\"entry-single-action entry-action\"\n\t\t:class=\"state.class\"\n\t\t:disabled=\"state.disabled\"\n\t\t:aria-keyshortcuts=\"keyshortcuts || undefined\"\n\t\t:data-text-action-entry=\"actionEntry.key\"\n\t\t:aria-label=\"label\"\n\t\t:title=\"tooltip\"\n\t\ttype=\"tertiary\"\n\t\t:pressed=\"state.type !== 'button' ? state.active : undefined\"\n\t\tv-on=\"$listeners\"\n\t\t@click=\"runAction\">\n\t\t<template #icon>\n\t\t\t<component :is=\"icon\" />\n\t\t</template>\n\n\t\t<template v-if=\"actionEntry.forceLabel\" #default>\n\t\t\t{{ label }}\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport { NcButton } from '@nextcloud/vue'\nimport { BaseActionEntry } from './BaseActionEntry.js'\n\nexport default {\n\tname: 'ActionSingle',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\textends: BaseActionEntry,\n\n\tprops: {\n\t\tisItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.$editor.on('transaction', () => this.updateState())\n\t},\n\n\tmethods: {\n\t\trunAction() {\n\t\t\tconst { actionEntry } = this\n\n\t\t\tif (actionEntry.click) {\n\t\t\t\tactionEntry.click(this)\n\t\t\t} else {\n\t\t\t\t// Some actions run themselves.\n\t\t\t\t// others still need to have .run() called upon them.\n\t\t\t\tactionEntry.action(this.$editor.chain().focus())?.run()\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$emit('trigged', { ...actionEntry })\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionSingle.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!./ActionSingle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionSingle.vue?vue&type=template&id=11718c58\"\nimport script from \"./ActionSingle.vue?vue&type=script&lang=js\"\nexport * from \"./ActionSingle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-menubar\",class:{\n\t\t'text-menubar--ready': _vm.isReady,\n\t\t'text-menubar--hide': _vm.isHidden,\n\t\t'text-menubar--is-workspace': _vm.$isRichWorkspace\n\t},attrs:{\"id\":_vm.randomID,\"data-text-el\":\"menubar\",\"role\":\"region\",\"aria-label\":_vm.t('text', 'Editor actions')}},[(_vm.displayHelp)?_c('HelpModal',{on:{\"close\":_vm.hideHelp}}):_vm._e(),_vm._v(\" \"),(_vm.$isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"text-menubar__entries\",attrs:{\"role\":\"toolbar\",\"aria-label\":_vm.t('text', 'Formatting menu bar')},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if('button' in $event && $event.button !== 0)return null;$event.stopPropagation();return _vm.handleToolbarNavigation.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"]))return null;if('button' in $event && $event.button !== 2)return null;$event.stopPropagation();return _vm.handleToolbarNavigation.apply(null, arguments)}]}},[_vm._l((_vm.visibleEntries),function(actionEntry,index){return _c(actionEntry.component ? actionEntry.component : (actionEntry.children ? 'ActionList' : 'ActionSingle'),{key:actionEntry.key,ref:\"menuEntries\",refInFor:true,tag:\"component\",attrs:{\"action-entry\":actionEntry,\"can-be-focussed\":_vm.activeMenuEntry === index},on:{\"disabled\":function($event){return _vm.disableMenuEntry(actionEntry.key, $event)},\"click\":function($event){_vm.activeMenuEntry = index}}})}),_vm._v(\" \"),_c('ActionList',{ref:\"remainingEntries\",attrs:{\"action-entry\":_vm.hiddenEntries,\"can-be-focussed\":_vm.activeMenuEntry === _vm.visibleEntries.length,\"force-enabled\":true},on:{\"click\":function($event){_vm.activeMenuEntry = 'remain'}},scopedSlots:_vm._u([{key:\"lastAction\",fn:function({ visible }){return [(_vm.canTranslate)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.showTranslate},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TranslateVariant')]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Translate'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionFormattingHelp',{on:{\"click\":_vm.showHelp}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('CharacterCount',_vm._b({},'CharacterCount',{ visible },false))]}}],null,false,2258818168)})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-menubar__slot\"},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Vinicius Reis <vinicius@nextcloud.com>\n -\n - @author Vinicius Reis <vinicius@nextcloud.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<template>\n\t<NextcloudVueNcActionButton close-after-click\n\t\tdata-text-action-entry=\"formatting-help\"\n\t\tv-on=\"$listeners\">\n\t\t<template #icon>\n\t\t\t<Help />\n\t\t</template>\n\t\t{{ t('text', 'Formatting help') }}\n\t</NextcloudVueNcActionButton>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { NcActionButton as NextcloudVueNcActionButton } from '@nextcloud/vue'\nimport { Help } from '../icons.js'\n\nexport default defineComponent({\n\t// This component is used as a direct child of NcActions.\n\t// Even if it actually renders NcActionButton, NcActions cannot see it due to rendering limitations in Vue.\n\t// Though it works in general, NcActions doesn't handle it correctly. See NcActions docs for details.\n\t// Hotfix - rename the component to NcActionButton because it represents and renders it.\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'NcActionButton',\n\tcomponents: {\n\t\tNextcloudVueNcActionButton,\n\t\tHelp,\n\t},\n})\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionFormattingHelp.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!./ActionFormattingHelp.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionFormattingHelp.vue?vue&type=template&id=5cb91daa\"\nimport script from \"./ActionFormattingHelp.vue?vue&type=script&lang=js\"\nexport * from \"./ActionFormattingHelp.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NextcloudVueNcActionButton',_vm._g({attrs:{\"close-after-click\":\"\",\"data-text-action-entry\":\"formatting-help\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Help')]},proxy:true}])},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('text', 'Formatting help'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcActionText data-text-action-entry=\"character-count\">\n\t\t<template #icon>\n\t\t\t<AlphabeticalVariant />\n\t\t</template>\n\t\t<template #default>\n\t\t\t{{ countString }}\n\t\t</template>\n\t</NcActionText>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { translatePlural as n } from '@nextcloud/l10n'\nimport { NcActionText } from '@nextcloud/vue'\nimport { AlphabeticalVariant } from '../icons.js'\nimport { useEditorMixin } from '../Editor.provider.js'\n\nexport default defineComponent({\n\tname: 'CharacterCount',\n\tcomponents: {\n\t\tAlphabeticalVariant,\n\t\tNcActionText,\n\t},\n\tmixins: [useEditorMixin],\n\tprops: {\n\t\tvisible: Boolean,\n\t},\n\tdata: () => ({\n\t\twordCount: 0,\n\t\tcharCount: 0,\n\t}),\n\tcomputed: {\n\t\tcountString() {\n\t\t\treturn `${n('text', '%n word', '%n words', this.wordCount)}, ${n('text', '%n char', '%n chars', this.charCount)}`\n\t\t},\n\t},\n\twatch: {\n\t\tvisible: 'refresh',\n\t},\n\tcreated() {\n\t\tthis.refresh()\n\t},\n\tmethods: {\n\t\trefresh() {\n\t\t\t// characterCount is not reactive so we need this workaround\n\t\t\tthis.wordCount = this.$editor.storage.characterCount.words()\n\t\t\tthis.charCount = this.$editor.storage.characterCount.characters()\n\t\t},\n\t},\n})\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CharacterCount.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!./CharacterCount.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CharacterCount.vue?vue&type=template&id=1009fc0d\"\nimport script from \"./CharacterCount.vue?vue&type=script&lang=js\"\nexport * from \"./CharacterCount.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActionText',{attrs:{\"data-text-action-entry\":\"character-count\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlphabeticalVariant')]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.countString)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcDialog size=\"normal\"\n\t\tdata-text-el=\"formatting-help\"\n\t\t:name=\"t('text', 'Formatting help')\"\n\t\t:close-on-click-outside=\"true\"\n\t\t@closing=\"$emit('close')\">\n\t\t<h2>{{ t('text', 'Formatting help') }}</h2>\n\t\t<p>{{ t('text', 'Speed up your writing with simple shortcuts.') }}</p>\n\t\t<p v-if=\"!isMobileCached\">\n\t\t\t{{ t('text', 'Just type the Markdown syntax or use keyboard shortcuts from below.') }}\n\t\t</p>\n\t\t<p v-else>\n\t\t\t{{ t('text', 'Just type the Markdown syntax from below.') }}\n\t\t</p>\n\n\t\t<table>\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>{{ t('text', 'Style') }}</th>\n\t\t\t\t\t<th>{{ t('text', 'Syntax') }}</th>\n\t\t\t\t\t<th v-if=\"!isMobileCached\">\n\t\t\t\t\t\t{{ t('text', 'Keyboard shortcuts') }}\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'New paragraph') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<kbd>{{ t('text', 'Enter') }}</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" />\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Hard line break') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<kbd>{{ t('text', 'Enter') }}</kbd>\n\t\t\t\t\t\t{{ t('text', 'followed by') }}\n\t\t\t\t\t\t<kbd>{{ t('text', 'Backspace') }}</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Enter') }}</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Bold') }}</td>\n\t\t\t\t\t<td><code>**{{ t('text', 'Bold text') }}**</code></td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>B</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Italic') }}</td>\n\t\t\t\t\t<td><code>*{{ t('text', 'Italicized text') }}*</code></td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>I</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Strikethrough') }}</td>\n\t\t\t\t\t<td><code>~~{{ t('text', 'Mistaken text') }}~~</code></td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>S</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Underline') }}</td>\n\t\t\t\t\t<td><code>__{{ t('text', 'Underlined text') }}__</code></td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>U</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"ellipsis_top\">\n\t\t\t\t\t\t{{ t('text', 'Heading 1') }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"ellipsis_top\">\n\t\t\t\t\t\t<code># {{ t('text', 'Heading level 1') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" class=\"ellipsis_top\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>1</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"noborder ellipsis\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"noborder ellipsis\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" class=\"ellipsis noborder\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"noborder ellipsis_bottom\">\n\t\t\t\t\t\t{{ t('text', 'Heading 6') }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"noborder ellipsis_bottom\">\n\t\t\t\t\t\t<code>###### {{ t('text', 'Heading level 6') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" class=\"noborder ellipsis_bottom\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>6</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Unordered list') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>* {{ t('text', 'An item') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>8</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Ordered list') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>1. {{ t('text', 'First item') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>{{ t('text', 'Shift') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>7</kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Checklist') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>* [] {{ t('text', 'To-Do item') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" />\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Blockquote') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>> {{ t('text', 'Quoted text') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\">\n\t\t\t\t\t\t<kbd>{{ t('text', 'Ctrl') }}</kbd>\n\t\t\t\t\t\t+\n\t\t\t\t\t\t<kbd>></kbd>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('text', 'Code block') }}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<code>``` {{ t('text', 'Some code') }}</code>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"!isMobileCached\" />\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</NcDialog>\n</template>\n\n<script>\nimport { NcDialog } from '@nextcloud/vue'\nimport { isMobilePlatform } from '../helpers/platform.js'\n\nexport default {\n\tname: 'HelpModal',\n\tcomponents: {\n\t\tNcDialog,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tformatted: {\n\t\t\t\tbold: true,\n\t\t\t\titalic: true,\n\t\t\t\tstrikethrough: true,\n\t\t\t\theading1: true,\n\t\t\t\theading6: true,\n\t\t\t\tunorderdList: true,\n\t\t\t\torderedList: true,\n\t\t\t\tcheckList: true,\n\t\t\t\tblockQuote: true,\n\t\t\t\tcodeBlock: true,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\tisFormatted() {\n\t\t\treturn (style) => this.formatted[style]\n\t\t},\n\t\t// Cache the output of `isMobilePlatform()`\n\t\tisMobileCached() {\n\t\t\treturn this.isMobilePlatform()\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleFormatted(style) {\n\t\t\tthis.formatted[style] = !this.formatted[style]\n\t\t},\n\t\tisMobilePlatform,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\ttable {\n\t\tmargin-top: 24px;\n\t\tborder-collapse: collapse;\n\n\t\ttbody tr {\n\t\t\t&:hover, &:focus, &:active {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\tthead tr {\n\t\t\tborder: none;\n\t\t}\n\n\t\tth {\n\t\t\tfont-weight: bold;\n\t\t\tpadding: .75rem 1rem .75rem 0;\n\t\t\tborder-bottom: 2px solid var(--color-background-darker);\n\t\t}\n\n\t\ttd {\n\t\t\tpadding: .75rem 1rem .75rem 0;\n\t\t\tborder-top: 1px solid var(--color-background-dark);\n\t\t\tborder-bottom: unset;\n\n\t\t\t&.noborder {\n\t\t\t\tborder-top: unset;\n\t\t\t}\n\n\t\t\t&.ellipsis_top {\n\t\t\t\tpadding-bottom: 0;\n\t\t\t}\n\n\t\t\t&.ellipsis {\n\t\t\t\tpadding-top: 0;\n\t\t\t\tpadding-bottom: 0;\n\t\t\t}\n\n\t\t\t&.ellipsis_bottom {\n\t\t\t\tpadding-top: 0;\n\t\t\t}\n\t\t}\n\n\t\tkbd {\n\t\t\tfont-size: smaller;\n\t\t}\n\n\t\tcode {\n\t\t\tpadding: .2em .4em;\n\t\t\tfont-size: 90%;\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\tborder-radius: 6px;\n\t\t}\n\t}\n\n\t@import '../css/prosemirror';\n\n\tdiv.ProseMirror {\n\t\tdisplay: inline;\n\t\tmargin-top: unset;\n\t\tposition: unset;\n\t\tpadding: unset;\n\t\tline-height: unset;\n\n\t\th1, h6 {\n\t\t\tdisplay: inline;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.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!./HelpModal.vue?vue&type=script&lang=js\"","/**\n * Check if current platform is a mobile device\n *\n * @return {boolean} whether the platform is a mobile device\n */\nexport function isMobilePlatform() {\n\t// Use client hints if already available\n\tif (navigator?.userAgentData?.mobile !== undefined) return navigator.userAgentData.mobile\n\n\t// use regex to match userAgent (required for Safari and Firefox in 2022)\n\tconst mobileDevices = [\n\t\t/Android/i,\n\t\t/webOS/i,\n\t\t/iPhone/i,\n\t\t/iPad/i,\n\t\t/iPod/i,\n\t\t/playbook/i,\n\t\t/silk/i,\n\t\t/BlackBerry/i,\n\t\t/Windows Phone/i,\n\t]\n\n\treturn mobileDevices.some(regex => navigator.userAgent.match(regex))\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!./HelpModal.vue?vue&type=style&index=0&id=0b17af4e&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/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.vue?vue&type=style&index=0&id=0b17af4e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HelpModal.vue?vue&type=template&id=0b17af4e&scoped=true\"\nimport script from \"./HelpModal.vue?vue&type=script&lang=js\"\nexport * from \"./HelpModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./HelpModal.vue?vue&type=style&index=0&id=0b17af4e&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 \"0b17af4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',{attrs:{\"size\":\"normal\",\"data-text-el\":\"formatting-help\",\"name\":_vm.t('text', 'Formatting help'),\"close-on-click-outside\":true},on:{\"closing\":function($event){return _vm.$emit('close')}}},[_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Formatting help')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('text', 'Speed up your writing with simple shortcuts.')))]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Just type the Markdown syntax or use keyboard shortcuts from below.'))+\"\\n\\t\")]):_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Just type the Markdown syntax from below.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('table',[_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.t('text', 'Style')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('text', 'Syntax')))]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('th',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Keyboard shortcuts'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('tbody',[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'New paragraph')))]),_vm._v(\" \"),_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Hard line break')))]),_vm._v(\" \"),_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'followed by'))+\"\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Backspace')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Bold')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"**\"+_vm._s(_vm.t('text', 'Bold text'))+\"**\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"B\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Italic')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"*\"+_vm._s(_vm.t('text', 'Italicized text'))+\"*\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"I\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Strikethrough')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"~~\"+_vm._s(_vm.t('text', 'Mistaken text'))+\"~~\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"S\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Underline')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"__\"+_vm._s(_vm.t('text', 'Underlined text'))+\"__\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"U\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"ellipsis_top\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Heading 1'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"ellipsis_top\"},[_c('code',[_vm._v(\"# \"+_vm._s(_vm.t('text', 'Heading level 1')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"ellipsis_top\"},[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"1\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"noborder ellipsis\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"noborder ellipsis\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"ellipsis noborder\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Heading 6'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_c('code',[_vm._v(\"###### \"+_vm._s(_vm.t('text', 'Heading level 6')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"6\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Unordered list')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"* \"+_vm._s(_vm.t('text', 'An item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"8\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Ordered list')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"1. \"+_vm._s(_vm.t('text', 'First item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"7\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Checklist')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"* [] \"+_vm._s(_vm.t('text', 'To-Do item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Blockquote')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"> \"+_vm._s(_vm.t('text', 'Quoted text')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\">\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Code block')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"``` \"+_vm._s(_vm.t('text', 'Some code')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Vinicius Reis <vinicius@nextcloud.com>\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Grigorii K. Shartsev <me@shgk.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :id=\"randomID\"\n\t\tclass=\"text-menubar\"\n\t\tdata-text-el=\"menubar\"\n\t\trole=\"region\"\n\t\t:aria-label=\"t('text', 'Editor actions')\"\n\t\t:class=\"{\n\t\t\t'text-menubar--ready': isReady,\n\t\t\t'text-menubar--hide': isHidden,\n\t\t\t'text-menubar--is-workspace': $isRichWorkspace\n\t\t}\">\n\t\t<HelpModal v-if=\"displayHelp\" @close=\"hideHelp\" />\n\n\t\t<div v-if=\"$isRichEditor\"\n\t\t\tref=\"menubar\"\n\t\t\trole=\"toolbar\"\n\t\t\tclass=\"text-menubar__entries\"\n\t\t\t:aria-label=\"t('text', 'Formatting menu bar')\"\n\t\t\t@keydown.left.stop=\"handleToolbarNavigation\"\n\t\t\t@keydown.right.stop=\"handleToolbarNavigation\">\n\t\t\t<!-- The visible inline actions -->\n\t\t\t<component :is=\"actionEntry.component ? actionEntry.component : (actionEntry.children ? 'ActionList' : 'ActionSingle')\"\n\t\t\t\tv-for=\"(actionEntry, index) in visibleEntries\"\n\t\t\t\tref=\"menuEntries\"\n\t\t\t\t:key=\"actionEntry.key\"\n\t\t\t\t:action-entry=\"actionEntry\"\n\t\t\t\t:can-be-focussed=\"activeMenuEntry === index\"\n\t\t\t\t@disabled=\"disableMenuEntry(actionEntry.key, $event)\"\n\t\t\t\t@click=\"activeMenuEntry = index\" />\n\n\t\t\t<!-- The remaining actions -->\n\t\t\t<ActionList ref=\"remainingEntries\"\n\t\t\t\t:action-entry=\"hiddenEntries\"\n\t\t\t\t:can-be-focussed=\"activeMenuEntry === visibleEntries.length\"\n\t\t\t\t:force-enabled=\"true\"\n\t\t\t\t@click=\"activeMenuEntry = 'remain'\">\n\t\t\t\t<template #lastAction=\"{ visible }\">\n\t\t\t\t\t<NcActionButton v-if=\"canTranslate\" close-after-click @click=\"showTranslate\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<TranslateVariant />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('text', 'Translate') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<ActionFormattingHelp @click=\"showHelp\" />\n\t\t\t\t\t<NcActionSeparator />\n\t\t\t\t\t<CharacterCount v-bind=\"{ visible }\" />\n\t\t\t\t</template>\n\t\t\t</ActionList>\n\t\t</div>\n\t\t<div class=\"text-menubar__slot\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { NcActionSeparator, NcActionButton } from '@nextcloud/vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { useResizeObserver } from '@vueuse/core'\nimport { emit } from '@nextcloud/event-bus'\n\nimport ActionFormattingHelp from './ActionFormattingHelp.vue'\nimport ActionList from './ActionList.vue'\nimport ActionSingle from './ActionSingle.vue'\nimport CharacterCount from './CharacterCount.vue'\nimport HelpModal from '../HelpModal.vue'\nimport ToolBarLogic from './ToolBarLogic.js'\nimport actionsFullEntries from './entries.js'\nimport { MENU_ID } from './MenuBar.provider.js'\nimport { DotsHorizontal, TranslateVariant } from '../icons.js'\nimport {\n\tuseEditorMixin,\n\tuseIsMobileMixin,\n\tuseIsRichEditorMixin,\n\tuseIsRichWorkspaceMixin,\n} from '../Editor.provider.js'\n\nexport default {\n\tname: 'MenuBar',\n\tcomponents: {\n\t\tActionFormattingHelp,\n\t\tActionList,\n\t\tActionSingle,\n\t\tHelpModal,\n\t\tNcActionSeparator,\n\t\tNcActionButton,\n\t\tCharacterCount,\n\t\tTranslateVariant,\n\t},\n\textends: ToolBarLogic,\n\tmixins: [\n\t\tuseEditorMixin,\n\t\tuseIsMobileMixin,\n\t\tuseIsRichEditorMixin,\n\t\tuseIsRichWorkspaceMixin,\n\t],\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[MENU_ID]: {\n\t\t\t\tget: () => this.randomID,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\tprops: {\n\t\tisHidden: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tentries: [...actionsFullEntries],\n\t\t\trandomID: `menu-bar-${(Math.ceil((Math.random() * 10000) + 500)).toString(16)}`,\n\t\t\tdisplayHelp: false,\n\t\t\tisReady: false,\n\t\t\tcanTranslate: loadState('text', 'translation_languages', []).length > 0,\n\t\t\tresize: null,\n\t\t\ticonsLimit: 4,\n\t\t}\n\t},\n\tcomputed: {\n\t\tvisibleEntries() {\n\t\t\tconst list = this.entries.filter(({ priority }) => {\n\t\t\t\t// if entry has no priority, we assume it always will be visible\n\t\t\t\treturn priority === undefined || priority <= this.iconsLimit\n\t\t\t})\n\n\t\t\treturn list\n\t\t},\n\t\thiddenEntries() {\n\t\t\tconst remainingEntries = this.entries.filter(({ priority }) => {\n\t\t\t\t// reverse logic from visibleEntries\n\t\t\t\treturn priority !== undefined && priority > this.iconsLimit\n\t\t\t})\n\t\t\tconst entries = remainingEntries.reduce((acc, entry, index) => {\n\t\t\t\t// If entry has children, merge them into list. Otherwise keep entry itself.\n\t\t\t\tconst children = entry.children ?? [entry]\n\t\t\t\t// If this block has menu entries, it should be separated for better visibility and a11y (menu item radio grouping)\n\t\t\t\tif (children.length > 1) {\n\t\t\t\t\tconst hasPreviousItem = acc.length && !acc.at(-1).isSeparator\n\t\t\t\t\tconst separatorBefore = hasPreviousItem ? [{ key: `separator-before-${entry.id}`, isSeparator: true }] : []\n\n\t\t\t\t\tconst hasNextItem = index !== remainingEntries.length - 1\n\t\t\t\t\tconst separatorAfter = hasNextItem ? [{ key: `separator-after-${entry.id}`, isSeparator: true }] : []\n\n\t\t\t\t\treturn [...acc, ...separatorBefore, ...children, ...separatorAfter]\n\t\t\t\t}\n\t\t\t\treturn [...acc, ...children]\n\t\t\t}, [])\n\n\t\t\treturn {\n\t\t\t\tkey: 'remain',\n\t\t\t\tlabel: this.t('text', 'Remaining actions'),\n\t\t\t\ticon: DotsHorizontal,\n\t\t\t\tchildren: entries,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.resize = useResizeObserver(this.$refs.menubar, this.onResize)\n\n\t\tthis.$nextTick(() => {\n\t\t\tthis.isReady = true\n\t\t\tthis.$emit('update:loaded', true)\n\t\t})\n\t},\n\tbeforeDestroy() {\n\t\tthis.resize?.stop()\n\t},\n\tmethods: {\n\t\tonResize(entries) {\n\t\t\tconst entry = entries[0]\n\t\t\tconst { width } = entry.contentRect\n\n\t\t\t// leave some buffer - this is necessary so the bar does not wrap during resizing\n\t\t\tconst spaceToFill = width - 4\n\t\t\tconst spacePerSlot = this.$isMobile ? 44 : 46\n\t\t\tconst slots = Math.floor(spaceToFill / spacePerSlot)\n\n\t\t\t// Leave one slot empty for the three dot menu\n\t\t\tthis.iconsLimit = slots - 1\n\t\t\tthis.isReady = true\n\t\t},\n\t\tshowHelp() {\n\t\t\tthis.displayHelp = true\n\t\t},\n\n\t\thideHelp() {\n\t\t\tthis.displayHelp = false\n\t\t},\n\t\tshowTranslate() {\n\t\t\tconst { from, to } = this.$editor.view.state.selection\n\t\t\tlet selectedText = this.$editor.view.state.doc.textBetween(from, to, ' ')\n\n\t\t\tif (!selectedText.trim().length) {\n\t\t\t\tthis.$editor.commands.selectAll()\n\t\t\t\tselectedText = this.$editor.view.state.doc.textContent\n\t\t\t}\n\n\t\t\tconsole.debug('translation click', this.$editor.view.state.selection, selectedText)\n\t\t\temit('text:translate-modal:show', { content: selectedText })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.text-menubar {\n\t\t--background-blur: blur(10px);\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tz-index: 10021; // above modal-header so menubar is always on top\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\tbackdrop-filter: var(--background-blur);\n\t\tmax-height: 44px; // important for mobile so that the buttons are always inside the container\n\t\tpadding-top:3px;\n\t\tpadding-bottom: 3px;\n\n\t\tvisibility: hidden;\n\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\n\t\t&.text-menubar--ready:not(.text-menubar--hide) {\n\t\t\tvisibility: visible;\n\t\t\tanimation-name: fadeInDown;\n\t\t\tanimation-duration: 0.3s;\n\t\t}\n\n\t\t&.text-menubar--hide {\n\t\t\topacity: 0;\n\t\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t}\n\t\t.text-menubar__entries {\n\t\t\tdisplay: flex;\n\t\t\tflex-grow: 1;\n\t\t\tmargin-left: max(0px, calc((100% - var(--text-editor-max-width)) / 2));\n\t\t}\n\n\t\t.text-menubar__slot {\n\t\t\tjustify-content: flex-end;\n\t\t\tdisplay: flex;\n\t\t\tmin-width: max(0px, min(100px, (100% - var(--text-editor-max-width)) / 2));\n\t\t}\n\n\t\t&.text-menubar--is-workspace {\n\t\t\t.text-menubar__entries {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\n\t\t@media (max-width: 660px) {\n\t\t\t.text-menubar__entries {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.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!./MenuBar.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=0b381e60&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=0b381e60&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=0b381e60&scoped=true\"\nimport script from \"./MenuBar.vue?vue&type=script&lang=js\"\nexport * from \"./MenuBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./MenuBar.vue?vue&type=style&index=0&id=0b381e60&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b381e60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"text-readonly-bar\",attrs:{\"data-text-el\":\"readonly-bar\"}},[_c('div',{ref:\"menubar\",staticClass:\"text-readonly-bar__entries\",attrs:{\"role\":\"toolbar\",\"aria-label\":_vm.t('text', 'Editor actions')}},_vm._l((_vm.visibleEntries),function(actionEntry,index){return _c(actionEntry.component ? actionEntry.component : (actionEntry.children ? 'ActionList' : 'ActionSingle'),{key:actionEntry.key,ref:\"menuEntries\",refInFor:true,tag:\"component\",attrs:{\"action-entry\":actionEntry,\"can-be-focussed\":_vm.activeMenuEntry === index},on:{\"disabled\":function($event){return _vm.disableMenuEntry(actionEntry.key, $event)}}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"text-menubar__slot\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div data-text-el=\"readonly-bar\" class=\"text-readonly-bar\">\n\t\t<div ref=\"menubar\"\n\t\t\trole=\"toolbar\"\n\t\t\tclass=\"text-readonly-bar__entries\"\n\t\t\t:aria-label=\"t('text', 'Editor actions')\">\n\t\t\t<component :is=\"actionEntry.component ? actionEntry.component : (actionEntry.children ? 'ActionList' : 'ActionSingle')\"\n\t\t\t\tv-for=\"(actionEntry, index) in visibleEntries\"\n\t\t\t\tref=\"menuEntries\"\n\t\t\t\t:key=\"actionEntry.key\"\n\t\t\t\t:action-entry=\"actionEntry\"\n\t\t\t\t:can-be-focussed=\"activeMenuEntry === index\"\n\t\t\t\t@disabled=\"disableMenuEntry(actionEntry.key, $event)\" />\n\t\t</div>\n\t\t<div class=\"text-menubar__slot\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { ReadonlyEntries as entries } from './entries.js'\n\nimport ActionList from './ActionList.vue'\nimport ActionSingle from './ActionSingle.vue'\nimport ToolBarLogic from './ToolBarLogic.js'\n\nexport default defineComponent({\n\tname: 'ReadonlyBar',\n\tcomponents: {\n\t\tActionList,\n\t\tActionSingle,\n\t},\n\textends: ToolBarLogic,\n\tdata() {\n\t\treturn {\n\t\t\tentries,\n\t\t}\n\t},\n})\n</script>\n\n<style scoped>\n.text-readonly-bar {\n\tdisplay: flex;\n}\n.text-readonly-bar__entries {\n\tdisplay: flex;\n\tflex-grow: 1;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyBar.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!./ReadonlyBar.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyBar.vue?vue&type=style&index=0&id=27a921ca&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyBar.vue?vue&type=style&index=0&id=27a921ca&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ReadonlyBar.vue?vue&type=template&id=27a921ca&scoped=true\"\nimport script from \"./ReadonlyBar.vue?vue&type=script&lang=js\"\nexport * from \"./ReadonlyBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./ReadonlyBar.vue?vue&type=style&index=0&id=27a921ca&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27a921ca\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('BaseReader',{attrs:{\"content\":_vm.content}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<BaseReader :content=\"content\" />\n</template>\n\n<script>\n/* eslint-disable import/no-named-as-default */\nimport CodeBlock from '@tiptap/extension-code-block'\nimport escapeHtml from 'escape-html'\nimport BaseReader from './BaseReader.vue'\nimport { PlainText } from './../extensions/index.js'\n\nexport default {\n\tname: 'PlainTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn '<pre>' + escapeHtml(content) + '</pre>'\n\t\t},\n\t\textensions: () => [PlainText, CodeBlock],\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n}\n</script>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlainTextReader.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!./PlainTextReader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlainTextReader.vue?vue&type=template&id=36a3fd64\"\nimport script from \"./PlainTextReader.vue?vue&type=script&lang=js\"\nexport * from \"./PlainTextReader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isRichEditor)?_c('RichTextReader',{attrs:{\"content\":_vm.content}}):_c('PlainTextReader',{attrs:{\"content\":_vm.content}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<RichTextReader v-if=\"isRichEditor\"\n\t\t:content=\"content\" />\n\t<PlainTextReader v-else\n\t\t:content=\"content\" />\n</template>\n\n<script>\nimport PlainTextReader from './PlainTextReader.vue'\nimport RichTextReader from './RichTextReader.vue'\n\nexport default {\n\tname: 'Reader',\n\tcomponents: { PlainTextReader, RichTextReader },\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n\t#read-only-editor {\n\t\toverflow: scroll;\n\t}\n\n\t.thumbnailContainer #read-only-editor {\n\t\twidth: 100%;\n\n\t\t.ProseMirror {\n\t\t\theight: auto;\n\t\t\tmargin: 0 0 0 0;\n\t\t\tpadding: 0;\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!./Reader.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!./Reader.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=style&index=0&id=71fbd370&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Reader.vue?vue&type=style&index=0&id=71fbd370&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Reader.vue?vue&type=template&id=71fbd370\"\nimport script from \"./Reader.vue?vue&type=script&lang=js\"\nexport * from \"./Reader.vue?vue&type=script&lang=js\"\nimport style0 from \"./Reader.vue?vue&type=style&index=0&id=71fbd370&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('BaseReader',{attrs:{\"content\":_vm.content},on:{\"click-link\":(e, a) => _vm.$emit('click-link', e, a)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<BaseReader :content=\"content\" @click-link=\"(e, a) => $emit('click-link', e, a)\" />\n</template>\n\n<script>\nimport BaseReader from './BaseReader.vue'\nimport { RichText } from './../extensions/index.js'\nimport markdownit from './../markdownit/index.js'\n\nexport default {\n\tname: 'RichTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn markdownit.render(content)\n\t\t},\n\t\textensions() {\n\t\t\treturn [\n\t\t\t\tRichText.configure({\n\t\t\t\t\tediting: false,\n\t\t\t\t}),\n\t\t\t]\n\t\t},\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\t@import './../css/prosemirror';\n\t@import './../css/print';\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextReader.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!./RichTextReader.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextReader.vue?vue&type=style&index=0&id=cc547c80&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextReader.vue?vue&type=style&index=0&id=cc547c80&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RichTextReader.vue?vue&type=template&id=cc547c80\"\nimport script from \"./RichTextReader.vue?vue&type=script&lang=js\"\nexport * from \"./RichTextReader.vue?vue&type=script&lang=js\"\nimport style0 from \"./RichTextReader.vue?vue&type=style&index=0&id=cc547c80&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'icon-loading': _vm.saving},attrs:{\"id\":\"direct-editor\"}},[_c('Editor',{ref:\"editor\",attrs:{\"initial-session\":_vm.initialSession,\"file-id\":_vm.initial.fileId,\"active\":true,\"mime\":_vm.initial.mimetype,\"is-direct-editing\":true},on:{\"ready\":_vm.loaded},scopedSlots:_vm._u([(_vm.isMobile)?{key:\"header\",fn:function(){return [_c('button',{staticClass:\"icon-share\",on:{\"click\":_vm.share}}),_vm._v(\" \"),_c('button',{staticClass:\"icon-close\",on:{\"click\":_vm.close}})]},proxy:true}:null],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"direct-editor\" :class=\"{'icon-loading': saving}\">\n\t\t<Editor ref=\"editor\"\n\t\t\t:initial-session=\"initialSession\"\n\t\t\t:file-id=\"initial.fileId\"\n\t\t\t:active=\"true\"\n\t\t\t:mime=\"initial.mimetype\"\n\t\t\t:is-direct-editing=\"true\"\n\t\t\t@ready=\"loaded\">\n\t\t\t<template v-if=\"isMobile\" #header>\n\t\t\t\t<button class=\"icon-share\" @click=\"share\" />\n\t\t\t\t<button class=\"icon-close\" @click=\"close\" />\n\t\t\t</template>\n\t\t</Editor>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport Editor from '../components/Editor.vue'\n\nimport { logger } from '../helpers/logger.js'\n\nconst log = Vue.observable({\n\tmessages: [],\n\tmtime: 0,\n})\n\nconst callMobileMessage = (messageName, attributes) => {\n\tlogger.debug(`callMobileMessage ${messageName}`, { attributes })\n\tlet message = messageName\n\tif (typeof attributes !== 'undefined') {\n\t\tmessage = {\n\t\t\tMessageName: messageName,\n\t\t\tValues: attributes,\n\t\t}\n\t}\n\tlet attributesString = null\n\ttry {\n\t\tattributesString = JSON.stringify(attributes)\n\t} catch (e) {\n\t\tattributesString = null\n\t}\n\n\t// Forward to mobile handler\n\tif (window.DirectEditingMobileInterface && typeof window.DirectEditingMobileInterface[messageName] === 'function') {\n\t\tif (attributesString === null || typeof attributesString === 'undefined') {\n\t\t\twindow.DirectEditingMobileInterface[messageName]()\n\t\t} else {\n\t\t\twindow.DirectEditingMobileInterface[messageName](attributesString)\n\t\t}\n\t}\n\n\t// iOS webkit fallback\n\tif (window.webkit\n\t\t&& window.webkit.messageHandlers\n\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface) {\n\t\twindow.webkit.messageHandlers.DirectEditingMobileInterface.postMessage(message)\n\t}\n\n\twindow.postMessage(message)\n}\n\nwindow.addEventListener('message', function(message) {\n\tlog.messages.push(message.data)\n\tlogger.debug('postMessage', { message })\n})\n\nexport default {\n\tname: 'DirectEditing',\n\tcomponents: { Editor },\n\tdata() {\n\t\treturn {\n\t\t\tinitial: OCP.InitialState.loadState('text', 'file'),\n\t\t\tmessages: log.messages,\n\t\t\tlog,\n\t\t\tsaving: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tinitialSession() {\n\t\t\treturn JSON.parse(this.initial.session) || null\n\t\t},\n\t\tisMobile() {\n\t\t\treturn (window.DirectEditingMobileInterface || (window.webkit\n\t\t\t\t&& window.webkit.messageHandlers\n\t\t\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface))\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tcallMobileMessage('loading')\n\t},\n\tmounted() {\n\t\tdocument.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0')\n\t},\n\tmethods: {\n\t\tasync close() {\n\t\t\tthis.saving = true\n\t\t\tsetTimeout(async () => {\n\t\t\t\tawait this.$refs.editor.$destroy()\n\t\t\t\tcallMobileMessage('close')\n\t\t\t}, 0)\n\t\t},\n\t\tshare() {\n\t\t\tcallMobileMessage('share')\n\t\t},\n\t\tloaded() {\n\t\t\tcallMobileMessage('loaded')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\tbody {\n\t\tposition: fixed;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t#content[class=app-public] {\n\t\tmargin: 0;\n\t\tmargin-top: 0;\n\t}\n</style>\n\n<style scoped lang=\"scss\">\n\t#direct-editor {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\toverflow: auto;\n\n\t\t&:deep(.text-editor) {\n\t\t\theight: 100%;\n\t\t\ttop: 0;\n\t\t}\n\t\t&:deep(.text-editor__wrapper div.ProseMirror) {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\tpre {\n\t\twidth: 100%;\n\t\tmax-width: 700px;\n\t\tmargin: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\tbutton {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\topacity: .5;\n\t\tcolor: var(--color-main-text);\n\t\tbackground-position: center center;\n\t\tvertical-align: top;\n\t\t&:hover, &:focus, &:active {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t\t&.is-active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: 1;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.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!./DirectEditing.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.vue?vue&type=style&index=0&id=d43914dc&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.vue?vue&type=style&index=0&id=d43914dc&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\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!./DirectEditing.vue?vue&type=style&index=1&id=d43914dc&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.vue?vue&type=style&index=1&id=d43914dc&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DirectEditing.vue?vue&type=template&id=d43914dc&scoped=true\"\nimport script from \"./DirectEditing.vue?vue&type=script&lang=js\"\nexport * from \"./DirectEditing.vue?vue&type=script&lang=js\"\nimport style0 from \"./DirectEditing.vue?vue&type=style&index=0&id=d43914dc&prod&lang=scss\"\nimport style1 from \"./DirectEditing.vue?vue&type=style&index=1&id=d43914dc&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d43914dc\",\n null\n \n)\n\nexport default component.exports"],"names":["EDITOR","Symbol","FILE","ATTACHMENT_RESOLVER","IS_MOBILE","IS_PUBLIC","IS_RICH_EDITOR","IS_RICH_WORKSPACE","SYNC_SERVICE","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","useEditorMixin","inject","$editor","from","default","useSyncServiceMixin","$syncService","useIsPublicMixin","$isPublic","useIsRichWorkspaceMixin","$isRichWorkspace","useIsRichEditorMixin","$isRichEditor","useIsMobileMixin","$isMobile","useFileMixin","$file","fileId","relativePath","document","useAttachmentResolver","$attachmentResolver","resolve","src","logger","warn","useEditorUpload","$editorUpload","defineComponent","data","activeMenuEntry","entries","computed","visibleEntries","this","watch","$nextTick","_this$visibleEntries$","length","disabled","setNextMenuEntry","methods","disableMenuEntry","menuKey","state","index","findIndex","_ref","key","modulo","$refs","remainingEntries","setPreviousMenuEntry","handleToolbarNavigation","event","_this$$refs$remaining","_this$$refs$remaining2","focusButton","call","menuEntries","sort","a","b","_ref2","$vnode","_ref3","getLoggerBuilder","setApp","detectUser","build","findAttachment","store","getters","_session","WeakMap","_user","_shareToken","_currentDirectory","_documentId","_initAttachmentListPromise","_updateAttachmentList","WeakSet","_name","_davUrl","_relativePath","_filePath","AttachmentResolver","constructor","session","user","shareToken","currentDirectory","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","documentId","_classPrivateMethodGet","_updateAttachmentList2","attachment","fallback","arguments","undefined","directoryRegexp","match","imageFileName","decodeURIComponent","replace","split","_classPrivateFieldGet","startsWith","isDirectUrl","isImage","name","_name2","previewUrl","fullUrl","_davUrl2","val","dispatch","pop","uid","encoded","_filePath2","map","encodeURIComponent","join","generateRemoteUrl","concat","path","basename","dirname","generateUrl","token","_relativePath2","decodeURI","f","pathNormalize","ConnectionClosedError","Error","message","_len","rest","Array","_key","super","_options","_url","_url2","endpoint","_endpointUrl","_content","_closed","_documentState","_document","_lock","_readOnly","_options2","_defaultParams","_post","_url3","Connection","response","options","get","_get_defaultParams","set","lock","readOnly","content","documentState","isPublic","closed","docStateVersion","lastSavedVersion","documentSource","sync","version","_post2","_url4","id","filePath","baseVersionEtag","save","autosaveContent","force","manualSave","push","_ref4","steps","awareness","update","guestName","then","_ref5","uploadAttachment","file","formData","FormData","append","url","headers","insertAttachmentFile","sessionId","sessionToken","close","promise","setBaseVersionEtag","Promise","reject","axios","post","_baseUrl","open","put","forceRecreate","_syncService","_connection","_lastPoll","_fetchInterval","_fetchRetryCounter","_pollActive","_initialLoadingFinished","syncService","connection","connect","fetcher","console","error","setInterval","_fetchSteps","bind","addEventListener","visibilitychange","now","Date","debug","_handleResponse","_handleError","sessions","emit","_receiveSteps","checkIdle","disconnect","FETCH_INTERVAL_INVISIBLE","filter","s","lastContact","maximumRefetchTimer","increaseRefetchTimer","initialLoading","resetRefetchTimer","e","_this$fetchRetryCount","_this$fetchRetryCount2","code","status","type","ERROR_TYPE","SAVE_COLLISSION","outsideChange","LOAD_ERROR","SOURCE_NOT_FOUND","CONNECTION_FAILED","clearInterval","removeEventListener","Math","min","visibilityState","IDLE_TIMEOUT","COLLABORATOR_IDLE_TIME","COLLABORATOR_DISCONNECT_TIME","PUSH_FAILURE","_sendIntervalId","SyncService","serialize","getDocumentState","_bus","mitt","_api","SessionApi","stepClientIDs","lastStepPush","sending","autosave","debounce","_autosave","initialSession","catch","_emitError","backend","PollingBackend","startSync","syncUp","updateSession","sendSteps","getSendable","sendStepsNow","dirty","err","_response$data$docume","currentVersion","OC","Notification","showTemporary","cause","newSteps","floor","lastAwarenessMessage","step","clientId","i","singleSteps","isArray","forEach","clientID","_getContent","lastSavedVersionTime","clear","forceSave","_this$backend","_close","on","callback","off","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","webpackAsyncContext","req","__webpack_require__","o","ids","all","slice","t","keys","Object","exports","components","EditorContent","EditorOutline","mixins","useOutlineStateMixin","useOutlineActions","provide","defineProperties","props","String","required","htmlContent","renderHtml","showOutline","$outlineState","visible","updateContent","created","createEditor","setEditable","beforeDestroy","destroy","Editor","extensions","commands","setContent","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","class","attrs","_e","_v","Extension","create","addOptions","addStorage","started","onCreate","storage","onSelectionUpdate","editor","pos","selection","$anchor","sessionStorage","setItem","addCommands","autofocus","getItem","focus","encodeArrayBuffer","view","Uint8Array","toBase64","decodeArrayBuffer","fromBase64","createSyncServiceProvider","_disableBc","_window","ydoc","queue","disableBc","WebSocketPolyfill","_version","_handlers","_registerHandlers","_steps","_awareness","_sendRemainingSteps","_get_awareness","_get_steps","_defineProperty","_registerHandlers2","opened","_this$onopen","onopen","loaded","onmessage","send","_syncService$sendStep","outbox","ret","splice","includes","_sendRemainingSteps2","onclose","handlers","findLast","_syncService$sendStep2","initWebSocketPolyfill","window","_oc_debug","websocketProvider","WebsocketProvider","extensionHighlight","py","gyp","wsgi","htm","xhtml","erl","jsp","pl","rss","atom","xsl","plist","rb","builder","gemspec","podspec","thor","diff","hs","icl","php3","php4","php5","php6","sh","zsh","st","as","apacheconf","osacript","bf","clj","coffee","cson","iced","c","h","hh","jinja","bat","cmd","fs","hbs","sublime_metrics","sublime_session","js","mk","mak","md","mkdown","mkd","nginxconf","m","mm","ml","rs","sci","txt","vb","vbs","label","subline","icon","source","avatarUrl","getAvatarUrl","haveStatus","_this$status","_this$status2","size","AutoCompleteResult","style","backgroundImage","_s","SuggestionListWrapper","items","command","Function","onKeyDown","_this$$refs$suggestio","suggestionList","ref","scopedSlots","_u","fn","item","active","proxy","USERS_LIST_ENDPOINT_URL","params","createSuggestions","listComponent","MentionList","async","query","users","JSON","parse","stringify","result","_nodeAfter$text","_window$getSelection","range","emitMention","mention","nodeAfter","$to","text","to","chain","insertContentAt","run","getSelection","collapseToEnd","defaultExtensions","language","onUpdate","enableRichEditing","isEmbedded","RichText","configure","component","Mention","suggestion","MentionSuggestion","FocusTrap","PlainText","CodeBlockLowlight","lowlight","defaultLanguage","editorProps","scrollMargin","scrollThreshold","isRichEditor","addToHistory","html","markdownit","render","escapeHtml","tr","setMeta","setInitialYjsState","json","generateJSON","extensionManager","doc","Node","fromJSON","schema","baseUpdate","encodeStateAsUpdate","Doc","XmlFragment","prosemirrorToYXmlFragment","getBaseDoc","applyUpdate","$ydoc","NcButton","syncError","clicked","resolveThisVersion","resolveServerVersion","CollisionResolveDialog","Lock","NcNoteCard","idle","Boolean","require","hasConnectionIssue","hasSyncCollission","isLoadingError","hasWarning","reconnect","$emit","reload","location","timeout","displayName","isMobile","documentElement","clientWidth","beforeMount","$onResize","refreshMoment","mounted","$refreshInterval","NcSavingIndicatorIcon","SessionList","GuestNameDialog","lastSavedStatus","dirtyStateIndicator","hasUnsavedChanges","lastSavedStatusTooltip","lastSave","lastSavedString","saveStatusClass","currentSession","values","find","isCurrent","moment","fromNow","onClickSave","slot","userId","bodyStyles","getComputedStyle","body","colorPlaceholderDark","getPropertyValue","colorPlaceholderLight","count","Number","setup","textPlaceholderData","random","_l","suffix","gradientIndex","limitInRange","num","max","parseInt","FloatingMenu","ErrorIcon","CreationIcon","ClockOutline","CheckCircleIcon","DeleteIcon","TextBoxPlusOutlineIcon","PencilIcon","TextShort","FormatHeader1","Shuffle","TranslateVariant","ClipboardTextOutlineIcon","NcActions","NcActionButton","NcActionSeparator","NcListItem","NcModal","providers","OCP","InitialState","loadState","tasks","STATUS_FAILED","STATUS_RUNNING","STATUS_SCHEDULED","STATUS_SUCCESSFUL","STATUS_UNKNOWN","showTaskList","canTranslate","showAssistant","OCA","TPAssistant","openAssistantForm","identifier","badgeStateIcon","onSelection","fetchTasks","subscribe","checkNotification","unsubscribe","generateOcsUrl","taskMap","provider","task","ocs","title","notification","app","actions","textBetween","taskType","appId","input","isInsideViewer","closeOnResult","actionButtons","onClick","lastTask","insertResult","openTranslateDialog","trim","selectAll","openResult","_window$OCA","openAssistantResult","insertContent","output","copyResult","navigator","clipboard","writeText","showSuccess","showError","deleteTask","delete","taskIndex","$delete","floatingOptions","placement","getReferenceClientRect","editorRect","$parent","$el","querySelector","getBoundingClientRect","posToDOMRect","rightSpacing","addTopSpacing","width","height","innerHeight","top","left","right","bottom","floatingShow","$event","tag","click","stopPropagation","apply","detectLanguageEntry","NcSelect","NcLoadingIcon","NcTextArea","show","fromLanguage","toLanguage","languages","canDetect","loading","disableFromLanguageSelect","fromLanguages","Set","has","add","fromLabel","toLanguages","l","toLabel","autosize","translate","_this$fromLanguage$id","_this$fromLanguage","contentInsert","contentReplace","overflowY","scrollHeight","onInputFocus","model","$$v","expression","SkeletonLoading","DocumentStatus","Wrapper","MainContainer","ReadonlyBar","ContentContainer","MenuBar","Reader","Status","Assistant","Translate","fileData","isRichWorkspace","richWorkspace","mime","hideMenu","isDirectEditing","showOutlineOutside","filteredSessions","contentLoaded","hasEditor","menubarLoaded","draggedOver","contentWrapper","translateModal","translateContent","mapState","showAuthorAnnotations","hasDocumentParameters","getElementById","fileExtension","displayed","displayedStatus","showLoadingSkeleton","renderRichEditorMenus","renderMenus","imagePath","initSession","preparePrinting","onAddImageNode","onDeleteImageNode","useResizeObserver","entry","contentRect","maxWidth","setProperty","showTranslateModal","$queue","$providers","setTimeout","any","p","_this$$syncService","localStorage","createMarkdownSerializer","textContent","Y","listenSyncServiceEvents","syncServiceProvider","listenEditorEvents","onFocus","onBlur","unlistenEditorEvents","onOpened","onChange","onLoaded","onSync","onError","onStateChange","onIdle","onSave","unlistenSyncServiceEvents","updateSessions","currentUpdatedSession","currentSessionIds","currentGuestIds","guestId","removedSessions","Vue","sessionKey","getCurrentUser","origin","applyDocumentState","updateMessage","encodedBaseUpdate","baseStateVector","docStateVector","other","arr","every","encoder","encoding","messageSync","syncProtocol","getUpdateMessage","list","hljs","listLanguages","syntax","registerLanguage","loadSyntaxHighlight","proseMirrorMarkdown","markdown","Autofocus","Collaboration","CollaborationCursor","color","_ref6","_ref7","_this$$editor","prototype","hasOwnProperty","can","undo","redo","fileid","imageUrl","_this$$parent","display","debugContent","markdownItHtml","getHTML","outlineToggled","shiftKey","ctrlKey","metaKey","isActive","preventDefault","hideTranslate","translateInsert","_ref8","translateReplace","_ref9","_t","directives","rawName","getDir","ACTION_ATTACHMENT_PROMPT","showAttachmentPrompt","ACTION_CHOOSE_LOCAL_ATTACHMENT","chooseLocalFile","STATE_UPLOADING","lastFilePath","isUploadingAttachments","initialFilePath","_this$lastFilePath","_this$$file$relativeP","_this$$file","setDraggedOver","onPaste","uploadAttachmentFiles","detail","files","onEditorDrop","position","onAttachmentUploadFilePicked","target","attachmentFileInput","uploadPromises","uploadAttachmentFile","_error$response","_response$data","_response$data2","_response$data3","insertAttachment","_error$response2","dialogs","filepicker","insertFromPath","_response$data4","_response$data5","_response$data6","_response$data7","mimetype","_error$response3","mimeType","charCodeAt","toString","toUpperCase","alt","replaceAll","setImage","empty","scrollIntoView","MediaHandler","_this$$attachmentReso","emits","_this$relativePath","updated","History","useStore","OUTLINE_STATE","outline","OUTLINE_ACTIONS","toggle","outlineToggle","enable","viewWidth","isAbleToShowOutline","$watch","assign","NextcloudVueNcActionButton","extends","BaseActionEntry","updateState","runAction","actionEntry","_actionEntry$action","action","_g","keyshortcuts","$listeners","ActionListItem","useMenuIDMixin","forceEnabled","hasEnabledChild","currentChild","children","child","getIsActive","iconKey","activeKey","_this$currentChild","labelWithSelected","menuItemName","selectedSubMenuItemName","isEnabled","$_updateState","checkStateOfChildren","onOpenChange","onTrigger","some","isChildEnabled","isSeparator","getActionState","_b","tooltip","menuIDSelector","_vm$currentChild","isItem","forceLabel","Help","_setupProxy","AlphabeticalVariant","NcActionText","wordCount","charCount","countString","n","refresh","characterCount","words","characters","NcDialog","formatted","bold","italic","strikethrough","heading1","heading6","unorderdList","orderedList","checkList","blockQuote","codeBlock","isFormatted","isMobileCached","isMobilePlatform","toggleFormatted","_navigator","userAgentData","mobile","regex","userAgent","ActionFormattingHelp","ActionList","ActionSingle","HelpModal","CharacterCount","ToolBarLogic","MENU_ID","randomID","isHidden","actionsFullEntries","ceil","displayHelp","isReady","resize","iconsLimit","priority","hiddenEntries","reduce","acc","_entry$children","separatorBefore","at","separatorAfter","DotsHorizontal","menubar","onResize","_this$resize","stop","spaceToFill","spacePerSlot","slots","showHelp","hideHelp","showTranslate","selectedText","indexOf","_k","keyCode","button","refInFor","BaseReader","CodeBlock","PlainTextReader","RichTextReader","editing","click-link","log","observable","messages","mtime","callMobileMessage","messageName","attributes","MessageName","Values","attributesString","DirectEditingMobileInterface","webkit","messageHandlers","postMessage","initial","saving","setAttribute","$destroy","share"],"sourceRoot":""} |