Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2020-03-16 23:04:27 +0300
committerJulius Härtl <jus@bitgrid.net>2020-03-25 23:38:26 +0300
commit7cb70383c51accd088460cb5b3485e52d0e3bc0f (patch)
tree7fba224af8d2b323b5043fdbe4a0519c019a369c /js/editor-rich.js.map
parentba44d7b587af90d7335d341b55c44938e273fb24 (diff)
Do not show workspace placeholder on folders without create permissions
The workspace placeholder is shown if there is no "Readme.md" file in the folder and invites the user to add some text, which (tries to) create the "Readme.md" file. Therefore, if the user does not have create permissions on the folder the placeholder should not be shown. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'js/editor-rich.js.map')
-rw-r--r--js/editor-rich.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/editor-rich.js.map b/js/editor-rich.js.map
index 24a2de1a3..9bdab81a5 100644
--- a/js/editor-rich.js.map
+++ b/js/editor-rich.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./src/helpers/mime.js","webpack:///./src/views/RichWorkspace.vue?1cb7","webpack:///./src/views/RichWorkspace.vue?bc1f","webpack:///./src/views/RichWorkspace.vue?56c0","webpack:///src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?d0bc","webpack:///./src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?0511","webpack:///./src/helpers/files.js","webpack:///./src/components/MenuBar.vue?c461","webpack:///./src/components/MenuBubble.vue?72b9","webpack:///./src/components/MenuBar.vue?92be","webpack:///./src/components/MenuBar.vue?4994","webpack:///./src/components/MenuBubble.vue?f5d6","webpack:///./src/components/MenuBubble.vue?cdbd","webpack:///./src/components/MenuBar.vue?08b0","webpack:///./src/mixins/menubar.js","webpack:///src/components/MenuBar.vue","webpack:///./src/components/MenuBar.vue?c014","webpack:///./src/components/MenuBar.vue","webpack:///./src/components/MenuBubble.vue?c3b0","webpack:///./src/components/MenuBubble.vue?7a05","webpack:///src/components/MenuBubble.vue","webpack:///./src/components/MenuBubble.vue"],"names":["openMimetypesMarkdown","openMimetypesPlainText","openMimetypes","exports","___CSS_LOADER_API_IMPORT___","push","module","i","content","locals","add","default","_vm","this","_h","$createElement","_c","_self","class","loaded","ready","focus","darkTheme","attrs","file","autofocus","staticClass","on","createNew","_v","_s","t","_e","directives","name","rawName","value","expression","key","id","path","shareToken","mimetype","$event","unfocus","reset","fetchFileInfo","user","axios","method","url","generateRemoteUrl","headers","requesttoken","OC","requestToken","data","response","files","OCA","Files","App","fileList","filesClient","_client","parseMultiStatus","map","fileInfo","_parseFileInfo","href","registerFileCreate","newFileMenuPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","createFile","then","status","fileInfoModel","FileInfoModel","Viewer","fileActions","triggerAction","Plugins","register","registerFileActionFallback","sharingToken","document","getElementById","dir","ViewerRoot","createElement","body","appendChild","registerAction","mime","PERMISSION_UPDATE","PERMISSION_READ","imagePath","filename","window","FileList","findFile","Promise","all","imports","getCurrentDirectory","Vue","prototype","n","Editor","render","h","props","fileId","active","relativePath","mimeType","$mount","length","setDefault","FilesWorkspacePlugin","el","registerHeader","bind","priority","vm","extend","RichWorkspace","propsData","$el","toString","label","isActive","action","command","undo","redo","strong","em","strike","paragraph","visible","children","heading","level","bullet_list","bullet_list_item","ordered_list","todo_item","blockquote","code_block","component","editor","scopedSlots","_u","fn","ref","commands","focused","autohide","_l","icon","$index","iconCount","getIconClasses","clickIcon","hideChildMenu","childIconClass","preventDefault","toggleChildMenu","open","isChildMenuVisible","childPopoverMenu","isHiddenInMenu","_t","hideLinkMenu","getMarkAttrs","style","setLinkUrl","link","linkUrl","domProps","type","indexOf","_k","keyCode","target","composing","showLinkMenu"],"mappings":"mGAAA;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAMA,EAAwB,CAC7B,iBAGKC,EAAyB,CAC9B,aACA,kBACA,sBACA,8BACA,uBACA,yBACA,mBACA,qBACA,oBACA,oBACA,kBACA,mBACA,WACA,WACA,YACA,WACA,gBACA,WACA,qBACA,cACA,gBACA,sBAGKC,EAAgB,GAAH,OAAOF,EAA0BC,I,iCCnDpD,mBAAuU,G,qBCEvUE,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,0nEAA2nE,KAEppED,EAAOH,QAAUA,G,mBCHjB,IAAIK,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,8UC4C5C,4CACA,uECrD6L,EDuD7L,CACA,qBACA,YACA,mHAEA,OACA,MACA,YACA,cAGA,KAXA,WAYA,OACA,SACA,YACA,UACA,UACA,SACA,aACA,8DACA,wCAGA,UACA,WADA,WAEA,oGAGA,OACA,gBACA,oBAEA,kBACA,GACA,kDAIA,QAtCA,WAsCA,I,EAAA,c,EAAA,sHACA,WACA,gBAEA,0DACA,aACA,mBAEA,0DACA,gBATA,0C,kLAYA,SACA,QADA,aAIA,MAJA,WAIA,WACA,eACA,cACA,2BACA,cACA,oBAGA,YAZA,WAYA,WACA,eACA,kBACA,cACA,uBACA,IACA,8BAEA,wCACA,sBACA,wBACA,cACA,aACA,eACA,mBACA,+BACA,wBACA,YACA,YACA,WACA,kBAGA,UAnCA,WAmCA,WACA,gBAGA,iBACA,qFACA,gBACA,sB,iBEhIe,EAXC,YACd,GCTW,WAAa,IAAII,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,MAAM,CAACE,MAAM,CAAC,gBAAiBN,EAAIO,SAAWP,EAAIQ,MAAO,MAASR,EAAIS,MAAO,KAAQT,EAAIU,WAAYC,MAAM,CAAC,GAAK,mBAAmB,EAAGX,EAAIY,MAASZ,EAAIa,YAAcb,EAAIQ,MAAQJ,EAAG,MAAM,CAACU,YAAY,kBAAkBC,GAAG,CAAC,MAAQf,EAAIgB,YAAY,CAACZ,EAAG,IAAI,CAACU,YAAY,eAAe,CAACd,EAAIiB,GAAG,WAAWjB,EAAIkB,GAAGlB,EAAImB,EAAE,OAAQ,gCAAgC,cAAcnB,EAAIoB,KAAKpB,EAAIiB,GAAG,KAAMjB,EAAQ,KAAEI,EAAG,gBAAgB,CAACiB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOxB,EAAS,MAAEyB,WAAW,UAAUC,IAAI1B,EAAIY,KAAKe,GAAGhB,MAAM,CAAC,UAAUX,EAAIY,KAAKe,GAAG,gBAAgB3B,EAAIY,KAAKgB,KAAK,cAAc5B,EAAI6B,WAAW,QAAS,EAAK,UAAW,EAAK,KAAO7B,EAAIY,KAAKkB,SAAS,UAAY9B,EAAIa,WAAWE,GAAG,CAAC,MAAQ,SAASgB,GAAQ/B,EAAIQ,OAAM,GAAM,MAAQ,SAASuB,GAAQ/B,EAAIS,OAAM,GAAM,KAAOT,EAAIgC,QAAQ,MAAQhC,EAAIiC,SAASjC,EAAIoB,MAAM,GAAGpB,EAAIoB,OACz5B,IDWpB,EACA,KACA,WACA,M;;;;;;;;;;;;;;;;;;;;;;AEgBF,IAEMc,EAAa,e,EAAA,G,EAAA,yBAAG,WAAeC,EAAMP,GAArB,wGACEQ,IAAM,CAC5BC,OAAQ,WACRC,IAAKC,4BAAkB,aAAD,OAAcJ,GAAd,OAAqBP,IAC3CY,QAAS,CACRC,aAAcC,GAAGC,aACjB,eAAgB,YAEjBC,KAAM,woBARc,cACfC,EADe,OAiCfC,EAAQC,IAAIC,MAAMC,IAAIC,SAASC,YAAYC,QAAQC,iBAAiBR,EAASD,MAjC9D,kBAkCdE,EAAMQ,KAAI,SAAA1C,GAChB,IAAM2C,EAAWR,IAAIC,MAAMC,IAAIC,SAASC,YAAYK,eAAe5C,GAEnE,OADA2C,EAASE,KAAO7C,EAAK6C,KACdF,MArCa,0C,+KAAH,wDAyCbG,EAAqB,WAC1B,IAAMC,EAAoB,CACzBC,OAAQ,SAASC,GAChB,IAAMX,EAAWW,EAAKX,SAGF,UAAhBA,EAASvB,IAAkC,iBAAhBuB,EAASvB,IAKxCkC,EAAKC,aAAa,CACjBnC,GAAI,OACJoC,YAAa5C,EAAE,OAAQ,qBACvB6C,aAAc7C,EAAE,OAAQ,qBAAuB,MAC/C8C,UAAW,qBACXC,SAAU,OACVC,cAAe,SAAS7C,GACvB4B,EAASkB,WAAW9C,GAAM+C,MAAK,SAASC,EAAQ1B,GAC/C,IAAM2B,EAAgB,IAAIxB,IAAIC,MAAMwB,cAAc5B,QACxB,IAAfG,IAAI0B,OACd1B,IAAIC,MAAM0B,YAAYC,cAAc,OAAQJ,EAAerB,QAC3B,IAAfH,IAAI0B,QACrB1B,IAAIC,MAAM0B,YAAYC,cAlEE,qBAkEoCJ,EAAerB,WAOjFR,GAAGkC,QAAQC,SAAS,wBAAyBlB,IAGxCmB,EAA6B,WAClC,IAAMC,EAAeC,SAASC,eAAe,gBAAkBD,SAASC,eAAe,gBAAgBzD,MAAQ,KACzG0D,EAAMF,SAASC,eAAe,OAAOzD,MAE3C,IAAKuD,GAAwB,KAARG,EAAY,CAChC,IAAMC,EAAaH,SAASI,cAAc,OAC1CD,EAAWxD,GAAK,uBAChBqD,SAASK,KAAKC,YAAYH,GAmC1B,IAlCA,IAAMI,EAAiB,SAACC,GAAD,OAAUzC,IAAIC,MAAM0B,YAAYG,SACtDW,EArF4B,qBAuF5B9C,GAAG+C,kBAAoB/C,GAAGgD,gBAC1BhD,GAAGiD,UAAU,OAAQ,mBACrB,SAACC,GACA,IAAMhF,EAAOiF,OAAOC,SAASC,SAASH,GACtCI,QAAQC,IAAI,CACX,6BACA,iFACE5B,MAAK,SAAC6B,GACR,IAAMtE,EAAOiE,OAAOC,SAASK,sBAAwB,IAAMP,EACrDQ,EAAMF,EAAQ,GAAGnG,QACvBqG,EAAIC,UAAUlF,EAAI0E,OAAO1E,EACzBiF,EAAIC,UAAUC,EAAIT,OAAOS,EACzBF,EAAIC,UAAUtD,IAAM8C,OAAO9C,IAC3B,IAAMwD,EAASL,EAAQ,GAAGnG,QACf,IAAIqG,EAAI,CAClBI,OAAQ,SAAAC,GAAC,OAAIA,EAAEF,EAAQ,CACtBG,MAAO,CACNC,OAAQ/F,EAAOA,EAAKe,GAAK,KACzBiF,QAAQ,EACR/E,WAAYkD,EACZ8B,aAAcjF,EACdkF,SAAUlG,EAAKkB,eAIfiF,OAAO5B,QAGZhE,EAAE,OAAQ,UAGFxB,EAAI,EAAGA,EAAIL,IAAc0H,OAAQrH,IACzC4F,EAAejG,IAAcK,IAC7BoD,IAAIC,MAAM0B,YAAYuC,WAAW3H,IAAcK,GAxHnB,wBA8HzBuH,EAAuB,CAE5BC,GAAI,KAEJvD,OAAQ,SAASV,GACI,UAAhBA,EAASvB,IAAkC,iBAAhBuB,EAASvB,KAIxC1B,KAAKkH,GAAKnC,SAASI,cAAc,OACjClC,EAASkE,eAAe,CACvBzF,GAAI,YACJwF,GAAIlH,KAAKkH,GACTX,OAAQvG,KAAKuG,OAAOa,KAAKpH,MACzBqH,SAAU,OAIZd,OAAQ,SAAStD,GAAU,WACN,UAAhBA,EAASvB,IAAkC,iBAAhBuB,EAASvB,IAIxC,6BAAc0C,MAAK,SAAC3E,GACnB,IAAM0G,EAAM1G,EAAOK,QACnB,EAAKoH,GAAGxF,GAAK,0BACbyE,EAAIC,UAAUlF,EAAI0E,OAAO1E,EACzBiF,EAAIC,UAAUC,EAAIT,OAAOS,EACzBF,EAAIC,UAAUtD,IAAM8C,OAAO9C,IAC3B,IACMwE,EAAK,IADEnB,EAAIoB,OAAOC,GACb,CAAS,CACnBC,UAAW,CACV9F,KAAMsB,EAASiD,yBAEdY,OAAO,EAAKI,IAEfjE,EAASyE,IAAI5G,GAAG,mBAAmB,SAAA6B,GAClC2E,EAAG3F,KAAOgB,EAAKsC,IAAI0C,oB,oBC/LvB,IAAIhI,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,oBCL5C,IAAIA,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,iCCR5C,oBAA6W,G,qBCE7WL,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,y1CAA01C,KAEn3CD,EAAOH,QAAUA,G,iCCNjB,oBAAgX,G,qBCEhXA,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,q2BAAs2B,KAE/3BD,EAAOH,QAAUA,G,wCCNjB,I,2BCsBe,GACd,CACCsI,MAAO1G,EAAE,OAAQ,QACjBb,MAAO,YACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GAAD,OAAaA,EAAQC,SAE9B,CACCJ,MAAO1G,EAAE,OAAQ,QACjBb,MAAO,YACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GAAD,OAAaA,EAAQE,SAE9B,CACCL,MAAO1G,EAAE,OAAQ,QACjBb,MAAO,YACPwH,SAAU,SAACA,GAAD,OAAcA,EAASK,UACjCJ,OAAQ,SAACC,GACR,OAAOA,EAAQG,WAGjB,CACCN,MAAO1G,EAAE,OAAQ,UACjBb,MAAO,cACPwH,SAAU,SAACA,GAAD,OAAcA,EAASM,MACjCL,OAAQ,SAACC,GACR,OAAOA,EAAQI,OAGjB,CACCP,MAAO1G,EAAE,OAAQ,iBACjBb,MAAO,cACPwH,SAAU,SAACA,GAAD,OAAcA,EAASO,UACjCN,OAAQ,SAACC,GACR,OAAOA,EAAQK,WAGjB,CACCR,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,iBACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GACR,OAAOA,EAAQM,cAGjB,CACCT,MAAO1G,EAAE,OAAQ,YACjBoH,SAAS,EACTC,SAAU,CACT,CACCX,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,QAKpC,CACCb,MAAO1G,EAAE,OAAQ,kBACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASa,eACjCZ,OAAQ,SAACC,GACR,OAAOA,EAAQY,qBAGjB,CACCf,MAAO1G,EAAE,OAAQ,gBACjBb,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASe,gBACjCd,OAAQ,SAACC,GACR,OAAOA,EAAQa,iBAGjB,CACChB,MAAO1G,EAAE,OAAQ,aACjBb,MAAO,iBACPwH,SAAU,SAACA,GAAD,OAAc,GACxBC,OAAQ,SAACC,GAAD,OAAaA,EAAQc,cAE9B,CACCjB,MAAO1G,EAAE,OAAQ,cACjBb,MAAO,aACPwH,SAAU,SAACA,GAAD,OAAcA,EAASiB,cACjChB,OAAQ,SAACC,GACR,OAAOA,EAAQe,eAGjB,CACClB,MAAO1G,EAAE,OAAQ,cACjBb,MAAO,YACPwH,SAAU,SAACA,GAAD,OAAcA,EAASkB,cACjCjB,OAAQ,SAACC,GACR,OAAOA,EAAQgB,gB,25BCxElB,ICpFuL,EDoFvL,CACA,eACA,YACA,kBACA,iBACA,gBACA,aAEA,YACA,YACA,kBAEA,OACA,QACA,YACA,YACA,cAEA,cACA,aACA,YAEA,UACA,aACA,YAEA,UACA,aACA,aAGA,gBACA,OACA,cACA,eACA,iBACA,qBACA,aAGA,UACA,eADA,WACA,WACA,6CAEA,eAJA,WAKA,qBACA,OACA,2BAGA,OADA,cACA,IAGA,mBAbA,WAaA,WACA,mBACA,oFAGA,SAlBA,WAkBA,WACA,qBACA,WAEA,0BACA,+BACA,mBACA,sBAEA,mBACA,gCAIA,iBAhCA,WAgCA,WACA,yBACA,SADA,WAEA,GACA,QACA,gBACA,gBACA,kBACA,eACA,oBAEA,2BARA,oBAWA,WAGA,eAjDA,WAkDA,qBACA,gBACA,WACA,iBACA,eAGA,kBAGA,UA5DA,WA6DA,oBACA,iBACA,gGACA,iCACA,WAGA,QA5GA,WA4GA,WACA,sDACA,2CACA,qDACA,mBACA,kBAEA,oBACA,iCAEA,MAEA,cAxHA,WAyHA,0DAEA,SACA,cADA,WACA,WACA,2BACA,mBACA,uBAGA,UAPA,SAOA,KACA,oBAEA,eAVA,SAUA,GACA,uDAEA,gBAbA,SAaA,GACA,yDAEA,cAhBA,SAgBA,GACA,8CAEA,gBAnBA,SAmBA,GACA,wFACA,8CAEA,gBAvBA,SAuBA,GACA,0BACA,MAGA,QACA,qDACA,uCACA,WACA,iBACA,sFACA,6BAGA,GACA,oBACA,wBACA,aAEA,qBACA,IACA,gIAEA,GACA,MACA,mBAGA,a,iBE1PIC,EAAY,YACd,GJTW,WAAa,IAAIjJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,gBAAgB,CAACO,MAAM,CAAC,OAASX,EAAIkJ,QAAQC,YAAYnJ,EAAIoJ,GAAG,CAAC,CAAC1H,IAAI,UAAU2H,GAAG,SAASC,GAC/L,IAAIC,EAAWD,EAAIC,SACfzB,EAAWwB,EAAIxB,SACf0B,EAAUF,EAAIE,QAClB,MAAO,CAACpJ,EAAG,MAAM,CAACU,YAAY,UAAUR,MAAM,CAAE,aAAckJ,EAAS,SAAYxJ,EAAIyJ,WAAY,CAAEzJ,EAAgB,aAAEI,EAAG,MAAM,CAACkJ,IAAI,UAAUxI,YAAY,iBAAiB,CAACd,EAAI0J,GAAI1J,EAAY,UAAE,SAAS2J,EAAKC,GAAQ,MAAO,CAAED,EAAU,MAAEvJ,EAAG,SAAS,CAACiB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOoI,EAAS5J,EAAI6J,UAAWpI,WAAW,uBAAuBC,IAAIiI,EAAK9B,MAAMvH,MAAMN,EAAI8J,eAAehC,EAAU6B,GAAMhJ,MAAM,CAAC,MAAQgJ,EAAK9B,OAAO9G,GAAG,CAAC,MAAQ,SAASgB,GAAQ,OAAO/B,EAAI+J,UAAUR,EAAUI,OAAU,CAACvJ,EAAG,MAAM,CAACiB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOoI,EAAS5J,EAAI6J,YAAcF,EAAKrJ,MAAOmB,WAAW,qCAAqC,CAACH,KAAK,gBAAgBC,QAAQ,kBAAkBC,MAAM,WAAe,OAAOxB,EAAIgK,cAAcL,IAAUlI,WAAW,8BAA8BC,IAAIiI,EAAK9B,MAAM/G,YAAY,WAAW,CAACV,EAAG,SAAS,CAACE,MAAMN,EAAIiK,eAAenC,EAAU6B,EAAKnB,UAAW7H,MAAM,CAAC,MAAQgJ,EAAK9B,OAAO9G,GAAG,CAAC,MAAQ,SAASgB,GAAgC,OAAxBA,EAAOmI,iBAAwBlK,EAAImK,gBAAgBR,OAAU3J,EAAIiB,GAAG,KAAKb,EAAG,MAAM,CAACU,YAAY,0BAA0BR,MAAM,CAAC8J,KAAMpK,EAAIqK,mBAAmBV,KAAQ,CAACvJ,EAAG,cAAc,CAACO,MAAM,CAAC,KAAOX,EAAIsK,iBAAiBxC,EAAUyB,EAAUI,EAAKnB,SAAUmB,OAAU,UAAS3J,EAAIiB,GAAG,KAAKb,EAAG,UAAU,CAACJ,EAAI0J,GAAI1J,EAAY,UAAE,SAAS2J,EAAKC,GAAQ,MAAO,CAAED,EAAKrJ,OAASN,EAAIuK,eAAeX,GAASxJ,EAAG,eAAe,CAACsB,IAAIiI,EAAKrJ,MAAMK,MAAM,CAAC,KAAOgJ,EAAKrJ,OAAOS,GAAG,CAAC,MAAQ,SAASgB,GAAQ,OAAO/B,EAAI+J,UAAUR,EAAUI,MAAS,CAAC3J,EAAIiB,GAAG,iBAAiBjB,EAAIkB,GAAGyI,EAAK9B,OAAO,kBAAkB7H,EAAIoB,UAAS,IAAI,GAAGpB,EAAIoB,KAAKpB,EAAIiB,GAAG,KAAKjB,EAAIwK,GAAG,UAAU,CAACxK,EAAIiB,GAAG,8BAA8B,OAAO,MAAK,OACjmD,IIOpB,EACA,KACA,WACA,MAIa,UAAAgI,E,iDCnBf,I,2BCA0L,ECuD1L,CACA,kBACA,YACA,sBAEA,YACA,aAEA,OACA,QACA,YACA,YACA,eAGA,gBACA,OACA,aACA,sBAGA,SACA,aADA,SACA,cACA,oBACA,yBACA,2BACA,8BAGA,aARA,WASA,kBACA,0BAGA,WAbA,SAaA,MACA,gDACA,gBAEA,YACA,uB,iBCtFIA,EAAY,YACd,GHTW,WAAa,IAAIjJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,mBAAmB,CAACU,YAAY,aAAaH,MAAM,CAAC,OAASX,EAAIkJ,QAAQnI,GAAG,CAAC,KAAOf,EAAIyK,cAActB,YAAYnJ,EAAIoJ,GAAG,CAAC,CAAC1H,IAAI,UAAU2H,GAAG,SAASC,GACxP,IAAIC,EAAWD,EAAIC,SACfzB,EAAWwB,EAAIxB,SACf4C,EAAepB,EAAIoB,aACnB7G,EAAOyF,EAAIzF,KACf,MAAO,CAACzD,EAAG,MAAM,CAACU,YAAY,aAAaR,MAAM,CAAE,YAAauD,EAAKiE,UAAW6C,MAAQ,SAAY9G,EAAS,KAAI,eAAkBA,EAAW,OAAI,OAAS,CAAE7D,EAAoB,iBAAEI,EAAG,OAAO,CAACU,YAAY,mBAAmBC,GAAG,CAAC,OAAS,SAASgB,GAAgC,OAAxBA,EAAOmI,iBAAwBlK,EAAI4K,WAAWrB,EAASsB,KAAM7K,EAAI8K,YAAY,CAAC1K,EAAG,QAAQ,CAACiB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOxB,EAAW,QAAEyB,WAAW,YAAY6H,IAAI,YAAYxI,YAAY,oBAAoBH,MAAM,CAAC,KAAO,OAAO,YAAc,YAAYoK,SAAS,CAAC,MAAS/K,EAAW,SAAGe,GAAG,CAAC,QAAU,SAASgB,GAAQ,OAAIA,EAAOiJ,KAAKC,QAAQ,QAAQjL,EAAIkL,GAAGnJ,EAAOoJ,QAAQ,MAAM,GAAGpJ,EAAOL,IAAI,CAAC,MAAM,WAAoB,KAAc1B,EAAIyK,aAAa1I,IAAS,MAAQ,SAASA,GAAWA,EAAOqJ,OAAOC,YAAqBrL,EAAI8K,QAAQ/I,EAAOqJ,OAAO5J,WAAUxB,EAAIiB,GAAG,KAAKb,EAAG,SAAS,CAACU,YAAY,kCAAkCH,MAAM,CAAC,KAAO,UAAUI,GAAG,CAAC,MAAQ,SAASgB,GAAQ,OAAO/B,EAAI4K,WAAWrB,EAASsB,KAAM7K,EAAI8K,eAAe,CAAC1K,EAAG,SAAS,CAACU,YAAY,qBAAqBR,MAAM,CAAE,YAAawH,EAAS+C,QAAS9J,GAAG,CAAC,MAAQ,SAASgB,GAAQ/B,EAAIsL,aAAaZ,EAAa,YAAY,CAACtK,EAAG,OAAO,CAACiB,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAYC,MAAOsG,EAAS+C,OAAS,cAAgB,WAAYpJ,WAAW,iDAAiDX,YAAY,cAAcd,EAAIiB,GAAG,KAAKb,EAAG,OAAO,CAACU,YAAY,0BAA0B,CAACd,EAAIiB,GAAGjB,EAAIkB,GAAGlB,EAAImB,EAAE,OAAQ,oBAAoB,YAC36C,IGMpB,EACA,KACA,WACA,MAIa,UAAA8H,E","file":"editor-rich.js?v=69c8b65cd62aab40d599","sourcesContent":["/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/epub+zip',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/css',\n\t'text/csv',\n\t'text/html',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=39bb0090&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=39bb0090&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n#rich-workspace[data-v-39bb0090] {\\n\\tpadding: 0 60px;\\n\\tmin-height: 90px;\\n\\t/* Slightly reduce vertical space */\\n\\tmargin-bottom: -24px;\\n\\ttext-align: left;\\n\\tmax-height: 0;\\n\\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\\n}\\n\\n/* For subfolders, where there are no Recommendations */\\n#rich-workspace[data-v-39bb0090]:only-child {\\n\\tmargin-bottom: 0;\\n}\\n.empty-workspace[data-v-39bb0090] {\\n\\tpadding-top: 43px;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: 0;\\n}\\n#rich-workspace[data-v-39bb0090] div[contenteditable=false] {\\n\\twidth: 100%;\\n\\tpadding: 0px;\\n\\tbackground-color: var(--color-main-background);\\n\\topacity: 1;\\n\\tborder: none;\\n}\\n#rich-workspace[data-v-39bb0090] #editor-container {\\n\\theight: 100%;\\n\\tposition: unset !important;\\n}\\n#rich-workspace[data-v-39bb0090] #editor-wrapper {\\n\\tposition: unset !important;\\n\\toverflow: visible;\\n}\\n#rich-workspace[data-v-39bb0090] #editor {\\n\\toverflow: scroll !important;\\n\\tmax-height: 50vh;\\n}\\n#rich-workspace[data-v-39bb0090] #editor-wrapper .ProseMirror {\\n\\tpadding: 0px;\\n\\tmargin: 0;\\n}\\n#rich-workspace[data-v-39bb0090] .menubar {\\n\\tz-index: 50;\\n\\t/* Slightly reduce vertical space */\\n\\tmargin-bottom: -10px;\\n}\\n#rich-workspace[data-v-39bb0090] .menubar .menubar-icons {\\n\\tmargin-left: 0;\\n}\\n#rich-workspace[data-v-39bb0090] .editor__content {\\n\\tmargin: 0;\\n}\\n#rich-workspace.focus[data-v-39bb0090] {\\n\\tmax-height: 50vh;\\n}\\n#rich-workspace[data-v-39bb0090]:not(.focus) {\\n\\tmax-height: 30vh;\\n\\tposition: relative;\\n\\toverflow: hidden;\\n}\\n#rich-workspace[data-v-39bb0090]:not(.focus):not(.icon-loading):after {\\n\\tcontent: '';\\n\\tposition: absolute;\\n\\tz-index: 1;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tpointer-events: none;\\n\\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\\n\\twidth: 100%;\\n\\theight: 4em;\\n}\\n#rich-workspace.dark[data-v-39bb0090]:not(.focus):not(.icon-loading):after {\\n\\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\\n}\\n@media only screen and (max-width: 1024px) {\\n#rich-workspace[data-v-39bb0090]:not(.focus) {\\n\\t\\tmax-height: 30vh;\\n}\\n}\\n\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=39bb0090&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"646fd451\", content, true, {});","<!--\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 v-if=\"enabled\" id=\"rich-workspace\" :class=\"{'icon-loading': !loaded || !ready, 'focus': focus, 'dark': darkTheme }\">\n\t\t<div v-if=\"!file || (autofocus && !ready)\" class=\"empty-workspace\" @click=\"createNew\">\n\t\t\t<p class=\"placeholder\">\n\t\t\t\t{{ t('text', 'Add notes, lists or links …') }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<EditorWrapper v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.id\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:active=\"true\"\n\t\t\t:autohide=\"true\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"focus=true\"\n\t\t\t@blur=\"unfocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe } from '@nextcloud/event-bus'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : ''), 2) + 'workspace'\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./../components/EditorWrapper'),\n\t},\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\t\t},\n\t},\n\twatch: {\n\t\tpath: function() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus: function(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#editor').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.enabled) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', () => {\n\t\t\tthis.enabled = true\n\t\t\tthis.getFileInfo()\n\t\t})\n\t\tsubscribe('Text::hideRichWorkspace', () => {\n\t\t\tthis.enabled = false\n\t\t})\n\t},\n\tmethods: {\n\t\tunfocus() {\n\t\t\t// setTimeout(() => this.focus = false, 2000)\n\t\t},\n\t\treset() {\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo() {\n\t\t\tthis.loaded = false\n\t\t\tthis.autofocus = false\n\t\t\tthis.ready = false\n\t\t\tconst params = { path: this.path }\n\t\t\tif (IS_PUBLIC) {\n\t\t\t\tparams.shareToken = this.shareToken\n\t\t\t}\n\t\t\taxios.get(WORKSPACE_URL, { params }).then((response) => {\n\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = data.file\n\t\t\t\tthis.editing = true\n\t\t\t\tthis.loaded = true\n\t\t\t}).catch((error) => {\n\t\t\t\tconst data = error.response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = null\n\t\t\t\tthis.loaded = true\n\t\t\t\tthis.ready = true\n\t\t\t\tthis.creating = false\n\t\t\t})\n\t\t},\n\t\tcreateNew() {\n\t\t\tif (this.creating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.creating = true\n\t\t\twindow.FileList.createFile('Readme.md', { scrollTo: false, animate: false }).then((status, data) => {\n\t\t\t\tthis.getFileInfo()\n\t\t\t\tthis.autofocus = true\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t#rich-workspace {\n\t\tpadding: 0 60px;\n\t\tmin-height: 90px;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -24px;\n\t\ttext-align: left;\n\t\tmax-height: 0;\n\t\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n\t}\n\n\t/* For subfolders, where there are no Recommendations */\n\t#rich-workspace:only-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t.empty-workspace {\n\t\tpadding-top: 43px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\theight: 0;\n\t}\n\n\t#rich-workspace::v-deep div[contenteditable=false] {\n\t\twidth: 100%;\n\t\tpadding: 0px;\n\t\tbackground-color: var(--color-main-background);\n\t\topacity: 1;\n\t\tborder: none;\n\t}\n\n\t#rich-workspace::v-deep #editor-container {\n\t\theight: 100%;\n\t\tposition: unset !important;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper {\n\t\tposition: unset !important;\n\t\toverflow: visible;\n\t}\n\n\t#rich-workspace::v-deep #editor {\n\t\toverflow: scroll !important;\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper .ProseMirror {\n\t\tpadding: 0px;\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace::v-deep .menubar {\n\t\tz-index: 50;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -10px;\n\t}\n\n\t#rich-workspace::v-deep .menubar .menubar-icons {\n\t\tmargin-left: 0;\n\t}\n\n\t#rich-workspace::v-deep .editor__content {\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace.focus {\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace:not(.focus) {\n\t\tmax-height: 30vh;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t#rich-workspace:not(.focus):not(.icon-loading):after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\t\twidth: 100%;\n\t\theight: 4em;\n\t}\n\n\t#rich-workspace.dark:not(.focus):not(.icon-loading):after {\n\t\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\n\t}\n\n\t@media only screen and (max-width: 1024px) {\n\t\t#rich-workspace:not(.focus) {\n\t\t\tmax-height: 30vh;\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!./RichWorkspace.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!./RichWorkspace.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=39bb0090&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=39bb0090&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 \"39bb0090\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme },attrs:{\"id\":\"rich-workspace\"}},[(!_vm.file || (_vm.autofocus && !_vm.ready))?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\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/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst fetchFileInfo = async function(user, path) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl(`dav/files/${user}${path}`),\n\t\theaders: {\n\t\t\trequesttoken: OC.requestToken,\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\" xmlns:ocs=\"http://open-collaboration-services.org/ns\">\n <d:prop>\n <d:getlastmodified />\n <d:getetag />\n <d:getcontenttype />\n <d:resourcetype />\n <oc:fileid />\n <oc:permissions />\n <oc:size />\n <d:getcontentlength />\n <nc:has-preview />\n <nc:mount-type />\n <nc:is-encrypted />\n <ocs:share-permissions />\n <oc:tags />\n <oc:favorite />\n <oc:comments-unread />\n <oc:owner-id />\n <oc:owner-display-name />\n <oc:share-types />\n </d:prop>\n</d:propfind>`,\n\t})\n\n\tconst files = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\treturn files.map(file => {\n\t\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file)\n\t\tfileInfo.href = file.href\n\t\treturn fileInfo\n\t})\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach: function(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler: function(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\tOC.imagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\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\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach: function(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender: function(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\tfetchFileInfo,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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=daec5a80&scoped=true&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"983596ea\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"77931eb0\", content, true, {});","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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=daec5a80&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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=daec5a80&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-daec5a80]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-daec5a80]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-daec5a80]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-daec5a80]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-daec5a80]{margin-left:0}}.menubar[data-v-daec5a80] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-daec5a80]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-daec5a80]:hover,.menubar button[data-v-daec5a80]:focus,.menubar button[data-v-daec5a80]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-daec5a80],.menubar button[data-v-daec5a80]:hover,.menubar button[data-v-daec5a80]:focus{opacity:1}.menubar button.icon-undo[data-v-daec5a80],.menubar button.icon-redo[data-v-daec5a80]{opacity:.4}.menubar .submenu[data-v-daec5a80]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-b3f47288]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-b3f47288]{opacity:1;visibility:visible}.menububble__button[data-v-b3f47288]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-b3f47288]:last-child{margin-right:0}.menububble__buttontext[data-v-b3f47288]{padding:0.4rem;padding-right:0}.menububble__form[data-v-b3f47288]{display:flex;align-items:center}.menububble__input[data-v-b3f47288]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClass(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\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\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Paragraph'),\n\t\tclass: 'icon-paragraph',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => {\n\t\t\treturn command.paragraph()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\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\n<template>\n\t<EditorMenuBar v-slot=\"{ commands, isActive, focused }\" :editor=\"editor\">\n\t\t<div class=\"menubar\" :class=\"{ 'is-focused': focused, 'autohide': autohide }\">\n\t\t\t<div v-if=\"isRichEditor\" ref=\"menubar\" class=\"menubar-icons\">\n\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t<button v-if=\"icon.class\"\n\t\t\t\t\t\tv-show=\"$index < iconCount\"\n\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t:class=\"getIconClasses(isActive, icon)\"\n\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\" />\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div v-show=\"$index < iconCount || !icon.class\"\n\t\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t\tv-click-outside=\"() => hideChildMenu(icon)\"\n\t\t\t\t\t\t\tclass=\"submenu\">\n\t\t\t\t\t\t\t<button :class=\"childIconClass(isActive, icon.children, )\"\n\t\t\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t\t\t@click.prevent=\"toggleChildMenu(icon)\" />\n\t\t\t\t\t\t\t<div :class=\"{open: isChildMenuVisible(icon)}\" class=\"popovermenu menu-center\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"childPopoverMenu(isActive, commands, icon.children, icon)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<Actions>\n\t\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t\t<ActionButton v-if=\"icon.class && isHiddenInMenu($index)\"\n\t\t\t\t\t\t\t:key=\"icon.class\"\n\t\t\t\t\t\t\t:icon=\"icon.class\"\n\t\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\">\n\t\t\t\t\t\t\t{{ icon.label }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<!--<template v-else-if=\"!icon.class && isHiddenInMenu($index)\">\n\t\t\t\t\t\t\t<ActionButton v-for=\"childIcon in icon.children\"\n\t\t\t\t\t\t\t\t:key=\"childIcon.class\"\n\t\t\t\t\t\t\t\t:icon=\"childIcon.class\"\n\t\t\t\t\t\t\t\t@click=\"clickIcon(commands, childIcon)\">\n\t\t\t\t\t\t\t\t{{ childIcon.label }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</template>-->\n\t\t\t\t\t</template>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t\t<slot>\n\t\t\t\tLeft side\n\t\t\t</slot>\n\t\t</div>\n\t</EditorMenuBar>\n</template>\n\n<script>\nimport { EditorMenuBar } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport menuBarIcons from './../mixins/menubar'\nimport { fetchFileInfo } from './../helpers/files'\n\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'MenuBar',\n\tcomponents: {\n\t\tEditorMenuBar,\n\t\tActionButton,\n\t\tPopoverMenu,\n\t\tActions,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tautohide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisPublic: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\twindowWidth: 0,\n\t\t\twindowHeight: 0,\n\t\t\tforceRecompute: 0,\n\t\t\tsubmenuVisibility: {},\n\t\t\ticons: [...menuBarIcons],\n\t\t}\n\t},\n\tcomputed: {\n\t\tisHiddenInMenu() {\n\t\t\treturn ($index) => $index - this.iconCount >= 0\n\t\t},\n\t\tgetIconClasses() {\n\t\t\treturn (isActive, icon) => {\n\t\t\t\tconst classes = {\n\t\t\t\t\t'is-active': icon.isActive(isActive),\n\t\t\t\t}\n\t\t\t\tclasses[icon.class] = true\n\t\t\t\treturn classes\n\t\t\t}\n\t\t},\n\t\tisChildMenuVisible() {\n\t\t\treturn (icon) => {\n\t\t\t\treturn this.submenuVisibility.hasOwnProperty(icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\t}\n\t\t},\n\t\tallIcons() {\n\t\t\tif (this.isPublic) {\n\t\t\t\treturn this.icons\n\t\t\t}\n\t\t\treturn [...this.icons, {\n\t\t\t\tlabel: t('text', 'Insert image'),\n\t\t\t\tclass: 'icon-image',\n\t\t\t\tisActive: () => {\n\t\t\t\t},\n\t\t\t\taction: (commands) => {\n\t\t\t\t\tthis.showImagePrompt(commands.image)\n\t\t\t\t},\n\t\t\t}]\n\t\t},\n\t\tchildPopoverMenu() {\n\t\t\treturn (isActive, commands, icons, parent) => {\n\t\t\t\tconst popoverMenuItems = []\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tpopoverMenuItems.push({\n\t\t\t\t\t\ttext: icons[index].label,\n\t\t\t\t\t\ticon: icons[index].class,\n\t\t\t\t\t\taction: () => {\n\t\t\t\t\t\t\ticons[index].action(commands)\n\t\t\t\t\t\t\tthis.hideChildMenu(parent)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tactive: icons[index].isActive(isActive),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn popoverMenuItems\n\t\t\t}\n\t\t},\n\t\tchildIconClass() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tconst icon = icons[index]\n\t\t\t\t\tif (icon.isActive(isActive)) {\n\t\t\t\t\t\treturn icon.class\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 'icon-h1'\n\t\t\t}\n\t\t},\n\t\ticonCount() {\n\t\t\tthis.forceRecompute // eslint-disable-line\n\t\t\tthis.windowWidth // eslint-disable-line\n\t\t\tconst menuBarWidth = this.$refs.menubar && this.$refs.menubar.clientWidth > 200 ? this.$refs.menubar.clientWidth : 200\n\t\t\tconst iconCount = Math.max((Math.floor(menuBarWidth / 44) - 2), 0)\n\t\t\treturn iconCount\n\t\t},\n\t},\n\tmounted() {\n\t\twindow.addEventListener('resize', this.getWindowWidth)\n\t\tthis.checkInterval = setInterval(() => {\n\t\t\tconst isWidthAvailable = (this.$refs.menubar && this.$refs.menubar.clientWidth > 0)\n\t\t\tif (this.isRichEditor && isWidthAvailable) {\n\t\t\t\tthis.redrawMenuBar()\n\t\t\t}\n\t\t\tif (!this.isRichEditor || isWidthAvailable) {\n\t\t\t\tclearInterval(this.checkInterval)\n\t\t\t}\n\t\t}, 100)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.getWindowWidth)\n\t},\n\tmethods: {\n\t\tredrawMenuBar() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.getWindowWidth()\n\t\t\t\tthis.forceRecompute++\n\t\t\t})\n\t\t},\n\t\tclickIcon(commands, icon) {\n\t\t\treturn icon.action(commands)\n\t\t},\n\t\tgetWindowWidth(event) {\n\t\t\tthis.windowWidth = document.documentElement.clientWidth\n\t\t},\n\t\tgetWindowHeight(event) {\n\t\t\tthis.windowHeight = document.documentElement.clientHeight\n\t\t},\n\t\thideChildMenu(icon) {\n\t\t\tthis.$set(this.submenuVisibility, icon.label, false)\n\t\t},\n\t\ttoggleChildMenu(icon) {\n\t\t\tconst lastValue = this.submenuVisibility.hasOwnProperty(icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\tthis.$set(this.submenuVisibility, icon.label, !lastValue)\n\t\t},\n\t\tshowImagePrompt(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker('Insert an image', (file) => {\n\t\t\t\tfetchFileInfo(currentUser.uid, file).then((info) => {\n\t\t\t\t\tconst fileInfo = info[0]\n\t\t\t\t\tconsole.debug(fileInfo)\n\t\t\t\t\tconst previewUrl = OC.generateUrl('/core/preview?') + `fileId=${fileInfo.id}&x=1024&y=1024&a=true`\n\t\t\t\t\tconst internalLink = OC.generateUrl('/f/' + fileInfo.id)\n\n\t\t\t\t\t// dirty but works so we have the information stored in markdown\n\t\t\t\t\tconst appendMeta = {\n\t\t\t\t\t\tmimetype: fileInfo.mimetype,\n\t\t\t\t\t\thasPreview: fileInfo.hasPreview,\n\t\t\t\t\t\tfileId: fileInfo.id,\n\t\t\t\t\t}\n\t\t\t\t\tconst src = (fileInfo.hasPreview ? previewUrl : internalLink)\n\t\t\t\t\t\t+ '#'\n\t\t\t\t\t\t+ Object.entries(appendMeta).map(([key, val]) => `${key}=${encodeURIComponent(val)}`).join('&')\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\tsrc: src,\n\t\t\t\t\t\talt: fileInfo.name,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menubar {\n\t\tposition: fixed;\n\t\tposition: -webkit-sticky;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tdisplay: flex;\n\t\tz-index: 10010; // above modal-header so buttons are clickable\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\theight: 44px;\n\n\t\t&.autohide {\n\t\t\tvisibility: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t\t&.is-focused {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.menubar-icons {\n\t\t\tflex-grow: 1;\n\t\t\tmargin-left: calc((100% - 660px) / 2);\n\t\t}\n\t\t@media (max-width: 660px) {\n\t\t\t.menubar-icons {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t\t&::v-deep .action-item__menu ul {\n\t\t\tmax-height: calc(100vh - 88px);\n\t\t\toverflow: scroll;\n\t\t}\n\t}\n\n\t.menubar button {\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\n\t\t&.icon-undo, &.icon-redo {\n\t\t\topacity: .4;\n\t\t}\n\t}\n\n\t.menubar .submenu {\n\t\tdisplay: inline-block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tposition: relative;\n\t\tvertical-align: top;\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&\"","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=daec5a80&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=daec5a80&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 \"daec5a80\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(isActive.link() ? 'Update Link' : 'Add Link'),expression:\"isActive.link() ? 'Update Link' : 'Add Link'\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Add link')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.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!./MenuBubble.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<EditorMenuBubble v-slot=\"{ commands, isActive, getMarkAttrs, menu }\"\n\t\tclass=\"menububble\"\n\t\t:editor=\"editor\"\n\t\t@hide=\"hideLinkMenu\">\n\t\t<div class=\"menububble\" :class=\"{ 'is-active': menu.isActive }\" :style=\"`left: ${menu.left}px; bottom: ${menu.bottom}px;`\">\n\t\t\t<form v-if=\"linkMenuIsActive\" class=\"menububble__form\" @submit.prevent=\"setLinkUrl(commands.link, linkUrl)\">\n\t\t\t\t<input ref=\"linkInput\"\n\t\t\t\t\tv-model=\"linkUrl\"\n\t\t\t\t\tclass=\"menububble__input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\t@keydown.esc=\"hideLinkMenu\">\n\t\t\t\t<button class=\"menububble__button icon-confirm\" type=\"button\" @click=\"setLinkUrl(commands.link, linkUrl)\" />\n\t\t\t</form>\n\n\t\t\t<template v-else>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"showLinkMenu(getMarkAttrs('link'))\">\n\t\t\t\t\t<span v-tooltip=\"isActive.link() ? 'Update Link' : 'Add Link'\" class=\"icon-link\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">{{ t('text', 'Add link') }}</span>\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</div>\n\t</EditorMenuBubble>\n</template>\n\n<script>\nimport { EditorMenuBubble } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'MenuBubble',\n\tcomponents: {\n\t\tEditorMenuBubble,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\tlinkUrl: null,\n\t\t\tlinkMenuIsActive: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tshowLinkMenu(attrs) {\n\t\t\tthis.linkUrl = attrs.href\n\t\t\tthis.linkMenuIsActive = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.linkInput.focus()\n\t\t\t})\n\t\t},\n\t\thideLinkMenu() {\n\t\t\tthis.linkUrl = null\n\t\t\tthis.linkMenuIsActive = false\n\t\t},\n\n\t\tsetLinkUrl(command, url) {\n\t\t\tif (url && !url.match(/^[a-zA-Z]+:\\/\\//) && !url.match(/^\\//)) {\n\t\t\t\turl = 'https://' + url\n\t\t\t}\n\t\t\tcommand({ href: url })\n\t\t\tthis.hideLinkMenu()\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menububble {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tz-index: 10020;\n\t\tbackground: var(--color-main-background-translucent);\n\t\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tmargin-bottom: 0.4rem;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\ttransform: translateX(-50%);\n\t\ttransition: opacity 0.2s, visibility 0.2s;\n\n\t\t&.is-active {\n\t\t\topacity: 1;\n\t\t\tvisibility: visible;\n\t\t}\n\n\t\t&__button {\n\t\t\tdisplay: block;\n\t\t\tborder: 0;\n\t\t\tpadding: 0.3rem 0.7rem;\n\t\t\tmargin: 0;\n\t\t\tmargin-right: 0.2rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tcursor: pointer;\n\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__buttontext {\n\t\t\tpadding: 0.4rem;\n\t\t\tpadding-right: 0;\n\t\t}\n\n\t\t&__form {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__input {\n\t\t\tfont: inherit;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tmin-width: 150px;\n\t\t}\n\t}\n</style>\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=b3f47288&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&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 \"b3f47288\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///./src/helpers/mime.js","webpack:///./src/views/RichWorkspace.vue?8e88","webpack:///./src/views/RichWorkspace.vue?eb80","webpack:///./src/views/RichWorkspace.vue?36ef","webpack:///src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?d0bc","webpack:///./src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?f314","webpack:///./src/helpers/files.js","webpack:///./src/components/MenuBar.vue?c461","webpack:///./src/components/MenuBubble.vue?72b9","webpack:///./src/components/MenuBar.vue?92be","webpack:///./src/components/MenuBar.vue?4994","webpack:///./src/components/MenuBubble.vue?f5d6","webpack:///./src/components/MenuBubble.vue?cdbd","webpack:///./src/components/MenuBar.vue?08b0","webpack:///./src/mixins/menubar.js","webpack:///src/components/MenuBar.vue","webpack:///./src/components/MenuBar.vue?c014","webpack:///./src/components/MenuBar.vue","webpack:///./src/components/MenuBubble.vue?c3b0","webpack:///./src/components/MenuBubble.vue?7a05","webpack:///src/components/MenuBubble.vue","webpack:///./src/components/MenuBubble.vue"],"names":["openMimetypesMarkdown","openMimetypesPlainText","openMimetypes","exports","___CSS_LOADER_API_IMPORT___","push","module","i","content","locals","add","default","_vm","this","_h","$createElement","_c","_self","class","loaded","ready","focus","darkTheme","attrs","staticClass","on","createNew","_v","_s","t","_e","directives","name","rawName","value","expression","key","file","id","path","shareToken","mimetype","autofocus","$event","unfocus","reset","fetchFileInfo","user","axios","method","url","generateRemoteUrl","headers","requesttoken","OC","requestToken","data","response","files","OCA","Files","App","fileList","filesClient","_client","parseMultiStatus","map","fileInfo","_parseFileInfo","href","registerFileCreate","newFileMenuPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","createFile","then","status","fileInfoModel","FileInfoModel","Viewer","fileActions","triggerAction","Plugins","register","registerFileActionFallback","sharingToken","document","getElementById","dir","ViewerRoot","createElement","body","appendChild","registerAction","mime","PERMISSION_UPDATE","PERMISSION_READ","imagePath","filename","window","FileList","findFile","Promise","all","imports","getCurrentDirectory","Vue","prototype","n","Editor","render","h","props","fileId","active","relativePath","mimeType","$mount","length","setDefault","FilesWorkspacePlugin","el","registerHeader","bind","priority","vm","extend","RichWorkspace","propsData","$el","toString","label","isActive","action","command","undo","redo","strong","em","strike","paragraph","visible","children","heading","level","bullet_list","bullet_list_item","ordered_list","todo_item","blockquote","code_block","component","editor","scopedSlots","_u","fn","ref","commands","focused","autohide","_l","icon","$index","iconCount","getIconClasses","clickIcon","hideChildMenu","childIconClass","preventDefault","toggleChildMenu","open","isChildMenuVisible","childPopoverMenu","isHiddenInMenu","_t","hideLinkMenu","getMarkAttrs","style","setLinkUrl","link","linkUrl","domProps","type","indexOf","_k","keyCode","target","composing","showLinkMenu"],"mappings":"mGAAA;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAMA,EAAwB,CAC7B,iBAGKC,EAAyB,CAC9B,aACA,kBACA,sBACA,8BACA,uBACA,yBACA,mBACA,qBACA,oBACA,oBACA,kBACA,mBACA,WACA,WACA,YACA,WACA,gBACA,WACA,qBACA,cACA,gBACA,sBAGKC,EAAgB,GAAH,OAAOF,EAA0BC,I,iCCnDpD,mBAAuU,G,qBCEvUE,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,0nEAA2nE,KAEppED,EAAOH,QAAUA,G,mBCHjB,IAAIK,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,8UC4C5C,4CACA,uECrD6L,EDuD7L,CACA,qBACA,YACA,mHAEA,OACA,MACA,YACA,cAGA,KAXA,WAYA,OACA,SACA,YACA,UACA,UACA,SACA,aACA,8DACA,wCAGA,UACA,WADA,WAEA,mGAEA,UAJA,WAKA,qEAEA,mBAPA,WAQA,kEAGA,OACA,gBACA,oBAEA,kBACA,GACA,kDAIA,QA5CA,WA4CA,I,EAAA,c,EAAA,sHACA,WACA,gBAEA,0DACA,aACA,mBAEA,0DACA,gBATA,0C,kLAYA,SACA,QADA,aAIA,MAJA,WAIA,WACA,eACA,cACA,2BACA,cACA,oBAGA,YAZA,WAYA,WACA,eACA,kBACA,cACA,uBACA,IACA,8BAEA,wCACA,sBACA,wBACA,cACA,aACA,eACA,mBACA,+BACA,wBACA,YACA,YACA,WACA,kBAGA,UAnCA,WAmCA,WACA,gBAGA,iBACA,qFACA,gBACA,sB,iBEtIe,EAXC,YACd,GCTW,WAAa,IAAII,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,MAAM,CAACE,MAAM,CAAC,gBAAiBN,EAAIO,SAAWP,EAAIQ,MAAO,MAASR,EAAIS,MAAO,KAAQT,EAAIU,WAAYC,MAAM,CAAC,GAAK,mBAAmB,CAAEX,EAAsB,mBAAEI,EAAG,MAAM,CAACQ,YAAY,kBAAkBC,GAAG,CAAC,MAAQb,EAAIc,YAAY,CAACV,EAAG,IAAI,CAACQ,YAAY,eAAe,CAACZ,EAAIe,GAAG,WAAWf,EAAIgB,GAAGhB,EAAIiB,EAAE,OAAQ,gCAAgC,cAAcjB,EAAIkB,KAAKlB,EAAIe,GAAG,KAAMf,EAAQ,KAAEI,EAAG,gBAAgB,CAACe,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOtB,EAAS,MAAEuB,WAAW,UAAUC,IAAIxB,EAAIyB,KAAKC,GAAGf,MAAM,CAAC,UAAUX,EAAIyB,KAAKC,GAAG,gBAAgB1B,EAAIyB,KAAKE,KAAK,cAAc3B,EAAI4B,WAAW,QAAS,EAAK,UAAW,EAAK,KAAO5B,EAAIyB,KAAKI,SAAS,UAAY7B,EAAI8B,WAAWjB,GAAG,CAAC,MAAQ,SAASkB,GAAQ/B,EAAIQ,OAAM,GAAM,MAAQ,SAASuB,GAAQ/B,EAAIS,OAAM,GAAM,KAAOT,EAAIgC,QAAQ,MAAQhC,EAAIiC,SAASjC,EAAIkB,MAAM,GAAGlB,EAAIkB,OACr4B,IDWpB,EACA,KACA,WACA,M;;;;;;;;;;;;;;;;;;;;;;AEgBF,IAEMgB,EAAa,e,EAAA,G,EAAA,yBAAG,WAAeC,EAAMR,GAArB,wGACES,IAAM,CAC5BC,OAAQ,WACRC,IAAKC,4BAAkB,aAAD,OAAcJ,GAAd,OAAqBR,IAC3Ca,QAAS,CACRC,aAAcC,GAAGC,aACjB,eAAgB,YAEjBC,KAAM,woBARc,cACfC,EADe,OAiCfC,EAAQC,IAAIC,MAAMC,IAAIC,SAASC,YAAYC,QAAQC,iBAAiBR,EAASD,MAjC9D,kBAkCdE,EAAMQ,KAAI,SAAA7B,GAChB,IAAM8B,EAAWR,IAAIC,MAAMC,IAAIC,SAASC,YAAYK,eAAe/B,GAEnE,OADA8B,EAASE,KAAOhC,EAAKgC,KACdF,MArCa,0C,+KAAH,wDAyCbG,EAAqB,WAC1B,IAAMC,EAAoB,CACzBC,OAAQ,SAASC,GAChB,IAAMX,EAAWW,EAAKX,SAGF,UAAhBA,EAASxB,IAAkC,iBAAhBwB,EAASxB,IAKxCmC,EAAKC,aAAa,CACjBpC,GAAI,OACJqC,YAAa9C,EAAE,OAAQ,qBACvB+C,aAAc/C,EAAE,OAAQ,qBAAuB,MAC/CgD,UAAW,qBACXC,SAAU,OACVC,cAAe,SAAS/C,GACvB8B,EAASkB,WAAWhD,GAAMiD,MAAK,SAASC,EAAQ1B,GAC/C,IAAM2B,EAAgB,IAAIxB,IAAIC,MAAMwB,cAAc5B,QACxB,IAAfG,IAAI0B,OACd1B,IAAIC,MAAM0B,YAAYC,cAAc,OAAQJ,EAAerB,QAC3B,IAAfH,IAAI0B,QACrB1B,IAAIC,MAAM0B,YAAYC,cAlEE,qBAkEoCJ,EAAerB,WAOjFR,GAAGkC,QAAQC,SAAS,wBAAyBlB,IAGxCmB,EAA6B,WAClC,IAAMC,EAAeC,SAASC,eAAe,gBAAkBD,SAASC,eAAe,gBAAgB3D,MAAQ,KACzG4D,EAAMF,SAASC,eAAe,OAAO3D,MAE3C,IAAKyD,GAAwB,KAARG,EAAY,CAChC,IAAMC,EAAaH,SAASI,cAAc,OAC1CD,EAAWzD,GAAK,uBAChBsD,SAASK,KAAKC,YAAYH,GAmC1B,IAlCA,IAAMI,EAAiB,SAACC,GAAD,OAAUzC,IAAIC,MAAM0B,YAAYG,SACtDW,EArF4B,qBAuF5B9C,GAAG+C,kBAAoB/C,GAAGgD,gBAC1BhD,GAAGiD,UAAU,OAAQ,mBACrB,SAACC,GACA,IAAMnE,EAAOoE,OAAOC,SAASC,SAASH,GACtCI,QAAQC,IAAI,CACX,6BACA,iFACE5B,MAAK,SAAC6B,GACR,IAAMvE,EAAOkE,OAAOC,SAASK,sBAAwB,IAAMP,EACrDQ,EAAMF,EAAQ,GAAGnG,QACvBqG,EAAIC,UAAUpF,EAAI4E,OAAO5E,EACzBmF,EAAIC,UAAUC,EAAIT,OAAOS,EACzBF,EAAIC,UAAUtD,IAAM8C,OAAO9C,IAC3B,IAAMwD,EAASL,EAAQ,GAAGnG,QACf,IAAIqG,EAAI,CAClBI,OAAQ,SAAAC,GAAC,OAAIA,EAAEF,EAAQ,CACtBG,MAAO,CACNC,OAAQlF,EAAOA,EAAKC,GAAK,KACzBkF,QAAQ,EACRhF,WAAYmD,EACZ8B,aAAclF,EACdmF,SAAUrF,EAAKI,eAIfkF,OAAO5B,QAGZlE,EAAE,OAAQ,UAGFtB,EAAI,EAAGA,EAAIL,IAAc0H,OAAQrH,IACzC4F,EAAejG,IAAcK,IAC7BoD,IAAIC,MAAM0B,YAAYuC,WAAW3H,IAAcK,GAxHnB,wBA8HzBuH,EAAuB,CAE5BC,GAAI,KAEJvD,OAAQ,SAASV,GACI,UAAhBA,EAASxB,IAAkC,iBAAhBwB,EAASxB,KAIxCzB,KAAKkH,GAAKnC,SAASI,cAAc,OACjClC,EAASkE,eAAe,CACvB1F,GAAI,YACJyF,GAAIlH,KAAKkH,GACTX,OAAQvG,KAAKuG,OAAOa,KAAKpH,MACzBqH,SAAU,OAIZd,OAAQ,SAAStD,GAAU,WACN,UAAhBA,EAASxB,IAAkC,iBAAhBwB,EAASxB,IAIxC,6BAAc2C,MAAK,SAAC3E,GACnB,IAAM0G,EAAM1G,EAAOK,QACnB,EAAKoH,GAAGzF,GAAK,0BACb0E,EAAIC,UAAUpF,EAAI4E,OAAO5E,EACzBmF,EAAIC,UAAUC,EAAIT,OAAOS,EACzBF,EAAIC,UAAUtD,IAAM8C,OAAO9C,IAC3B,IACMwE,EAAK,IADEnB,EAAIoB,OAAOC,GACb,CAAS,CACnBC,UAAW,CACV/F,KAAMuB,EAASiD,yBAEdY,OAAO,EAAKI,IAEfjE,EAASyE,IAAI9G,GAAG,mBAAmB,SAAA+B,GAClC2E,EAAG5F,KAAOiB,EAAKsC,IAAI0C,oB,oBC/LvB,IAAIhI,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,oBCL5C,IAAIA,EAAU,EAAQ,KACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACF,EAAOC,EAAIC,EAAS,MAC7DA,EAAQC,SAAQH,EAAOH,QAAUK,EAAQC,SAG/BC,EADH,EAAQ,IAA+DC,SAChE,WAAYH,GAAS,EAAM,K,iCCR5C,oBAA6W,G,qBCE7WL,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,y1CAA01C,KAEn3CD,EAAOH,QAAUA,G,iCCNjB,oBAAgX,G,qBCEhXA,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACC,EAAOC,EAAI,q2BAAs2B,KAE/3BD,EAAOH,QAAUA,G,wCCNjB,I,2BCsBe,GACd,CACCsI,MAAO5G,EAAE,OAAQ,QACjBX,MAAO,YACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GAAD,OAAaA,EAAQC,SAE9B,CACCJ,MAAO5G,EAAE,OAAQ,QACjBX,MAAO,YACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GAAD,OAAaA,EAAQE,SAE9B,CACCL,MAAO5G,EAAE,OAAQ,QACjBX,MAAO,YACPwH,SAAU,SAACA,GAAD,OAAcA,EAASK,UACjCJ,OAAQ,SAACC,GACR,OAAOA,EAAQG,WAGjB,CACCN,MAAO5G,EAAE,OAAQ,UACjBX,MAAO,cACPwH,SAAU,SAACA,GAAD,OAAcA,EAASM,MACjCL,OAAQ,SAACC,GACR,OAAOA,EAAQI,OAGjB,CACCP,MAAO5G,EAAE,OAAQ,iBACjBX,MAAO,cACPwH,SAAU,SAACA,GAAD,OAAcA,EAASO,UACjCN,OAAQ,SAACC,GACR,OAAOA,EAAQK,WAGjB,CACCR,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,iBACPwH,SAAU,SAACA,KACXC,OAAQ,SAACC,GACR,OAAOA,EAAQM,cAGjB,CACCT,MAAO5G,EAAE,OAAQ,YACjBsH,SAAS,EACTC,SAAU,CACT,CACCX,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,MAGlC,CACCb,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASW,QAAQ,CAAEC,MAAO,KAClDX,OAAQ,SAACC,GACR,OAAOA,EAAQS,QAAQ,CAAEC,MAAO,QAKpC,CACCb,MAAO5G,EAAE,OAAQ,kBACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASa,eACjCZ,OAAQ,SAACC,GACR,OAAOA,EAAQY,qBAGjB,CACCf,MAAO5G,EAAE,OAAQ,gBACjBX,MAAO,UACPwH,SAAU,SAACA,GAAD,OAAcA,EAASe,gBACjCd,OAAQ,SAACC,GACR,OAAOA,EAAQa,iBAGjB,CACChB,MAAO5G,EAAE,OAAQ,aACjBX,MAAO,iBACPwH,SAAU,SAACA,GAAD,OAAc,GACxBC,OAAQ,SAACC,GAAD,OAAaA,EAAQc,cAE9B,CACCjB,MAAO5G,EAAE,OAAQ,cACjBX,MAAO,aACPwH,SAAU,SAACA,GAAD,OAAcA,EAASiB,cACjChB,OAAQ,SAACC,GACR,OAAOA,EAAQe,eAGjB,CACClB,MAAO5G,EAAE,OAAQ,cACjBX,MAAO,YACPwH,SAAU,SAACA,GAAD,OAAcA,EAASkB,cACjCjB,OAAQ,SAACC,GACR,OAAOA,EAAQgB,gB,25BCxElB,ICpFuL,EDoFvL,CACA,eACA,YACA,kBACA,iBACA,gBACA,aAEA,YACA,YACA,kBAEA,OACA,QACA,YACA,YACA,cAEA,cACA,aACA,YAEA,UACA,aACA,YAEA,UACA,aACA,aAGA,gBACA,OACA,cACA,eACA,iBACA,qBACA,aAGA,UACA,eADA,WACA,WACA,6CAEA,eAJA,WAKA,qBACA,OACA,2BAGA,OADA,cACA,IAGA,mBAbA,WAaA,WACA,mBACA,oFAGA,SAlBA,WAkBA,WACA,qBACA,WAEA,0BACA,+BACA,mBACA,sBAEA,mBACA,gCAIA,iBAhCA,WAgCA,WACA,yBACA,SADA,WAEA,GACA,QACA,gBACA,gBACA,kBACA,eACA,oBAEA,2BARA,oBAWA,WAGA,eAjDA,WAkDA,qBACA,gBACA,WACA,iBACA,eAGA,kBAGA,UA5DA,WA6DA,oBACA,iBACA,gGACA,iCACA,WAGA,QA5GA,WA4GA,WACA,sDACA,2CACA,qDACA,mBACA,kBAEA,oBACA,iCAEA,MAEA,cAxHA,WAyHA,0DAEA,SACA,cADA,WACA,WACA,2BACA,mBACA,uBAGA,UAPA,SAOA,KACA,oBAEA,eAVA,SAUA,GACA,uDAEA,gBAbA,SAaA,GACA,yDAEA,cAhBA,SAgBA,GACA,8CAEA,gBAnBA,SAmBA,GACA,wFACA,8CAEA,gBAvBA,SAuBA,GACA,0BACA,MAGA,QACA,qDACA,uCACA,WACA,iBACA,sFACA,6BAGA,GACA,oBACA,wBACA,aAEA,qBACA,IACA,gIAEA,GACA,MACA,mBAGA,a,iBE1PIC,EAAY,YACd,GJTW,WAAa,IAAIjJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,gBAAgB,CAACO,MAAM,CAAC,OAASX,EAAIkJ,QAAQC,YAAYnJ,EAAIoJ,GAAG,CAAC,CAAC5H,IAAI,UAAU6H,GAAG,SAASC,GAC/L,IAAIC,EAAWD,EAAIC,SACfzB,EAAWwB,EAAIxB,SACf0B,EAAUF,EAAIE,QAClB,MAAO,CAACpJ,EAAG,MAAM,CAACQ,YAAY,UAAUN,MAAM,CAAE,aAAckJ,EAAS,SAAYxJ,EAAIyJ,WAAY,CAAEzJ,EAAgB,aAAEI,EAAG,MAAM,CAACkJ,IAAI,UAAU1I,YAAY,iBAAiB,CAACZ,EAAI0J,GAAI1J,EAAY,UAAE,SAAS2J,EAAKC,GAAQ,MAAO,CAAED,EAAU,MAAEvJ,EAAG,SAAS,CAACe,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOsI,EAAS5J,EAAI6J,UAAWtI,WAAW,uBAAuBC,IAAImI,EAAK9B,MAAMvH,MAAMN,EAAI8J,eAAehC,EAAU6B,GAAMhJ,MAAM,CAAC,MAAQgJ,EAAK9B,OAAOhH,GAAG,CAAC,MAAQ,SAASkB,GAAQ,OAAO/B,EAAI+J,UAAUR,EAAUI,OAAU,CAACvJ,EAAG,MAAM,CAACe,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOsI,EAAS5J,EAAI6J,YAAcF,EAAKrJ,MAAOiB,WAAW,qCAAqC,CAACH,KAAK,gBAAgBC,QAAQ,kBAAkBC,MAAM,WAAe,OAAOtB,EAAIgK,cAAcL,IAAUpI,WAAW,8BAA8BC,IAAImI,EAAK9B,MAAMjH,YAAY,WAAW,CAACR,EAAG,SAAS,CAACE,MAAMN,EAAIiK,eAAenC,EAAU6B,EAAKnB,UAAW7H,MAAM,CAAC,MAAQgJ,EAAK9B,OAAOhH,GAAG,CAAC,MAAQ,SAASkB,GAAgC,OAAxBA,EAAOmI,iBAAwBlK,EAAImK,gBAAgBR,OAAU3J,EAAIe,GAAG,KAAKX,EAAG,MAAM,CAACQ,YAAY,0BAA0BN,MAAM,CAAC8J,KAAMpK,EAAIqK,mBAAmBV,KAAQ,CAACvJ,EAAG,cAAc,CAACO,MAAM,CAAC,KAAOX,EAAIsK,iBAAiBxC,EAAUyB,EAAUI,EAAKnB,SAAUmB,OAAU,UAAS3J,EAAIe,GAAG,KAAKX,EAAG,UAAU,CAACJ,EAAI0J,GAAI1J,EAAY,UAAE,SAAS2J,EAAKC,GAAQ,MAAO,CAAED,EAAKrJ,OAASN,EAAIuK,eAAeX,GAASxJ,EAAG,eAAe,CAACoB,IAAImI,EAAKrJ,MAAMK,MAAM,CAAC,KAAOgJ,EAAKrJ,OAAOO,GAAG,CAAC,MAAQ,SAASkB,GAAQ,OAAO/B,EAAI+J,UAAUR,EAAUI,MAAS,CAAC3J,EAAIe,GAAG,iBAAiBf,EAAIgB,GAAG2I,EAAK9B,OAAO,kBAAkB7H,EAAIkB,UAAS,IAAI,GAAGlB,EAAIkB,KAAKlB,EAAIe,GAAG,KAAKf,EAAIwK,GAAG,UAAU,CAACxK,EAAIe,GAAG,8BAA8B,OAAO,MAAK,OACjmD,IIOpB,EACA,KACA,WACA,MAIa,UAAAkI,E,iDCnBf,I,2BCA0L,ECuD1L,CACA,kBACA,YACA,sBAEA,YACA,aAEA,OACA,QACA,YACA,YACA,eAGA,gBACA,OACA,aACA,sBAGA,SACA,aADA,SACA,cACA,oBACA,yBACA,2BACA,8BAGA,aARA,WASA,kBACA,0BAGA,WAbA,SAaA,MACA,gDACA,gBAEA,YACA,uB,iBCtFIA,EAAY,YACd,GHTW,WAAa,IAAIjJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,mBAAmB,CAACQ,YAAY,aAAaD,MAAM,CAAC,OAASX,EAAIkJ,QAAQrI,GAAG,CAAC,KAAOb,EAAIyK,cAActB,YAAYnJ,EAAIoJ,GAAG,CAAC,CAAC5H,IAAI,UAAU6H,GAAG,SAASC,GACxP,IAAIC,EAAWD,EAAIC,SACfzB,EAAWwB,EAAIxB,SACf4C,EAAepB,EAAIoB,aACnB7G,EAAOyF,EAAIzF,KACf,MAAO,CAACzD,EAAG,MAAM,CAACQ,YAAY,aAAaN,MAAM,CAAE,YAAauD,EAAKiE,UAAW6C,MAAQ,SAAY9G,EAAS,KAAI,eAAkBA,EAAW,OAAI,OAAS,CAAE7D,EAAoB,iBAAEI,EAAG,OAAO,CAACQ,YAAY,mBAAmBC,GAAG,CAAC,OAAS,SAASkB,GAAgC,OAAxBA,EAAOmI,iBAAwBlK,EAAI4K,WAAWrB,EAASsB,KAAM7K,EAAI8K,YAAY,CAAC1K,EAAG,QAAQ,CAACe,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOtB,EAAW,QAAEuB,WAAW,YAAY+H,IAAI,YAAY1I,YAAY,oBAAoBD,MAAM,CAAC,KAAO,OAAO,YAAc,YAAYoK,SAAS,CAAC,MAAS/K,EAAW,SAAGa,GAAG,CAAC,QAAU,SAASkB,GAAQ,OAAIA,EAAOiJ,KAAKC,QAAQ,QAAQjL,EAAIkL,GAAGnJ,EAAOoJ,QAAQ,MAAM,GAAGpJ,EAAOP,IAAI,CAAC,MAAM,WAAoB,KAAcxB,EAAIyK,aAAa1I,IAAS,MAAQ,SAASA,GAAWA,EAAOqJ,OAAOC,YAAqBrL,EAAI8K,QAAQ/I,EAAOqJ,OAAO9J,WAAUtB,EAAIe,GAAG,KAAKX,EAAG,SAAS,CAACQ,YAAY,kCAAkCD,MAAM,CAAC,KAAO,UAAUE,GAAG,CAAC,MAAQ,SAASkB,GAAQ,OAAO/B,EAAI4K,WAAWrB,EAASsB,KAAM7K,EAAI8K,eAAe,CAAC1K,EAAG,SAAS,CAACQ,YAAY,qBAAqBN,MAAM,CAAE,YAAawH,EAAS+C,QAAShK,GAAG,CAAC,MAAQ,SAASkB,GAAQ/B,EAAIsL,aAAaZ,EAAa,YAAY,CAACtK,EAAG,OAAO,CAACe,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAYC,MAAOwG,EAAS+C,OAAS,cAAgB,WAAYtJ,WAAW,iDAAiDX,YAAY,cAAcZ,EAAIe,GAAG,KAAKX,EAAG,OAAO,CAACQ,YAAY,0BAA0B,CAACZ,EAAIe,GAAGf,EAAIgB,GAAGhB,EAAIiB,EAAE,OAAQ,oBAAoB,YAC36C,IGMpB,EACA,KACA,WACA,MAIa,UAAAgI,E","file":"editor-rich.js?v=2b57bc9659f18b9ac43f","sourcesContent":["/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/epub+zip',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/css',\n\t'text/csv',\n\t'text/html',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=4241752f&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=4241752f&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n#rich-workspace[data-v-4241752f] {\\n\\tpadding: 0 60px;\\n\\tmin-height: 90px;\\n\\t/* Slightly reduce vertical space */\\n\\tmargin-bottom: -24px;\\n\\ttext-align: left;\\n\\tmax-height: 0;\\n\\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\\n}\\n\\n/* For subfolders, where there are no Recommendations */\\n#rich-workspace[data-v-4241752f]:only-child {\\n\\tmargin-bottom: 0;\\n}\\n.empty-workspace[data-v-4241752f] {\\n\\tpadding-top: 43px;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: 0;\\n}\\n#rich-workspace[data-v-4241752f] div[contenteditable=false] {\\n\\twidth: 100%;\\n\\tpadding: 0px;\\n\\tbackground-color: var(--color-main-background);\\n\\topacity: 1;\\n\\tborder: none;\\n}\\n#rich-workspace[data-v-4241752f] #editor-container {\\n\\theight: 100%;\\n\\tposition: unset !important;\\n}\\n#rich-workspace[data-v-4241752f] #editor-wrapper {\\n\\tposition: unset !important;\\n\\toverflow: visible;\\n}\\n#rich-workspace[data-v-4241752f] #editor {\\n\\toverflow: scroll !important;\\n\\tmax-height: 50vh;\\n}\\n#rich-workspace[data-v-4241752f] #editor-wrapper .ProseMirror {\\n\\tpadding: 0px;\\n\\tmargin: 0;\\n}\\n#rich-workspace[data-v-4241752f] .menubar {\\n\\tz-index: 50;\\n\\t/* Slightly reduce vertical space */\\n\\tmargin-bottom: -10px;\\n}\\n#rich-workspace[data-v-4241752f] .menubar .menubar-icons {\\n\\tmargin-left: 0;\\n}\\n#rich-workspace[data-v-4241752f] .editor__content {\\n\\tmargin: 0;\\n}\\n#rich-workspace.focus[data-v-4241752f] {\\n\\tmax-height: 50vh;\\n}\\n#rich-workspace[data-v-4241752f]:not(.focus) {\\n\\tmax-height: 30vh;\\n\\tposition: relative;\\n\\toverflow: hidden;\\n}\\n#rich-workspace[data-v-4241752f]:not(.focus):not(.icon-loading):after {\\n\\tcontent: '';\\n\\tposition: absolute;\\n\\tz-index: 1;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tpointer-events: none;\\n\\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\\n\\twidth: 100%;\\n\\theight: 4em;\\n}\\n#rich-workspace.dark[data-v-4241752f]:not(.focus):not(.icon-loading):after {\\n\\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\\n}\\n@media only screen and (max-width: 1024px) {\\n#rich-workspace[data-v-4241752f]:not(.focus) {\\n\\t\\tmax-height: 30vh;\\n}\\n}\\n\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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!./RichWorkspace.vue?vue&type=style&index=0&id=4241752f&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"768e46e1\", content, true, {});","<!--\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 v-if=\"enabled\" id=\"rich-workspace\" :class=\"{'icon-loading': !loaded || !ready, 'focus': focus, 'dark': darkTheme }\">\n\t\t<div v-if=\"showEmptyWorkspace\" class=\"empty-workspace\" @click=\"createNew\">\n\t\t\t<p class=\"placeholder\">\n\t\t\t\t{{ t('text', 'Add notes, lists or links …') }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<EditorWrapper v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.id\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:active=\"true\"\n\t\t\t:autohide=\"true\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"focus=true\"\n\t\t\t@blur=\"unfocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe } from '@nextcloud/event-bus'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : ''), 2) + 'workspace'\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./../components/EditorWrapper'),\n\t},\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\t\t},\n\t\tcanCreate() {\n\t\t\treturn !!(this.folder && (this.folder.permissions & OC.PERMISSION_CREATE))\n\t\t},\n\t\tshowEmptyWorkspace() {\n\t\t\treturn (!this.file || (this.autofocus && !this.ready)) && this.canCreate\n\t\t},\n\t},\n\twatch: {\n\t\tpath: function() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus: function(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#editor').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.enabled) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', () => {\n\t\t\tthis.enabled = true\n\t\t\tthis.getFileInfo()\n\t\t})\n\t\tsubscribe('Text::hideRichWorkspace', () => {\n\t\t\tthis.enabled = false\n\t\t})\n\t},\n\tmethods: {\n\t\tunfocus() {\n\t\t\t// setTimeout(() => this.focus = false, 2000)\n\t\t},\n\t\treset() {\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo() {\n\t\t\tthis.loaded = false\n\t\t\tthis.autofocus = false\n\t\t\tthis.ready = false\n\t\t\tconst params = { path: this.path }\n\t\t\tif (IS_PUBLIC) {\n\t\t\t\tparams.shareToken = this.shareToken\n\t\t\t}\n\t\t\taxios.get(WORKSPACE_URL, { params }).then((response) => {\n\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = data.file\n\t\t\t\tthis.editing = true\n\t\t\t\tthis.loaded = true\n\t\t\t}).catch((error) => {\n\t\t\t\tconst data = error.response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = null\n\t\t\t\tthis.loaded = true\n\t\t\t\tthis.ready = true\n\t\t\t\tthis.creating = false\n\t\t\t})\n\t\t},\n\t\tcreateNew() {\n\t\t\tif (this.creating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.creating = true\n\t\t\twindow.FileList.createFile('Readme.md', { scrollTo: false, animate: false }).then((status, data) => {\n\t\t\t\tthis.getFileInfo()\n\t\t\t\tthis.autofocus = true\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t#rich-workspace {\n\t\tpadding: 0 60px;\n\t\tmin-height: 90px;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -24px;\n\t\ttext-align: left;\n\t\tmax-height: 0;\n\t\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n\t}\n\n\t/* For subfolders, where there are no Recommendations */\n\t#rich-workspace:only-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t.empty-workspace {\n\t\tpadding-top: 43px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\theight: 0;\n\t}\n\n\t#rich-workspace::v-deep div[contenteditable=false] {\n\t\twidth: 100%;\n\t\tpadding: 0px;\n\t\tbackground-color: var(--color-main-background);\n\t\topacity: 1;\n\t\tborder: none;\n\t}\n\n\t#rich-workspace::v-deep #editor-container {\n\t\theight: 100%;\n\t\tposition: unset !important;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper {\n\t\tposition: unset !important;\n\t\toverflow: visible;\n\t}\n\n\t#rich-workspace::v-deep #editor {\n\t\toverflow: scroll !important;\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper .ProseMirror {\n\t\tpadding: 0px;\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace::v-deep .menubar {\n\t\tz-index: 50;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -10px;\n\t}\n\n\t#rich-workspace::v-deep .menubar .menubar-icons {\n\t\tmargin-left: 0;\n\t}\n\n\t#rich-workspace::v-deep .editor__content {\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace.focus {\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace:not(.focus) {\n\t\tmax-height: 30vh;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t#rich-workspace:not(.focus):not(.icon-loading):after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\t\twidth: 100%;\n\t\theight: 4em;\n\t}\n\n\t#rich-workspace.dark:not(.focus):not(.icon-loading):after {\n\t\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\n\t}\n\n\t@media only screen and (max-width: 1024px) {\n\t\t#rich-workspace:not(.focus) {\n\t\t\tmax-height: 30vh;\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!./RichWorkspace.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!./RichWorkspace.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=4241752f&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=4241752f&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 \"4241752f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme },attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\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/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst fetchFileInfo = async function(user, path) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl(`dav/files/${user}${path}`),\n\t\theaders: {\n\t\t\trequesttoken: OC.requestToken,\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\" xmlns:ocs=\"http://open-collaboration-services.org/ns\">\n <d:prop>\n <d:getlastmodified />\n <d:getetag />\n <d:getcontenttype />\n <d:resourcetype />\n <oc:fileid />\n <oc:permissions />\n <oc:size />\n <d:getcontentlength />\n <nc:has-preview />\n <nc:mount-type />\n <nc:is-encrypted />\n <ocs:share-permissions />\n <oc:tags />\n <oc:favorite />\n <oc:comments-unread />\n <oc:owner-id />\n <oc:owner-display-name />\n <oc:share-types />\n </d:prop>\n</d:propfind>`,\n\t})\n\n\tconst files = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\treturn files.map(file => {\n\t\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file)\n\t\tfileInfo.href = file.href\n\t\treturn fileInfo\n\t})\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach: function(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler: function(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\tOC.imagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\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\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach: function(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender: function(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\tfetchFileInfo,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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=daec5a80&scoped=true&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"983596ea\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"77931eb0\", content, true, {});","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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=daec5a80&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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=daec5a80&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-daec5a80]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-daec5a80]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-daec5a80]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-daec5a80]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-daec5a80]{margin-left:0}}.menubar[data-v-daec5a80] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-daec5a80]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-daec5a80]:hover,.menubar button[data-v-daec5a80]:focus,.menubar button[data-v-daec5a80]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-daec5a80],.menubar button[data-v-daec5a80]:hover,.menubar button[data-v-daec5a80]:focus{opacity:1}.menubar button.icon-undo[data-v-daec5a80],.menubar button.icon-redo[data-v-daec5a80]{opacity:.4}.menubar .submenu[data-v-daec5a80]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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!./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-b3f47288]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-b3f47288]{opacity:1;visibility:visible}.menububble__button[data-v-b3f47288]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-b3f47288]:last-child{margin-right:0}.menububble__buttontext[data-v-b3f47288]{padding:0.4rem;padding-right:0}.menububble__form[data-v-b3f47288]{display:flex;align-items:center}.menububble__input[data-v-b3f47288]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClass(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\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\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Paragraph'),\n\t\tclass: 'icon-paragraph',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => {\n\t\t\treturn command.paragraph()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\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\n<template>\n\t<EditorMenuBar v-slot=\"{ commands, isActive, focused }\" :editor=\"editor\">\n\t\t<div class=\"menubar\" :class=\"{ 'is-focused': focused, 'autohide': autohide }\">\n\t\t\t<div v-if=\"isRichEditor\" ref=\"menubar\" class=\"menubar-icons\">\n\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t<button v-if=\"icon.class\"\n\t\t\t\t\t\tv-show=\"$index < iconCount\"\n\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t:class=\"getIconClasses(isActive, icon)\"\n\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\" />\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div v-show=\"$index < iconCount || !icon.class\"\n\t\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t\tv-click-outside=\"() => hideChildMenu(icon)\"\n\t\t\t\t\t\t\tclass=\"submenu\">\n\t\t\t\t\t\t\t<button :class=\"childIconClass(isActive, icon.children, )\"\n\t\t\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t\t\t@click.prevent=\"toggleChildMenu(icon)\" />\n\t\t\t\t\t\t\t<div :class=\"{open: isChildMenuVisible(icon)}\" class=\"popovermenu menu-center\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"childPopoverMenu(isActive, commands, icon.children, icon)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<Actions>\n\t\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t\t<ActionButton v-if=\"icon.class && isHiddenInMenu($index)\"\n\t\t\t\t\t\t\t:key=\"icon.class\"\n\t\t\t\t\t\t\t:icon=\"icon.class\"\n\t\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\">\n\t\t\t\t\t\t\t{{ icon.label }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<!--<template v-else-if=\"!icon.class && isHiddenInMenu($index)\">\n\t\t\t\t\t\t\t<ActionButton v-for=\"childIcon in icon.children\"\n\t\t\t\t\t\t\t\t:key=\"childIcon.class\"\n\t\t\t\t\t\t\t\t:icon=\"childIcon.class\"\n\t\t\t\t\t\t\t\t@click=\"clickIcon(commands, childIcon)\">\n\t\t\t\t\t\t\t\t{{ childIcon.label }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</template>-->\n\t\t\t\t\t</template>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t\t<slot>\n\t\t\t\tLeft side\n\t\t\t</slot>\n\t\t</div>\n\t</EditorMenuBar>\n</template>\n\n<script>\nimport { EditorMenuBar } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport menuBarIcons from './../mixins/menubar'\nimport { fetchFileInfo } from './../helpers/files'\n\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'MenuBar',\n\tcomponents: {\n\t\tEditorMenuBar,\n\t\tActionButton,\n\t\tPopoverMenu,\n\t\tActions,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tautohide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisPublic: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\twindowWidth: 0,\n\t\t\twindowHeight: 0,\n\t\t\tforceRecompute: 0,\n\t\t\tsubmenuVisibility: {},\n\t\t\ticons: [...menuBarIcons],\n\t\t}\n\t},\n\tcomputed: {\n\t\tisHiddenInMenu() {\n\t\t\treturn ($index) => $index - this.iconCount >= 0\n\t\t},\n\t\tgetIconClasses() {\n\t\t\treturn (isActive, icon) => {\n\t\t\t\tconst classes = {\n\t\t\t\t\t'is-active': icon.isActive(isActive),\n\t\t\t\t}\n\t\t\t\tclasses[icon.class] = true\n\t\t\t\treturn classes\n\t\t\t}\n\t\t},\n\t\tisChildMenuVisible() {\n\t\t\treturn (icon) => {\n\t\t\t\treturn this.submenuVisibility.hasOwnProperty(icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\t}\n\t\t},\n\t\tallIcons() {\n\t\t\tif (this.isPublic) {\n\t\t\t\treturn this.icons\n\t\t\t}\n\t\t\treturn [...this.icons, {\n\t\t\t\tlabel: t('text', 'Insert image'),\n\t\t\t\tclass: 'icon-image',\n\t\t\t\tisActive: () => {\n\t\t\t\t},\n\t\t\t\taction: (commands) => {\n\t\t\t\t\tthis.showImagePrompt(commands.image)\n\t\t\t\t},\n\t\t\t}]\n\t\t},\n\t\tchildPopoverMenu() {\n\t\t\treturn (isActive, commands, icons, parent) => {\n\t\t\t\tconst popoverMenuItems = []\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tpopoverMenuItems.push({\n\t\t\t\t\t\ttext: icons[index].label,\n\t\t\t\t\t\ticon: icons[index].class,\n\t\t\t\t\t\taction: () => {\n\t\t\t\t\t\t\ticons[index].action(commands)\n\t\t\t\t\t\t\tthis.hideChildMenu(parent)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tactive: icons[index].isActive(isActive),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn popoverMenuItems\n\t\t\t}\n\t\t},\n\t\tchildIconClass() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tconst icon = icons[index]\n\t\t\t\t\tif (icon.isActive(isActive)) {\n\t\t\t\t\t\treturn icon.class\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 'icon-h1'\n\t\t\t}\n\t\t},\n\t\ticonCount() {\n\t\t\tthis.forceRecompute // eslint-disable-line\n\t\t\tthis.windowWidth // eslint-disable-line\n\t\t\tconst menuBarWidth = this.$refs.menubar && this.$refs.menubar.clientWidth > 200 ? this.$refs.menubar.clientWidth : 200\n\t\t\tconst iconCount = Math.max((Math.floor(menuBarWidth / 44) - 2), 0)\n\t\t\treturn iconCount\n\t\t},\n\t},\n\tmounted() {\n\t\twindow.addEventListener('resize', this.getWindowWidth)\n\t\tthis.checkInterval = setInterval(() => {\n\t\t\tconst isWidthAvailable = (this.$refs.menubar && this.$refs.menubar.clientWidth > 0)\n\t\t\tif (this.isRichEditor && isWidthAvailable) {\n\t\t\t\tthis.redrawMenuBar()\n\t\t\t}\n\t\t\tif (!this.isRichEditor || isWidthAvailable) {\n\t\t\t\tclearInterval(this.checkInterval)\n\t\t\t}\n\t\t}, 100)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.getWindowWidth)\n\t},\n\tmethods: {\n\t\tredrawMenuBar() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.getWindowWidth()\n\t\t\t\tthis.forceRecompute++\n\t\t\t})\n\t\t},\n\t\tclickIcon(commands, icon) {\n\t\t\treturn icon.action(commands)\n\t\t},\n\t\tgetWindowWidth(event) {\n\t\t\tthis.windowWidth = document.documentElement.clientWidth\n\t\t},\n\t\tgetWindowHeight(event) {\n\t\t\tthis.windowHeight = document.documentElement.clientHeight\n\t\t},\n\t\thideChildMenu(icon) {\n\t\t\tthis.$set(this.submenuVisibility, icon.label, false)\n\t\t},\n\t\ttoggleChildMenu(icon) {\n\t\t\tconst lastValue = this.submenuVisibility.hasOwnProperty(icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\tthis.$set(this.submenuVisibility, icon.label, !lastValue)\n\t\t},\n\t\tshowImagePrompt(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker('Insert an image', (file) => {\n\t\t\t\tfetchFileInfo(currentUser.uid, file).then((info) => {\n\t\t\t\t\tconst fileInfo = info[0]\n\t\t\t\t\tconsole.debug(fileInfo)\n\t\t\t\t\tconst previewUrl = OC.generateUrl('/core/preview?') + `fileId=${fileInfo.id}&x=1024&y=1024&a=true`\n\t\t\t\t\tconst internalLink = OC.generateUrl('/f/' + fileInfo.id)\n\n\t\t\t\t\t// dirty but works so we have the information stored in markdown\n\t\t\t\t\tconst appendMeta = {\n\t\t\t\t\t\tmimetype: fileInfo.mimetype,\n\t\t\t\t\t\thasPreview: fileInfo.hasPreview,\n\t\t\t\t\t\tfileId: fileInfo.id,\n\t\t\t\t\t}\n\t\t\t\t\tconst src = (fileInfo.hasPreview ? previewUrl : internalLink)\n\t\t\t\t\t\t+ '#'\n\t\t\t\t\t\t+ Object.entries(appendMeta).map(([key, val]) => `${key}=${encodeURIComponent(val)}`).join('&')\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\tsrc: src,\n\t\t\t\t\t\talt: fileInfo.name,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menubar {\n\t\tposition: fixed;\n\t\tposition: -webkit-sticky;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tdisplay: flex;\n\t\tz-index: 10010; // above modal-header so buttons are clickable\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\theight: 44px;\n\n\t\t&.autohide {\n\t\t\tvisibility: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t\t&.is-focused {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.menubar-icons {\n\t\t\tflex-grow: 1;\n\t\t\tmargin-left: calc((100% - 660px) / 2);\n\t\t}\n\t\t@media (max-width: 660px) {\n\t\t\t.menubar-icons {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t\t&::v-deep .action-item__menu ul {\n\t\t\tmax-height: calc(100vh - 88px);\n\t\t\toverflow: scroll;\n\t\t}\n\t}\n\n\t.menubar button {\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\n\t\t&.icon-undo, &.icon-redo {\n\t\t\topacity: .4;\n\t\t}\n\t}\n\n\t.menubar .submenu {\n\t\tdisplay: inline-block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tposition: relative;\n\t\tvertical-align: top;\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&\"","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=daec5a80&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=daec5a80&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 \"daec5a80\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(isActive.link() ? 'Update Link' : 'Add Link'),expression:\"isActive.link() ? 'Update Link' : 'Add Link'\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Add link')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.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!./MenuBubble.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<EditorMenuBubble v-slot=\"{ commands, isActive, getMarkAttrs, menu }\"\n\t\tclass=\"menububble\"\n\t\t:editor=\"editor\"\n\t\t@hide=\"hideLinkMenu\">\n\t\t<div class=\"menububble\" :class=\"{ 'is-active': menu.isActive }\" :style=\"`left: ${menu.left}px; bottom: ${menu.bottom}px;`\">\n\t\t\t<form v-if=\"linkMenuIsActive\" class=\"menububble__form\" @submit.prevent=\"setLinkUrl(commands.link, linkUrl)\">\n\t\t\t\t<input ref=\"linkInput\"\n\t\t\t\t\tv-model=\"linkUrl\"\n\t\t\t\t\tclass=\"menububble__input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\t@keydown.esc=\"hideLinkMenu\">\n\t\t\t\t<button class=\"menububble__button icon-confirm\" type=\"button\" @click=\"setLinkUrl(commands.link, linkUrl)\" />\n\t\t\t</form>\n\n\t\t\t<template v-else>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"showLinkMenu(getMarkAttrs('link'))\">\n\t\t\t\t\t<span v-tooltip=\"isActive.link() ? 'Update Link' : 'Add Link'\" class=\"icon-link\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">{{ t('text', 'Add link') }}</span>\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</div>\n\t</EditorMenuBubble>\n</template>\n\n<script>\nimport { EditorMenuBubble } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'MenuBubble',\n\tcomponents: {\n\t\tEditorMenuBubble,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\tlinkUrl: null,\n\t\t\tlinkMenuIsActive: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tshowLinkMenu(attrs) {\n\t\t\tthis.linkUrl = attrs.href\n\t\t\tthis.linkMenuIsActive = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.linkInput.focus()\n\t\t\t})\n\t\t},\n\t\thideLinkMenu() {\n\t\t\tthis.linkUrl = null\n\t\t\tthis.linkMenuIsActive = false\n\t\t},\n\n\t\tsetLinkUrl(command, url) {\n\t\t\tif (url && !url.match(/^[a-zA-Z]+:\\/\\//) && !url.match(/^\\//)) {\n\t\t\t\turl = 'https://' + url\n\t\t\t}\n\t\t\tcommand({ href: url })\n\t\t\tthis.hideLinkMenu()\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menububble {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tz-index: 10020;\n\t\tbackground: var(--color-main-background-translucent);\n\t\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tmargin-bottom: 0.4rem;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\ttransform: translateX(-50%);\n\t\ttransition: opacity 0.2s, visibility 0.2s;\n\n\t\t&.is-active {\n\t\t\topacity: 1;\n\t\t\tvisibility: visible;\n\t\t}\n\n\t\t&__button {\n\t\t\tdisplay: block;\n\t\t\tborder: 0;\n\t\t\tpadding: 0.3rem 0.7rem;\n\t\t\tmargin: 0;\n\t\t\tmargin-right: 0.2rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tcursor: pointer;\n\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__buttontext {\n\t\t\tpadding: 0.4rem;\n\t\t\tpadding-right: 0;\n\t\t}\n\n\t\t&__form {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__input {\n\t\t\tfont: inherit;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tmin-width: 150px;\n\t\t}\n\t}\n</style>\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=b3f47288&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=b3f47288&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 \"b3f47288\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file