From ac5bc7b0f0637331b2da32793178819a81a33f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Sun, 18 Jun 2023 21:54:03 +0200 Subject: [PATCH 1/2] fix: Pass origin along the initial state update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- src/components/Editor.vue | 2 +- src/helpers/yjs.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/Editor.vue b/src/components/Editor.vue index 71376f664e..8be3cd2162 100644 --- a/src/components/Editor.vue +++ b/src/components/Editor.vue @@ -464,7 +464,7 @@ export default { onLoaded({ documentSource, documentState }) { if (documentState) { - applyDocumentState(this.$ydoc, documentState) + applyDocumentState(this.$ydoc, documentState, this.$providers[0]) } this.hasConnectionIssue = false diff --git a/src/helpers/yjs.js b/src/helpers/yjs.js index 4243e5750d..bc83c1e30a 100644 --- a/src/helpers/yjs.js +++ b/src/helpers/yjs.js @@ -36,8 +36,9 @@ export function getDocumentState(ydoc) { * * @param {Doc} ydoc - apply state to this doc * @param {string} documentState - base64 encoded doc state + * @param {object} origin - initiator object e.g. WebsocketProvider */ -export function applyDocumentState(ydoc, documentState) { +export function applyDocumentState(ydoc, documentState, origin) { const update = decodeArrayBuffer(documentState) - applyUpdate(ydoc, update) + applyUpdate(ydoc, update, origin) } From 475f130eb31ceb72be8ed66673e8b0a3b991dad0 Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Mon, 19 Jun 2023 21:04:16 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- js/editor.js | 4 ++-- js/editor.js.map | 2 +- js/files-modal.js | 4 ++-- js/files-modal.js.map | 2 +- js/text-editors.js | 4 ++-- js/text-editors.js.map | 2 +- js/text-files.js | 4 ++-- js/text-files.js.map | 2 +- js/text-public.js | 4 ++-- js/text-public.js.map | 2 +- js/text-text.js | 4 ++-- js/text-text.js.map | 2 +- js/text-viewer.js | 4 ++-- js/text-viewer.js.map | 2 +- 14 files changed, 21 insertions(+), 21 deletions(-) diff --git a/js/editor.js b/js/editor.js index aab4edf8f4..b1b421db92 100644 --- a/js/editor.js +++ b/js/editor.js @@ -1,3 +1,3 @@ /*! For license information please see editor.js.LICENSE.txt */ -(self.webpackChunk_nextcloud_text=self.webpackChunk_nextcloud_text||[]).push([["editor"],{31728:(e,t,n)=>{"use strict";n.d(t,{$r:()=>y,BG:()=>A,C6:()=>p,Cy:()=>E,FQ:()=>o,HB:()=>r,IT:()=>d,OV:()=>m,QT:()=>h,Uw:()=>i,Zf:()=>v,a_:()=>f,cY:()=>l,eP:()=>T,fB:()=>b,q$:()=>s,rz:()=>S,sw:()=>u,vo:()=>c,wU:()=>_,ww:()=>C,zZ:()=>g});var a=n(52029);const i=Symbol("tiptap:editor"),r=Symbol("editor:file"),o=Symbol("attachment:resolver"),s=Symbol("editor:is-mobile"),l=Symbol("editor:is-public"),c=Symbol("editor:is-rich-editor"),d=Symbol("editor:is-rich-woskapace"),_=Symbol("sync:service"),p=Symbol("editor:upload"),m=Symbol("hook:link-click"),u=Symbol("hook:mention-search"),g=Symbol("hook:mention-insert"),E={inject:{$editor:{from:i,default:null}}},A={inject:{$syncService:{from:_,default:null}}},b={inject:{$isPublic:{from:l,default:!1}}},S={inject:{$isRichWorkspace:{from:d,default:!1}}},h={inject:{$isRichEditor:{from:c,default:!1}}},C={inject:{$isMobile:{from:s,default:!1}}},f={inject:{$file:{from:r,default:()=>({fileId:0,relativePath:null,document:null})}}},v={inject:{$attachmentResolver:{from:o,default:{resolve:e=>(a.k.warn("No attachment resolver provided. Some attachment sources cannot be resolved."),[e])}}}},T={inject:{$editorUpload:{from:p,default:!0}}},y={inject:{$linkHookClick:{from:m,default:null}}}},33528:(e,t,n)=>{"use strict";n.d(t,{TI:()=>s,eS:()=>r,gn:()=>i,kZ:()=>o,qj:()=>l,uT:()=>a});const a=Symbol("state:uploading-state"),i=Symbol("editor:action:attachment-prompt"),r=Symbol("editor:action:upload-attachment"),o={inject:{$uploadingState:{from:a,default:{isUploadingAttachments:!1}}}},s={inject:{$callAttachmentPrompt:{from:i,default:()=>{}}}},l={inject:{$callChooseLocalAttachment:{from:r,default:()=>{}}}}},28612:(e,t,n)=>{"use strict";n.d(t,{Ad:()=>o,Dr:()=>a,aM:()=>i,vV:()=>r});const a=Symbol("wrapper:outline-state"),i=Symbol("wrapper:outline-actions"),r={inject:{$outlineState:{from:a,default:{visible:!1,enable:!1}}}},o={inject:{$outlineActions:{from:i,default:{toggle:()=>{}}}}}},85724:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(68418),i=n(68794);const r={name:"ActionEntry",functional:!0,render(e,t){const{actionEntry:n}=t.props,{data:r,props:o,listeners:s}=t,{key:l}=r,c={data:r,key:l,props:o,on:s};return n.component?e(n.component,c):n.children?e(i.Z,c):e(a.Z,c)}}},76115:(e,t,n)=>{"use strict";n.d(t,{b:()=>T});var a=n(15961),i=n(20296),r=n.n(i),o=n(31728),s=n(28612),l=n(72076),c=n(13815),d=n(93379),_=n.n(d),p=n(7795),m=n.n(p),u=n(90569),g=n.n(u),E=n(3565),A=n.n(E),b=n(19216),S=n.n(b),h=n(44589),C=n.n(h),f=n(97646),v={};v.styleTagTransform=C(),v.setAttributes=A(),v.insert=g().bind(null,"head"),v.domAPI=m(),v.insertStyleElement=S();_()(f.Z,v);f.Z&&f.Z.locals&&f.Z.locals;const T={directives:{Tooltip:a.u},mixins:[o.Cy,o.ww,c.Z,s.Ad,s.vV],props:{actionEntry:{type:Object,required:!0}},data(){return{state:(0,l.wr)(this.actionEntry,this.$editor)}},computed:{label(){const{label:e}=this.actionEntry;return"function"==typeof e?e(this):e},icon(){return this.actionEntry.icon},keyshortcuts(){return(0,l.FZ)(this.actionEntry)},tooltip(){return[this.label,(0,l.RR)(this.$isMobile,this.actionEntry)].join(" ")}},mounted(){this.$_updateState=r()(this.updateState.bind(this),50),this.$editor.on("update",this.$_updateState),this.$editor.on("selectionUpdate",this.$_updateState)},beforeDestroy(){this.$editor.off("update",this.$_updateState),this.$editor.off("selectionUpdate",this.$_updateState)},methods:{updateState(){this.state=(0,l.wr)(this.actionEntry,this.$editor)}}}},60948:(e,t,n)=>{"use strict";n.d(t,{V:()=>a,q:()=>i});const a=Symbol("menu::id"),i={inject:{$menuID:{from:a,default:null}},computed:{menuIDSelector(){return"#".concat(this.$menuID)}}}},43465:(e,n,a)=>{"use strict";a.d(n,{E:()=>P,Z:()=>B});var i=a(32318),r=a(76115),o=a(15961),s=a(60948);const l={name:"EmojiPickerAction",components:{NcEmojiPicker:o.Xo,NcButton:o.P2},extends:r.b,mixins:[s.q],methods:{addEmoji(e){let{id:t,native:n}=e;this.actionEntry.action(this.$editor.chain(),{id:t,native:n}).focus().run()}}};var c=a(51900);const d=(0,c.Z)(l,(function(){var e=this,t=e._self._c;return t("NcEmojiPicker",{staticClass:"entry-action entry-action__emoji",attrs:{"data-text-action-entry":e.actionEntry.key,container:e.menuIDSelector},on:{"select-data":e.addEmoji}},[t("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:e.actionEntry.label,expression:"actionEntry.label"}],staticClass:"entry-action__button",attrs:{role:"menu",title:e.actionEntry.label,"aria-label":e.actionEntry.label,"aria-haspopup":!0},scopedSlots:e._u([{key:"icon",fn:function(){return[t(e.icon,{tag:"component"})]},proxy:!0}])})],1)}),[],!1,null,null,null).exports;var _=a(31728),p=a(33528);const m={name:"ActionAttachmentUpload",components:{NcActions:o.O3,NcActionButton:o.Js,Loading:i.gb,Folder:i.gt,Upload:i.gq},extends:r.b,mixins:[_.fB,_.eP,p.TI,p.kZ,p.qj,s.q],computed:{icon(){return this.isUploadingAttachments?i.gb:this.actionEntry.icon},isUploadingAttachments(){return this.$uploadingState.isUploadingAttachments}}};const u=(0,c.Z)(m,(function(){var e=this,t=e._self._c;return t("NcActions",{staticClass:"entry-action entry-action__image-upload",attrs:{"data-text-action-entry":e.actionEntry.key,title:e.actionEntry.label,"aria-label":e.actionEntry.label,container:e.menuIDSelector,role:"menu","aria-haspopup":""},scopedSlots:e._u([{key:"icon",fn:function(){return[t(e.icon,{tag:"component",attrs:{title:e.actionEntry.label,"aria-label":e.actionEntry.label,"aria-haspopup":""}})]},proxy:!0}])},[e._v(" "),e.$editorUpload?t("NcActionButton",{attrs:{"close-after-click":"",disabled:e.isUploadingAttachments,"data-text-action-entry":"".concat(e.actionEntry.key,"-upload")},on:{click:e.$callChooseLocalAttachment},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Upload")]},proxy:!0}],null,!1,933298848)},[e._v("\n\t\t"+e._s(e.t("text","Upload from computer"))+"\n\t")]):e._e(),e._v(" "),e.$isPublic?e._e():t("NcActionButton",{attrs:{"close-after-click":"",disabled:e.isUploadingAttachments,"data-text-action-entry":"".concat(e.actionEntry.key,"-insert")},on:{click:e.$callAttachmentPrompt},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Folder")]},proxy:!0}],null,!1,2750733237)},[e._v("\n\t\t"+e._s(e.t("text","Insert from Files"))+"\n\t")])],1)}),[],!1,null,null,null).exports;var g=a(86680),E=a(64024),A=a(73845),b=a(16991);const S={name:"ActionInsertLink",components:{NcActions:o.O3,NcActionButton:o.Js,NcActionInput:o.Iw,Document:i.BB,Loading:i.gb,LinkOff:i.pR,Web:i.ph,Shape:i.bn},extends:r.b,mixins:[_.a_,s.q],data:()=>({href:null,isInputMode:!1,startPath:null}),computed:{activeClass(){return this.state.active?"is-active":""},relativePath(){var e,t;return null!==(e=null===(t=this.$file)||void 0===t?void 0:t.relativePath)&&void 0!==e?e:"/"}},methods:{linkFile(){null===this.startPath&&(this.startPath=this.relativePath.split("/").slice(0,-1).join("/"));new E.GB(t("text","Select file or folder to link to"),!1,[],!0,E.K9.Choose,!0,this.startPath).pick().then((e=>{OC.Files.getClient().getFileInfo(e).then(((e,t)=>{const n=(0,b.Lz)(this.relativePath,"".concat(t.path,"/").concat(t.name)).split("/").map(encodeURIComponent).join("/")+("dir"===t.type?"/":""),a="".concat(n,"?fileId=").concat(t.id);this.setLink(a,t.name),this.startPath=t.path+("dir"===t.type?"/".concat(t.name,"/"):"")}))}))},linkWebsite(e){if("submit"===(null==e?void 0:e.type)){const t=[...e.target.elements].filter((e=>"text"===(null==e?void 0:e.type)))[0].value;return this.$refs.menu.closeMenu(),this.isInputMode=!1,this.href=null,this.setLink(t,t)}if((0,A.zh)(this.$editor.state,"link")){const e=(0,A.Jo)(this.$editor.state,"link");this.href=e.href}this.isInputMode=!0},setLink(e,t){var n;e&&![/^[a-zA-Z]+:/,/^\//,/\?fileId=/,/^\.\.?\//,/^[^.]*[/$]/,/^#/].find((t=>e.match(t)))&&(e="https://"+e);const a=e.replaceAll(" ","%20"),i=this.$editor.chain();null!==(n=this.$editor.view.state)&&void 0!==n&&n.selection.empty?i.insertContent({type:"paragraph",content:[{type:"text",marks:[{type:"link",attrs:{href:a}}],text:t}]}):i.setLink({href:a}),i.focus().run()},removeLink(){this.$editor.chain().unsetLink().focus().run()},linkPicker(){(0,g.getLinkWithPicker)(null,!0).then((e=>{this.$editor.chain().focus().insertContent(e+" ").run()})).catch((e=>{console.error("Smart picker promise rejected",e)}))}}};var h=a(93379),C=a.n(h),f=a(7795),v=a.n(f),T=a(90569),y=a.n(T),N=a(3565),R=a.n(N),O=a(19216),I=a.n(O),x=a(44589),D=a.n(x),w=a(37254),M={};M.styleTagTransform=D(),M.setAttributes=R(),M.insert=y().bind(null,"head"),M.domAPI=v(),M.insertStyleElement=I();C()(w.Z,M);w.Z&&w.Z.locals&&w.Z.locals;const k=(0,c.Z)(S,(function(){var e=this,t=e._self._c;return t("NcActions",{ref:"menu",staticClass:"entry-action entry-action__insert-link",class:e.activeClass,attrs:{"aria-haspopup":"","aria-label":e.actionEntry.label,container:e.menuIDSelector,"data-text-action-entry":e.actionEntry.key,title:e.actionEntry.label},scopedSlots:e._u([{key:"icon",fn:function(){return[t(e.icon,{tag:"component",attrs:{title:e.actionEntry.label,"aria-label":e.actionEntry.label,"aria-haspopup":""}})]},proxy:!0}])},[e._v(" "),e.state.active?t("NcActionButton",{attrs:{"close-after-click":"","data-text-action-entry":"".concat(e.actionEntry.key,"-remove")},on:{click:e.removeLink},scopedSlots:e._u([{key:"icon",fn:function(){return[t("LinkOff")]},proxy:!0}],null,!1,3589828876)},[e._v("\n\t\t"+e._s(e.t("text","Remove link"))+"\n\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{"close-after-click":"","data-text-action-entry":"".concat(e.actionEntry.key,"-file")},on:{click:e.linkFile},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Document")]},proxy:!0}])},[e._v("\n\t\t"+e._s(e.t("text","Link to file or folder"))+"\n\t")]),e._v(" "),e.isInputMode?t("NcActionInput",{attrs:{type:"text",value:e.href,"data-text-action-entry":"".concat(e.actionEntry.key,"-input")},on:{submit:e.linkWebsite},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Web")]},proxy:!0}],null,!1,1844845715)},[e._v("\n\t\t"+e._s(e.t("text","Link to website"))+"\n\t")]):t("NcActionButton",{attrs:{"data-text-action-entry":"".concat(e.actionEntry.key,"-website")},on:{click:e.linkWebsite},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Web")]},proxy:!0}])},[e._v("\n\t\t"+e._s(e.state.active?e.t("text","Update link"):e.t("text","Link to website"))+"\n\t")]),e._v(" "),t("NcActionButton",{attrs:{"data-text-action-entry":"".concat(e.actionEntry.key,"-picker")},on:{click:e.linkPicker},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Shape")]},proxy:!0}])},[e._v("\n\t\t"+e._s(e.t("text","Open the Smart Picker"))+"\n\t")])],1)}),[],!1,null,"5e172682",null).exports;var L=a(59400);const P=[{key:"outline",forceLabel:!0,icon:i.Cj,click:e=>{let{$outlineActions:t}=e;return t.toggle()},label:e=>{let{$outlineState:n}=e;return n.visible?t("text","Hide outline"):t("text","Show outline")}}],B=[{key:"undo",label:t("text","Undo"),keyChar:"z",keyModifiers:[L.v.Mod],icon:i.WP,action:e=>e.undo(),priority:6},{key:"redo",label:t("text","Redo"),keyChar:"y",keyModifiers:[L.v.Mod],icon:i.Jw,action:e=>e.redo(),priority:12},{key:"bold",label:t("text","Bold"),keyChar:"b",keyModifiers:[L.v.Mod],icon:i.VK,isActive:"strong",action:e=>e.toggleBold(),priority:7},{key:"italic",label:t("text","Italic"),keyChar:"i",keyModifiers:[L.v.Mod],icon:i.mV,isActive:"em",action:e=>e.toggleItalic(),priority:8},{key:"underline",label:t("text","Underline"),keyChar:"u",keyModifiers:[L.v.Mod],icon:i.Bz,isActive:"underline",action:e=>e.toggleUnderline(),priority:15},{key:"strikethrough",label:t("text","Strikethrough"),keyChar:"x",keyModifiers:[L.v.Mod,L.v.Shift],icon:i.Lo,isActive:"strike",action:e=>e.toggleStrike(),priority:16},{key:"headings",label:t("text","Headings"),keyChar:"1…6",keyModifiers:[L.v.Mod,L.v.Shift],icon:i.Lz,isActive:"heading",children:[{key:"headings-h1",label:t("text","Heading 1"),icon:i.Lz,isActive:["heading",{level:1}],action:e=>e.toggleHeading({level:1})},{key:"headings-h2",label:t("text","Heading 2"),icon:i.DB,isActive:["heading",{level:2}],action:e=>e.toggleHeading({level:2})},{key:"headings-h3",label:t("text","Heading 3"),icon:i.XD,isActive:["heading",{level:3}],action:e=>e.toggleHeading({level:3})},{key:"headings-h4",label:t("text","Heading 4"),isActive:["heading",{level:4}],icon:i.fy,action:e=>e.toggleHeading({level:4})},{key:"headings-h5",label:t("text","Heading 5"),isActive:["heading",{level:5}],icon:i.Ze,action:e=>e.toggleHeading({level:5})},{key:"headings-h6",label:t("text","Heading 6"),isActive:["heading",{level:6}],icon:i.J4,action:e=>e.toggleHeading({level:6})},{key:"outline",icon:i.Cj,click:e=>{let{$outlineActions:t}=e;return t.toggle()},visible:e=>{let{$outlineState:t}=e;return t.enable},label:e=>{let{$outlineState:n}=e;return n.visible?t("text","Hide outline"):t("text","Show outline")}}],priority:1},{key:"unordered-list",label:t("text","Unordered list"),keyChar:"8",keyModifiers:[L.v.Mod,L.v.Shift],isActive:"bulletList",icon:i.Cj,action:e=>e.toggleBulletList(),priority:9},{key:"ordered-list",label:t("text","Ordered list"),keyChar:"7",keyModifiers:[L.v.Mod,L.v.Shift],isActive:"orderedList",icon:i.mH,action:e=>e.toggleOrderedList(),priority:10},{key:"task-list",label:t("text","To-Do list"),keyChar:"9",keyModifiers:[L.v.Mod,L.v.Shift],isActive:"taskList",icon:i.Fv,action:e=>e.toggleTaskList(),priority:11},{key:"insert-link",label:t("text","Insert link"),isActive:"link",icon:i.xP,component:k,priority:2},{key:"blockquote",label:t("text","Blockquote"),keyChar:"b",keyModifiers:[L.v.Mod,L.v.Shift],isActive:"blockquote",icon:i.UX,action:e=>e.toggleBlockquote(),priority:13},{key:"callouts",label:t("text","Callouts"),visible:!1,icon:i.kI,isActive:"callout",children:[{key:"callout-info",label:t("text","Info"),isActive:["callout",{type:"info"}],icon:i.kI,action:e=>e.toggleCallout({type:"info"})},{key:"callout-success",label:t("text","Success"),isActive:["callout",{type:"success"}],icon:i.Ho,action:e=>e.toggleCallout({type:"success"})},{key:"callout-warn",label:t("text","Warning"),isActive:["callout",{type:"warn"}],icon:i.uU,action:e=>e.toggleCallout({type:"warn"})},{key:"callout-error",label:t("text","Danger"),isActive:["callout",{type:"error"}],icon:i.b0,action:e=>e.toggleCallout({type:"error"})}],priority:3},{key:"code-block",label:t("text","Code block"),keyChar:"c",keyModifiers:[L.v.Mod,L.v.Alt],isActive:"codeBlock",icon:i.Nk,action:e=>e.toggleCodeBlock(),priority:14},{key:"table",label:t("text","Table"),isActive:"table",icon:i.iA,action:e=>e.insertTable(),priority:17},{key:"emoji-picker",label:t("text","Insert emoji"),icon:i.tk,component:d,action:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.emoji(t)},priority:5},{key:"insert-attachment",label:t("text","Insert attachment"),icon:i.rU,component:u,priority:4}]},59400:(e,n,a)=>{"use strict";a.d(n,{K:()=>o,v:()=>r});const i=navigator.userAgent.includes("Mac"),r={Mod:i?"Meta":"Control",Alt:"Alt",Control:"Control",Shift:"Shift"},o={[r.Mod]:i?t("text","Command"):t("text","Control"),[r.Control]:t("text","Ctrl"),[r.Alt]:t("text",i?"Option":"Alt"),[r.Shift]:t("text","Shift")}},72076:(e,t,n)=>{"use strict";n.d(t,{FZ:()=>r,RR:()=>o,vK:()=>l,wr:()=>c});var a=n(59400);const i=(e,t)=>({"is-active":t,["action-menu-".concat(e.key)]:!0}),r=e=>{let{keyChar:t,keyModifiers:n=[]}=e;return n.map((e=>a.v[e])).concat(t).join("+")},o=(e,t)=>{let{keyChar:n,keyModifiers:i}=t;return!e&&n?"(".concat(function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).map((e=>a.K[e])).concat(e.toUpperCase()).join("+")}(n,i),")"):""},s=(e,t)=>e.action&&!e.action(t.can()),l=(e,t)=>{let{isActive:n}=e;if(!n)return!1;const a=Array.isArray(n)?n:[n];return t.isActive(...a)},c=(e,t)=>{const n=l(e,t);return{disabled:s(e,t),class:i(e,n),active:n}}},28374:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(13861),i=n(79835);const r=e=>{let{listComponent:t,items:n=(()=>{}),command:r=(e=>{let{editor:t,range:n,props:a}=e})}=e;return{items:n,command:r,render:()=>{let e,n;return{onStart:r=>{e=new i.aA(t,{parent:void 0,propsData:r}),r.clientRect&&(n=(0,a.ZP)("body",{getReferenceClientRect:r.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}),e.ref.$on("select",(()=>{n.length>0&&n[0].hide()})))},onUpdate(t){e.updateProps(t),t.clientRect&&n&&n[0].setProps({getReferenceClientRect:t.clientRect})},onKeyDown(t){var a,i;if(n)return"Escape"===t.event.key?(n[0].hide(),n[0].destroy(),e.destroy(),n=null,!0):null===(a=e.ref)||void 0===a||null===(i=a.onKeyDown)||void 0===i?void 0:i.call(a,t)},onExit(){n&&(n[0].destroy(),e.destroy())}}}}}},32318:(e,t,n)=>{"use strict";n.d(t,{Ah:()=>Fe,BB:()=>_e,BF:()=>pe,Bz:()=>Oe,Cj:()=>ve,DB:()=>Ae,Ee:()=>xe,F5:()=>je,Fq:()=>ze,Fv:()=>Te,HG:()=>de,Ho:()=>Le,IY:()=>Ge,J4:()=>Ce,Jw:()=>Pe,L9:()=>re,Lo:()=>Re,Lz:()=>Ee,Nk:()=>le,Pn:()=>ae,QK:()=>ie,UX:()=>Ne,VK:()=>ge,WP:()=>Ve,WW:()=>Ie,XD:()=>be,Ze:()=>he,_2:()=>He,b0:()=>ce,bn:()=>Be,fy:()=>Se,gb:()=>ne,gq:()=>qe,gr:()=>oe,gt:()=>ue,iA:()=>Ue,kI:()=>we,mH:()=>ye,mV:()=>fe,pR:()=>ke,ph:()=>We,pn:()=>Ye,rU:()=>De,tk:()=>me,uU:()=>$e,x8:()=>se,xP:()=>Me});var a=n(96963),i=n(82675),r=n(80419),o=n(75441),s=n(45795),l=n(75816),c=n(57612),d=n(13881),_=n(89115),p=n(37319),m=n(34829),u=n(88723),g=n(10864),E=n(39027),A=n(4738),b=n(57637),S=n(13237),h=n(52986),C=n(17238),f=n(11465),v=n(94669),T=n(34415),y=n(9829),N=n(65875),R=n(35357),O=n(92801),I=n(42413),x=n(88505),D=n(39227),w=n(5039),M=n(93603),k=n(37838),L=n(19695),P=n(72468),B=n(64836),U=n(65745),F=n(79542),G=n(91265),j=n(96104),Y=n(21666),H=n(61562),z=n(52880),V=n(49759),q=n(39850),$=n(9571),W=n(69699),Q=n(33581),K=n(4650),Z=n(75762),X=n(8421),J=n(97859),ee=n(54503);const te=e=>({functional:!0,render(t,n){let{data:a,props:i}=n;return t(e,{data:a,key:a.key,staticClass:a.staticClass,props:{size:20,...i}})}}),ne={functional:!0,render(e,t){let{data:n,props:a}=t;return e(U.Z,{data:n,staticClass:"animation-rotate",props:{size:20,...a}})}},ae=te(a.Z),ie=te(g.Z),re=te(E.Z),oe=te(A.Z),se=te(i.default),le=(te(r.default),te(s.Z)),ce=(te(o.Z),te(l.default)),de=te(c.Z),_e=te(d.Z),pe=te(_.default),me=te(p.Z),ue=te(m.default),ge=te(u.Z),Ee=te(b.Z),Ae=te(S.Z),be=te(h.Z),Se=te(C.Z),he=te(f.Z),Ce=te(v.Z),fe=te(T.Z),ve=te(y.Z),Te=te(N.Z),ye=te(R.Z),Ne=te(O.Z),Re=te(I.Z),Oe=te(x.Z),Ie=te(D.default),xe=te(w.Z),De=te(M.Z),we=te(k.Z),Me=te(L.Z),ke=te(P.Z),Le=(te(B.Z),te(F.Z),te(G.default)),Pe=te(j.Z),Be=te(Y.Z),Ue=te(H.Z),Fe=te(z.Z),Ge=te(V.Z),je=te(q.Z),Ye=te($.Z),He=te(W.Z),ze=(te(Q.Z),te(ee.Z)),Ve=te(K.Z),qe=te(Z.Z),$e=te(X.default),We=te(J.default)},73073:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p,g:()=>c});var a=n(73845),i=n(2376),r=n(55963),o=n(40187),s=n(87823);const l=a.hj.create({name:"markdown",extendMarkSchema(e){const t={name:e.name,options:e.options,storage:e.storage};return{toMarkdown:(0,a.Nl)(e,"toMarkdown",t)}},extendNodeSchema(e){const t={name:e.name,options:e.options,storage:e.storage};return{toMarkdown:(0,a.Nl)(e,"toMarkdown",t)}},addProseMirrorPlugins(){let e=!1;return[new i.Sy({key:new i.H$("pasteEventHandler"),props:{handleDOMEvents:{mouseup:(t,n)=>(e=n.shiftKey,!1)},handleKeyDown:(t,n)=>(e=n.shiftKey,!1),clipboardTextParser(t,n,a,i){const r=s.aw.fromSchema(i.state.schema),l=document.cloneNode(!1).createElement("div");return l.innerHTML=e?"

"+t.replaceAll("\n","
").replaceAll("

","

")+"

":o.Z.render(t),r.parseSlice(l,{preserveWhitespace:!0,context:n})}}})]}}),c=e=>{let{nodes:t,marks:n}=e;const a=_(r.Dm.nodes),i=_(r.Dm.marks);return{serializer:new r.nZ({...a,...d(t)},{...i,...d(n)}),serialize(e,t){return this.serializer.serialize(e,{...t,tightLists:!0})}}},d=e=>Object.entries(e).map((e=>{let[t,n]=e;return[t,n.spec.toMarkdown]})).filter((e=>{let[,t]=e;return t})).reduce(((e,t)=>{let[n,a]=t;return{...e,[n]:a}}),{}),_=e=>{const t=e=>e.replace(/_(\w)/g,((e,t)=>t.toUpperCase()));return Object.fromEntries(Object.entries(e).map((e=>{let[n,a]=e;return[t(n),a]})))},p=l},2243:(e,n,a)=>{"use strict";a.d(n,{N8:()=>c,pf:()=>nt,f3:()=>A,Ho:()=>sn});var i=a(73845),r=a(2376),o=a(16722);const s=new r.H$("emoji"),l=i.NB.create({name:"emoji",addOptions:()=>({HTMLAttributes:{},suggestion:{char:":",allowedPrefixes:[" "],pluginKey:s}}),content:"text*",addCommands:()=>({emoji:e=>t=>{let{commands:n}=t;return n.insertContent(e.native+" ")}}),addProseMirrorPlugins(){return[(0,o.ZP)({editor:this.editor,...this.options.suggestion})]}}),c=i.hj.create({name:"customkeymap",addKeyboardShortcuts(){return this.options},addProseMirrorPlugins:()=>[new r.Sy({props:{handleKeyDown(e,t){const n=t.key||t.keyCode;return!t.ctrlKey&&!t.metaKey||t.shiftKey||"f"!==n&&70!==n?"Delete"===t.key&&!0===t.ctrlKey?(t.stopPropagation(),window.dispatchEvent(t),!0):void 0:(t.stopPropagation(),window.dispatchEvent(t),!0)}}})]});var d=a(84348);class _{constructor(e,t,n){this.from=e,this.to=t,this.author=n}}function p(e,t,n,a){if(t>=n)return;let i,r=0;for(;r=t)break}else if(i.to>t){if(i.fromn?e.splice(r++,0,a):e[r++]=a}break}for(;i=e[r];)if(i.author===a){if(i.from>n)break;t=Math.min(t,i.from),n=Math.max(n,i.to),e.splice(r,1)}else{if(i.from>=n)break;if(i.to>n){e[r]=new _(n,i.to,i.author);break}e.splice(r,1)}e.splice(r,0,new _(t,n,a))}class m{constructor(e){this.blameMap=e}applyTransform(e){var t;const n=null!==(t=e.getMeta("clientID"))&&void 0!==t?t:e.steps.map((e=>"self")),a=function(e,t,n){const a=[],i=t.mapping;for(let t=0;t{p(a,r.map(o,1),r.map(s,-1),n[e])}))}return a}(this.blameMap,e,n);return new m(a)}}i.hj.create({name:"users",addOptions:()=>({clientID:0,color:e=>"#"+Math.floor(Math.abs(16777215*Math.sin(e))%16777215).toString(16)+"aa",name:e=>"Unknown user "+e}),addProseMirrorPlugins(){let e=null;return[new r.Sy({clientID:this.options.clientID,color:this.options.color,name:this.options.name,view:t=>(e=t,{}),state:{init:(e,t)=>({tracked:new m([new _(0,t.doc.content.size,null)],[],[],[]),deco:d.EH.empty}),apply(t,n,a,i){let{tracked:r,decos:o}=n,s=this.getState(a).tracked;return t.docChanged&&(t.getMeta("clientID")||t.setMeta("clientID",t.steps.map((e=>this.spec.clientID))),e.composing||(r=r.applyTransform(t),s=r)),o=s.blameMap.map((e=>{const t=e.author;return d.p.inline(e.from,e.to,{class:"author-annotation",style:"background-color: "+this.spec.color(t)+"66;",title:this.spec.name(t)})})).filter((e=>null!==e)),{tracked:r,deco:d.EH.create(i.doc,o)}}},props:{decorations(e){return this.getState(e).deco}}})]}});var u=a(73073),g=a(52701);const E=i.NB.create({name:"doc",content:"block",addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.insertContent("\t")}}}),A=i.hj.create({name:"PlainText",addExtensions:()=>[E,g.Z]});var b=a(78825),S=a(99734);const h=a(30561).ZP.extend({parseHTML(){return this.parent().map((e=>Object.assign(e,{preserveWhitespace:!0})))},addAttributes(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),bullet:{default:"-",rendered:!1,isRequired:!0,parseHTML:e=>e.getAttribute("data-bullet")}}},addInputRules(){return[(e=/^\s*([-+*])\s([^\s[]+)$/,t=this.type,new i.VK({find:e,handler:a=>{let{state:r,range:o,match:s}=a;(0,i.S0)({find:e,type:t,getAttributes:n}).handler({state:r,range:o,match:s}),s.length>=3&&r.tr.insertText(s[2])}}))];var e,t,n}});var C=a(79835),f=a(30744),v=a(32318);const T={info:v.kI,success:v.Ho,error:v.b0,warn:v.uU},y={name:"Callout",components:{NodeViewWrapper:C.T5,NodeViewContent:C.ms},props:{node:{type:Object,required:!0}},computed:{icon(){return T[this.type]||v.kI},type(){var e,t;return(null===(e=this.node)||void 0===e||null===(t=e.attrs)||void 0===t?void 0:t.type)||"info"}}};var N=a(93379),R=a.n(N),O=a(7795),I=a.n(O),x=a(90569),D=a.n(x),w=a(3565),M=a.n(w),k=a(19216),L=a.n(k),P=a(44589),B=a.n(P),U=a(16331),F={};F.styleTagTransform=B(),F.setAttributes=M(),F.insert=D().bind(null,"head"),F.domAPI=I(),F.insertStyleElement=L();R()(U.Z,F);U.Z&&U.Z.locals&&U.Z.locals;var G=a(51900);const j=(0,G.Z)(y,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{staticClass:"callout",class:"callout--".concat(e.type),attrs:{"data-text-el":"callout",as:"div"}},[t(e.icon,{tag:"component",staticClass:"callout__icon"}),e._v(" "),t("NodeViewContent",{staticClass:"callout__content"})],1)}),[],!1,null,"2734884a",null).exports,Y=i.NB.create({name:"callout",content:"paragraph+",group:"block",defining:!0,addOptions:()=>({types:f.F,HTMLAttributes:{class:"callout"}}),addAttributes:()=>({type:{default:"info",rendered:!1,parseHTML:e=>e.getAttribute("data-callout")||f.F.find((t=>e.classList.contains(t)))||e.classList.contains("warning")&&"warn",renderHTML:e=>({"data-callout":e.type,class:"callout-".concat(e.type)})}}),parseHTML:()=>[{tag:"div.callout"},{tag:"p.callout",priority:1001}],renderHTML(e){let{node:t,HTMLAttributes:n}=e;const{class:a}=this.options.HTMLAttributes,r={...this.options.HTMLAttributes,"data-callout":t.attrs.type,class:"".concat(a," ").concat(a,"-").concat(t.attrs.type)};return["div",(0,i.P1)(r,n),0]},toMarkdown:(e,t)=>{e.write("::: "+(t.attrs.type||"info")+"\n"),e.renderContent(t),e.ensureNewLine(),e.write(":::"),e.closeBlock(t)},addNodeView:()=>(0,C.uf)(j),addCommands(){return{setCallout:e=>t=>{let{commands:n}=t;return n.wrapIn(this.name,e)},toggleCallout:e=>t=>{let{commands:n,state:a}=t;return(0,i.Ig)(a,this.name)?(0,i.Ig)(a,this.name,e)?n.unsetCallout():n.updateAttributes(this.name,e):n.setCallout(e)},unsetCallout:()=>e=>{let{commands:t}=e;return t.lift(this.name)}}}});var H=a(88776),z=a(57355),V=a(83416),q=a(55963);const $=V.ZP.extend({parseHTML:()=>[{tag:"pre",preserveWhitespace:"full",getContent:(e,t)=>{const n=e.textContent.replace(/\n$/,""),a=n?[t.text(n)]:[];return t.nodes.codeBlock.create(null,a)}}],toMarkdown:(e,t,n,a)=>(t.attrs.params=t.attrs.language,q.Dm.nodes.code_block(e,t,n,a))});var W=a(20336),Q=a(79829),K=a(15961),Z=a(28374),X=a(31352);const J={name:"EmojiList",props:{items:{type:Array,required:!0},command:{type:Function,required:!0}},data:()=>({selectedIndex:0}),computed:{hasResults(){return this.items.length>0},itemHeight(){return this.$el.scrollHeight/this.items.length},itemInsideScrollView(){return this.selectedIndex*this.itemHeight>=this.$el.scrollTop&&(this.selectedIndex+1)*this.itemHeight<=this.$el.scrollTop+this.$el.clientHeight}},watch:{items(){this.selectedIndex=0,this.$el.scrollTop=0}},methods:{t:X.Iu,onKeyDown(e){let{event:t}=e;return!(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey)&&("ArrowUp"===t.key?(this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.itemInsideScrollView||(this.$el.scrollTop=this.selectedIndex*this.itemHeight),!0):"ArrowDown"===t.key?(this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.itemInsideScrollView||(this.$el.scrollTop=(this.selectedIndex+1)*this.itemHeight-this.$el.clientHeight),!0):("Enter"===t.key||"Tab"===t.key)&&(this.selectItem(this.selectedIndex),!0))},selectItem(e){const t=this.items[e];t&&(this.command(t),(0,K.Ry)(t))}}};var ee=a(82038),te={};te.styleTagTransform=B(),te.setAttributes=M(),te.insert=D().bind(null,"head"),te.domAPI=I(),te.insertStyleElement=L();R()(ee.Z,te);ee.Z&&ee.Z.locals&&ee.Z.locals;const ne=(0,G.Z)(J,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"emoji-list"},[e.hasResults?e._l(e.items,(function(n,a){return t("div",{key:a,staticClass:"emoji-list__item",class:{"is-selected":a===e.selectedIndex},on:{click:function(t){return e.selectItem(a)}}},[t("span",{staticClass:"emoji-list__item__emoji"},[e._v("\n\t\t\t\t"+e._s(n.native)+"\n\t\t\t")]),e._v("\n\t\t\t:"+e._s(n.short_name)+"\n\t\t")])})):t("div",{staticClass:"emoji-list__item is-empty"},[e._v("\n\t\t"+e._s(e.t("text","No emoji found"))+"\n\t")])],2)}),[],!1,null,"74f9a54a",null).exports,ae=V.ZP.extend({name:"frontMatter",draggable:!1,renderHTML(e){let{node:n,HTMLAttributes:a}=e;return this.parent({node:n,HTMLAttributes:(0,i.P1)(a,{"data-title":t("text","Front matter"),class:"frontmatter"})})},parseHTML:()=>[{tag:"pre#frontmatter",preserveWhitespace:"full",priority:9001,attrs:{language:"yaml"}}],toMarkdown:(e,t)=>{if(!e.out.match(/^\s*/))throw Error("FrontMatter must be the first node of the document!");const n=t.textContent,a=n.match(/-{3,}/gm),i=a?a.sort().slice(-1)[0]+"-":"---";e.write(""),e.out="",e.write("".concat(i,"\n")),e.text(n,!1),e.ensureNewLine(),e.write(i),e.closeBlock(t)},addInputRules(){return[{find:/^---$/g,handler:e=>{let{state:t,range:n,chain:a}=e;return 1===n.from&&(t.doc.resolve(1).parent.type.name!==this.name&&(a().deleteRange(n).insertContentAt(0,{type:this.name}),!0))}}]},addCommands:()=>({}),addPasteRules:()=>[],addProseMirrorPlugins:()=>[]});var ie=a(26022),re=a(77958),oe=a(86680),se=a(20296),le=a.n(se);const ce={name:"ParagraphView",components:{NodeViewWrapper:C.T5,NodeViewContent:C.ms,NcReferenceList:oe.NcReferenceList},props:C.Un,data:()=>({text:null,isLoggedIn:(0,re.ts)()}),watch:{node:{handler(e){null!=e&&e.textContent?this.debouncedUpdateText(e):this.text=""}}},beforeCreate(){this.debouncedUpdateText=le()((e=>{this.text=this.getTextReference(this.node)}),500)},created(){this.text=this.getTextReference(this.node)},beforeUnmount(){var e;null===(e=this.debouncedUpdateText)||void 0===e||e.cancel()},methods:{getTextReference(e){var t,n;if(null==e||!e.childCount)return null;let a;for(let t=0;t"link"===e.type.name)),r=null==i||null===(n=i.attrs)||void 0===n?void 0:n.href;return new RegExp(/(^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)($)/gi).test(r)?r:null}}};var de=a(11481),_e={};_e.styleTagTransform=B(),_e.setAttributes=M(),_e.insert=D().bind(null,"head"),_e.domAPI=I(),_e.insertStyleElement=L();R()(de.Z,_e);de.Z&&de.Z.locals&&de.Z.locals;const pe=(0,G.Z)(ce,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{staticClass:"vue-component",attrs:{as:"p"}},[t("NodeViewContent",{staticClass:"paragraph-content"}),e._v(" "),e.isLoggedIn&&e.text?t("NcReferenceList",{attrs:{text:e.text,limit:1,contenteditable:"false"}}):e._e()],1)}),[],!1,null,"40519f7a",null).exports,me=ie.Z.extend({addNodeView:()=>(0,C.uf)(pe),parseHTML(){return this.parent().map((e=>Object.assign(e,{preserveWhitespace:"full"})))},addKeyboardShortcuts(){return{Backspace:()=>{const e=this.editor.state.selection;if(0!==e.$from.parentOffset)return!1;const t=e.$from.parent,n=e.$from.index(e.$from.depth-1);if(0===n)return!1;const a=e.$from.node(e.$from.depth-1).child(n-1);return t.type.name===this.name&&a.type.name===this.name&&this.editor.chain().joinBackward().setHardBreak().run()}}}});const ue=a(35525).Z.extend({addAttributes:()=>({syntax:{default:" ",rendered:!1,keepOnSplit:!0,parseHTML:e=>e.getAttribute("data-syntax")||" "}}),addCommands(){return{...null==this?void 0:this.parent(),setHardBreak:()=>e=>{for(let t=e.state.selection.$from.depth;t>=0;t--)if("heading"===e.state.selection.$from.node(t).type.name)return!1;return this.parent().setHardBreak()(e)}}},toMarkdown(e,t,n,a){for(let r=a+1;r");return}}});var ge=a(7490),Ee=a(25030),Ae=a(63811),be=a.n(Ae),Se=a(28721);const he=e=>{const t=new Map,n=[],a=e.state.tr;var i;e.state.doc.descendants(((e,i)=>{if("heading"===e.type.name){var r;const o=e.textContent,s=(e=>{const n=be()(e);if(t.has(n)){const e=t.get(n);return t.set(n,e+1),"h-".concat(n,"--").concat(e)}return t.set(n,1),"h-"+n})(o),l=null!==(r=e.attrs.uuid)&&void 0!==r?r:(0,Se.Z)();if(e.attrs.id!==s||!e.attrs.uuid){const t={...e.attrs,uuid:l,id:s};a.setNodeMarkup(i,void 0,t)}n.push(Object.freeze({level:e.attrs.level,position:i,text:o,id:s,uuid:l}))}})),a.setMeta("addToHistory",!1),a.setMeta("preventUpdate",!0),e.view.dispatch(a),i=n,Ee.Z.dispatch("text/setHeadings",i)};var Ce=a(20144),fe=a(31728);const ve=Ce.default.extend({name:"HeadingView",components:{NodeViewWrapper:C.T5,NodeViewContent:C.ms},mixins:[fe.Cy],props:{node:{type:Object,required:!0},extension:{type:Object,required:!0}},data:()=>({content:null}),computed:{href(){return"#".concat(this.node.attrs.id)},domElement(){const e=this.extension.options.levels.includes(this.node.attrs.level)?this.node.attrs.level:this.extension.options.levels[0];return"h".concat(e)},linkSymbol(){return this.extension.options.linkSymbol},t:()=>window.t},methods:{click(){this.$refs.container.$el.scrollIntoView(),window.location.hash=this.href}}});var Te=a(86698),ye={};ye.styleTagTransform=B(),ye.setAttributes=M(),ye.insert=D().bind(null,"head"),ye.domAPI=I(),ye.insertStyleElement=L();R()(Te.Z,ye);Te.Z&&Te.Z.locals&&Te.Z.locals;const Ne=(0,G.Z)(ve,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("NodeViewWrapper",{ref:"container",attrs:{id:e.node.attrs.id,as:e.domElement}},[t("a",{staticClass:"heading-anchor",attrs:{"aria-hidden":"true",href:e.href,title:e.t("text","Link to this section"),contenteditable:!1},on:{click:function(t){return t.stopPropagation(),e.click.apply(null,arguments)}}},[e._v(e._s(e.linkSymbol))]),e._v(" "),t("NodeViewContent",{attrs:{as:"span"}})],1)}),[],!1,null,null,null).exports,Re=ge.Z.extend({addAttributes(){return{...this.parent(),id:{default:void 0,rendered:!0},uuid:{default:void 0,rendered:!1}}},addOptions(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),linkSymbol:"#"}},addKeyboardShortcuts(){return this.options.levels.reduce(((e,t)=>({...e,["Mod-Shift-".concat(t)]:()=>this.editor.commands.toggleHeading({level:t})})),{})},addNodeView(){return(0,C.uf)(Ne,{update:e=>{let{oldNode:t,newNode:n,updateProps:a}=e;return n.type.name===this.name&&(n.attrs===t.attrs&&(a(),!0))}})},onCreate(){he(this.editor),this.parent&&this.parent()},onUpdate:le()((e=>{let{editor:t}=e;t.view&&t.state&&!t.isDestroyed&&he(t)}),900)});var Oe=a(25748),Ie=a(26761),xe=a(26937),De=a(2649),we=a.n(De);const Me={name:"ShowImageModal",components:{NcModal:K.Jc},props:{images:{type:Array,default:()=>[],validator:e=>0===e.length||e.every((e=>e.basename&&e.source))},startIndex:{type:Number,default:0},show:{type:Boolean,default:!1}},data:()=>({currentImageIndex:0}),computed:{currentImage(){return this.images[this.currentImageIndex]}},watch:{startIndex(e){this.currentImageIndex=e}},methods:{showNextImage(){this.currentImageIndex=(this.currentImageIndex+1)%this.images.length,this.currentImage=this.images[this.currentImageIndex]},showPreviousImage(){this.currentImageIndex=this.currentImageIndex<=0?this.images.length-1:this.currentImageIndex-1,this.currentImage=this.images[this.currentImageIndex]}}};var ke=a(53180),Le={};Le.styleTagTransform=B(),Le.setAttributes=M(),Le.insert=D().bind(null,"head"),Le.domAPI=I(),Le.insertStyleElement=L();R()(ke.Z,Le);ke.Z&&ke.Z.locals&&ke.Z.locals;const Pe=(0,G.Z)(Me,(function(){var e=this,t=e._self._c;return e.show?t("NcModal",{attrs:{size:"large",title:e.currentImage.basename,"out-transition":!0,"has-next":!0,"has-previous":!0,"close-button-contained":!1,dark:!0},on:{next:e.showNextImage,previous:e.showPreviousImage,close:function(t){return e.$emit("close")}}},[t("div",{staticClass:"modal__content"},[t("img",{attrs:{src:e.currentImage.source}})])]):e._e()}),[],!1,null,"8f1a4cfa",null).exports;var Be=a(13815),Ue=a(74411),Fe=a(69183),Ge=a(79753),je=a(52029);class Ye extends Error{constructor(e,n){super((null==e?void 0:e.message)||t("text","Failed to load")),this.reason=e,this.imageUrl=n}}const He={name:"ImageView",components:{ImageIcon:v.Ee,DeleteIcon:v.HG,NcButton:K.P2,ShowImageModal:Pe,NodeViewWrapper:C.T5},directives:{ClickOutside:we()},mixins:[Be.Z,fe.Zf],props:["editor","node","extension","updateAttributes","deleteNode"],data:()=>({imageLoaded:!1,loaded:!1,failed:!1,showIcons:!1,imageUrl:null,errorMessage:null,attachmentType:null,attachmentMetadata:{},showImageModal:!1,embeddedImagesList:[],imageIndex:null}),computed:{isMediaAttachment(){return this.attachmentType===this.$attachmentResolver.ATTACHMENT_TYPE_MEDIA},editable(){return this.editor.isEditable},showDeleteIcon(){return this.editable&&this.showIcons},showImageDeleteIcon(){return this.showDeleteIcon&&!this.isMediaAttachment},canDisplayImage(){return!!this.isSupportedImage&&(!(!this.failed||!this.loaded)||this.loaded&&this.imageLoaded)},imageFileId(){return((e,t)=>{const n=e.split("?")[1];if(void 0===n)return;const a=n.split(/[&#]/);if(void 0!==a)for(let e=0;e(e,t)=>window.t(e,t),token:()=>document.getElementById("sharingToken")&&document.getElementById("sharingToken").value},beforeMount(){if(!this.isSupportedImage)return this.failed=!0,this.imageLoaded=!1,this.loaded=!0,void(this.errorMessage=t("text","Unsupported image type"));this.init().catch(this.onImageLoadFailure)},methods:{async init(){const e=await this.$attachmentResolver.resolve(this.src);return this.load(e)},async load(e){const[t,...n]=e;return this.loadImage(t.url,t.type,t.name,t.metadata).catch((e=>n.length>0?this.load(n):Promise.reject(e)))},async loadImage(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return new Promise(((i,r)=>{const o=new Image;o.onload=async()=>{this.imageUrl=e,this.imageLoaded=!0,this.loaded=!0,this.attachmentType=t,t===this.$attachmentResolver.ATTACHMENT_TYPE_MEDIA&&a?this.attachmentMetadata=a:t===this.$attachmentResolver.ATTACHMENT_TYPE_MEDIA&&await this.loadMediaMetadata(n),i(e)},o.onerror=t=>{r(new Ye(t,e))},o.src=e}))},loadMediaMetadata(e){const t=this.$attachmentResolver.getMediaMetadataUrl(e);return xe.Z.get(t).then((e=>{this.attachmentMetadata=e.data})).catch((e=>{je.k.error("Failed to load media metadata",{error:e})}))},onImageLoadFailure(e){this.failed=!0,this.imageLoaded=!1,this.loaded=!0,this.errorMessage=e.message,e instanceof Ye&&(this.errorMessage="".concat(this.errorMessage," ").concat(this.src)),this.$emit("error",{error:e,src:this.src})},updateAlt(e){this.updateAttributes({alt:e.target.value})},onLoaded(){this.loaded=!0},async handleImageClick(e){const t=Array.from(document.querySelectorAll('figure[data-component="image-view"].image-view'));let n,a;for(const e of t){a=e.getAttribute("data-src"),n=a.split("/").slice(-1).join();const t=await this.$attachmentResolver.resolve(a,!0),{url:i}=t.shift();this.embeddedImagesList.push({source:i,basename:n,relativePath:a})}this.imageIndex=this.embeddedImagesList.findIndex((t=>t.relativePath===e)),this.showImageModal=!0},onDelete(){(0,Fe.j8)("text:image-node:delete",this.imageUrl),this.deleteNode()}}};var ze=a(70235),Ve={};Ve.styleTagTransform=B(),Ve.setAttributes=M(),Ve.insert=D().bind(null,"head"),Ve.domAPI=I(),Ve.insertStyleElement=L();R()(ze.Z,Ve);ze.Z&&ze.Z.locals&&ze.Z.locals;const qe=(0,G.Z)(He,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",[t("figure",{staticClass:"image image-view",class:{"icon-loading":!e.loaded,"image-view--failed":e.failed},attrs:{"data-component":"image-view","data-src":e.src}},[e.canDisplayImage?t("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:()=>e.showIcons=!1,expression:"() => showIcons = false"}],staticClass:"image__view",on:{mouseover:function(t){e.showIcons=!0},mouseleave:function(t){e.showIcons=!1}}},[t("transition",{attrs:{name:"fade"}},[e.failed?[t("ImageIcon",{staticClass:"image__main image__main--broken-icon",attrs:{size:100}})]:[e.isMediaAttachment?t("div",{staticClass:"media",on:{click:function(t){return e.handleImageClick(e.src)}}},[t("div",{staticClass:"media__wrapper"},[t("img",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],staticClass:"image__main",attrs:{src:e.imageUrl},on:{load:e.onLoaded}}),e._v(" "),t("div",{staticClass:"metadata"},[t("span",{staticClass:"name"},[e._v(e._s(e.alt))]),e._v(" "),t("span",{staticClass:"size"},[e._v(e._s(e.attachmentMetadata.size))])])]),e._v(" "),e.showDeleteIcon?t("div",{staticClass:"buttons"},[t("NcButton",{attrs:{"aria-label":e.t("text","Delete this attachment"),title:e.t("text","Delete this attachment")},on:{click:e.onDelete},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DeleteIcon")]},proxy:!0}],null,!1,3930079857)})],1):e._e()]):t("div",[t("img",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],staticClass:"image__main",attrs:{src:e.imageUrl},on:{click:function(t){return e.handleImageClick(e.src)},load:e.onLoaded}})])]],2),e._v(" "),t("transition",{attrs:{name:"fade"}},[e.isMediaAttachment?e._e():t("div",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],staticClass:"image__caption",attrs:{title:e.alt}},[e.editable?t("div",{staticClass:"image__caption__wrapper"},[t("input",{directives:[{name:"show",rawName:"v-show",value:!e.isMediaAttachment,expression:"!isMediaAttachment"}],ref:"altInput",staticClass:"image__caption__input",attrs:{type:"text"},domProps:{value:e.alt},on:{blur:e.updateAlt,keyup:e.updateAlt}}),e._v(" "),e.showImageDeleteIcon?t("div",{staticClass:"image__caption__delete"},[t("NcButton",{attrs:{"aria-label":e.t("text","Delete this image"),title:e.t("text","Delete this image")},on:{click:e.onDelete},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DeleteIcon")]},proxy:!0}],null,!1,3930079857)})],1):e._e()]):t("figcaption",[e._v("\n\t\t\t\t\t\t"+e._s(e.alt)+"\n\t\t\t\t\t")])])]),e._v(" "),t("div",{staticClass:"image__modal"},[t("ShowImageModal",{attrs:{images:e.embeddedImagesList,"start-index":e.imageIndex,show:e.showImageModal},on:{close:function(t){e.showImageModal=!1}}})],1)],1):t("div",{staticClass:"image-view__cant_display"},[t("transition",{attrs:{name:"fade"}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}]},[t("a",{attrs:{href:e.internalLinkOrImage,target:"_blank"}},[e.isSupportedImage?e._e():t("span",[e._v(e._s(e.alt))])])])]),e._v(" "),e.isSupportedImage?t("transition",{attrs:{name:"fade"}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],staticClass:"image__caption"},[t("input",{ref:"altInput",attrs:{type:"text",disabled:!e.editable},domProps:{value:e.alt},on:{blur:e.updateAlt,keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.updateAlt.apply(null,arguments)}}})])]):e._e()],1),e._v(" "),e.errorMessage?t("small",{staticClass:"image__error-message"},[e._v("\n\t\t\t"+e._s(e.errorMessage)+"\n\t\t")]):e._e()])])}),[],!1,null,"4febfd28",null).exports,$e=Ie.ZP.extend({selectable:!1,parseHTML(){return[{tag:this.options.allowBase64?"figure img[src]":'figure img[src]:not([src^="data:"])'}]},renderHTML:()=>["img"],addOptions(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this)}},addNodeView:()=>(0,C.uf)(qe),addProseMirrorPlugins:()=>[new r.Sy({props:{handleDrop:(e,t,n)=>{if(t.dataTransfer.files&&t.dataTransfer.files.length>0){const n=e.posAtCoords({left:t.clientX,top:t.clientY}),a=new CustomEvent("file-drop",{bubbles:!0,detail:{files:t.dataTransfer.files,position:n.pos}});return t.target.dispatchEvent(a),!0}},handlePaste:(e,t,n)=>{if(t.clipboardData.files&&t.clipboardData.files.length>0){const e=new CustomEvent("image-paste",{bubbles:!0,detail:{files:t.clipboardData.files}});return t.target.dispatchEvent(e),!0}}}})],toMarkdown(e,t,n,a){t.attrs.alt=t.attrs.alt.toString(),q.Dm.nodes.image(e,t,n,a),e.closeBlock(t)}}),We=Ie.ZP.extend({name:"image-inline",priority:99,selectable:!1,parseHTML(){return[{tag:this.options.allowBase64?"img[src]":'img[src]:not([src^="data:"])'}]},addOptions(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),inline:!0}},addCommands:()=>({}),addInputRules:()=>[],addNodeView:()=>(0,C.uf)(qe),toMarkdown:(e,t,n,a)=>q.Dm.nodes.image(e,t,n,a)}),Qe=i.vc.create({name:"keep-syntax",parseHTML:()=>[{tag:"span.keep-md"}],renderHTML:()=>["span",{class:"keep-md"},0],toMarkdown:{open:"",close:"",mixable:!0,escape:!1,expelEnclosingWhitespace:!0},onUpdate(){const e=this.editor.state.tr;this.editor.state.doc.descendants(((t,n,a,i)=>{-1!==t.marks.findIndex((e=>e.type.name===this.name))&&("text"===t.type.name&&1===t.text.length||e.removeMark(n,n+t.nodeSize,this.type))})),e.docChanged&&(e.setMeta("addToHistory",!1),e.setMeta("preventUpdate",!0),this.editor.view.dispatch(e))}});var Ke=a(34565),Ze=a(14068);const Xe={name:"Mention",components:{NcUserBubble:K.uq,NodeViewWrapper:C.T5},props:{updateAttributes:{type:Function,required:!0},node:{type:Object,required:!0}},data(){return{username:this.node.attrs.label}},computed:{isCurrentUser(){var e;return this.node.attrs.id===(null===(e=(0,re.ts)())||void 0===e?void 0:e.uid)}}};var Je=a(35460),et={};et.styleTagTransform=B(),et.setAttributes=M(),et.insert=D().bind(null,"head"),et.domAPI=I(),et.insertStyleElement=L();R()(Je.Z,et);Je.Z&&Je.Z.locals&&Je.Z.locals;const tt=(0,G.Z)(Xe,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{staticClass:"mention",attrs:{as:"span",contenteditable:"false"}},[t("NcUserBubble",{staticClass:"mention-user-bubble",attrs:{user:e.node.attrs.id,"display-name":e.username,primary:e.isCurrentUser}},[e._v("\n\t\t@"+e._s(e.username)+"\n\t")])],1)}),[],!1,null,"297bb5fa",null).exports,nt=Ze.ZP.extend({parseHTML:()=>[{tag:'span[data-type="user"]',getAttrs:e=>({id:e.getAttribute("data-id"),label:e.innerText||e.textContent||e.getAttribute("data-label")}),priority:100}],renderHTML(e){let{node:t,HTMLAttributes:n}=e;return["span",(0,i.P1)({"data-type":"user",class:"mention"},this.options.HTMLAttributes,n),this.options.renderLabel({options:this.options,node:t})]},addNodeView:()=>(0,C.uf)(tt),toMarkdown(e,t){e.write(" "),e.write("@[".concat(t.attrs.label,"](mention://user/").concat(t.attrs.id,")")),e.write(" ")}});const at={components:{SuggestionListWrapper:a(81586).Z},props:{items:{type:Array,required:!0},command:{type:Function,required:!0}},methods:{onKeyDown(e){var t;let{event:n}=e;return null===(t=this.$refs.suggestionList)||void 0===t?void 0:t.onKeyDown({event:n})}}};var it=a(59724),rt={};rt.styleTagTransform=B(),rt.setAttributes=M(),rt.insert=D().bind(null,"head"),rt.domAPI=I(),rt.insertStyleElement=L();R()(it.Z,rt);it.Z&&it.Z.locals&&it.Z.locals;const ot=(0,G.Z)(at,(function(){var e=this,t=e._self._c;return t("SuggestionListWrapper",{ref:"suggestionList",attrs:{command:e.command,items:e.items},on:{select:t=>e.$emit("select",t)},scopedSlots:e._u([{key:"default",fn:function(n){let{item:a}=n;return[t("div",{staticClass:"link-picker__item"},[t("img",{attrs:{src:a.icon}}),e._v(" "),t("div",[e._v(e._s(a.label))])])]}},{key:"empty",fn:function(){return[e._v("\n\t\t"+e._s(e.t("text","No command found"))+"\n\t")]},proxy:!0}])})}),[],!1,null,"0ea7b674",null).exports,st=new r.H$("linkPicker"),lt=i.hj.create({name:"linkPicker",addOptions:()=>({suggestion:{char:"/",allowedPrefixes:[" "],pluginKey:st,...(0,Z.Z)({listComponent:ot,command:e=>{let{editor:t,range:n,props:a}=e;(0,oe.getLinkWithPicker)(a.providerId,!0).then((e=>{t.chain().focus().insertContentAt(n,e+" ").run()})).catch((e=>{console.error("Smart picker promise rejected",e)}))},items:e=>{let{query:t}=e;return(0,oe.searchProvider)(t).map((e=>({label:e.title,icon:e.icon_url,providerId:e.id})))}})}}),addProseMirrorPlugins(){return[(0,o.q$)({editor:this.editor,...this.options.suggestion})]}});var ct=a(51575),dt=a(93237),_t=a(22773);const pt=i.NB.create({name:"tableCaption",content:"inline*",addAttributes:()=>({}),renderHTML:()=>["caption"],toMarkdown(e,t){},parseHTML:()=>[{tag:"table caption",priority:90}]});var mt=a(658),ut=a(87823);const gt=mt.p.extend({content:"inline*",toMarkdown(e,t){var n;e.write(" ");const a=null===(n=e.options)||void 0===n?void 0:n.escapeExtraCharacters;e.options.escapeExtraCharacters=/\|/,e.renderInline(t),e.options.escapeExtraCharacters=a,e.write(" |")},parseHTML:()=>[{tag:"td",preserveWhitespace:!0},{tag:"th",preserveWhitespace:!0},{tag:"table thead ~ tbody th",priority:70,preserveWhitespace:!0},{tag:"table thead ~ tbody td",priority:70,preserveWhitespace:!0}],addAttributes(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),textAlign:{rendered:!1,parseHTML:e=>e.style.textAlign||null}}},addProseMirrorPlugins:()=>[new r.Sy({props:{handlePaste:(e,t,n)=>{if(n.content.childCount>1){const t=e.state,a=n.content.childCount,i=[];for(let e=0;e[{tag:"table thead:empty ~ tbody :first-child th",priority:80},{tag:"table thead:empty ~ tbody :first-child td",priority:80},{tag:"table thead :first-child th",priority:60},{tag:"table thead :first-child td",priority:60},{tag:"table tbody :first-child th",priority:60},{tag:"table tbody :first-child td",priority:60},{tag:"table > :first-child > th",priority:60},{tag:"table > :first-child > td",priority:60}],addAttributes(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),textAlign:{rendered:!1,parseHTML:e=>e.style.textAlign||null}}}});const At=a(33991).S.extend({content:"tableCell*",toMarkdown(e,t){e.write("|"),e.renderInline(t),e.ensureNewLine()},parseHTML:()=>[{tag:"tr",priority:70}]}),bt=At.extend({name:"tableHeadRow",content:"tableHeader*",toMarkdown(e,t){e.write("|"),e.renderInline(t),e.ensureNewLine(),e.write("|"),t.forEach((t=>{var n;let a=e.repeat("-",t.textContent.length+2);const i=null===(n=t.attrs)||void 0===n?void 0:n.textAlign;"center"!==i&&"left"!==i||(a=":"+a.slice(1)),"center"!==i&&"right"!==i||(a=a.slice(0,-1)+":"),e.write(a),e.write("|")})),e.ensureNewLine()},parseHTML:()=>[{tag:"tr:first-of-type",priority:80}]});var St=a(97245);const ht=_t.iA.extend({content:"tableCaption? tableHeadRow tableRow*",addExtensions:()=>[pt,gt,Et,bt,At],addCommands(){return{...this.parent(),addRowAfter:()=>e=>{let{chain:t,dispatch:n}=e;return t().command((e=>{let{state:t}=e;return(0,St.dl)(t,n)})).command((e=>{let{state:t,tr:a}=e;const{tableStart:i,table:r,bottom:o}=(0,St.zN)(t);if(n){const e=r.child(o-1),t=r.child(o);let n=i+1;for(let e=0;ee=>{let{chain:t,dispatch:n}=e;return t().command((e=>{let{state:t}=e;return(0,St.z2)(t,n)})).command((e=>{let{state:t,tr:a}=e;const{tableStart:i,table:r,top:o}=(0,St.zN)(t);if(n){const e=r.child(o),t=r.child(o-1);let n=i+1;for(let e=0;ee=>{let{tr:t,dispatch:n,editor:a}=e;if((0,St.Lw)(t))return!1;const i=function(e,t,n,a){const i=[],r=[];for(let t=0;te=>{let{tr:t,dispatch:n,editor:a}=e;if(!(0,St.Lw)(t))return!1;const{$head:i,empty:o}=t.selection;if(!o)return!1;const s=i.depth<3?1:i.depth-2;if(n){const e=t.doc.resolve(i.after(s)+1),a=r.Bs.near(e);n(t.setSelection(a).scrollIntoView())}return!0},goToNextRow:()=>e=>{let{tr:t,dispatch:n,editor:a}=e;if(!(0,St.Lw)(t))return!1;const i=function(e){if(e.index(-1)===e.node(-1).childCount-1)return null;let t=e.after();const n=e.node(-1);for(let a=e.indexAfter(-1);a=e.index()){for(let n=0;nthis.editor.commands.goToNextCell()||this.editor.commands.leaveTable(),Enter:e=>{var t;let{editor:n}=e;const{selection:a}=n.state;return!!a.$from.parent.type.name.startsWith("table")&&("hardBreak"===(null===(t=a.$from.nodeBefore)||void 0===t?void 0:t.type.name)?!(!n.can().goToNextRow()&&!n.can().addRowAfter())&&(n.chain().setTextSelection({from:a.from-1,to:a.from}).deleteSelection().run(),!!n.commands.goToNextRow()||n.chain().addRowAfter().goToNextRow().run()):n.chain().insertContent('
').focus().run())}}}}),Ct=ht;const ft={name:"TableView",components:{NcActionButton:K.Js,NcActions:K.O3,NodeViewWrapper:C.T5,NodeViewContent:C.ms,TableSettings:v._2,Delete:v.HG},props:{editor:{type:Object,required:!0},deleteNode:{type:Function,required:!0}},computed:{t:()=>window.t}};var vt=a(44314),Tt={};Tt.styleTagTransform=B(),Tt.setAttributes=M(),Tt.insert=D().bind(null,"head"),Tt.domAPI=I(),Tt.insertStyleElement=L();R()(vt.Z,Tt);vt.Z&&vt.Z.locals&&vt.Z.locals;const yt=(0,G.Z)(ft,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{staticClass:"table-wrapper",attrs:{"data-text-el":"table-view"}},[e.editor.isEditable?t("NcActions",{staticClass:"table-settings",attrs:{"force-menu":"","data-text-table-actions":"settings"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("TableSettings")]},proxy:!0}],null,!1,1699550424)},[e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"delete","close-after-click":""},on:{click:e.deleteNode},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete")]},proxy:!0}],null,!1,3429380666)},[e._v("\n\t\t\t"+e._s(e.t("text","Delete this table"))+"\n\t\t")])],1):e._e(),e._v(" "),t("NodeViewContent",{staticClass:"content",attrs:{as:"table"}}),e._v(" "),t("div",{staticClass:"clearfix"})],1)}),[],!1,null,"261cbb42",null).exports;const Nt={name:"TableCellView",components:{NcActionButton:K.Js,NcActions:K.O3,NodeViewWrapper:C.T5,NodeViewContent:C.ms,TableAddRowBefore:v.pn,TableAddRowAfter:v.F5,Delete:v.HG},props:{editor:{type:Object,required:!0},getPos:{type:Function,required:!0}},computed:{t:()=>window.t,textAlign(){return{"text-align":this.node.attrs.textAlign}}},methods:{deleteRow(){this.editor.chain().focus().setTextSelection(this.getPos()).deleteRow().run()},addRowBefore(){this.editor.chain().focus().setTextSelection(this.getPos()).addRowBefore().run()},addRowAfter(){this.editor.chain().focus().setTextSelection(this.getPos()).addRowAfter().run()}}};var Rt=a(72546),Ot={};Ot.styleTagTransform=B(),Ot.setAttributes=M(),Ot.insert=D().bind(null,"head"),Ot.domAPI=I(),Ot.insertStyleElement=L();R()(Rt.Z,Ot);Rt.Z&&Rt.Z.locals&&Rt.Z.locals;const It=(0,G.Z)(Nt,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{style:e.textAlign,attrs:{"data-text-el":"table-cell",as:"td"}},[t("div",{staticClass:"container"},[t("NodeViewContent",{staticClass:"content"}),e._v(" "),e.editor.isEditable?t("NcActions",{attrs:{"data-text-table-actions":"row"}},[t("NcActionButton",{attrs:{"data-text-table-action":"add-row-before","close-after-click":""},on:{click:e.addRowBefore},scopedSlots:e._u([{key:"icon",fn:function(){return[t("TableAddRowBefore")]},proxy:!0}],null,!1,1805502767)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Add row before"))+"\n\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"add-row-after","close-after-click":""},on:{click:e.addRowAfter},scopedSlots:e._u([{key:"icon",fn:function(){return[t("TableAddRowAfter")]},proxy:!0}],null,!1,3179199218)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Add row after"))+"\n\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"remove-row","close-after-click":""},on:{click:e.deleteRow},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete")]},proxy:!0}],null,!1,3429380666)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Delete this row"))+"\n\t\t\t")])],1):e._e()],1)])}),[],!1,null,"3543004d",null).exports;const xt=(0,Ce.defineComponent)({name:"InlineActionsContainer"});var Dt=a(38304),wt={};wt.styleTagTransform=B(),wt.setAttributes=M(),wt.insert=D().bind(null,"head"),wt.domAPI=I(),wt.insertStyleElement=L();R()(Dt.Z,wt);Dt.Z&&Dt.Z.locals&&Dt.Z.locals;const Mt=(0,G.Z)(xt,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("li",{staticClass:"inline-container-base"},[t("ul",{staticClass:"inline-container-content"},[e._t("default")],2)])}),[],!1,null,null,null).exports,kt={name:"TableHeaderView",components:{AlignHorizontalCenter:v.QK,AlignHorizontalLeft:v.L9,AlignHorizontalRight:v.gr,Delete:v.HG,InlineActionsContainer:Mt,NcActionButton:K.Js,NcActions:K.O3,NodeViewWrapper:C.T5,NodeViewContent:C.ms,TableAddColumnBefore:v.IY,TableAddColumnAfter:v.Ah},props:{editor:{type:Object,required:!0},getPos:{type:Function,required:!0},node:{type:Object,required:!0}},computed:{t:()=>window.t,textAlign(){return{"text-align":this.node.attrs.textAlign}}},methods:{alignCenter(){this.align("center")},alignLeft(){this.align("left")},alignRight(){this.align("right")},align(e){for(this.editor.chain().focus().setTextSelection(this.getPos()).setCellAttribute("textAlign",e).run();this.editor.commands.goToNextRow();)this.editor.commands.setCellAttribute("textAlign",e);this.editor.chain().setTextSelection(this.getPos()).focus().run(),this.$refs.menu.closeMenu(!1)},deleteColumn(){this.editor.chain().focus().setTextSelection(this.getPos()).deleteColumn().run()},addColumnBefore(){this.editor.chain().focus().setTextSelection(this.getPos()).addColumnBefore().run()},addColumnAfter(){this.editor.chain().focus().setTextSelection(this.getPos()).addColumnAfter().run()}}};var Lt=a(42422),Pt={};Pt.styleTagTransform=B(),Pt.setAttributes=M(),Pt.insert=D().bind(null,"head"),Pt.domAPI=I(),Pt.insertStyleElement=L();R()(Lt.Z,Pt);Lt.Z&&Lt.Z.locals&&Lt.Z.locals;const Bt=(0,G.Z)(kt,(function(){var e=this,t=e._self._c;return t("NodeViewWrapper",{style:e.textAlign,attrs:{"data-text-el":"table-header",as:"th"}},[t("div",[t("NodeViewContent",{staticClass:"content"}),e._v(" "),e.editor.isEditable?t("NcActions",{ref:"menu",attrs:{"data-text-table-actions":"header"}},[t("InlineActionsContainer",[t("NcActionButton",{attrs:{"data-text-table-action":"align-column-left","aria-label":e.t("text","Left align column")},on:{click:e.alignLeft},scopedSlots:e._u([{key:"icon",fn:function(){return[t("AlignHorizontalLeft")]},proxy:!0}],null,!1,2968467243)}),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"align-column-center","aria-label":e.t("text","Center align column")},on:{click:e.alignCenter},scopedSlots:e._u([{key:"icon",fn:function(){return[t("AlignHorizontalCenter")]},proxy:!0}],null,!1,536750267)}),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"align-column-right","aria-label":e.t("text","Right align column")},on:{click:e.alignRight},scopedSlots:e._u([{key:"icon",fn:function(){return[t("AlignHorizontalRight")]},proxy:!0}],null,!1,3861151024)})],1),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"add-column-before","close-after-click":""},on:{click:e.addColumnBefore},scopedSlots:e._u([{key:"icon",fn:function(){return[t("TableAddColumnBefore")]},proxy:!0}],null,!1,3782681875)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Add column before"))+"\n\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"add-column-after","close-after-click":""},on:{click:e.addColumnAfter},scopedSlots:e._u([{key:"icon",fn:function(){return[t("TableAddColumnAfter")]},proxy:!0}],null,!1,1608287598)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Add column after"))+"\n\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{"data-text-table-action":"remove-column","close-after-click":""},on:{click:e.deleteColumn},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete")]},proxy:!0}],null,!1,3429380666)},[e._v("\n\t\t\t\t"+e._s(e.t("text","Delete this column"))+"\n\t\t\t")])],1):e._e()],1)])}),[],!1,null,"25a85f13",null).exports;function Ut(e,t){return e.extend({addNodeView:()=>(0,C.uf)(t)})}const Ft=ht.extend({addNodeView:()=>(0,C.uf)(yt),addExtensions:()=>[pt,Ut(gt,It),Ut(Et,Bt),bt,At]});var Gt=a(87605);const jt=Gt.ZP.extend({addOptions:()=>({nested:!0,HTMLAttributes:{}}),draggable:!1,content:"paragraph block*",addAttributes(){const e={...this.parent()};return e.checked.parseHTML=e=>{var t;return null===(t=e.querySelector("input[type=checkbox]"))||void 0===t?void 0:t.checked},e},parseHTML:[{priority:101,tag:"li",getAttrs:e=>e.querySelector("input[type=checkbox]"),context:"taskList/"}],renderHTML(e){let{node:t,HTMLAttributes:n}=e;const a={class:"checkbox-item"},r={type:"checkbox",class:"",contenteditable:!1};return t.attrs.checked&&(r.checked=!0,a.class+=" checked"),["li",(0,i.P1)(n,a),["input",r],["label",0]]},addNodeView:!1,toMarkdown:(e,t)=>{e.write("[".concat(t.attrs.checked?"x":" ","] ")),e.renderContent(t)},addInputRules(){return[...this.parent(),(0,i.S0)({find:/^\s*([-+*])\s(\[(x|X|\s)?\])\s$/,type:this.type,getAttributes:e=>({checked:"xX".includes(e[e.length-1])})})]},addProseMirrorPlugins:()=>[new r.Sy({props:{handleClick:(e,t,n)=>{const a=e.state,i=a.schema,r=e.posAtCoords({left:n.clientX,top:n.clientY}),o=((e,t)=>{for(let n=e.depth;n>0;n--){const a=e.node(n);if(t(a))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:a}}})(a.doc.resolve(r.pos),(function(e){return e.type===i.nodes.taskItem||e.type===i.nodes.listItem}));if(!("li"===n.target.tagName.toLowerCase())||!o||o.node.type!==i.nodes.taskItem||!e.editable)return;const s=a.tr;s.setNodeMarkup(o.pos,i.nodes.taskItem,{checked:!o.node.attrs.checked}),e.dispatch(s)}}})]});const Yt=a(63354).Z.extend({parseHTML:[{priority:100,tag:"ul.contains-task-list"}],addAttributes(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),bullet:{default:"-",rendered:!1,isRequired:!0,parseHTML:e=>e.getAttribute("data-bullet")}}},toMarkdown:(e,t)=>{e.renderList(t," ",(()=>"".concat(t.attrs.bullet," ")))}});function Ht(e){let{types:t,node:n}=e;return Array.isArray(t)&&t.includes(n.type)||n.type===t}const zt=i.hj.create({name:"trailingNode",addOptions:()=>({node:"paragraph",notAfter:["paragraph"]}),addProseMirrorPlugins(){const e=new r.H$(this.name),t=Object.entries(this.editor.schema.nodes).map((e=>{let[,t]=e;return t})).filter((e=>this.options.notAfter.includes(e.name)));return[new r.Sy({key:e,appendTransaction:(t,n,a)=>{const{doc:i,tr:r,schema:o}=a,s=e.getState(a),l=i.content.size,c=o.nodes[this.options.node];if(s)return r.insert(l,c.create())},state:{init:(e,n)=>!Ht({node:n.tr.doc.lastChild,types:t}),apply:(e,n)=>{if(!e.docChanged)return n;return!Ht({node:e.doc.lastChild,types:t})}}})]}});var Vt=a(73816),qt=a(49924),$t=a(40187);const Wt=function(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):e.slice(0,t+1)},Qt=function(e,t){const n=e.attrs.href;if(!n)return n;if(!OCA.Viewer)return n;if(n.match(/^[a-zA-Z]*:/))return n;if(n.startsWith("#"))return n;const a=n.match(/^([^?]*)\?fileId=(\d+)/);if(a){var i;const[,e,n]=a,r=function(e,t){if(!t)return e;if("/"===t[0])return t;for(e=e.split("/"),t=t.split("/");".."===t[0]||"."===t[0];)".."===t[0]&&e.pop(),t.shift();return e.concat(t).join("/")}(Wt(t||(null===(i=OCA.Viewer)||void 0===i?void 0:i.file)||"/"),Wt(e));return e.length>1&&e.endsWith("/")?(0,Ge.generateUrl)("/apps/files/?dir=".concat(r,"&fileId=").concat(n)):(0,Ge.generateUrl)("/apps/files/?dir=".concat(r,"&openfile=").concat(n,"#relPath=").concat(e))}return n},Kt=function(e){const t=e.getAttribute("href");if(!t)return t;const n=t.match(/\?dir=([^&]*)&openfile=([^&]*)#relPath=([^&]*)/);if(n){const[,,e,t]=n;return"".concat(t,"?fileId=").concat(e)}return t},Zt=function(e,t){const n=e.target.closest("a").href,a=OC.parseQueryString(n),i=n.split("#").pop(),r=OC.parseQueryString(i);if(null!=a&&a.dir&&null!=r&&r.relPath){const e=r.relPath.split("/").pop(),t="".concat(a.dir,"/").concat(e);return document.title="".concat(e," - ").concat(OC.theme.title),window.location.pathname.match(/apps\/files\/$/),void OCA.Viewer.open({path:t})}if(!n.match(/apps\/files\//)||null==a||!a.fileId){if(!$t.Z.validateLink(n))return je.k.error("Invalid link",{htmlHref:n}),!1;if(i){const e=document.getElementById(i);if(e)return e.scrollIntoView(),void(window.location.hash=i)}return window.open(n),!0}window.open((0,Ge.generateUrl)("/f/".concat(a.fileId)),"_self")},Xt=e=>{let{editor:t,type:n,onClick:a}=e;return new r.Sy({props:{key:new r.H$("textLink"),handleClick:(e,t,i)=>{const r=e.state.doc.resolve(t).marks().find((e=>e.type.name===n.name));return!!r&&(r.attrs.href?0!==i.button||i.ctrlKey?void 0:(i.stopPropagation(),null==a?void 0:a(i,r.attrs)):(je.k.warn("Could not determine href of link."),je.k.debug("Link",{link:r}),!1))}}})},Jt=qt.Z.extend({addOptions(){var e;return{...null===(e=this.parent)||void 0===e?void 0:e.call(this),onClick:Zt,relativePath:null}},addAttributes:()=>({href:{default:null},title:{default:null}}),inclusive:!1,parseHTML:[{tag:"a[href]",getAttrs:e=>({href:Kt(e),title:e.getAttribute("title")})}],renderHTML(e){const{mark:t}=e;return["a",{...t.attrs,href:Qt(t,this.options.relativePath),rel:"noopener noreferrer nofollow"},0]},addProseMirrorPlugins(){const e=this.parent().filter((e=>{let{key:t}=e;return!t.startsWith("handleClickLink")}));return this.options.openOnClick?[...e,Xt({editor:this.editor,type:this.type,onClick:this.options.onClick}),new r.Sy({props:{key:new r.H$("textAvoidLinkClick"),handleDOMEvents:{click:(e,t)=>{if(!e.editable)return t.preventDefault(),!1}}}})]:e}}),en=Jt;const tn=a(4281).ZP.extend({parseHTML:()=>[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",getAttrs:e=>"line-through"===e}],renderHTML:()=>["s",0],toMarkdown:{open:"~~",close:"~~",mixable:!0,expelEnclosingWhitespace:!0}});var nn=a(67937);const an=nn.d8.extend({name:"strong",addInputRules(){return[(0,i.Cf)({find:nn.bP,type:this.type})]},addPasteRules(){return[(0,i.K9)({find:nn.lN,type:this.type})]}});const rn=a(48510).Z.extend({parseHTML:()=>[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e}],renderHTML:()=>["u",0],toMarkdown:{open:"__",close:"__",mixable:!0,expelEnclosingWhitespace:!0},addInputRules(){return[(0,i.Cf)({find:nn.fJ,type:this.type})]},addPasteRules(){return[(0,i.K9)({find:nn.lD,type:this.type})]}}),on=Vt.ZP.extend({name:"em"}),sn=i.hj.create({name:"RichText",addOptions:()=>({editing:!0,link:{},extensions:[],component:null,relativePath:null}),addExtensions(){const e=[this.options.editing?u.Z:null,W.Z,g.Z,me,ue,Re,an,on,tn,S.ZP,H.Z,z.ZP,$,h,Oe.Z,ct.ZP,Ke.Z,this.options.editing?Ft:Ct,Yt,jt,Y,rn,$e,We,Q.Z,Qe,ae,nt,b.Z,l.configure({suggestion:(0,Z.Z)({listComponent:ne,items:e=>{let{query:t}=e;return(0,K.Kn)(t)},command:e=>{let{editor:t,range:n,props:a}=e;t.chain().focus().insertContentAt(n,a.native+" ").run()}})}),lt,this.options.editing?dt.Z.configure({emptyNodeClass:"is-empty",placeholder:(0,X.Iu)("text","Add notes, lists or links …"),showOnlyWhenEditable:!0}):null,zt];!1!==this.options.link&&e.push(en.configure({...this.options.link,openOnClick:!0,validate:e=>/^https?:\/\//.test(e),relativePath:this.options.relativePath}));const t=this.options.extensions.map((e=>e.name));return[...e.filter((e=>e&&!t.includes(e.name))),...this.options.extensions]}})},16991:(e,n,a)=>{"use strict";a.d(n,{h0:()=>k,Lz:()=>x,YZ:()=>w,tH:()=>D});var i=a(79954),r=a(69183),o=a(74411);if(/^(files|public)$/.test(a.j))var s=a(42397);var l=a(26937),c=a(79753);const d=!!document.getElementById("isPublic"),_=(0,c.generateOcsUrl)("apps/text"+(d?"/public":"")+"/workspace",2),p={name:"RichWorkspace",components:{Editor:()=>Promise.all([a.e("vendors"),a.e("editor")]).then(a.bind(a,38575))},props:{path:{type:String,required:!0},active:{type:Boolean,default:!0}},data:()=>({focus:!1,folder:null,file:null,loaded:!1,ready:!1,autofocus:!1,autohide:!0,darkTheme:OCA.Accessibility&&"dark"===OCA.Accessibility.theme,enabled:OCA.Text.RichWorkspaceEnabled}),computed:{shareToken(){var e;return null===(e=document.getElementById("sharingToken"))||void 0===e?void 0:e.value},canCreate(){return!!(this.folder&&this.folder.permissions&OC.PERMISSION_CREATE)}},watch:{path(){this.getFileInfo()},focus(e){e||document.querySelector("#rich-workspace .text-editor__main").scrollTo(0,0)}},mounted(){this.enabled&&this.getFileInfo(),(0,r.Ld)("Text::showRichWorkspace",this.showRichWorkspace),(0,r.Ld)("Text::hideRichWorkspace",this.hideRichWorkspace),this.listenKeydownEvents()},beforeDestroy(){(0,r.r1)("Text::showRichWorkspace",this.showRichWorkspace),(0,r.r1)("Text::hideRichWorkspace",this.hideRichWorkspace),this.unlistenKeydownEvents()},methods:{onBlur(){this.listenKeydownEvents()},onFocus(){this.focus=!0,this.unlistenKeydownEvents()},reset(){this.file=null,this.focus=!1,this.$nextTick((()=>{this.creating=!1,this.getFileInfo()}))},getFileInfo(e){this.loaded=!1,this.autofocus=!1,this.ready=!1;const t={path:this.path};return d&&(t.shareToken=this.shareToken),l.Z.get(_,{params:t}).then((t=>{const n=t.data.ocs.data;return this.folder=n.folder||null,this.file=n.file,this.editing=!0,this.loaded=!0,this.autofocus=e||!1,!0})).catch((e=>(e.response.data.ocs&&e.response.data.ocs.data.folder?this.folder=e.response.data.ocs.data.folder:this.folder=null,this.file=null,this.loaded=!0,this.ready=!0,this.creating=!1,!1)))},showRichWorkspace(e){this.enabled=!0,this.getFileInfo((null==e?void 0:e.autofocus)||!1)},hideRichWorkspace(){this.enabled=!1},listenKeydownEvents(){window.addEventListener("keydown",this.onKeydown)},unlistenKeydownEvents(){clearInterval(this.$_timeoutAutohide),window.removeEventListener("keydown",this.onKeydown)},onTimeoutAutohide(){this.autohide=!0},onKeydown(e){"Tab"===e.key&&(clearInterval(this.$_timeoutAutohide),this.autohide=!1,this.$_timeoutAutohide=setTimeout(this.onTimeoutAutohide,7e3))}}};var m=a(93379),u=a.n(m),g=a(7795),E=a.n(g),A=a(90569),b=a.n(A),S=a(3565),h=a.n(S),C=a(19216),f=a.n(C),v=a(44589),T=a.n(v),y=a(91644),N={};N.styleTagTransform=T(),N.setAttributes=h(),N.insert=b().bind(null,"head"),N.domAPI=E(),N.insertStyleElement=f();u()(y.Z,N);y.Z&&y.Z.locals&&y.Z.locals;const R=(0,a(51900).Z)(p,(function(){var e=this,t=e._self._c;return e.enabled?t("div",{class:{"icon-loading":!e.loaded||!e.ready,focus:e.focus,dark:e.darkTheme,creatable:e.canCreate},attrs:{id:"rich-workspace"}},[e.file?t("Editor",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],key:e.file.path,attrs:{"file-id":e.file.id,"relative-path":e.file.path,"share-token":e.shareToken,mime:e.file.mimetype,autofocus:e.autofocus,autohide:e.autohide,active:"","rich-workspace":""},on:{ready:function(t){e.ready=!0},focus:e.onFocus,blur:e.onBlur,error:e.reset}}):e._e()],1):e._e()}),[],!1,null,"3d44b5a3",null).exports;var O=a(25030);const I="Edit with text app",x=function(e,t){const n=e.split("/"),a=t.split("/");for(n.pop();n[0]===a[0];)if(n.shift(),a.shift(),0===n.length&&0===a.length)return".";const i=n.fill("..").concat(a),r=t.split("/");return i.length{const e={attach(e){const n=e.fileList;"files"!==n.id&&"files.public"!==n.id||e.addMenuEntry({id:"file",displayName:t("text","New text file"),templateName:t("text","New text file")+"."+(0,i.j)("text","default_file_extension"),iconClass:"icon-filetype-text",fileType:"file",actionLabel:t("text","Create new text file"),actionHandler(e){n.createFile(e).then((function(e,t){const a=new OCA.Files.FileInfoModel(t);void 0!==OCA.Viewer?OCA.Files.fileActions.triggerAction("view",a,n):void 0===OCA.Viewer&&OCA.Files.fileActions.triggerAction(I,a,n)}))}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)},w=()=>{const e=(0,s.a)(),n=document.querySelector("#preview table.files-filestable");if(!e||!n){const n=document.createElement("div");n.id="text-viewer-fallback",document.body.appendChild(n);const i=i=>OCA.Files.fileActions.register(i,I,OC.PERMISSION_UPDATE|OC.PERMISSION_READ,(0,c.imagePath)("core","actions/rename"),(t=>{const i=window.FileList.findFile(t);Promise.all([Promise.resolve().then(a.bind(a,20144)),Promise.all([a.e("vendors"),a.e("files-modal")]).then(a.bind(a,59537))]).then((a=>{const r=window.FileList.getCurrentDirectory()+"/"+t,o=a[0].default;o.prototype.t=window.t,o.prototype.n=window.n,o.prototype.OCA=window.OCA;const s=a[1].default;new o({render:function(t){const n=this;return t(s,{props:{fileId:i?i.id:null,active:!0,shareToken:e,relativePath:r,mimeType:i.mimetype},on:{close:function(){n.$destroy()}}})}}).$mount(n)}))}),t("text","Edit"));for(let e=0;ewindow.FileList.createFile(a,{scrollTo:!1,animate:!1}).then((()=>(0,r.j8)("Text::showRichWorkspace",{autofocus:!0}))),shouldShow:()=>!n.findFile(a)})}},k={el:null,attach(e){"files"!==e.id&&"files.public"!==e.id||(this.el=document.createElement("div"),e.registerHeader({id:"workspace",el:this.el,render:this.render.bind(this),priority:10}))},render(e){"files"!==e.id&&"files.public"!==e.id||(OC.Plugins.register("OCA.Files.NewFileMenu",M),Promise.resolve().then(a.bind(a,20144)).then((t=>{const n=t.default;this.el.id="files-workspace-wrapper",n.prototype.t=window.t,n.prototype.n=window.n,n.prototype.OCA=window.OCA;const a=new(n.extend(R))({propsData:{path:e.getCurrentDirectory()},store:O.Z}).$mount(this.el);(0,r.Ld)("files:navigation:changed",(()=>{a.active=OCA.Files.App.getCurrentFileList()===e})),e.$el.on("urlChanged",(e=>{a.path=e.dir.toString()})),e.$el.on("changeDirectory",(e=>{a.path=e.dir.toString()}))})))}}},52029:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});const a=(0,n(17499).IY)().setApp("text").detectUser().build()},74411:(e,t,n)=>{"use strict";var a,i;n.d(t,{$Z:()=>r,SP:()=>l,lF:()=>o,w_:()=>s});const r=["image/png","image/jpeg","image/jpg","image/gif","image/x-xbitmap","image/x-ms-bmp","image/bmp","image/svg+xml","image/webp"],o=["text/markdown"],s=["text/plain","application/cmd","application/x-empty","application/x-msdos-program","application/javascript","application/json","application/x-perl","application/x-php","application/x-tex","application/xml","application/yaml","text/asciidoc","text/css","text/html","text/org","text/x-c","text/x-c++src","text/x-h","text/x-java-source","text/x-ldif","text/x-python","text/x-shellscript"];null!==(a=window.oc_appswebroots)&&void 0!==a&&a.richdocuments||null!==(i=window.oc_appswebroots)&&void 0!==i&&i.onlyoffice||s.push("text/csv");const l=[...o,...s]},42397:(e,t,n)=>{"use strict";n.d(t,{a:()=>a});const a=()=>document.getElementById("sharingToken")?document.getElementById("sharingToken").value:null},30744:(e,t,n)=>{"use strict";n.d(t,{F:()=>r,Z:()=>s});var a=n(40591),i=n.n(a);const r=["info","warn","error","success"],o=e=>(t,n,a,i,r)=>{const o=t[n];return 1===o.nesting&&(o.attrSet("data-callout",e),o.attrJoin("class","callout callout-".concat(e))),r.renderToken(t,n,a,i,r)},s=e=>(r.forEach((t=>{e.use(i(),t,{render:o(t)})})),e)},40187:(e,t,n)=>{"use strict";n.d(t,{Z:()=>C});var a=n(9980),i=n.n(a),r=n(28087),o=n(17251),s=n.n(o);function l(e,t){var n;return(null===(n=e.attrGet("class"))||void 0===n?void 0:n.split(" ").includes(t))||!1}function c(e,t,n){const a=new n("bullet_list_close","ul",-1);a.block=!0;const i=new n("bullet_list_open","ul",1);i.attrSet("class","contains-task-list"),i.block=!0,i.markup=e[t].markup,e.splice(t,0,a,i)}function d(e,t,n){const a=e[t].level+1;for(let i=t+1;i{})).use((function(e){e.core.ruler.after("task-lists","split-mixed-task-lists",(e=>{const t=e.tokens;for(let n=0;n1===e.nesting&&l(e,"task-list-item")!==i));r>n&&c(t,r,e.Token)}return!1}))})).use((function(e){e.inline.ruler2.after("emphasis","underline",(e=>{const t=e.tokens;for(let e=t.length-1;e>0;e--){const n=t[e];"__"===n.markup&&("strong_open"===n.type&&(t[e].tag="u",t[e].type="u_open"),"strong_close"===n.type&&(t[e].tag="u",t[e].type="u_close"))}return!1}))})).use((function(e){e.inline.ruler.at("newline",((e,t)=>{const n=m()(e,t);return n&&e.tokens.length&&"hardbreak"===e.tokens[e.tokens.length-1].type&&e.tokens[e.tokens.length-1].attrSet("syntax"," "),n})),e.inline.ruler.at("escape",((e,t)=>{const n=g()(e,t);return n&&e.tokens.length&&"hardbreak"===e.tokens[e.tokens.length-1].type&&e.tokens[e.tokens.length-1].attrSet("syntax","\\"),n})),e.inline.ruler.after("html_inline","html_breaks",(e=>{const t=e.src.slice(e.pos).match(/^\s*/);if(t){return e.push("hardbreak","br",0).attrPush(["syntax","html"]),e.pos+=t[0].length,!0}return!1})),e.renderer.rules.hardbreak=(e,t,n)=>'
")})).use(_.Z).use((function(e){const t=/(\n(?[#\-*+>])|(?[`*\\~[\]]+))/;e.core.ruler.before("text_join","tag-markdown-syntax",(e=>{const n=new e.Token("keep_md_open","span",1);n.attrSet("class","keep-md");const a=new e.Token("keep_md_close","span",-1);for(let r=0;r'
'.concat((0,S.escapeHtml)(e[t].meta),"
"),h.renderer.rules.bullet_list_open=(e,t,n)=>(e[t].attrs=[...e[t].attrs||[],["data-bullet",e[t].markup]],h.renderer.renderToken(e,t,n));const C=h},13815:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(25030);const i={data:()=>({$store:a.Z}),beforeMount(){void 0===this.$store?this.$store=a.Z:this.$store.hasModule("text")||this.$store.registerModule("text",a.D)}}},86536:(e,t,n)=>{"use strict";n.d(t,{r2:()=>$,jA:()=>q,QS:()=>W,TY:()=>V,_U:()=>Q});var a=n(59391),i=n(20296),r=n.n(i),o=n(52029),s=n(26937),l=n(79753);function c(e,t){_(e,t),t.add(e)}function d(e,t,n){_(e,t),t.set(e,n)}function _(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function p(e,t){return function(e,t){if(t.get)return t.get.call(e);return t.value}(e,g(e,t,"get"))}function m(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}function u(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,g(e,t,"set"),n),n}function g(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}var E=new WeakMap,A=new WeakSet;function b(e){return D(e,!!p(this,E).shareToken)}var S=new WeakMap,h=new WeakMap,C=new WeakMap,f=new WeakMap,v=new WeakMap,T=new WeakMap,y=new WeakMap,N=new WeakMap,R=new WeakSet;class O{constructor(e,t){c(this,R),d(this,N,{get:I,set:void 0}),d(this,S,{writable:!0,value:void 0}),d(this,h,{writable:!0,value:void 0}),d(this,C,{writable:!0,value:void 0}),d(this,f,{writable:!0,value:void 0}),d(this,v,{writable:!0,value:void 0}),d(this,T,{writable:!0,value:void 0}),d(this,y,{writable:!0,value:void 0});const{document:n,session:a,lock:i,readOnly:r,content:o,documentState:s}=e.data;u(this,C,n),u(this,f,a),u(this,v,i),u(this,T,r),u(this,S,o),u(this,h,s),u(this,y,t)}get session(){return p(this,f)}get document(){return p(this,C)}get docStateVersion(){return p(this,h)?p(this,C).lastSavedVersion:0}get state(){return{document:{...p(this,C),readOnly:p(this,T)},session:p(this,f),documentSource:p(this,S)||"",documentState:p(this,h)}}sync(e){let{version:t,autosaveContent:n,documentState:a,force:i,manualSave:r}=e;return s.Z.post(m(this,R,x).call(this,"session/sync"),{...p(this,N),filePath:p(this,y).filePath,version:t,autosaveContent:n,documentState:a,force:i,manualSave:r})}push(e){let{steps:t,version:n,awareness:a}=e;return s.Z.post(m(this,R,x).call(this,"session/push"),{...p(this,N),filePath:p(this,y).filePath,steps:t,version:n,awareness:a})}update(e){return s.Z.post(m(this,R,x).call(this,"session"),{...p(this,N),guestName:e}).then((e=>{let{data:t}=e;u(this,f,t)}))}uploadAttachment(e){const t=new FormData;t.append("file",e);const n=D("attachment/upload")+"?documentId="+encodeURIComponent(p(this,C).id)+"&sessionId="+encodeURIComponent(p(this,f).id)+"&sessionToken="+encodeURIComponent(p(this,f).token)+"&shareToken="+encodeURIComponent(p(this,y).shareToken||"");return s.Z.post(n,t,{headers:{"Content-Type":"multipart/form-data"}})}insertAttachmentFile(e){return s.Z.post(D("attachment/filepath"),{documentId:p(this,C).id,sessionId:p(this,f).id,sessionToken:p(this,f).token,filePath:e})}close(){return s.Z.post(m(this,R,x).call(this,"session/close"),p(this,N))}}function I(){return{documentId:p(this,C).id,sessionId:p(this,f).id,sessionToken:p(this,f).token,token:p(this,y).shareToken}}function x(e){return D(e,!!p(this,N).token)}function D(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=(0,l.generateUrl)("/apps/text");return t?"".concat(n,"/public/").concat(e):"".concat(n,"/").concat(e)}const w=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,A),d(this,E,{writable:!0,value:void 0}),u(this,E,e)}open(e){let{fileId:t}=e;return s.Z.put(m(this,A,b).call(this,"session/create"),{fileId:t,filePath:p(this,E).filePath,token:p(this,E).shareToken,guestName:p(this,E).guestName,forceRecreate:p(this,E).forceRecreate}).then((e=>new O(e,p(this,E))))}};function M(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}function k(e,t){return function(e,t){if(t.get)return t.get.call(e);return t.value}(e,P(e,t,"get"))}function L(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,P(e,t,"set"),n),n}function P(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}var B=new WeakMap,U=new WeakMap,F=new WeakMap,G=new WeakMap,j=new WeakMap,Y=new WeakMap,H=new WeakMap;const z=class{constructor(e,t){M(this,B,{writable:!0,value:void 0}),M(this,U,{writable:!0,value:void 0}),M(this,F,{writable:!0,value:void 0}),M(this,G,{writable:!0,value:void 0}),M(this,j,{writable:!0,value:void 0}),M(this,Y,{writable:!0,value:void 0}),M(this,H,{writable:!0,value:void 0}),L(this,B,e),L(this,U,t),L(this,G,300),L(this,j,0),L(this,F,0)}connect(){this.fetcher>0?console.error("Trying to connect, but already connected"):(L(this,H,!1),this.fetcher=setInterval(this._fetchSteps.bind(this),50),document.addEventListener("visibilitychange",this.visibilitychange.bind(this)))}async _fetchSteps(){if(k(this,Y))return;const e=Date.now();k(this,F)>e-k(this,G)||(this.fetcher?(L(this,Y,!0),o.k.debug("[PollingBackend] Fetching steps",k(this,B).version),await k(this,U).sync({version:k(this,B).version,force:!1,manualSave:!1}).then(this._handleResponse.bind(this),this._handleError.bind(this)),L(this,F,Date.now()),L(this,Y,!1)):console.error("No inverval but triggered"))}_handleResponse(e){let{data:t}=e;const{document:n,sessions:a}=t;if(L(this,j,0),k(this,B).emit("change",{document:n,sessions:a}),k(this,B)._receiveSteps(t),0===t.steps.length){if(k(this,H)||L(this,H,!0),k(this,B).checkIdle())return;const e=Date.now()-9e4;return a.filter((t=>1e3*t.lastContact>e)).length<2?this.maximumRefetchTimer():this.increaseRefetchTimer(),void k(this,B).emit("stateChange",{initialLoading:!0})}k(this,H)&&this.resetRefetchTimer()}_handleError(e){var t,n;e.response&&"ECONNABORTED"!==e.code?409===e.response.status?(this._handleResponse(e.response),o.k.error("Conflict during file save, please resolve"),k(this,B).emit("error",{type:W.SAVE_COLLISSION,data:{outsideChange:e.response.data.outsideChange}})):403===e.response.status||404===e.response.status?(k(this,B).emit("error",{type:W.SOURCE_NOT_FOUND,data:{}}),this.disconnect()):503===e.response.status?(this.increaseRefetchTimer(),k(this,B).emit("error",{type:W.CONNECTION_FAILED,data:{retry:!1}}),o.k.error("Failed to fetch steps due to unavailable service",{error:e})):(this.disconnect(),k(this,B).emit("error",{type:W.CONNECTION_FAILED,data:{retry:!1}}),o.k.error("Failed to fetch steps due to other reason",{error:e})):(L(this,j,(t=k(this,j),n=t++,t)),n>=5?(o.k.error("[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED"),k(this,B).emit("error",{type:W.CONNECTION_FAILED,data:{retry:!1}})):o.k.error("[PollingBackend:fetchSteps] Network error when fetching steps, retry ".concat(k(this,j))))}disconnect(){clearInterval(this.fetcher),this.fetcher=0,document.removeEventListener("visibilitychange",this.visibilitychange.bind(this))}resetRefetchTimer(){L(this,G,300)}increaseRefetchTimer(){L(this,G,Math.min(2*k(this,G),5e3))}maximumRefetchTimer(){L(this,G,5e3)}visibilitychange(){"hidden"===document.visibilityState?L(this,G,6e4):this.resetRefetchTimer()}},V=1440,q=60,$=90,W={SAVE_COLLISSION:0,PUSH_FAILURE:1,LOAD_ERROR:2,CONNECTION_FAILED:3,SOURCE_NOT_FOUND:4};class Q{constructor(e){let{serialize:t,getDocumentState:n,...i}=e;return this._bus=(0,a.Z)(),this.serialize=t,this.getDocumentState=n,this._api=new w(i),this.connection=null,this.sessions=[],this.steps=[],this.stepClientIDs=[],this.lastStepPush=Date.now(),this.version=null,this.sending=!1,this.autosave=r()(this._autosave.bind(this),3e4),this}async open(e){let{fileId:t,initialSession:n}=e;const a=e=>{let{sessions:t}=e;this.sessions=t};this.on("change",a);const i=n?Promise.resolve(new O({data:n},{})):this._api.open({fileId:t}).catch((e=>this._emitError(e)));this.connection=await i,this.connection?(this.backend=new z(this,this.connection),this.version=this.connection.docStateVersion,this.emit("opened",{...this.connection.state,version:this.version}),this.emit("loaded",{...this.connection.state,version:this.version})):this.off("change",a)}startSync(){this.backend.connect()}syncUp(){this.backend.resetRefetchTimer()}_emitError(e){e.response&&"ECONNABORTED"!==e.code?this.emit("error",{type:W.LOAD_ERROR,data:e.response}):this.emit("error",{type:W.CONNECTION_FAILED,data:{}})}updateSession(e){if(this.connection.isPublic)return this.connection.update(e).catch((e=>(o.k.error("Failed to update the session",{error:e}),Promise.reject(e))))}sendSteps(e){if(!this.connection||this.sending)return void setTimeout((()=>{this.sendSteps(e)}),200);this.sending=!0;const t=e();return t.steps.length>0&&this.emit("stateChange",{dirty:!0}),this.connection.push(t).then((e=>{this.sending=!1})).catch((e=>{let{response:t,code:n}=e;if(o.k.error("failed to apply steps due to collission, retrying"),this.sending=!1,!t||"ECONNABORTED"===n)return void this.emit("error",{type:W.CONNECTION_FAILED,data:{}});const{status:a,data:i}=t;var r;403===a&&(i.document||o.k.error("failed to write to document - not allowed"),(null===(r=i.document)||void 0===r?void 0:r.currentVersion)===this.version&&(this.emit("error",{type:W.PUSH_FAILURE,data:{}}),OC.Notification.showTemporary("Changes could not be sent yet")))}))}_receiveSteps(e){let{steps:t,document:n,sessions:a}=e;const i=a.filter((e=>e.lastContact>Math.floor(Date.now()/1e3)-$)).filter((e=>e.lastAwarenessMessage)).map((e=>({step:e.lastAwarenessMessage,clientId:e.clientId}))),r=i;this.steps=[...this.steps,...i.map((e=>e.step))];for(let e=0;e{this.steps.push(n),r.push({step:n,clientID:t[e].sessionId})})):o.k.error("Invalid step data, skipping step",{step:t[e]})}this.lastStepPush=Date.now(),this.emit("sync",{steps:r,document:this.connection.document,version:this.version})}checkIdle(){return(Date.now()-this.lastStepPush)/1e3/60>V&&(o.k.debug("[SyncService] Document is idle for ".concat(this.IDLE_TIMEOUT," minutes, suspending connection")),this.emit("idle"),!0)}_getContent(){return this.serialize()}async save(){let{force:e=!1,manualSave:t=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o.k.debug("[SyncService] saving",arguments[0]);try{const n=await this.connection.sync({version:this.version,autosaveContent:this._getContent(),documentState:this.getDocumentState(),force:e,manualSave:t});this.emit("stateChange",{dirty:!1}),o.k.debug("[SyncService] saved",n);const{document:a,sessions:i}=n.data;this.emit("save",{document:a,sessions:i}),this.autosave.clear()}catch(e){o.k.error("Failed to save document.",{error:e})}}forceSave(){return this.save({force:!0})}_autosave(){return this.save({manualSave:!1})}async close(){var e;null===(e=this.backend)||void 0===e||e.disconnect();const t=new Promise((e=>setTimeout(e,2e3)));return await Promise.any([t,this.save()]),this._close()}_close(){return null===this.connection?Promise.resolve():(this.backend.disconnect(),this.connection.close())}uploadAttachment(e){return this.connection.uploadAttachment(e)}insertAttachmentFile(e){return this.connection.insertAttachmentFile(e)}on(e,t){return this._bus.on(e,t),this}off(e,t){return this._bus.off(e,t),this}emit(e,t){this._bus.emit(e,t)}}},25030:(e,t,n)=>{"use strict";n.d(t,{Z:()=>E,D:()=>g});var a=n(20144),i=n(20629),r=n(62556);const o="SET_VIEW_WIDTH",s="SET_SHOW_AUTHOR_ANNOTATIONS",l="SET_CURRENT_SESSION",c="SET_HEADINGS";var d=n(20296),_=n.n(d);const p=()=>document.documentElement.clientWidth,m=e=>{let{commit:t}=e;const n=_()((()=>{t("text/".concat(o),p())}),100);window.addEventListener("resize",n)},u=(0,r.getBuilder)("text").persist().build();a.default.use(i.ZP);const g={state:{showAuthorAnnotations:"true"===u.getItem("showAuthorAnnotations"),currentSession:u.getItem("currentSession"),viewWidth:p(),headings:Object.freeze([])},mutations:{[o](e,t){e.viewWidth=t},[s](e,t){e.showAuthorAnnotations=t,u.setItem("showAuthorAnnotations",""+t)},[l](e,t){e.currentSession=t,u.setItem("currentSession",t)},[c](e,t){if(e.headings.length!==t.length)return void(e.headings=Object.freeze(t));const n=e.headings,a=t.map(((e,t)=>{const a=n[t].level;return Object.freeze({...e,previous:a})}));e.headings=Object.freeze(a)}},actions:{setShowAuthorAnnotations(e,t){let{commit:n}=e;n(s,t)},setCurrentSession(e,t){let{commit:n}=e;n(l,t)},setHeadings(e,t){let{commit:n}=e;n(c,t)}}},E=new i.yh({plugins:[m],modules:{text:{namespaced:!0,...g}}})},97646:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".text-menubar .entry-action.is-active:not(.entry-action-item),.v-popper__inner .entry-action.is-active:not(.entry-action-item),.text-menubar button.entry-action__button.is-active,.v-popper__inner button.entry-action__button.is-active{opacity:1;background-color:var(--color-primary-element-light);border-radius:50%}.text-menubar .entry-action.is-active:not(.entry-action-item) .material-design-icon>svg,.v-popper__inner .entry-action.is-active:not(.entry-action-item) .material-design-icon>svg,.text-menubar button.entry-action__button.is-active .material-design-icon>svg,.v-popper__inner button.entry-action__button.is-active .material-design-icon>svg{fill:var(--color-primary-element)}.text-menubar button.entry-action__button,.v-popper__inner button.entry-action__button{height:44px;margin:0;border:0;position:relative;color:var(--color-main-text);background-color:rgba(0,0,0,0);vertical-align:top;box-shadow:none;padding:0}.text-menubar button.entry-action__button p,.v-popper__inner button.entry-action__button p{padding:0}.text-menubar button.entry-action__button:is(li.entry-action-item button),.v-popper__inner button.entry-action__button:is(li.entry-action-item button){padding:0 .5em 0 0}.text-menubar button.entry-action__button:not(li.entry-action-item button),.v-popper__inner button.entry-action__button:not(li.entry-action-item button){width:44px}.text-menubar button.entry-action__button:hover,.text-menubar button.entry-action__button:focus,.text-menubar button.entry-action__button:active,.v-popper__inner button.entry-action__button:hover,.v-popper__inner button.entry-action__button:focus,.v-popper__inner button.entry-action__button:active{background-color:var(--color-background-dark)}.text-menubar button.entry-action__button:hover:not(:disabled),.text-menubar button.entry-action__button:focus:not(:disabled),.text-menubar button.entry-action__button:active:not(:disabled),.v-popper__inner button.entry-action__button:hover:not(:disabled),.v-popper__inner button.entry-action__button:focus:not(:disabled),.v-popper__inner button.entry-action__button:active:not(:disabled){box-shadow:var(--color-primary-element)}.text-menubar button.entry-action__button:hover,.text-menubar button.entry-action__button:focus,.v-popper__inner button.entry-action__button:hover,.v-popper__inner button.entry-action__button:focus{opacity:1}.text-menubar button.entry-action__button:focus-visible,.v-popper__inner button.entry-action__button:focus-visible{box-shadow:var(--color-primary-element)}.text-menubar .entry-action.entry-action-item.is-active,.v-popper__inner .entry-action.entry-action-item.is-active{background-color:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.text-menubar .button-vue svg,.v-popper__inner .button-vue svg{fill:var(--color-main-text)}.text-menubar .action-item__menutoggle.action-item__menutoggle--with-icon-slot,.v-popper__inner .action-item__menutoggle.action-item__menutoggle--with-icon-slot{opacity:1}","",{version:3,sources:["webpack://./src/components/Menu/ActionEntry.scss"],names:[],mappings:"AAAA,0OACC,SAAA,CACA,mDAAA,CACA,iBAAA,CACA,kVACC,iCAAA,CAKD,uFACC,WAAA,CACA,QAAA,CACA,QAAA,CAEA,iBAAA,CACA,4BAAA,CACA,8BAAA,CACA,kBAAA,CACA,eAAA,CACA,SAAA,CAEA,2FACC,SAAA,CAGD,uJACC,kBAAA,CAGD,yJACC,UAAA,CAGD,2SAGC,6CAAA,CACA,qYACC,uCAAA,CAIF,sMAEC,SAAA,CAED,mHACC,uCAAA,CAaD,mHACC,mDAAA,CACA,wCAAA,CAKD,+DACC,2BAAA,CAIF,iKACC,SAAA",sourcesContent:["%text__is-active-item-btn {\n\topacity: 1;\n\tbackground-color: var(--color-primary-element-light);\n\tborder-radius: 50%;\n\t.material-design-icon > svg {\n\t\tfill: var(--color-primary-element);\n\t}\n}\n\n.text-menubar, .v-popper__inner {\n\tbutton.entry-action__button {\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tborder: 0;\n\t\t// opacity: 0.5;\n\t\tposition: relative;\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\tvertical-align: top;\n\t\tbox-shadow: none;\n\t\tpadding: 0;\n\n\t\tp {\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&:is(li.entry-action-item button) {\n\t\t\tpadding: 0 0.5em 0 0;\n\t\t}\n\n\t\t&:not(li.entry-action-item button) {\n\t\t\twidth: 44px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t&:not(:disabled) {\n\t\t\t\tbox-shadow: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: 1;\n\t\t}\n\t\t&:focus-visible {\n\t\t\tbox-shadow: var(--color-primary-element);\n\t\t}\n\n\t\t&.is-active {\n\t\t\t@extend %text__is-active-item-btn;\n\t\t}\n\t}\n\n\t.entry-action.is-active:not(.entry-action-item) {\n\t\t@extend %text__is-active-item-btn;\n\t}\n\n\t.entry-action.entry-action-item {\n\t\t&.is-active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t}\n\t}\n\n\t.button-vue {\n\t\tsvg {\n\t\t\tfill: var(--color-main-text);\n\t\t}\n\t}\n\n\t.action-item__menutoggle.action-item__menutoggle--with-icon-slot {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const s=o},12866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".editor__content[data-v-a4201d8a]{max-width:var(--text-editor-max-width);margin:auto;position:relative;width:100%}.text-editor__content-wrapper[data-v-a4201d8a]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-a4201d8a]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-a4201d8a],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-a4201d8a]{height:100%;position:relative}","",{version:3,sources:["webpack://./src/components/BaseReader.vue"],names:[],mappings:"AACA,kCACC,sCAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAGD,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA",sourcesContent:["\n.editor__content {\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n}\n"],sourceRoot:""}]);const s=o},75326:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"#resolve-conflicts[data-v-44412072]{display:flex;width:100%;margin:auto;padding:20px 0}#resolve-conflicts button[data-v-44412072]{margin:auto}","",{version:3,sources:["webpack://./src/components/CollisionResolveDialog.vue"],names:[],mappings:"AACA,oCACC,YAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CAEA,2CACC,WAAA",sourcesContent:["\n#resolve-conflicts {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin: auto;\n\tpadding: 20px 0;\n\n\tbutton {\n\t\tmargin: auto;\n\t}\n}\n"],sourceRoot:""}]);const s=o},42868:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".modal-container .text-editor[data-v-7437ef6a]{top:0;height:calc(100vh - var(--header-height))}.text-editor[data-v-7437ef6a]{display:block;width:100%;max-width:100%;height:100%;left:0;margin:0 auto;position:relative;background-color:var(--color-main-background)}.text-editor .text-editor__wrapper.has-conflicts[data-v-7437ef6a]{height:calc(100% - 50px)}#body-public[data-v-7437ef6a]{height:auto}#files-public-content .text-editor[data-v-7437ef6a]{top:0;width:100%}#files-public-content .text-editor .text-editor__main[data-v-7437ef6a]{overflow:auto;z-index:20}#files-public-content .text-editor .has-conflicts .text-editor__main[data-v-7437ef6a]{padding-top:0}.menubar-placeholder[data-v-7437ef6a],.text-editor--readonly-bar[data-v-7437ef6a]{position:fixed;position:-webkit-sticky;position:sticky;top:0;opacity:0;visibility:hidden;height:44px;padding-top:3px;padding-bottom:3px}.text-editor--readonly-bar[data-v-7437ef6a],.menubar-placeholder--with-slot[data-v-7437ef6a]{opacity:unset;visibility:unset;z-index:50;max-width:var(--text-editor-max-width);margin:auto;width:100%;background-color:var(--color-main-background)}","",{version:3,sources:["webpack://./src/components/Editor.vue"],names:[],mappings:"AACA,+CACC,KAAA,CACA,yCAAA,CAGD,8BACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CACA,MAAA,CACA,aAAA,CACA,iBAAA,CACA,6CAAA,CAGD,kEACC,wBAAA,CAGD,8BACC,WAAA,CAIA,oDACC,KAAA,CACA,UAAA,CAEA,uEACC,aAAA,CACA,UAAA,CAED,sFACC,aAAA,CAKH,kFAEC,cAAA,CACA,uBAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CAGD,6FAEC,aAAA,CACA,gBAAA,CAEA,UAAA,CACA,sCAAA,CACA,WAAA,CACA,UAAA,CACA,6CAAA",sourcesContent:["\n.modal-container .text-editor {\n\ttop: 0;\n\theight: calc(100vh - var(--header-height));\n}\n\n.text-editor {\n\tdisplay: block;\n\twidth: 100%;\n\tmax-width: 100%;\n\theight: 100%;\n\tleft: 0;\n\tmargin: 0 auto;\n\tposition: relative;\n\tbackground-color: var(--color-main-background);\n}\n\n.text-editor .text-editor__wrapper.has-conflicts {\n\theight: calc(100% - 50px);\n}\n\n#body-public {\n\theight: auto;\n}\n\n#files-public-content {\n\t.text-editor {\n\t\ttop: 0;\n\t\twidth: 100%;\n\n\t\t.text-editor__main {\n\t\t\toverflow: auto;\n\t\t\tz-index: 20;\n\t\t}\n\t\t.has-conflicts .text-editor__main {\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n}\n\n.menubar-placeholder,\n.text-editor--readonly-bar {\n\tposition: fixed;\n\tposition: -webkit-sticky;\n\tposition: sticky;\n\ttop: 0;\n\topacity: 0;\n\tvisibility: hidden;\n\theight: 44px; // important for mobile so that the buttons are always inside the container\n\tpadding-top:3px;\n\tpadding-bottom: 3px;\n}\n\n.text-editor--readonly-bar,\n.menubar-placeholder--with-slot {\n\topacity: unset;\n\tvisibility: unset;\n\n\tz-index: 50;\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\twidth: 100%;\n\tbackground-color: var(--color-main-background);\n}\n\n"],sourceRoot:""}]);const s=o},5898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=o()(i()),_=l()(c);d.push([e.id,':root{--text-editor-max-width: 670px }.modal-container .text-editor{position:absolute}.ProseMirror-hideselection{caret-color:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::-moz-selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}.has-conflicts .ProseMirror-menubar,.text-editor__wrapper.icon-loading .ProseMirror-menubar{display:none}.ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.ProseMirror-gapcursor:after{content:"";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--color-main-text);animation:ProseMirror-cursor-blink 1.1s steps(2, start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.animation-rotate{animation:rotate var(--animation-duration, 0.8s) linear infinite}[data-handler=text]{background-color:var(--color-main-background);border-top:3px solid var(--color-primary-element)}[data-handler=text] .modal-title{font-weight:bold}@keyframes fadeInDown{from{opacity:0;transform:translate3d(0, -100%, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%, 0, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}.fadeInLeft{animation-name:fadeInLeft}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor div.ProseMirror h1,.text-editor div.ProseMirror h2,.text-editor div.ProseMirror h3,.text-editor div.ProseMirror h4,.text-editor div.ProseMirror h5{break-after:avoid}.text-editor div.ProseMirror .image,.text-editor div.ProseMirror img,.text-editor div.ProseMirror table{break-inside:avoid-page;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}}.text-editor__wrapper div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}.text-editor__wrapper div.ProseMirror :target{scroll-margin-top:50px}.text-editor__wrapper div.ProseMirror[contenteditable=true],.text-editor__wrapper div.ProseMirror[contenteditable=false],.text-editor__wrapper div.ProseMirror [contenteditable=true],.text-editor__wrapper div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}.text-editor__wrapper div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}.text-editor__wrapper div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}.text-editor__wrapper div.ProseMirror .checkbox-item input[type=checkbox]{display:none}.text-editor__wrapper div.ProseMirror .checkbox-item:before{content:"";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}.text-editor__wrapper div.ProseMirror .checkbox-item.checked:before{background-image:url('+_+');background-color:var(--color-primary-element);border-color:var(--color-primary-element)}.text-editor__wrapper div.ProseMirror .checkbox-item.checked label{color:var(--color-text-maxcontrast);text-decoration:line-through}.text-editor__wrapper div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}.text-editor__wrapper div.ProseMirror>*:first-child{margin-top:10px}.text-editor__wrapper div.ProseMirror>h1:first-child,.text-editor__wrapper div.ProseMirror h2:first-child,.text-editor__wrapper div.ProseMirror h3:first-child,.text-editor__wrapper div.ProseMirror h4:first-child,.text-editor__wrapper div.ProseMirror h5:first-child,.text-editor__wrapper div.ProseMirror h6:first-child{margin-top:0}.text-editor__wrapper div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}.text-editor__wrapper div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}.text-editor__wrapper div.ProseMirror em{font-style:italic}.text-editor__wrapper div.ProseMirror h1,.text-editor__wrapper div.ProseMirror h2,.text-editor__wrapper div.ProseMirror h3,.text-editor__wrapper div.ProseMirror h4,.text-editor__wrapper div.ProseMirror h5,.text-editor__wrapper div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror h1{font-size:36px}.text-editor__wrapper div.ProseMirror h2{font-size:30px}.text-editor__wrapper div.ProseMirror h3{font-size:24px}.text-editor__wrapper div.ProseMirror h4{font-size:21px}.text-editor__wrapper div.ProseMirror h5{font-size:17px}.text-editor__wrapper div.ProseMirror h6{font-size:14px}.text-editor__wrapper div.ProseMirror img{cursor:default;max-width:100%}.text-editor__wrapper div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}.text-editor__wrapper div.ProseMirror hr:after{content:"";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}.text-editor__wrapper div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.text-editor__wrapper div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}.text-editor__wrapper div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}.text-editor__wrapper div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.text-editor__wrapper div.ProseMirror li{position:relative;padding-left:3px}.text-editor__wrapper div.ProseMirror li p{margin-bottom:.5em}.text-editor__wrapper div.ProseMirror ul,.text-editor__wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}.text-editor__wrapper div.ProseMirror ul>li{list-style-type:disc}.text-editor__wrapper div.ProseMirror li ul>li{list-style-type:circle}.text-editor__wrapper div.ProseMirror li li ul>li{list-style-type:square}.text-editor__wrapper div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}.text-editor__wrapper div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}.text-editor__wrapper div.ProseMirror table{margin-top:1em}.text-editor__wrapper div.ProseMirror table td,.text-editor__wrapper div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}.text-editor__wrapper div.ProseMirror table td:first-child,.text-editor__wrapper div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}.text-editor__wrapper div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}.text-editor__wrapper div.ProseMirror table th>div{display:flex}.text-editor__wrapper div.ProseMirror table tr{background-color:var(--table-color-background)}.text-editor__wrapper div.ProseMirror table tr:hover,.text-editor__wrapper div.ProseMirror table tr:active,.text-editor__wrapper div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}.text-editor__wrapper div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.text-editor__wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}.text-editor__wrapper .editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.text-editor__wrapper .editor__content{tab-size:4}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre{background-color:var(--color-main-background)}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-comment,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-quote{color:#999}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-variable,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-template-variable,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-attribute,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-tag,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-name,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-regexp,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-link,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-id,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-class{color:#f2777a}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-number,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-meta,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-built_in,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-builtin-name,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-literal,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-type,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-params{color:#f99157}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-string,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-symbol,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-bullet{color:#9c9}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-title,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-section{color:#fc6}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-keyword,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-tag{color:#69c}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-emphasis{font-style:italic}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-strong{font-weight:700}.text-editor__wrapper .text-editor__main.draggedOver{background-color:var(--color-primary-element-light)}.text-editor__wrapper .text-editor__main .text-editor__content-wrapper{position:relative}.text-editor__wrapper.has-conflicts>.editor{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper #read-only-editor{margin:0px auto;padding-top:50px;overflow:initial}#files-public-content{height:100%}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid #0d0d0d;border-right:1px solid #0d0d0d;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-style:normal;font-weight:600;line-height:normal;user-select:none;color:#0d0d0d;padding:.1rem .3rem;border-radius:3px 3px 3px 0;white-space:nowrap}',"",{version:3,sources:["webpack://./css/style.scss","webpack://./css/print.scss","webpack://./css/prosemirror.scss","webpack://./src/components/Editor.vue"],names:[],mappings:"AAEA,MACC,+BAAA,CAGD,8BACC,iBAAA,CAGD,2BACC,yBAAA,CACA,4BAAA,CAEA,wCACC,wBAAA,CACA,4BAAA,CAGD,6CACC,wBAAA,CACA,4BAAA,CAIF,0BACC,sBAAA,CAID,4BACC,YAAA,CAEA,kCACC,UAAA,CACA,iBAAA,CACA,UAAA,CACA,UAAA,CAAA,QAAA,CAAA,WAAA,CACA,qBAAA,CACA,mBAAA,CAMD,4FACC,YAAA,CAIF,uBACC,YAAA,CACA,mBAAA,CACA,iBAAA,CAEA,6BACC,UAAA,CACA,aAAA,CACA,iBAAA,CACA,QAAA,CACA,UAAA,CACA,2CAAA,CACA,gEAAA,CAIF,oCACC,GACC,iBAAA,CAAA,CAIF,kBACC,gEAAA,CAGD,oBACC,6CAAA,CACA,iDAAA,CACA,iCACC,gBAAA,CAKF,sBACC,KACC,SAAA,CACA,kCAAA,CAGD,GACC,SAAA,CACA,8BAAA,CAAA,CAMF,sBACC,KACC,SAAA,CACA,kCAAA,CAGD,GACC,SAAA,CACA,8BAAA,CAAA,CAIF,YACC,yBAAA,CChHD,aACC,MACC,OAAA,CACA,0BAAA,CAGD,KAEC,iBAAA,CACA,2BAAA,CAGD,2BAEC,WAAA,CACA,qBAAA,CAEA,4BAAA,CAEA,yCAEC,uBAAA,CAED,4CAEC,OAAA,CACA,kBAAA,CAKD,2BAEC,uBAAA,CAED,0BAEC,uBAAA,CAED,8BAEC,cAAA,CAED,mCACC,kBAAA,CACA,cAAA,CAIA,gKAEC,iBAAA,CAED,wGAEC,uBAAA,CAEA,wBAAA,CACA,iCAAA,CAID,gCACC,qBAAA,CACA,2BAAA,CACA,mCAAA,CACA,4BAAA,CACA,6CAAA,CAED,6CACC,iCAAA,CAGD,gCACC,4CAAA,CACA,2BAAA,CACA,4BAAA,CAED,6CACC,sBAAA,CAKH,gDACC,YAAA,CAIA,6CACC,aAAA,CAGD,+CACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,iBAAA,CAED,0DACC,YAAA,CAAA,CCjGH,sCACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,8CAEC,sBAAA,CAGD,oPAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,4XACC,sBAAA,CAGD,wjBACC,0BAAA,CAIF,qDACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,0EACC,YAAA,CAED,4DACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,oEACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,mEACC,mCAAA,CACA,4BAAA,CAGF,2DACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,oDACC,eAAA,CAIA,8TACC,YAAA,CAIF,wCACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,2DACC,iBAAA,CACA,gBAAA,CAGD,yCACC,iBAAA,CAGD,sPAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,0CACC,cAAA,CACA,cAAA,CAGD,yCACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,+CACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,0CACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,sDACC,iBAAA,CACA,kDAAA,CAGD,8DACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,6CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,yCACC,iBAAA,CACA,gBAAA,CAEA,2CACC,kBAAA,CAIF,kFACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,4CACC,oBAAA,CAID,+CACC,sBAAA,CAID,kDACC,sBAAA,CAGD,iDACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,4CACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,4CACC,cAAA,CAID,8FACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,sHACC,+CAAA,CAGF,+CACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,+CACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,mDACC,YAAA,CAGF,+CACC,8CAAA,CACA,gKACC,oDAAA,CAKD,0EAAA,iDAAA,CACA,yEAAA,kDAAA,CAIA,yEAAA,oDAAA,CACA,wEAAA,qDAAA,CAOH,kEACC,aAAA,CAGD,sEACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,uCACC,UAAA,CCxSC,4DACC,6CAAA,CAEA,oEACC,2BAAA,CACA,wBAAA,CACA,aAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAGA,4JAEC,UAAA,CAED,otBASC,aAAA,CAED,uiBAOC,aAAA,CAED,0OAGC,UAAA,CAED,4JAEC,UAAA,CAED,mKAEC,UAAA,CAED,gFACC,iBAAA,CAED,8EACC,eAAA,CAQH,qDACC,mDAAA,CAED,uEACC,iBAAA,CAKH,4CACC,SAAA,CAGD,qDACC,SAAA,CACA,uEACC,eAAA,CACA,gBAAA,CACA,gBAAA,CAMF,sBACC,WAAA,CAGD,gBACC,GAAA,sBAAA,CACA,KAAA,wBAAA,CAAA,CAID,6BACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CACA,6BAAA,CACA,8BAAA,CACA,iBAAA,CACA,mBAAA,CAID,6BACC,iBAAA,CACA,UAAA,CACA,SAAA,CACA,cAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,gBAAA,CACA,aAAA,CACA,mBAAA,CACA,2BAAA,CACA,kBAAA",sourcesContent:["@use 'sass:math';\n\n:root {\n\t--text-editor-max-width: 670px\n}\n\n.modal-container .text-editor {\n\tposition: absolute;\n}\n\n.ProseMirror-hideselection {\n\tcaret-color: transparent;\n\tcolor: var(--color-main-text);\n\n\t*::selection {\n\t\tbackground: transparent;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\t*::-moz-selection {\n\t\tbackground: transparent;\n\t\tcolor: var(--color-main-text);\n\t}\n}\n\n.ProseMirror-selectednode {\n\toutline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n\toutline: none;\n\n\t&:after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: -32px;\n\t\tright: -2px; top: -2px; bottom: -2px;\n\t\tborder: 2px solid #8cf;\n\t\tpointer-events: none;\n\t}\n}\n\n.has-conflicts,\n.text-editor__wrapper.icon-loading {\n\t.ProseMirror-menubar {\n\t\tdisplay: none;\n\t}\n}\n\n.ProseMirror-gapcursor {\n\tdisplay: none;\n\tpointer-events: none;\n\tposition: absolute;\n\n\t&:after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: -2px;\n\t\twidth: 20px;\n\t\tborder-top: 1px solid var(--color-main-text);\n\t\tanimation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n\t}\n}\n\n@keyframes ProseMirror-cursor-blink {\n\tto {\n\t\tvisibility: hidden;\n\t}\n}\n\n.animation-rotate {\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n\n[data-handler='text'] {\n\tbackground-color: var(--color-main-background);\n\tborder-top: 3px solid var(--color-primary-element);\n\t.modal-title {\n\t\tfont-weight: bold;\n\t}\n}\n\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInDown.css\n@keyframes fadeInDown {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translate3d(0, -100%, 0);\n\t}\n\n\tto {\n\t\topacity: 1;\n\t\ttransform: translate3d(0, 0, 0);\n\t}\n}\n\n\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInLeft.css\n@keyframes fadeInLeft {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translate3d(-100%, 0, 0);\n\t}\n\n\tto {\n\t\topacity: 1;\n\t\ttransform: translate3d(0, 0, 0);\n\t}\n}\n\n.fadeInLeft {\n\tanimation-name: fadeInLeft;\n}\n","@media print {\n\t@page {\n\t\tsize: A4;\n\t\tmargin: 2.5cm 2cm 2cm 2.5cm;\n\t}\n\n\tbody {\n\t\t// position: fixed does not support scrolling and as such only prints one page\n\t\tposition: absolute;\n\t\toverflow: visible!important;\n\t}\n\n\t#viewer[data-handler='text'] {\n\t\t// Hide top border\n\t\tborder: none;\n\t\twidth: 100%!important;\n\t\t// NcModal uses fixed, which will be cropped when printed\n\t\tposition: absolute!important;\n\n\t\t.modal-header {\n\t\t\t// Hide modal header (close button)\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.modal-container {\n\t\t\t// Make sure top aligned as we hided the menubar */\n\t\t\ttop: 0px;\n\t\t\theight: fit-content;\n\t\t}\n\t}\n\n\t.text-editor {\n\t\t.text-menubar {\n\t\t\t// Hide menu bar\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.action-item {\n\t\t\t// Hide table settings\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.editor__content {\n\t\t\t// Margins set by page rule\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.text-editor__wrapper {\n\t\t\theight: fit-content;\n\t\t\tposition: unset;\n\t\t}\n\n\t\tdiv.ProseMirror {\n\t\t\th1, h2, h3, h4, h5 {\n\t\t\t\t// orphaned headlines are ugly\n\t\t\t\tbreak-after: avoid;\n\t\t\t}\n\t\t\t.image, img, table {\n\t\t\t\t// try no page breaks within tables or images\n\t\t\t\tbreak-inside: avoid-page;\n\t\t\t\t// Some more indention\n\t\t\t\tmax-width: 90%!important;\n\t\t\t\tmargin: 5vw auto 5vw 5%!important;\n\t\t\t}\n\n\t\t\t// Add some borders below header and between columns\n\t\t\tth {\n\t\t\t\tcolor: black!important;\n\t\t\t\tfont-weight: bold!important;\n\t\t\t\tborder-width: 0 1px 2px 0!important;\n\t\t\t\tborder-color: gray!important;\n\t\t\t\tborder-style: none solid solid none!important;\n\t\t\t}\n\t\t\tth:last-of-type {\n\t\t\t\tborder-width: 0 0 2px 0!important;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tborder-style: none solid none none!important;\n\t\t\t\tborder-width: 1px!important;\n\t\t\t\tborder-color: gray!important;\n\t\t\t}\n\t\t\ttd:last-of-type {\n\t\t\t\tborder: none!important;\n\t\t\t}\n\t\t}\n\t}\n\n\t.menubar-placeholder, .text-editor--readonly-bar {\n\t\tdisplay: none;\n\t}\n\n\t.text-editor__content-wrapper {\n\t\t&.--show-outline {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.editor--outline {\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\toverflow: unset;\n\t\t\tposition: relative;\n\t\t}\n\t\t.editor--outline__btn-close {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n","@use 'sass:selector';\n\n/* Document rendering styles */\ndiv.ProseMirror {\n\theight: 100%;\n\tposition: relative;\n\tword-wrap: break-word;\n\twhite-space: pre-wrap;\n\t-webkit-font-variant-ligatures: none;\n\tfont-variant-ligatures: none;\n\tpadding: 4px 8px 200px 14px;\n\tline-height: 150%;\n\tfont-size: 14px;\n\toutline: none;\n\n\t:target {\n\t\t// Menubar height: 44px + 3px bottom + 3px top padding\n\t\tscroll-margin-top: 50px;\n\t}\n\n\t&[contenteditable=true],\n\t&[contenteditable=false],\n\t[contenteditable=true],\n\t[contenteditable=false] {\n\t\twidth: 100%;\n\t\tbackground-color: transparent;\n\t\tcolor: var(--color-main-text);\n\t\topacity: 1;\n\t\t-webkit-user-select: text;\n\t\tuser-select: text;\n\t\tfont-size: 14px;\n\n\t\t&:not(.collaboration-cursor__caret) {\n\t\t\tborder: none !important;\n\t\t}\n\n\t\t&:focus, &:focus-visible {\n\t\t\tbox-shadow: none !important;\n\t\t}\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\t\t// Left-align with list item text\n\t\tmargin-left: -23px;\n\n\t\tinput[type=checkbox] {\n\t\t\tdisplay: none;\n\t\t}\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tvertical-align: middle;\n\t\t\tmargin: 3px 6px 3px 2px;\n\t\t\tborder: 1px solid var(--color-text-maxcontrast);\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\theight: 14px;\n\t\t\twidth: 14px;\n\t\t\tbox-shadow: none !important;\n\t\t\tbackground-position: center;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\ttext-decoration: line-through;\n\t\t\t}\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: calc(100% - 28px);\n\t\t}\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 10px;\n\t}\n\n\t> h1,h2,h3,h4,h5,h6 {\n\t\t&:first-child {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\ta {\n\t\tcolor: var(--color-primary-element);\n\t\ttext-decoration: underline;\n\t\tpadding: .5em 0;\n\t}\n\n\tp .paragraph-content {\n\t\tmargin-bottom: 1em;\n\t\tline-height: 150%;\n\t}\n\n\tem {\n\t\tfont-style: italic;\n\t}\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 1.1em;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t}\n\n\th2 {\n\t\tfont-size: 30px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: 14px;\n\t}\n\n\timg {\n\t\tcursor: default;\n\t\tmax-width: 100%;\n\t}\n\n\thr {\n\t\tpadding: 2px 0;\n\t\tborder: none;\n\t\tmargin: 2em 0;\n\t\twidth: 100%;\n\t}\n\n\thr:after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\theight: 1px;\n\t\tbackground-color: var(--color-border-dark);\n\t\tline-height: 2px;\n\t}\n\n\tpre {\n\t\twhite-space: pre-wrap;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tpre.frontmatter {\n\t\tmargin-bottom: 2em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t}\n\n\tpre.frontmatter::before {\n\t\tdisplay: block;\n\t\tcontent: attr(data-title);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-bottom: 0.5em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t\tpadding-left: 3px;\n\n\t\tp {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t+ & {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n","\n@import './../../css/style';\n@import './../../css/print';\n\n.text-editor__wrapper {\n\t@import './../../css/prosemirror';\n\n\t&:not(.is-rich-editor) .ProseMirror {\n\t\tpre {\n\t\t\tbackground-color: var(--color-main-background);\n\n\t\t\t&::before {\n\t\t\t\tcontent: attr(data-language);\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tdisplay: block;\n\t\t\t\ttext-align: right;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 0.6rem;\n\t\t\t}\n\t\t\tcode {\n\t\t\t\t.hljs-comment,\n\t\t\t\t.hljs-quote {\n\t\t\t\t\tcolor: #999999;\n\t\t\t\t}\n\t\t\t\t.hljs-variable,\n\t\t\t\t.hljs-template-variable,\n\t\t\t\t.hljs-attribute,\n\t\t\t\t.hljs-tag,\n\t\t\t\t.hljs-name,\n\t\t\t\t.hljs-regexp,\n\t\t\t\t.hljs-link,\n\t\t\t\t.hljs-selector-id,\n\t\t\t\t.hljs-selector-class {\n\t\t\t\t\tcolor: #f2777a;\n\t\t\t\t}\n\t\t\t\t.hljs-number,\n\t\t\t\t.hljs-meta,\n\t\t\t\t.hljs-built_in,\n\t\t\t\t.hljs-builtin-name,\n\t\t\t\t.hljs-literal,\n\t\t\t\t.hljs-type,\n\t\t\t\t.hljs-params {\n\t\t\t\t\tcolor: #f99157;\n\t\t\t\t}\n\t\t\t\t.hljs-string,\n\t\t\t\t.hljs-symbol,\n\t\t\t\t.hljs-bullet {\n\t\t\t\t\tcolor: #99cc99;\n\t\t\t\t}\n\t\t\t\t.hljs-title,\n\t\t\t\t.hljs-section {\n\t\t\t\t\tcolor: #ffcc66;\n\t\t\t\t}\n\t\t\t\t.hljs-keyword,\n\t\t\t\t.hljs-selector-tag {\n\t\t\t\t\tcolor: #6699cc;\n\t\t\t\t}\n\t\t\t\t.hljs-emphasis {\n\t\t\t\t\tfont-style: italic;\n\t\t\t\t}\n\t\t\t\t.hljs-strong {\n\t\t\t\t\tfont-weight: 700;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// relative position for the alignment of the menububble\n\t.text-editor__main {\n\t\t&.draggedOver {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t\t.text-editor__content-wrapper {\n\t\t\tposition: relative;\n\t\t}\n\t}\n}\n\n.text-editor__wrapper.has-conflicts > .editor {\n\twidth: 50%;\n}\n\n.text-editor__wrapper.has-conflicts > .content-wrapper {\n\twidth: 50%;\n\t#read-only-editor {\n\t\tmargin: 0px auto;\n\t\tpadding-top: 50px;\n\t\toverflow: initial;\n\t}\n}\n\n// Required in order to make the public pages behave the same if talk is enabled or not\n// as Talk overwrites the public page styles and changes the DOM layout for the sidebar injection\n#files-public-content {\n\theight: 100%;\n}\n\n@keyframes spin {\n\t0% { transform: rotate(0deg); }\n\t100% { transform: rotate(360deg); }\n}\n\n/* Give a remote user a caret */\n.collaboration-cursor__caret {\n\tposition: relative;\n\tmargin-left: -1px;\n\tmargin-right: -1px;\n\tborder-left: 1px solid #0D0D0D;\n\tborder-right: 1px solid #0D0D0D;\n\tword-break: normal;\n\tpointer-events: none;\n}\n\n/* Render the username above the caret */\n.collaboration-cursor__label {\n\tposition: absolute;\n\ttop: -1.4em;\n\tleft: -1px;\n\tfont-size: 12px;\n\tfont-style: normal;\n\tfont-weight: 600;\n\tline-height: normal;\n\tuser-select: none;\n\tcolor: #0D0D0D;\n\tpadding: 0.1rem 0.3rem;\n\tborder-radius: 3px 3px 3px 0;\n\twhite-space: nowrap;\n}\n\n"],sourceRoot:""}]);const p=d},67828:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".editor__content[data-v-b6d104c8]{max-width:var(--text-editor-max-width);margin:auto;position:relative;width:100%}.ie .editor__content[data-v-b6d104c8] .ProseMirror{padding-top:50px}.text-editor__content-wrapper[data-v-b6d104c8]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-b6d104c8]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-b6d104c8],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-b6d104c8]{height:100%;position:relative}.is-rich-workspace .text-editor__content-wrapper[data-v-b6d104c8]{--side-width: var(--text-editor-max-width);grid-template-columns:var(--side-width) auto}.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-b6d104c8],.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-b6d104c8]{display:none}","",{version:3,sources:["webpack://./src/components/Editor/ContentContainer.vue"],names:[],mappings:"AACA,kCACC,sCAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAIA,mDACC,gBAAA,CAIF,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA,CAKD,kEACC,0CAAA,CACA,4CAAA,CACA,6MAEC,YAAA",sourcesContent:["\n.editor__content {\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.ie {\n\t.editor__content:deep(.ProseMirror) {\n\t\tpadding-top: 50px;\n\t}\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n}\n\n.is-rich-workspace {\n\t.text-editor__content-wrapper {\n\t\t--side-width: var(--text-editor-max-width);\n\t\tgrid-template-columns: var(--side-width) auto;\n\t\t.text-editor__content-wrapper__left,\n\t\t.text-editor__content-wrapper__right {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},8857:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".document-status[data-v-4fde7cc0]{position:sticky;top:0;z-index:10000;max-height:50px;background-color:var(--color-main-background)}.document-status .msg[data-v-4fde7cc0]{padding:12px;background-position:8px center;color:var(--color-text-maxcontrast)}.document-status .msg.icon-error[data-v-4fde7cc0]{padding-left:30px}.document-status .msg .button[data-v-4fde7cc0]{margin-left:8px}.document-status .msg.msg-locked .lock-icon[data-v-4fde7cc0]{padding:0 10px;float:left}","",{version:3,sources:["webpack://./src/components/Editor/DocumentStatus.vue"],names:[],mappings:"AACA,kCACC,eAAA,CACA,KAAA,CACA,aAAA,CACA,eAAA,CACA,6CAAA,CAEA,uCACC,YAAA,CACA,8BAAA,CACA,mCAAA,CAEA,kDACC,iBAAA,CAGD,+CACC,eAAA,CAGD,6DACC,cAAA,CACA,UAAA",sourcesContent:["\n.document-status {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 10000;\n\tmax-height: 50px;\n\tbackground-color: var(--color-main-background);\n\n\t.msg {\n\t\tpadding: 12px;\n\t\tbackground-position: 8px center;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&.icon-error {\n\t\t\tpadding-left: 30px;\n\t\t}\n\n\t\t.button {\n\t\t\tmargin-left: 8px;\n\t\t}\n\n\t\t&.msg-locked .lock-icon {\n\t\t\tpadding: 0 10px;\n\t\t\tfloat: left;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},30764:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".editor--outline[data-v-4a57d3b2]{width:300px;padding:0 10px 10px 10px;position:fixed;overflow:auto;max-height:calc(100% - 204px)}.editor--outline-mobile[data-v-4a57d3b2]{box-shadow:8px 0 17px -19px var(--color-box-shadow);background-color:var(--color-main-background-translucent);z-index:1}.editor--outline__header[data-v-4a57d3b2]{margin:0;position:sticky;top:0;z-index:1;background-color:var(--color-main-background);padding:.6em .6em .6em 0;display:flex;align-items:center}.editor--outline__header h2[data-v-4a57d3b2]{font-size:1rem;line-height:1.1rem;flex-grow:1;padding:0;margin:0}","",{version:3,sources:["webpack://./src/components/Editor/EditorOutline.vue"],names:[],mappings:"AACA,kCACC,WAAA,CACA,wBAAA,CACA,cAAA,CACA,aAAA,CAEA,6BAAA,CAEA,yCACC,mDAAA,CACA,yDAAA,CACA,SAAA,CAGD,0CACC,QAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,6CAAA,CACA,wBAAA,CACA,YAAA,CACA,kBAAA,CAEA,6CACC,cAAA,CACA,kBAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA",sourcesContent:["\n.editor--outline {\n\twidth: 300px;\n\tpadding: 0 10px 10px 10px;\n\tposition: fixed;\n\toverflow: auto;\n\t// 204px = 50px nc header + 60px collectives titlebar + 44px menubar + 50px bottom margin\n\tmax-height: calc(100% - 204px);\n\n\t&-mobile {\n\t\tbox-shadow: 8px 0 17px -19px var(--color-box-shadow);\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\tz-index: 1;\n\t}\n\n\t&__header {\n\t\tmargin: 0;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tz-index: 1;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding: 0.6em 0.6em 0.6em 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\th2 {\n\t\t\tfont-size: 1rem;\n\t\t\tline-height: 1.1rem;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},16104:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".text-editor__main[data-v-8ffa875e],.editor[data-v-8ffa875e]{background:var(--color-main-background);color:var(--color-main-text);background-clip:padding-box;border-radius:var(--border-radius);padding:0;position:relative;width:100%}","",{version:3,sources:["webpack://./src/components/Editor/MainContainer.vue"],names:[],mappings:"AACA,6DACC,uCAAA,CACA,4BAAA,CACA,2BAAA,CACA,kCAAA,CACA,SAAA,CACA,iBAAA,CACA,UAAA",sourcesContent:["\n.text-editor__main, .editor {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-main-text);\n\tbackground-clip: padding-box;\n\tborder-radius: var(--border-radius);\n\tpadding: 0;\n\tposition: relative;\n\twidth: 100%;\n}\n"],sourceRoot:""}]);const s=o},46212:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".text-editor__session-list[data-v-72fc82a8]{display:flex}.text-editor__session-list input[data-v-72fc82a8],.text-editor__session-list div[data-v-72fc82a8]{vertical-align:middle;margin-left:3px}.save-status[data-v-72fc82a8]{border-radius:50%;color:var(--color-text-lighter);display:inline-flex;justify-content:center;padding:0;height:44px;width:44px}.save-status[data-v-72fc82a8]:hover{background-color:var(--color-background-hover)}.last-saved[data-v-72fc82a8]{padding:6px}","",{version:3,sources:["webpack://./src/components/Editor/Status.vue"],names:[],mappings:"AACA,4CACC,YAAA,CAEA,kGACC,qBAAA,CACA,eAAA,CAIF,8BACC,iBAAA,CACA,+BAAA,CACA,mBAAA,CACA,sBAAA,CACA,SAAA,CACA,WAAA,CACA,UAAA,CAEA,oCACC,8CAAA,CAIF,6BACC,WAAA",sourcesContent:["\n.text-editor__session-list {\n\tdisplay: flex;\n\n\tinput, div {\n\t\tvertical-align: middle;\n\t\tmargin-left: 3px;\n\t}\n}\n\n.save-status {\n\tborder-radius: 50%;\n\tcolor: var(--color-text-lighter);\n\tdisplay: inline-flex;\n\tjustify-content: center;\n\tpadding: 0;\n\theight: 44px;\n\twidth: 44px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n}\n\n.last-saved {\n\tpadding: 6px;\n}\n"],sourceRoot:""}]);const s=o},94794:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".--initial-render .editor--toc__item{--initial-padding-left: 0;animation:initialPadding 1.5s}.editor--toc{padding:0 10px;color:var(--color-main-text-maxcontrast);--animation-duration: 0.8s}.editor--toc h3{padding-left:.75rem}.editor--toc__list{width:100%;list-style:none;font-size:.9rem;padding:0;animation-name:fadeInLeft;animation-duration:var(--animation-duration)}.editor--toc__item{transform:translateX(var(--padding-left, 0rem));text-overflow:ellipsis;overflow:hidden;white-space:nowrap;animation:initialPadding calc(var(--animation-duration)*2);width:calc(100% - var(--padding-left))}.editor--toc__item a:hover{color:var(--color-primary-element-hover)}.editor--toc__item--1{--padding-left: 0rem;font-weight:600}.editor--toc__item--1:not(:nth-child(1)){margin-top:.5rem}.editor--toc__item--2{--padding-left: 1rem}.editor--toc__item--3{--padding-left: 2rem}.editor--toc__item--4{--padding-left: 3rem}.editor--toc__item--5{--padding-left: 4rem}.editor--toc__item--6{--padding-left: 5rem}.editor--toc__item--previous-1{--initial-padding-left: 0rem }.editor--toc__item--previous-2{--initial-padding-left: 1rem }.editor--toc__item--previous-3{--initial-padding-left: 2rem }.editor--toc__item--previous-4{--initial-padding-left: 3rem }.editor--toc__item--previous-5{--initial-padding-left: 4rem }.editor--toc__item--previous-6{--initial-padding-left: 5rem }@keyframes initialPadding{from{transform:translateX(var(--initial-padding-left, initial))}to{transform:translateX(var(--padding-left, 0rem))}}","",{version:3,sources:["webpack://./src/components/Editor/TableOfContents.vue"],names:[],mappings:"AAGE,qCACC,yBAAA,CACA,6BAAA,CAKH,aACC,cAAA,CACA,wCAAA,CACA,0BAAA,CAEA,gBACC,mBAAA,CAGD,mBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,SAAA,CAEA,yBAAA,CACA,4CAAA,CAGD,mBACC,+CAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,0DAAA,CACA,sCAAA,CAEA,2BACC,wCAAA,CAGD,sBACC,oBAAA,CACA,eAAA,CACA,yCACC,gBAAA,CAIF,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAKH,0BACE,KACD,0DAAA,CAGC,GACD,+CAAA,CAAA",sourcesContent:["\n.--initial-render {\n\t.editor--toc {\n\t\t&__item {\n\t\t\t--initial-padding-left: 0;\n\t\t\tanimation: initialPadding 1.5s;\n\t\t}\n\t}\n}\n\n.editor--toc {\n\tpadding: 0 10px;\n\tcolor: var(--color-main-text-maxcontrast);\n\t--animation-duration: 0.8s;\n\n\th3 {\n\t\tpadding-left: 0.75rem;\n\t}\n\n\t&__list {\n\t\twidth: 100%;\n\t\tlist-style: none;\n\t\tfont-size: 0.9rem;\n\t\tpadding: 0;\n\n\t\tanimation-name: fadeInLeft;\n\t\tanimation-duration: var(--animation-duration);\n\t}\n\n\t&__item {\n\t\ttransform: translateX(var(--padding-left, 0rem));\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\tanimation: initialPadding calc(var(--animation-duration) * 2);\n\t\twidth: calc(100% - var(--padding-left));\n\n\t\ta:hover {\n\t\t\tcolor: var(--color-primary-element-hover);\n\t\t}\n\n\t\t&--1 {\n\t\t\t--padding-left: 0rem;\n\t\t\tfont-weight: 600;\n\t\t\t&:not(:nth-child(1)) {\n\t\t\t\tmargin-top: 0.5rem;\n\t\t\t}\n\t\t}\n\n\t\t&--2 {\n\t\t\t--padding-left: 1rem;\n\t\t}\n\n\t\t&--3 {\n\t\t\t--padding-left: 2rem;\n\t\t}\n\n\t\t&--4 {\n\t\t\t--padding-left: 3rem;\n\t\t}\n\n\t\t&--5 {\n\t\t\t--padding-left: 4rem;\n\t\t}\n\n\t\t&--6 {\n\t\t\t--padding-left: 5rem;\n\t\t}\n\n\t\t&--previous-1 {\n\t\t\t--initial-padding-left: 0rem\n\t\t}\n\n\t\t&--previous-2 {\n\t\t\t--initial-padding-left: 1rem\n\t\t}\n\n\t\t&--previous-3 {\n\t\t\t--initial-padding-left: 2rem\n\t\t}\n\n\t\t&--previous-4 {\n\t\t\t--initial-padding-left: 3rem\n\t\t}\n\n\t\t&--previous-5 {\n\t\t\t--initial-padding-left: 4rem\n\t\t}\n\n\t\t&--previous-6 {\n\t\t\t--initial-padding-left: 5rem\n\t\t}\n\t}\n}\n\n@keyframes initialPadding {\n from {\n\ttransform: translateX(var(--initial-padding-left, initial));\n }\n\n to {\n\ttransform: translateX(var(--padding-left, 0rem));\n }\n}\n\n"],sourceRoot:""}]);const s=o},51996:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".text-editor__wrapper[data-v-dad37ee2]{display:flex;width:100%;height:100%}.text-editor__wrapper.show-color-annotations[data-v-dad37ee2] .author-annotation{padding-top:2px;padding-bottom:2px}.text-editor__wrapper[data-v-dad37ee2]:not(.show-color-annotations) .author-annotation,.text-editor__wrapper[data-v-dad37ee2]:not(.show-color-annotations) .image{background-color:rgba(0,0,0,0) !important}.text-editor__wrapper .ProseMirror[data-v-dad37ee2]{margin-top:0 !important}.text-editor__wrapper.icon-loading .text-editor__main[data-v-dad37ee2]{opacity:.3}","",{version:3,sources:["webpack://./src/components/Editor/Wrapper.vue"],names:[],mappings:"AAEA,uCACC,YAAA,CACA,UAAA,CACA,WAAA,CAEA,iFACC,eAAA,CACA,kBAAA,CAGD,kKAEC,yCAAA,CAGD,oDACC,uBAAA,CAGA,uEACC,UAAA",sourcesContent:["\n\n.text-editor__wrapper {\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\n\t&.show-color-annotations:deep(.author-annotation) {\n\t\tpadding-top: 2px;\n\t\tpadding-bottom: 2px;\n\t}\n\n\t&:not(.show-color-annotations):deep(.author-annotation),\n\t&:not(.show-color-annotations):deep(.image) {\n\t\tbackground-color: transparent !important;\n\t}\n\n\t.ProseMirror {\n\t\tmargin-top: 0 !important;\n\t}\n\t&.icon-loading {\n\t\t.text-editor__main {\n\t\t\topacity: 0.3;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},28091:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=o()(i()),_=l()(c);d.push([e.id,'[data-v-a7b1a700] .modal-wrapper .modal-container{width:max-content;padding:30px 40px 20px;user-select:text}@media only screen and (max-width: 512px){[data-v-a7b1a700] .modal-wrapper .modal-container{width:inherit;padding:10px 0}}table[data-v-a7b1a700]{margin-top:24px;border-collapse:collapse}table tbody tr[data-v-a7b1a700]:hover,table tbody tr[data-v-a7b1a700]:focus,table tbody tr[data-v-a7b1a700]:active{background-color:rgba(0,0,0,0) !important}table thead tr[data-v-a7b1a700]{border:none}table th[data-v-a7b1a700]{font-weight:bold;padding:.75rem 1rem .75rem 0;border-bottom:2px solid var(--color-background-darker)}table td[data-v-a7b1a700]{padding:.75rem 1rem .75rem 0;border-top:1px solid var(--color-background-dark);border-bottom:unset}table td.noborder[data-v-a7b1a700]{border-top:unset}table td.ellipsis_top[data-v-a7b1a700]{padding-bottom:0}table td.ellipsis[data-v-a7b1a700]{padding-top:0;padding-bottom:0}table td.ellipsis_bottom[data-v-a7b1a700]{padding-top:0}table kbd[data-v-a7b1a700]{font-size:smaller}table code[data-v-a7b1a700]{padding:.2em .4em;font-size:90%;background-color:var(--color-background-dark);border-radius:6px}div.ProseMirror[data-v-a7b1a700]{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror[data-v-a7b1a700] :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true][data-v-a7b1a700],div.ProseMirror[contenteditable=false][data-v-a7b1a700],div.ProseMirror [contenteditable=true][data-v-a7b1a700],div.ProseMirror [contenteditable=false][data-v-a7b1a700]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}div.ProseMirror[contenteditable=true][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false][data-v-a7b1a700]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true][data-v-a7b1a700]:focus,div.ProseMirror[contenteditable=true][data-v-a7b1a700]:focus-visible,div.ProseMirror[contenteditable=false][data-v-a7b1a700]:focus,div.ProseMirror[contenteditable=false][data-v-a7b1a700]:focus-visible,div.ProseMirror [contenteditable=true][data-v-a7b1a700]:focus,div.ProseMirror [contenteditable=true][data-v-a7b1a700]:focus-visible,div.ProseMirror [contenteditable=false][data-v-a7b1a700]:focus,div.ProseMirror [contenteditable=false][data-v-a7b1a700]:focus-visible{box-shadow:none !important}div.ProseMirror .checkbox-item[data-v-a7b1a700]{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox][data-v-a7b1a700]{display:none}div.ProseMirror .checkbox-item[data-v-a7b1a700]:before{content:"";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}div.ProseMirror .checkbox-item.checked[data-v-a7b1a700]:before{background-image:url('+_+');background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label[data-v-a7b1a700]{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label[data-v-a7b1a700]{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*[data-v-a7b1a700]:first-child{margin-top:10px}div.ProseMirror>h1[data-v-a7b1a700]:first-child,div.ProseMirror h2[data-v-a7b1a700]:first-child,div.ProseMirror h3[data-v-a7b1a700]:first-child,div.ProseMirror h4[data-v-a7b1a700]:first-child,div.ProseMirror h5[data-v-a7b1a700]:first-child,div.ProseMirror h6[data-v-a7b1a700]:first-child{margin-top:0}div.ProseMirror a[data-v-a7b1a700]{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content[data-v-a7b1a700]{margin-bottom:1em;line-height:150%}div.ProseMirror em[data-v-a7b1a700]{font-style:italic}div.ProseMirror h1[data-v-a7b1a700],div.ProseMirror h2[data-v-a7b1a700],div.ProseMirror h3[data-v-a7b1a700],div.ProseMirror h4[data-v-a7b1a700],div.ProseMirror h5[data-v-a7b1a700],div.ProseMirror h6[data-v-a7b1a700]{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1[data-v-a7b1a700]{font-size:36px}div.ProseMirror h2[data-v-a7b1a700]{font-size:30px}div.ProseMirror h3[data-v-a7b1a700]{font-size:24px}div.ProseMirror h4[data-v-a7b1a700]{font-size:21px}div.ProseMirror h5[data-v-a7b1a700]{font-size:17px}div.ProseMirror h6[data-v-a7b1a700]{font-size:14px}div.ProseMirror img[data-v-a7b1a700]{cursor:default;max-width:100%}div.ProseMirror hr[data-v-a7b1a700]{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr[data-v-a7b1a700]:after{content:"";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre[data-v-a7b1a700]{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre.frontmatter[data-v-a7b1a700]{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter[data-v-a7b1a700]::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code[data-v-a7b1a700]{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li[data-v-a7b1a700]{position:relative;padding-left:3px}div.ProseMirror li p[data-v-a7b1a700]{margin-bottom:.5em}div.ProseMirror ul[data-v-a7b1a700],div.ProseMirror ol[data-v-a7b1a700]{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li[data-v-a7b1a700]{list-style-type:disc}div.ProseMirror li ul>li[data-v-a7b1a700]{list-style-type:circle}div.ProseMirror li li ul>li[data-v-a7b1a700]{list-style-type:square}div.ProseMirror blockquote[data-v-a7b1a700]{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table[data-v-a7b1a700]{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table[data-v-a7b1a700]{margin-top:1em}div.ProseMirror table td[data-v-a7b1a700],div.ProseMirror table th[data-v-a7b1a700]{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td[data-v-a7b1a700]:first-child,div.ProseMirror table th[data-v-a7b1a700]:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td[data-v-a7b1a700]{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th[data-v-a7b1a700]{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div[data-v-a7b1a700]{display:flex}div.ProseMirror table tr[data-v-a7b1a700]{background-color:var(--table-color-background)}div.ProseMirror table tr[data-v-a7b1a700]:hover,div.ProseMirror table tr[data-v-a7b1a700]:active,div.ProseMirror table tr[data-v-a7b1a700]:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th[data-v-a7b1a700]:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th[data-v-a7b1a700]:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-a7b1a700]:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-a7b1a700]:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor[data-v-a7b1a700]{display:block}.editor__content p.is-empty[data-v-a7b1a700]:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content[data-v-a7b1a700]{tab-size:4}div.ProseMirror[data-v-a7b1a700]{display:inline;margin-top:unset;position:unset;padding:unset;line-height:unset}div.ProseMirror h1[data-v-a7b1a700],div.ProseMirror h6[data-v-a7b1a700]{display:inline;padding:0;margin:0}',"",{version:3,sources:["webpack://./src/components/HelpModal.vue","webpack://./css/prosemirror.scss"],names:[],mappings:"AAEC,kDACC,iBAAA,CACA,sBAAA,CACA,gBAAA,CAID,0CACC,kDACC,aAAA,CACA,cAAA,CAAA,CAKH,uBACC,eAAA,CACA,wBAAA,CAGC,mHACC,yCAAA,CAIF,gCACC,WAAA,CAGD,0BACC,gBAAA,CACA,4BAAA,CACA,sDAAA,CAGD,0BACC,4BAAA,CACA,iDAAA,CACA,mBAAA,CAEA,mCACC,gBAAA,CAGD,uCACC,gBAAA,CAGD,mCACC,aAAA,CACA,gBAAA,CAGD,0CACC,aAAA,CAIF,2BACC,iBAAA,CAGD,4BACC,iBAAA,CACA,aAAA,CACA,6CAAA,CACA,iBAAA,CCjEF,iCACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,yCAEC,sBAAA,CAGD,gOAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,wWACC,sBAAA,CAGD,ghBACC,0BAAA,CAIF,gDACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,qEACC,YAAA,CAED,uDACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,+DACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,8DACC,mCAAA,CACA,4BAAA,CAGF,sDACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,+CACC,eAAA,CAIA,gSACC,YAAA,CAIF,mCACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,sDACC,iBAAA,CACA,gBAAA,CAGD,oCACC,iBAAA,CAGD,wNAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,qCACC,cAAA,CACA,cAAA,CAGD,oCACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,0CACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,qCACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,iDACC,iBAAA,CACA,kDAAA,CAGD,yDACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,wCACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,oCACC,iBAAA,CACA,gBAAA,CAEA,sCACC,kBAAA,CAIF,wEACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,uCACC,oBAAA,CAID,0CACC,sBAAA,CAID,6CACC,sBAAA,CAGD,4CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,uCACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,uCACC,cAAA,CAID,oFACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,4GACC,+CAAA,CAGF,0CACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,0CACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,8CACC,YAAA,CAGF,0CACC,8CAAA,CACA,iJACC,oDAAA,CAKD,qEAAA,iDAAA,CACA,oEAAA,kDAAA,CAIA,oEAAA,oDAAA,CACA,mEAAA,qDAAA,CAOH,6DACC,aAAA,CAGD,iEACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,kCACC,UAAA,CDtOD,iCACC,cAAA,CACA,gBAAA,CACA,cAAA,CACA,aAAA,CACA,iBAAA,CAEA,wEACC,cAAA,CACA,SAAA,CACA,QAAA",sourcesContent:["\n:deep(.modal-wrapper) {\n\t.modal-container {\n\t\twidth: max-content;\n\t\tpadding: 30px 40px 20px;\n\t\tuser-select: text;\n\t}\n\n\t// Remove padding-right on mobile, screen might not be wide enough\n\t@media only screen and (max-width: 512px) {\n\t\t.modal-container {\n\t\t\twidth: inherit;\n\t\t\tpadding: 10px 0;\n\t\t}\n\t}\n}\n\ntable {\n\tmargin-top: 24px;\n\tborder-collapse: collapse;\n\n\ttbody tr {\n\t\t&:hover, &:focus, &:active {\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\t}\n\n\tthead tr {\n\t\tborder: none;\n\t}\n\n\tth {\n\t\tfont-weight: bold;\n\t\tpadding: .75rem 1rem .75rem 0;\n\t\tborder-bottom: 2px solid var(--color-background-darker);\n\t}\n\n\ttd {\n\t\tpadding: .75rem 1rem .75rem 0;\n\t\tborder-top: 1px solid var(--color-background-dark);\n\t\tborder-bottom: unset;\n\n\t\t&.noborder {\n\t\t\tborder-top: unset;\n\t\t}\n\n\t\t&.ellipsis_top {\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\t&.ellipsis {\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\t&.ellipsis_bottom {\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n\n\tkbd {\n\t\tfont-size: smaller;\n\t}\n\n\tcode {\n\t\tpadding: .2em .4em;\n\t\tfont-size: 90%;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: 6px;\n\t}\n}\n\n@import '../../css/prosemirror';\n\ndiv.ProseMirror {\n\tdisplay: inline;\n\tmargin-top: unset;\n\tposition: unset;\n\tpadding: unset;\n\tline-height: unset;\n\n\th1, h6 {\n\t\tdisplay: inline;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n}\n","@use 'sass:selector';\n\n/* Document rendering styles */\ndiv.ProseMirror {\n\theight: 100%;\n\tposition: relative;\n\tword-wrap: break-word;\n\twhite-space: pre-wrap;\n\t-webkit-font-variant-ligatures: none;\n\tfont-variant-ligatures: none;\n\tpadding: 4px 8px 200px 14px;\n\tline-height: 150%;\n\tfont-size: 14px;\n\toutline: none;\n\n\t:target {\n\t\t// Menubar height: 44px + 3px bottom + 3px top padding\n\t\tscroll-margin-top: 50px;\n\t}\n\n\t&[contenteditable=true],\n\t&[contenteditable=false],\n\t[contenteditable=true],\n\t[contenteditable=false] {\n\t\twidth: 100%;\n\t\tbackground-color: transparent;\n\t\tcolor: var(--color-main-text);\n\t\topacity: 1;\n\t\t-webkit-user-select: text;\n\t\tuser-select: text;\n\t\tfont-size: 14px;\n\n\t\t&:not(.collaboration-cursor__caret) {\n\t\t\tborder: none !important;\n\t\t}\n\n\t\t&:focus, &:focus-visible {\n\t\t\tbox-shadow: none !important;\n\t\t}\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\t\t// Left-align with list item text\n\t\tmargin-left: -23px;\n\n\t\tinput[type=checkbox] {\n\t\t\tdisplay: none;\n\t\t}\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tvertical-align: middle;\n\t\t\tmargin: 3px 6px 3px 2px;\n\t\t\tborder: 1px solid var(--color-text-maxcontrast);\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\theight: 14px;\n\t\t\twidth: 14px;\n\t\t\tbox-shadow: none !important;\n\t\t\tbackground-position: center;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\ttext-decoration: line-through;\n\t\t\t}\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: calc(100% - 28px);\n\t\t}\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 10px;\n\t}\n\n\t> h1,h2,h3,h4,h5,h6 {\n\t\t&:first-child {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\ta {\n\t\tcolor: var(--color-primary-element);\n\t\ttext-decoration: underline;\n\t\tpadding: .5em 0;\n\t}\n\n\tp .paragraph-content {\n\t\tmargin-bottom: 1em;\n\t\tline-height: 150%;\n\t}\n\n\tem {\n\t\tfont-style: italic;\n\t}\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 1.1em;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t}\n\n\th2 {\n\t\tfont-size: 30px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: 14px;\n\t}\n\n\timg {\n\t\tcursor: default;\n\t\tmax-width: 100%;\n\t}\n\n\thr {\n\t\tpadding: 2px 0;\n\t\tborder: none;\n\t\tmargin: 2em 0;\n\t\twidth: 100%;\n\t}\n\n\thr:after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\theight: 1px;\n\t\tbackground-color: var(--color-border-dark);\n\t\tline-height: 2px;\n\t}\n\n\tpre {\n\t\twhite-space: pre-wrap;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tpre.frontmatter {\n\t\tmargin-bottom: 2em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t}\n\n\tpre.frontmatter::before {\n\t\tdisplay: block;\n\t\tcontent: attr(data-title);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-bottom: 0.5em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t\tpadding-left: 3px;\n\n\t\tp {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t+ & {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n"],sourceRoot:""}]);const p=d},53180:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".modal__content[data-v-8f1a4cfa]{height:80vh;padding:0 50px;display:flex;justify-content:center}.modal__content img[data-v-8f1a4cfa]{width:100%;height:100%;object-fit:contain}","",{version:3,sources:["webpack://./src/components/ImageView/ShowImageModal.vue"],names:[],mappings:"AACA,iCACC,WAAA,CACA,cAAA,CACA,YAAA,CACA,sBAAA,CACA,qCACC,UAAA,CACA,WAAA,CACA,kBAAA",sourcesContent:["\n.modal__content {\n\theight: 80vh;\n\tpadding: 0 50px;\n\tdisplay: flex;\n\tjustify-content: center;\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: contain;\n\t}\n}\n"],sourceRoot:""}]);const s=o},38304:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"ul.inline-container-content{display:flex;justify-content:space-between}ul.inline-container-content li{flex:1 1}ul.inline-container-content .action-button{padding:0 !important;width:100%;display:flex;justify-content:center}","",{version:3,sources:["webpack://./src/components/InlineActionsContainer.vue"],names:[],mappings:"AACA,4BACC,YAAA,CACA,6BAAA,CACA,+BACC,QAAA,CAGD,2CAEC,oBAAA,CACA,UAAA,CACA,YAAA,CACA,sBAAA",sourcesContent:["\nul.inline-container-content {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tli {\n\t\tflex: 1 1;\n\t}\n\n\t.action-button {\n\t\t// Fix action buttons beeing shifted to the left (right padding)\n\t\tpadding: 0 !important;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t}\n}\n"],sourceRoot:""}]);const s=o},81883:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".text-menubar[data-v-829d9a78]{--background-blur: blur(10px);position:sticky;top:0;z-index:10021;background-color:var(--color-main-background-translucent);backdrop-filter:var(--background-blur);max-height:44px;padding-top:3px;padding-bottom:3px;visibility:hidden;display:flex;justify-content:flex-end;align-items:center}.text-menubar.text-menubar--ready[data-v-829d9a78]:not(.text-menubar--autohide){visibility:visible;animation-name:fadeInDown;animation-duration:.3s}.text-menubar.text-menubar--autohide[data-v-829d9a78]{opacity:0;transition:visibility .2s .4s,opacity .2s .4s}.text-menubar.text-menubar--autohide.text-menubar--show[data-v-829d9a78]{visibility:visible;opacity:1}.text-menubar .text-menubar__entries[data-v-829d9a78]{display:flex;flex-grow:1;margin-left:max(0px,(100% - var(--text-editor-max-width))/2)}.text-menubar .text-menubar__slot[data-v-829d9a78]{justify-content:flex-end;display:flex;min-width:max(0px,min(100px,(100% - var(--text-editor-max-width))/2))}.text-menubar.text-menubar--is-workspace .text-menubar__entries[data-v-829d9a78]{margin-left:0}@media(max-width: 660px){.text-menubar .text-menubar__entries[data-v-829d9a78]{margin-left:0}}","",{version:3,sources:["webpack://./src/components/Menu/MenuBar.vue"],names:[],mappings:"AACA,+BACC,6BAAA,CACA,eAAA,CACA,KAAA,CACA,aAAA,CACA,yDAAA,CACA,sCAAA,CACA,eAAA,CACA,eAAA,CACA,kBAAA,CAEA,iBAAA,CAEA,YAAA,CACA,wBAAA,CACA,kBAAA,CAEA,gFACC,kBAAA,CACA,yBAAA,CACA,sBAAA,CAGD,sDACC,SAAA,CACA,6CAAA,CACA,yEACC,kBAAA,CACA,SAAA,CAGF,sDACC,YAAA,CACA,WAAA,CACA,4DAAA,CAGD,mDACC,wBAAA,CACA,YAAA,CACA,qEAAA,CAIA,iFACC,aAAA,CAIF,yBACC,sDACC,aAAA,CAAA",sourcesContent:["\n.text-menubar {\n\t--background-blur: blur(10px);\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 10021; // above modal-header so menubar is always on top\n\tbackground-color: var(--color-main-background-translucent);\n\tbackdrop-filter: var(--background-blur);\n\tmax-height: 44px; // important for mobile so that the buttons are always inside the container\n\tpadding-top:3px;\n\tpadding-bottom: 3px;\n\n\tvisibility: hidden;\n\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\n\t&.text-menubar--ready:not(.text-menubar--autohide) {\n\t\tvisibility: visible;\n\t\tanimation-name: fadeInDown;\n\t\tanimation-duration: 0.3s;\n\t}\n\n\t&.text-menubar--autohide {\n\t\topacity: 0;\n\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t&.text-menubar--show {\n\t\t\tvisibility: visible;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\t.text-menubar__entries {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tmargin-left: max(0px, calc((100% - var(--text-editor-max-width)) / 2));\n\t}\n\n\t.text-menubar__slot {\n\t\tjustify-content: flex-end;\n\t\tdisplay: flex;\n\t\tmin-width: max(0px, min(100px, (100% - var(--text-editor-max-width)) / 2));\n\t}\n\n\t&.text-menubar--is-workspace {\n\t\t.text-menubar__entries {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t@media (max-width: 660px) {\n\t\t.text-menubar__entries {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},95832:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".translate-dialog[data-v-6f82ffba]{margin:24px}textarea[data-v-6f82ffba]{display:block;width:100%;margin-bottom:12px}.language-selector[data-v-6f82ffba]{display:flex;align-items:center;margin-bottom:12px}.language-selector label[data-v-6f82ffba]{flex-grow:1}.translate-actions[data-v-6f82ffba]{display:flex;justify-content:flex-end}.translate-actions button[data-v-6f82ffba]{margin-left:12px}","",{version:3,sources:["webpack://./src/components/Modal/Translate.vue"],names:[],mappings:"AACA,mCACC,WAAA,CAGD,0BACC,aAAA,CACA,UAAA,CACA,kBAAA,CAID,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,0CACC,WAAA,CAIF,oCACC,YAAA,CACA,wBAAA,CAEA,2CACC,gBAAA",sourcesContent:["\n.translate-dialog {\n\tmargin: 24px;\n}\n\ntextarea {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-bottom: 12px;\n\n}\n\n.language-selector {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: 12px;\n\n\tlabel {\n\t\tflex-grow: 1;\n\t}\n}\n\n.translate-actions {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\n\tbutton {\n\t\tmargin-left: 12px;\n\t}\n}\n"],sourceRoot:""}]);const s=o},655:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"#read-only-editor{overflow:scroll}.thumbnailContainer #read-only-editor{width:100%}.thumbnailContainer #read-only-editor .ProseMirror{height:auto;margin:0 0 0 0;padding:0}","",{version:3,sources:["webpack://./src/components/Reader.vue"],names:[],mappings:"AAEA,kBACC,eAAA,CAGD,sCACC,UAAA,CAEA,mDACC,WAAA,CACA,cAAA,CACA,SAAA",sourcesContent:["\n\n#read-only-editor {\n\toverflow: scroll;\n}\n\n.thumbnailContainer #read-only-editor {\n\twidth: 100%;\n\n\t.ProseMirror {\n\t\theight: auto;\n\t\tmargin: 0 0 0 0;\n\t\tpadding: 0;\n\t}\n}\n\n"],sourceRoot:""}]);const s=o},49356:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=o()(i()),_=l()(c);d.push([e.id,'div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true],div.ProseMirror[contenteditable=false],div.ProseMirror [contenteditable=true],div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true]:focus,div.ProseMirror[contenteditable=true]:focus-visible,div.ProseMirror[contenteditable=false]:focus,div.ProseMirror[contenteditable=false]:focus-visible,div.ProseMirror [contenteditable=true]:focus,div.ProseMirror [contenteditable=true]:focus-visible,div.ProseMirror [contenteditable=false]:focus,div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox]{display:none}div.ProseMirror .checkbox-item:before{content:"";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}div.ProseMirror .checkbox-item.checked:before{background-image:url('+_+');background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*:first-child{margin-top:10px}div.ProseMirror>h1:first-child,div.ProseMirror h2:first-child,div.ProseMirror h3:first-child,div.ProseMirror h4:first-child,div.ProseMirror h5:first-child,div.ProseMirror h6:first-child{margin-top:0}div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}div.ProseMirror em{font-style:italic}div.ProseMirror h1,div.ProseMirror h2,div.ProseMirror h3,div.ProseMirror h4,div.ProseMirror h5,div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1{font-size:36px}div.ProseMirror h2{font-size:30px}div.ProseMirror h3{font-size:24px}div.ProseMirror h4{font-size:21px}div.ProseMirror h5{font-size:17px}div.ProseMirror h6{font-size:14px}div.ProseMirror img{cursor:default;max-width:100%}div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr:after{content:"";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li{position:relative;padding-left:3px}div.ProseMirror li p{margin-bottom:.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li{list-style-type:disc}div.ProseMirror li ul>li{list-style-type:circle}div.ProseMirror li li ul>li{list-style-type:square}div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table{margin-top:1em}div.ProseMirror table td,div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td:first-child,div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div{display:flex}div.ProseMirror table tr{background-color:var(--table-color-background)}div.ProseMirror table tr:hover,div.ProseMirror table tr:active,div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content{tab-size:4}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor div.ProseMirror h1,.text-editor div.ProseMirror h2,.text-editor div.ProseMirror h3,.text-editor div.ProseMirror h4,.text-editor div.ProseMirror h5{break-after:avoid}.text-editor div.ProseMirror .image,.text-editor div.ProseMirror img,.text-editor div.ProseMirror table{break-inside:avoid-page;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}}@media print{#content{display:none}}',"",{version:3,sources:["webpack://./css/prosemirror.scss","webpack://./css/print.scss","webpack://./src/components/RichTextReader.vue"],names:[],mappings:"AAGA,gBACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,wBAEC,sBAAA,CAGD,4JAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,oSACC,sBAAA,CAGD,wYACC,0BAAA,CAIF,+BACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,oDACC,YAAA,CAED,sCACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,8CACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,6CACC,mCAAA,CACA,4BAAA,CAGF,qCACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,8BACC,eAAA,CAIA,0LACC,YAAA,CAIF,kBACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,qCACC,iBAAA,CACA,gBAAA,CAGD,mBACC,iBAAA,CAGD,kHAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,oBACC,cAAA,CACA,cAAA,CAGD,mBACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,yBACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,oBACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,gCACC,iBAAA,CACA,kDAAA,CAGD,wCACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,uBACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,mBACC,iBAAA,CACA,gBAAA,CAEA,qBACC,kBAAA,CAIF,sCACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,sBACC,oBAAA,CAID,yBACC,sBAAA,CAID,4BACC,sBAAA,CAGD,2BACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,sBACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBACC,cAAA,CAID,kDACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,0EACC,+CAAA,CAGF,yBACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,yBACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,6BACC,YAAA,CAGF,yBACC,8CAAA,CACA,8FACC,oDAAA,CAKD,oDAAA,iDAAA,CACA,mDAAA,kDAAA,CAIA,mDAAA,oDAAA,CACA,kDAAA,qDAAA,CAOH,4CACC,aAAA,CAGD,gDACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,iBACC,UAAA,CChTD,aACC,MACC,OAAA,CACA,0BAAA,CAGD,KAEC,iBAAA,CACA,2BAAA,CAGD,2BAEC,WAAA,CACA,qBAAA,CAEA,4BAAA,CAEA,yCAEC,uBAAA,CAED,4CAEC,OAAA,CACA,kBAAA,CAKD,2BAEC,uBAAA,CAED,0BAEC,uBAAA,CAED,8BAEC,cAAA,CAED,mCACC,kBAAA,CACA,cAAA,CAIA,gKAEC,iBAAA,CAED,wGAEC,uBAAA,CAEA,wBAAA,CACA,iCAAA,CAID,gCACC,qBAAA,CACA,2BAAA,CACA,mCAAA,CACA,4BAAA,CACA,6CAAA,CAED,6CACC,iCAAA,CAGD,gCACC,4CAAA,CACA,2BAAA,CACA,4BAAA,CAED,6CACC,sBAAA,CAKH,gDACC,YAAA,CAIA,6CACC,aAAA,CAGD,+CACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,iBAAA,CAED,0DACC,YAAA,CAAA,CChGH,aAEC,SACC,YAAA,CAAA",sourcesContent:["@use 'sass:selector';\n\n/* Document rendering styles */\ndiv.ProseMirror {\n\theight: 100%;\n\tposition: relative;\n\tword-wrap: break-word;\n\twhite-space: pre-wrap;\n\t-webkit-font-variant-ligatures: none;\n\tfont-variant-ligatures: none;\n\tpadding: 4px 8px 200px 14px;\n\tline-height: 150%;\n\tfont-size: 14px;\n\toutline: none;\n\n\t:target {\n\t\t// Menubar height: 44px + 3px bottom + 3px top padding\n\t\tscroll-margin-top: 50px;\n\t}\n\n\t&[contenteditable=true],\n\t&[contenteditable=false],\n\t[contenteditable=true],\n\t[contenteditable=false] {\n\t\twidth: 100%;\n\t\tbackground-color: transparent;\n\t\tcolor: var(--color-main-text);\n\t\topacity: 1;\n\t\t-webkit-user-select: text;\n\t\tuser-select: text;\n\t\tfont-size: 14px;\n\n\t\t&:not(.collaboration-cursor__caret) {\n\t\t\tborder: none !important;\n\t\t}\n\n\t\t&:focus, &:focus-visible {\n\t\t\tbox-shadow: none !important;\n\t\t}\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\t\t// Left-align with list item text\n\t\tmargin-left: -23px;\n\n\t\tinput[type=checkbox] {\n\t\t\tdisplay: none;\n\t\t}\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tvertical-align: middle;\n\t\t\tmargin: 3px 6px 3px 2px;\n\t\t\tborder: 1px solid var(--color-text-maxcontrast);\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\theight: 14px;\n\t\t\twidth: 14px;\n\t\t\tbox-shadow: none !important;\n\t\t\tbackground-position: center;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\ttext-decoration: line-through;\n\t\t\t}\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: calc(100% - 28px);\n\t\t}\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 10px;\n\t}\n\n\t> h1,h2,h3,h4,h5,h6 {\n\t\t&:first-child {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\ta {\n\t\tcolor: var(--color-primary-element);\n\t\ttext-decoration: underline;\n\t\tpadding: .5em 0;\n\t}\n\n\tp .paragraph-content {\n\t\tmargin-bottom: 1em;\n\t\tline-height: 150%;\n\t}\n\n\tem {\n\t\tfont-style: italic;\n\t}\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 1.1em;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t}\n\n\th2 {\n\t\tfont-size: 30px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: 14px;\n\t}\n\n\timg {\n\t\tcursor: default;\n\t\tmax-width: 100%;\n\t}\n\n\thr {\n\t\tpadding: 2px 0;\n\t\tborder: none;\n\t\tmargin: 2em 0;\n\t\twidth: 100%;\n\t}\n\n\thr:after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\theight: 1px;\n\t\tbackground-color: var(--color-border-dark);\n\t\tline-height: 2px;\n\t}\n\n\tpre {\n\t\twhite-space: pre-wrap;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tpre.frontmatter {\n\t\tmargin-bottom: 2em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t}\n\n\tpre.frontmatter::before {\n\t\tdisplay: block;\n\t\tcontent: attr(data-title);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-bottom: 0.5em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t\tpadding-left: 3px;\n\n\t\tp {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t+ & {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n","@media print {\n\t@page {\n\t\tsize: A4;\n\t\tmargin: 2.5cm 2cm 2cm 2.5cm;\n\t}\n\n\tbody {\n\t\t// position: fixed does not support scrolling and as such only prints one page\n\t\tposition: absolute;\n\t\toverflow: visible!important;\n\t}\n\n\t#viewer[data-handler='text'] {\n\t\t// Hide top border\n\t\tborder: none;\n\t\twidth: 100%!important;\n\t\t// NcModal uses fixed, which will be cropped when printed\n\t\tposition: absolute!important;\n\n\t\t.modal-header {\n\t\t\t// Hide modal header (close button)\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.modal-container {\n\t\t\t// Make sure top aligned as we hided the menubar */\n\t\t\ttop: 0px;\n\t\t\theight: fit-content;\n\t\t}\n\t}\n\n\t.text-editor {\n\t\t.text-menubar {\n\t\t\t// Hide menu bar\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.action-item {\n\t\t\t// Hide table settings\n\t\t\tdisplay: none!important;\n\t\t}\n\t\t.editor__content {\n\t\t\t// Margins set by page rule\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.text-editor__wrapper {\n\t\t\theight: fit-content;\n\t\t\tposition: unset;\n\t\t}\n\n\t\tdiv.ProseMirror {\n\t\t\th1, h2, h3, h4, h5 {\n\t\t\t\t// orphaned headlines are ugly\n\t\t\t\tbreak-after: avoid;\n\t\t\t}\n\t\t\t.image, img, table {\n\t\t\t\t// try no page breaks within tables or images\n\t\t\t\tbreak-inside: avoid-page;\n\t\t\t\t// Some more indention\n\t\t\t\tmax-width: 90%!important;\n\t\t\t\tmargin: 5vw auto 5vw 5%!important;\n\t\t\t}\n\n\t\t\t// Add some borders below header and between columns\n\t\t\tth {\n\t\t\t\tcolor: black!important;\n\t\t\t\tfont-weight: bold!important;\n\t\t\t\tborder-width: 0 1px 2px 0!important;\n\t\t\t\tborder-color: gray!important;\n\t\t\t\tborder-style: none solid solid none!important;\n\t\t\t}\n\t\t\tth:last-of-type {\n\t\t\t\tborder-width: 0 0 2px 0!important;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tborder-style: none solid none none!important;\n\t\t\t\tborder-width: 1px!important;\n\t\t\t\tborder-color: gray!important;\n\t\t\t}\n\t\t\ttd:last-of-type {\n\t\t\t\tborder: none!important;\n\t\t\t}\n\t\t}\n\t}\n\n\t.menubar-placeholder, .text-editor--readonly-bar {\n\t\tdisplay: none;\n\t}\n\n\t.text-editor__content-wrapper {\n\t\t&.--show-outline {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.editor--outline {\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\toverflow: unset;\n\t\t\tposition: relative;\n\t\t}\n\t\t.editor--outline__btn-close {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n","\n@import './../../css/prosemirror';\n@import './../../css/print';\n\n@media print {\n\t// Hide Content behind modal, this also hides the sidebar if open\n\t#content {\n\t\tdisplay: none;\n\t}\n}\n"],sourceRoot:""}]);const p=d},82038:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".emoji-list[data-v-74f9a54a]{border-radius:var(--border-radius);background-color:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow);overflow:auto;min-width:200px;max-width:200px;padding:4px;max-height:195.5px;margin:5px 0}.emoji-list__item[data-v-74f9a54a]{border-radius:8px;padding:4px 8px;margin-bottom:4px;opacity:.8;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emoji-list__item[data-v-74f9a54a]:last-child{margin-bottom:0}.emoji-list__item__emoji[data-v-74f9a54a]{padding-right:8px}.emoji-list__item.is-selected[data-v-74f9a54a],.emoji-list__item[data-v-74f9a54a]:focus,.emoji-list__item[data-v-74f9a54a]:hover{opacity:1;background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./src/components/Suggestion/Emoji/EmojiList.vue"],names:[],mappings:"AACA,6BACC,kCAAA,CACA,6CAAA,CACA,4CAAA,CACA,aAAA,CAEA,eAAA,CACA,eAAA,CACA,WAAA,CAEA,kBAAA,CACA,YAAA,CAEA,mCACC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,UAAA,CACA,cAAA,CAGA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,8CACC,eAAA,CAGD,0CACC,iBAAA,CAGD,iIAGC,SAAA,CACA,mDAAA",sourcesContent:["\n.emoji-list {\n\tborder-radius: var(--border-radius);\n\tbackground-color: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\toverflow: auto;\n\n\tmin-width: 200px;\n\tmax-width: 200px;\n\tpadding: 4px;\n\t// Show maximum 5 entries and a half to show scroll\n\tmax-height: 35.5px * 5 + 18px;\n\tmargin: 5px 0;\n\n\t&__item {\n\t\tborder-radius: 8px;\n\t\tpadding: 4px 8px;\n\t\tmargin-bottom: 4px;\n\t\topacity: 0.8;\n\t\tcursor: pointer;\n\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__emoji {\n\t\t\tpadding-right: 8px;\n\t\t}\n\n\t\t&.is-selected,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},59724:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".link-picker__item[data-v-0ea7b674]{display:flex;align-items:center}.link-picker__item>div[data-v-0ea7b674]{padding:4px;padding-left:8px;overflow:hidden;text-overflow:ellipsis}.link-picker__item img[data-v-0ea7b674]{width:20px;height:20px;filter:var(--background-invert-if-dark)}","",{version:3,sources:["webpack://./src/components/Suggestion/LinkPicker/LinkPickerList.vue"],names:[],mappings:"AACA,oCACC,YAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGD,wCACC,UAAA,CACA,WAAA,CACA,uCAAA",sourcesContent:["\n.link-picker__item {\n\tdisplay: flex;\n\talign-items: center;\n\n\t& > div {\n\t\tpadding: 4px;\n\t\tpadding-left: 8px;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\timg {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n}\n"],sourceRoot:""}]);const s=o},56315:(e,t,n)=>{"use strict";n.d(t,{Z:()=>E});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r),s=n(61667),l=n.n(s),c=new URL(n(63423),n.b),d=new URL(n(32605),n.b),_=new URL(n(87127),n.b),p=o()(i()),m=l()(c),u=l()(d),g=l()(_);p.push([e.id,".autocomplete-result[data-v-2145738d]{display:flex;height:30px;padding:10px}.highlight .autocomplete-result[data-v-2145738d]{color:var(--color-main-text);background:var(--color-primary-element-light)}.highlight .autocomplete-result[data-v-2145738d],.highlight .autocomplete-result *[data-v-2145738d]{cursor:pointer}.autocomplete-result__icon[data-v-2145738d]{position:relative;flex:0 0 30px;width:30px;min-width:30px;height:30px;border-radius:30px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:10px}.autocomplete-result__icon--with-avatar[data-v-2145738d]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-2145738d]{position:absolute;right:-4px;bottom:-4px;box-sizing:border-box;width:18px;height:18px;border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:var(--default-font-size);line-height:15px;background-repeat:no-repeat;background-size:16px;background-position:center}.autocomplete-result__status--online[data-v-2145738d]{background-image:url("+m+")}.autocomplete-result__status--dnd[data-v-2145738d]{background-image:url("+u+");background-color:#fff}.autocomplete-result__status--away[data-v-2145738d]{background-image:url("+g+")}.autocomplete-result__status--icon[data-v-2145738d]{border:none;background-color:rgba(0,0,0,0)}.autocomplete-result__content[data-v-2145738d]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0;padding-left:10px}.autocomplete-result__title[data-v-2145738d],.autocomplete-result__subline[data-v-2145738d]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-2145738d]{color:var(--color-text-lighter)}","",{version:3,sources:["webpack://./src/components/Suggestion/Mention/AutoCompleteResult.vue"],names:[],mappings:"AAIA,sCACC,YAAA,CACA,WALgB,CAMhB,YALsB,CAOtB,iDACC,4BAAA,CACA,6CAAA,CACA,oGACC,cAAA,CAIF,4CACC,iBAAA,CACA,aAAA,CACA,UAnBe,CAoBf,cApBe,CAqBf,WArBe,CAsBf,kBAtBe,CAuBf,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,yDACC,aAAA,CACA,qBAAA,CAIF,8CACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,6CAAA,CACA,iBAAA,CACA,6CAAA,CACA,kCAAA,CACA,gBAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CAEA,sDACC,wDAAA,CAED,mDACC,wDAAA,CACA,qBAAA,CAED,oDACC,wDAAA,CAED,oDACC,WAAA,CACA,8BAAA,CAIF,+CACC,YAAA,CACA,aAAA,CACA,qBAAA,CACA,sBAAA,CACA,WAAA,CACA,iBAtEqB,CAyEtB,4FAEC,kBAAA,CACA,eAAA,CACA,sBAAA,CAGD,+CACC,+BAAA",sourcesContent:["\n$clickable-area: 30px;\n$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-main-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tbox-sizing: border-box;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n\n"],sourceRoot:""}]);const E=p},56057:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".items{position:relative;border-radius:var(--border-radius);background:var(--color-main-background);overflow:hidden;font-size:.9rem;box-shadow:0 1px 5px var(--color-box-shadow);min-width:250px}.item-empty{padding:4px 8px;opacity:.8}","",{version:3,sources:["webpack://./src/components/Suggestion/Mention/MentionList.vue"],names:[],mappings:"AACA,OACC,iBAAA,CACA,kCAAA,CACA,uCAAA,CACA,eAAA,CACA,eAAA,CACA,4CAAA,CACA,eAAA,CAGD,YACC,eAAA,CACA,UAAA",sourcesContent:["\n.items {\n\tposition: relative;\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\toverflow: hidden;\n\tfont-size: 0.9rem;\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\tmin-width: 250px;\n}\n\n.item-empty {\n\tpadding: 4px 8px;\n\topacity: 0.8;\n}\n"],sourceRoot:""}]);const s=o},23782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".suggestion-list[data-v-04aba4e2]{border-radius:var(--border-radius);background-color:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow);overflow:auto;min-width:200px;max-width:400px;padding:4px;max-height:195.5px;margin:5px 0}.suggestion-list__item[data-v-04aba4e2]{border-radius:8px;padding:4px 8px;margin-bottom:4px;opacity:.8;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suggestion-list__item[data-v-04aba4e2]:last-child{margin-bottom:0}.suggestion-list__item__emoji[data-v-04aba4e2]{padding-right:8px}.suggestion-list__item.is-selected[data-v-04aba4e2],.suggestion-list__item[data-v-04aba4e2]:focus,.suggestion-list__item[data-v-04aba4e2]:hover{opacity:1;background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./src/components/Suggestion/SuggestionListWrapper.vue"],names:[],mappings:"AACA,kCACC,kCAAA,CACA,6CAAA,CACA,4CAAA,CACA,aAAA,CAEA,eAAA,CACA,eAAA,CACA,WAAA,CAEA,kBAAA,CACA,YAAA,CAEA,wCACC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,UAAA,CACA,cAAA,CAGA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,mDACC,eAAA,CAGD,+CACC,iBAAA,CAGD,gJAGC,SAAA,CACA,mDAAA",sourcesContent:["\n.suggestion-list {\n\tborder-radius: var(--border-radius);\n\tbackground-color: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\toverflow: auto;\n\n\tmin-width: 200px;\n\tmax-width: 400px;\n\tpadding: 4px;\n\t// Show maximum 5 entries and a half to show scroll\n\tmax-height: 35.5px * 5 + 18px;\n\tmargin: 5px 0;\n\n\t&__item {\n\t\tborder-radius: 8px;\n\t\tpadding: 4px 8px;\n\t\tmargin-bottom: 4px;\n\t\topacity: 0.8;\n\t\tcursor: pointer;\n\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__emoji {\n\t\t\tpadding-right: 8px;\n\t\t}\n\n\t\t&.is-selected,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},16331:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".callout[data-v-2734884a]{background-color:var(--callout-background, var(--color-background-hover));border-left-color:var(--callout-border, var(--color-primary-element));border-radius:var(--border-radius);padding:1em;padding-left:.5em;border-left-width:.3em;border-left-style:solid;position:relative;margin-bottom:.5em;display:flex;align-items:center;justify-content:flex-start}.callout[data-v-2734884a]{margin-top:.5em}.callout .callout__content[data-v-2734884a]{margin-left:1em}.callout .callout__content[data-v-2734884a] p:last-child{margin-bottom:0}.callout .callout__icon[data-v-2734884a],.callout .callout__icon[data-v-2734884a] svg{color:var(--callout-border)}.callout[data-v-2734884a],.callout--info[data-v-2734884a]{--callout-border: var(--color-info, #006aa3)}.callout--warn[data-v-2734884a]{--callout-border: var(--color-warning)}.callout--error[data-v-2734884a]{--callout-border: var(--color-error)}.callout--success[data-v-2734884a]{--callout-border: var(--color-success)}","",{version:3,sources:["webpack://./src/nodes/Callout.vue"],names:[],mappings:"AACA,0BACC,yEAAA,CACA,qEAAA,CACA,kCAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,YAAA,CACA,kBAAA,CACA,0BAAA,CAEA,0BACC,eAAA,CAGD,4CACC,eAAA,CAEC,yDACC,eAAA,CAMF,sFACC,2BAAA,CAKF,0DACC,4CAAA,CAID,gCACC,sCAAA,CAID,iCACC,oCAAA,CAID,mCACC,sCAAA",sourcesContent:["\n.callout {\n\tbackground-color: var(--callout-background, var(--color-background-hover));\n\tborder-left-color: var(--callout-border, var(--color-primary-element));\n\tborder-radius: var(--border-radius);\n\tpadding: 1em;\n\tpadding-left: 0.5em;\n\tborder-left-width: 0.3em;\n\tborder-left-style: solid;\n\tposition: relative;\n\tmargin-bottom: 0.5em;\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\n\t+ & {\n\t\tmargin-top: 0.5em;\n\t}\n\n\t.callout__content {\n\t\tmargin-left: 1em;\n\t\t&:deep(p) {\n\t\t\t&:last-child {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t.callout__icon {\n\t\t&, :deep(svg) {\n\t\t\tcolor: var(--callout-border);\n\t\t}\n\t}\n\n\t// Info (default) variables\n\t&, &--info {\n\t\t--callout-border: var(--color-info, #006aa3);\n\t}\n\n\t// Warn variables\n\t&--warn {\n\t\t--callout-border: var(--color-warning);\n\t}\n\n\t// Error variables\n\t&--error {\n\t\t--callout-border: var(--color-error);\n\t}\n\n\t// Success variables\n\t&--success {\n\t\t--callout-border: var(--color-success);\n\t}\n}\n"],sourceRoot:""}]);const s=o},86698:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"div.ProseMirror h1,div.ProseMirror h2,div.ProseMirror h3,div.ProseMirror h4,div.ProseMirror h5,div.ProseMirror h6{position:relative}div.ProseMirror h1 .heading-anchor[contenteditable=false],div.ProseMirror h2 .heading-anchor[contenteditable=false],div.ProseMirror h3 .heading-anchor[contenteditable=false],div.ProseMirror h4 .heading-anchor[contenteditable=false],div.ProseMirror h5 .heading-anchor[contenteditable=false],div.ProseMirror h6 .heading-anchor[contenteditable=false]{width:1em;opacity:0;padding:0;left:-1em;bottom:0;font-size:max(1em,16px);position:absolute;text-decoration:none;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}div.ProseMirror h1:hover .heading-anchor,div.ProseMirror h2:hover .heading-anchor,div.ProseMirror h3:hover .heading-anchor,div.ProseMirror h4:hover .heading-anchor,div.ProseMirror h5:hover .heading-anchor,div.ProseMirror h6:hover .heading-anchor{opacity:.5 !important}div.ProseMirror h1:focus-visible,div.ProseMirror h2:focus-visible,div.ProseMirror h3:focus-visible,div.ProseMirror h4:focus-visible,div.ProseMirror h5:focus-visible,div.ProseMirror h6:focus-visible{outline:none}","",{version:3,sources:["webpack://./src/nodes/Heading/HeadingView.vue"],names:[],mappings:"AAGC,kHACC,iBAAA,CACA,4VAEC,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,uBAAA,CACA,iBAAA,CACA,oBAAA,CACA,wBAAA,CACA,2BAAA,CACA,uDAAA,CAGD,sPACC,qBAAA,CAGD,sMACC,YAAA",sourcesContent:['\ndiv.ProseMirror {\n\t/* Anchor links */\n\th1,h2,h3,h4,h5,h6 {\n\t\tposition: relative;\n\t\t.heading-anchor[contenteditable="false"] {\n\t\t\t// Shrink clickable area of anchor permalinks to not overlay the heading\n\t\t\twidth: 1em;\n\t\t\topacity: 0;\n\t\t\tpadding: 0;\n\t\t\tleft: -1em;\n\t\t\tbottom: 0;\n\t\t\tfont-size: max(1em, 16px);\n\t\t\tposition: absolute;\n\t\t\ttext-decoration: none;\n\t\t\ttransition-duration: .15s;\n\t\t\ttransition-property: opacity;\n\t\t\ttransition-timing-function: cubic-bezier(.4,0,.2,1);\n\t\t}\n\n\t\t&:hover .heading-anchor {\n\t\t\topacity: 0.5!important;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\toutline: none;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const s=o},70235:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".image[data-v-4febfd28]{margin:0;padding:0}.image[data-v-4febfd28],.image *[data-v-4febfd28]{-webkit-user-modify:read-only !important}.image__caption[data-v-4febfd28]{text-align:center;color:var(--color-text-lighter);display:flex;align-items:center;justify-content:center}.image__caption__wrapper[data-v-4febfd28]{position:relative}.image__caption__delete[data-v-4febfd28]{display:flex;flex-basis:20%;align-items:center;width:20px;height:20px;position:absolute;right:-6px;bottom:10px}.image__caption__delete[data-v-4febfd28],.image__caption__delete svg[data-v-4febfd28]{cursor:pointer}.image__caption .image__caption__wrapper[data-v-4febfd28]{flex-basis:80%}.image__caption input[type=text][data-v-4febfd28]{width:85%;text-align:center;background-color:rgba(0,0,0,0);border:none !important;color:var(--color-text-maxcontrast) !important}.image__caption input[type=text][data-v-4febfd28]:focus{border:2px solid var(--color-border-dark) !important;color:var(--color-main-text) !important}.image__caption figcaption[data-v-4febfd28]{color:var(--color-text-maxcontrast) !important;max-width:80%;text-align:center;width:fit-content}.image__loading[data-v-4febfd28]{height:100px}.image__main[data-v-4febfd28]{max-height:calc(100vh - 50px - 50px)}.image__main--broken-icon[data-v-4febfd28],.image__error-message[data-v-4febfd28]{color:var(--color-text-maxcontrast)}.image__error-message[data-v-4febfd28]{display:block;text-align:center}.image__view[data-v-4febfd28]{text-align:center;position:relative}.image__view img[data-v-4febfd28]{max-width:100%}.image__view:hover input[type=text][data-v-4febfd28]{border:2px solid var(--color-border-dark) !important;color:var(--color-main-text) !important}.media[data-v-4febfd28]{display:flex;align-items:center;justify-content:left}.media .media__wrapper[data-v-4febfd28]{display:flex;border:2px solid var(--color-border);border-radius:var(--border-radius-large);padding:8px}.media .media__wrapper img[data-v-4febfd28]{width:44px;height:44px}.media .media__wrapper .metadata[data-v-4febfd28]{margin-left:8px;display:flex;flex-direction:column;align-items:start}.media .media__wrapper .metadata span[data-v-4febfd28]{line-height:20px;font-weight:normal}.media .media__wrapper .metadata span.size[data-v-4febfd28]{color:var(--color-text-maxcontrast)}.media .buttons[data-v-4febfd28]{margin-left:8px}.fade-enter-active[data-v-4febfd28]{transition:opacity .3s ease-in-out}.fade-enter-to[data-v-4febfd28]{opacity:1}.fade-enter[data-v-4febfd28]{opacity:0}","",{version:3,sources:["webpack://./src/nodes/ImageView.vue"],names:[],mappings:"AACA,wBACC,QAAA,CACA,SAAA,CAEA,kDACC,wCAAA,CAIF,iCACC,iBAAA,CACA,+BAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,0CACC,iBAAA,CAED,yCACC,YAAA,CACA,cAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,sFACC,cAAA,CAGF,0DACC,cAAA,CAED,kDACC,SAAA,CACA,iBAAA,CACA,8BAAA,CACA,sBAAA,CACA,8CAAA,CAEA,wDACC,oDAAA,CACA,uCAAA,CAGF,4CACC,8CAAA,CACA,aAAA,CACA,iBAAA,CACA,iBAAA,CAIF,iCACC,YAAA,CAGD,8BACC,oCAAA,CAGD,kFACC,mCAAA,CAGD,uCACC,aAAA,CACA,iBAAA,CAGD,8BACC,iBAAA,CACA,iBAAA,CAEA,kCACC,cAAA,CAIA,qDACC,oDAAA,CACA,uCAAA,CAKH,wBACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,wCACC,YAAA,CACA,oCAAA,CACA,wCAAA,CACA,WAAA,CAEA,4CACC,UAAA,CACA,WAAA,CAGD,kDACC,eAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,uDACC,gBAAA,CACA,kBAAA,CAEA,4DACC,mCAAA,CAKJ,iCACC,eAAA,CAIF,oCACC,kCAAA,CAGD,gCACC,SAAA,CAGD,6BACC,SAAA",sourcesContent:["\n.image {\n\tmargin: 0;\n\tpadding: 0;\n\n\t&, * {\n\t\t-webkit-user-modify: read-only !important;\n\t}\n}\n\n.image__caption {\n\ttext-align: center;\n\tcolor: var(--color-text-lighter);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t&__wrapper {\n\t\tposition: relative;\n\t}\n\t&__delete {\n\t\tdisplay: flex;\n\t\tflex-basis: 20%;\n\t\talign-items: center;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tposition: absolute;\n\t\tright: -6px;\n\t\tbottom: 10px;\n\t\t&, svg {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\t.image__caption__wrapper {\n\t\tflex-basis: 80%;\n\t}\n\tinput[type='text'] {\n\t\twidth: 85%;\n\t\ttext-align: center;\n\t\tbackground-color: transparent;\n\t\tborder: none !important;\n\t\tcolor: var(--color-text-maxcontrast) !important;\n\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-border-dark) !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t}\n\t}\n\tfigcaption {\n\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\tmax-width: 80%;\n\t\ttext-align: center;\n\t\twidth: fit-content;\n\t}\n}\n\n.image__loading {\n\theight: 100px;\n}\n\n.image__main {\n\tmax-height: calc(100vh - 50px - 50px);\n}\n\n.image__main--broken-icon, .image__error-message {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.image__error-message {\n\tdisplay: block;\n\ttext-align: center;\n}\n\n.image__view {\n\ttext-align: center;\n\tposition: relative;\n\n\timg {\n\t\tmax-width: 100%;\n\t}\n\n\t&:hover {\n\t\tinput[type='text'] {\n\t\t\tborder: 2px solid var(--color-border-dark) !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t}\n\t}\n}\n\n.media {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: left;\n\t.media__wrapper {\n\t\tdisplay: flex;\n\t\tborder: 2px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\t\tpadding: 8px;\n\n\t\timg {\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\n\t\t.metadata {\n\t\t\tmargin-left: 8px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: start;\n\n\t\t\tspan {\n\t\t\t\tline-height: 20px;\n\t\t\t\tfont-weight: normal;\n\n\t\t\t\t&.size {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.buttons {\n\t\tmargin-left: 8px;\n\t}\n}\n\n.fade-enter-active {\n\ttransition: opacity .3s ease-in-out;\n}\n\n.fade-enter-to {\n\topacity: 1;\n}\n\n.fade-enter {\n\topacity: 0;\n}\n"],sourceRoot:""}]);const s=o},11481:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"[data-v-40519f7a] div.widgets--list a.widget-default{color:var(--color-main-text);padding:0;text-decoration:none}[data-v-40519f7a] .widget-default--details{overflow:hidden}[data-v-40519f7a] .widget-default--details p{margin-bottom:4px !important}","",{version:3,sources:["webpack://./src/nodes/ParagraphView.vue"],names:[],mappings:"AACA,qDACC,4BAAA,CACA,SAAA,CACA,oBAAA,CAGD,2CACC,eAAA,CACA,6CACC,4BAAA",sourcesContent:["\n:deep(div.widgets--list a.widget-default) {\n\tcolor: var(--color-main-text);\n\tpadding: 0;\n\ttext-decoration: none;\n}\n\n:deep(.widget-default--details) {\n\toverflow:hidden;\n\tp {\n\t\tmargin-bottom: 4px !important;\n\t}\n}\n"],sourceRoot:""}]);const s=o},72546:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"td[data-v-3543004d]{position:relative}td .container[data-v-3543004d]{display:flex;flex-wrap:wrap;min-height:36px}td .content[data-v-3543004d]{flex:1 1 0;margin:0;padding-top:.6em}td .action-item[data-v-3543004d]{position:absolute;right:-48px;flex:0 1 auto;display:none;top:2px}td:last-child .action-item[data-v-3543004d]{display:block;opacity:50%}td:last-child:hover .action-item[data-v-3543004d],td:last-child:active .action-item[data-v-3543004d],td:last-child:focus .action-item[data-v-3543004d],td:last-child:focus-within .action-item[data-v-3543004d]{opacity:100%}","",{version:3,sources:["webpack://./src/nodes/Table/TableCellView.vue"],names:[],mappings:"AACA,oBACC,iBAAA,CAEA,+BACC,YAAA,CACA,cAAA,CACA,eAAA,CAGD,6BACC,UAAA,CACA,QAAA,CACA,gBAAA,CAGD,iCACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,YAAA,CACA,OAAA,CAIA,4CACC,aAAA,CACA,WAAA,CAIA,gNACC,YAAA",sourcesContent:["\ntd {\n\tposition: relative;\n\n\t.container {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmin-height: 36px;\n\t}\n\n\t.content {\n\t\tflex: 1 1 0;\n\t\tmargin: 0;\n\t\tpadding-top: 0.6em;\n\t}\n\n\t.action-item {\n\t\tposition: absolute;\n\t\tright: -48px;\n\t\tflex: 0 1 auto;\n\t\tdisplay: none;\n\t\ttop: 2px;\n\t}\n\n\t&:last-child {\n\t\t.action-item {\n\t\t\tdisplay: block;\n\t\t\topacity: 50%;\n\t\t}\n\n\t\t&:hover, &:active, &:focus, &:focus-within {\n\t\t\t.action-item {\n\t\t\t\topacity: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n"],sourceRoot:""}]);const s=o},42422:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"th .content[data-v-25a85f13]{margin:0;padding-top:.75em;flex-grow:1}th .action-item[data-v-25a85f13]{opacity:50%}th:hover .action-item[data-v-25a85f13],th:active .action-item[data-v-25a85f13],th:focus .action-item[data-v-25a85f13],th:focus-within .action-item[data-v-25a85f13]{opacity:100%}","",{version:3,sources:["webpack://./src/nodes/Table/TableHeaderView.vue"],names:[],mappings:"AAGC,6BACC,QAAA,CACA,iBAAA,CACA,WAAA,CAED,iCACC,WAAA,CAIA,oKACC,YAAA",sourcesContent:["\nth {\n\n\t.content {\n\t\tmargin: 0;\n\t\tpadding-top: 0.75em;\n\t\tflex-grow: 1;\n\t}\n\t.action-item {\n\t\topacity: 50%;\n\t}\n\n\t&:hover, &:active, &:focus, &:focus-within {\n\t\t.action-item {\n\t\t\topacity: 100%;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o},44314:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,".table-wrapper[data-v-261cbb42]{position:relative;overflow-x:auto}.clearfix[data-v-261cbb42]{clear:both}table[data-v-261cbb42]{float:left}.table-settings[data-v-261cbb42]{padding-left:3px;opacity:.5;position:absolute;top:0;right:3px}.table-settings[data-v-261cbb42]:hover{opacity:1}","",{version:3,sources:["webpack://./src/nodes/Table/TableView.vue"],names:[],mappings:"AACA,gCACC,iBAAA,CACA,eAAA,CAGD,2BACC,UAAA,CAGD,uBACC,UAAA,CAGD,iCACC,gBAAA,CACA,UAAA,CACA,iBAAA,CACA,KAAA,CACA,SAAA,CAEA,uCACC,SAAA",sourcesContent:["\n.table-wrapper {\n\tposition: relative;\n\toverflow-x: auto;\n}\n\n.clearfix {\n\tclear: both;\n}\n\ntable {\n\tfloat: left;\n}\n\n.table-settings {\n\tpadding-left: 3px;\n\topacity: .5;\n\tposition: absolute;\n\ttop: 0;\n\tright: 3px;\n\n\t&:hover {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const s=o},43094:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"body{position:fixed;background-color:var(--color-main-background)}#content[class=app-public]{margin:0;margin-top:0}","",{version:3,sources:["webpack://./src/views/DirectEditing.vue"],names:[],mappings:"AACA,KACC,cAAA,CACA,6CAAA,CAED,2BACC,QAAA,CACA,YAAA",sourcesContent:["\nbody {\n\tposition: fixed;\n\tbackground-color: var(--color-main-background);\n}\n#content[class=app-public] {\n\tmargin: 0;\n\tmargin-top: 0;\n}\n"],sourceRoot:""}]);const s="text"==n.j?o:null},72689:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"#direct-editor[data-v-4a7c5de5]{width:100%;height:100%;position:fixed;overflow:auto}#direct-editor[data-v-4a7c5de5] .text-editor{height:100%;top:0}#direct-editor[data-v-4a7c5de5] .text-editor__wrapper div.ProseMirror{margin-top:0}pre[data-v-4a7c5de5]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-4a7c5de5]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:rgba(0,0,0,0);opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-4a7c5de5]:hover,button[data-v-4a7c5de5]:focus,button[data-v-4a7c5de5]:active{background-color:var(--color-background-dark)}button.is-active[data-v-4a7c5de5],button[data-v-4a7c5de5]:hover,button[data-v-4a7c5de5]:focus{opacity:1}","",{version:3,sources:["webpack://./src/views/DirectEditing.vue"],names:[],mappings:"AACA,gCACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CAEA,6CACC,WAAA,CACA,KAAA,CAED,sEACC,YAAA,CAIF,qBACC,UAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CAGD,wBACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,oBAAA,CACA,QAAA,CACA,8BAAA,CACA,UAAA,CACA,4BAAA,CACA,iCAAA,CACA,kBAAA,CACA,2FACC,6CAAA,CAED,8FAGC,SAAA",sourcesContent:["\n#direct-editor {\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\toverflow: auto;\n\n\t&:deep(.text-editor) {\n\t\theight: 100%;\n\t\ttop: 0;\n\t}\n\t&:deep(.text-editor__wrapper div.ProseMirror) {\n\t\tmargin-top: 0;\n\t}\n}\n\npre {\n\twidth: 100%;\n\tmax-width: 700px;\n\tmargin: auto;\n\tbackground-color: var(--color-background-dark);\n}\n\nbutton {\n\twidth: 44px;\n\theight: 44px;\n\tmargin: 0;\n\tbackground-size: 16px;\n\tborder: 0;\n\tbackground-color: transparent;\n\topacity: .5;\n\tcolor: var(--color-main-text);\n\tbackground-position: center center;\n\tvertical-align: top;\n\t&:hover, &:focus, &:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\t&.is-active,\n\t&:hover,\n\t&:focus {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const s="text"==n.j?o:null},91644:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,'#rich-workspace[data-v-3d44b5a3]{padding:0 50px;margin-bottom:-24px;text-align:left;max-height:0;transition:max-height .5s cubic-bezier(0, 1, 0, 1);z-index:61;position:relative}#rich-workspace.creatable[data-v-3d44b5a3]{min-height:100px}#rich-workspace[data-v-3d44b5a3]:only-child{margin-bottom:0}.empty-workspace[data-v-3d44b5a3]{cursor:pointer;display:block;padding-top:43px;color:var(--color-text-maxcontrast)}#rich-workspace[data-v-3d44b5a3] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-3d44b5a3] .text-editor{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-3d44b5a3] .text-editor__wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-3d44b5a3] .text-editor__main{overflow:visible !important}#rich-workspace[data-v-3d44b5a3] .content-wrapper{overflow:scroll !important;max-height:calc(40vh - 50px);padding-left:10px;padding-bottom:10px}#rich-workspace[data-v-3d44b5a3] .text-editor__wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-3d44b5a3] .editor__content{margin:0}#rich-workspace.focus[data-v-3d44b5a3]{max-height:50vh}#rich-workspace[data-v-3d44b5a3]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-3d44b5a3]:not(.focus):not(.icon-loading):not(.empty):after{content:"";position:absolute;z-index:1;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));width:100%;height:4em}#rich-workspace.dark[data-v-3d44b5a3]:not(.focus):not(.icon-loading):after{background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background))}@media only screen and (max-width: 1024px){#rich-workspace[data-v-3d44b5a3]:not(.focus){max-height:30vh}}',"",{version:3,sources:["webpack://./src/views/RichWorkspace.vue"],names:[],mappings:"AACA,iCACC,cAAA,CAEA,mBAAA,CACA,eAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,iBAAA,CACA,2CACC,gBAAA,CAKF,4CACC,eAAA,CAGD,kCACC,cAAA,CACA,aAAA,CACA,gBAAA,CACA,mCAAA,CAGD,4DACC,UAAA,CACA,WAAA,CACA,6CAAA,CACA,SAAA,CACA,WAAA,CAGD,8CACC,WAAA,CACA,yBAAA,CACA,mBAAA,CAGD,uDACC,yBAAA,CACA,gBAAA,CAGD,oDACC,2BAAA,CAGD,kDACC,0BAAA,CACA,4BAAA,CACA,iBAAA,CACA,mBAAA,CAGD,oEACC,WAAA,CACA,QAAA,CAGD,kDACC,QAAA,CAGD,uCACC,eAAA,CAGD,6CACC,eAAA,CACA,iBAAA,CACA,eAAA,CAGD,kFACC,UAAA,CACA,iBAAA,CACA,SAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,iGAAA,CACA,UAAA,CACA,UAAA,CAGD,2EACC,2FAAA,CAGD,2CACC,6CACC,eAAA,CAAA",sourcesContent:["\n#rich-workspace {\n\tpadding: 0 50px;\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\tz-index: 61;\n\tposition: relative;\n\t&.creatable {\n\t\tmin-height: 100px;\n\t}\n}\n\n/* For subfolders, where there are no Recommendations */\n#rich-workspace:only-child {\n\tmargin-bottom: 0;\n}\n\n.empty-workspace {\n\tcursor: pointer;\n\tdisplay: block;\n\tpadding-top: 43px;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n#rich-workspace:deep(div[contenteditable=false]) {\n\twidth: 100%;\n\tpadding: 0px;\n\tbackground-color: var(--color-main-background);\n\topacity: 1;\n\tborder: none;\n}\n\n#rich-workspace:deep(.text-editor) {\n\theight: 100%;\n\tposition: unset !important;\n\ttop: auto !important;\n}\n\n#rich-workspace:deep(.text-editor__wrapper) {\n\tposition: unset !important;\n\toverflow: visible;\n}\n\n#rich-workspace:deep(.text-editor__main) {\n\toverflow: visible !important;\n}\n\n#rich-workspace:deep(.content-wrapper) {\n\toverflow: scroll !important;\n\tmax-height: calc(40vh - 50px);\n\tpadding-left: 10px;\n\tpadding-bottom: 10px;\n}\n\n#rich-workspace:deep(.text-editor__wrapper .ProseMirror) {\n\tpadding: 0px;\n\tmargin: 0;\n}\n\n#rich-workspace:deep(.editor__content) {\n\tmargin: 0;\n}\n\n#rich-workspace.focus {\n\tmax-height: 50vh;\n}\n\n#rich-workspace:not(.focus) {\n\tmax-height: 30vh;\n\tposition: relative;\n\toverflow: hidden;\n}\n\n#rich-workspace:not(.focus):not(.icon-loading):not(.empty):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\n#rich-workspace.dark:not(.focus):not(.icon-loading):after {\n\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\n}\n\n@media only screen and (max-width: 1024px) {\n\t#rich-workspace:not(.focus) {\n\t\tmax-height: 30vh;\n\t}\n}\n"],sourceRoot:""}]);const s=o},37254:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(87537),i=n.n(a),r=n(23645),o=n.n(r)()(i());o.push([e.id,"\n.action[data-v-5e172682] {\n\t/* to unify width of ActionInput and ActionButton */\n\tmin-width: 218px;\n}\n","",{version:3,sources:["webpack://./src/components/Menu/ActionInsertLink.vue"],names:[],mappings:";AA4PA;CACA,mDAAA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2022\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiPickerAction.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!./EmojiPickerAction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EmojiPickerAction.vue?vue&type=template&id=7e6ff5ef&\"\nimport script from \"./EmojiPickerAction.vue?vue&type=script&lang=js&\"\nexport * from \"./EmojiPickerAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcEmojiPicker',{staticClass:\"entry-action entry-action__emoji\",attrs:{\"data-text-action-entry\":_vm.actionEntry.key,\"container\":_vm.menuIDSelector},on:{\"select-data\":_vm.addEmoji}},[_c('NcButton',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.actionEntry.label),expression:\"actionEntry.label\"}],staticClass:\"entry-action__button\",attrs:{\"role\":\"menu\",\"title\":_vm.actionEntry.label,\"aria-label\":_vm.actionEntry.label,\"aria-haspopup\":true},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\"})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{staticClass:\"entry-action entry-action__image-upload\",attrs:{\"data-text-action-entry\":_vm.actionEntry.key,\"title\":_vm.actionEntry.label,\"aria-label\":_vm.actionEntry.label,\"container\":_vm.menuIDSelector,\"role\":\"menu\",\"aria-haspopup\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\",attrs:{\"title\":_vm.actionEntry.label,\"aria-label\":_vm.actionEntry.label,\"aria-haspopup\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),(_vm.$editorUpload)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\",\"disabled\":_vm.isUploadingAttachments,\"data-text-action-entry\":`${_vm.actionEntry.key}-upload`},on:{\"click\":_vm.$callChooseLocalAttachment},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload')]},proxy:true}],null,false,933298848)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Upload from computer'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.$isPublic)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\",\"disabled\":_vm.isUploadingAttachments,\"data-text-action-entry\":`${_vm.actionEntry.key}-insert`},on:{\"click\":_vm.$callAttachmentPrompt},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder')]},proxy:true}],null,false,2750733237)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Insert from Files'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionAttachmentUpload.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!./ActionAttachmentUpload.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ActionAttachmentUpload.vue?vue&type=template&id=d02376ec&\"\nimport script from \"./ActionAttachmentUpload.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionAttachmentUpload.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{ref:\"menu\",staticClass:\"entry-action entry-action__insert-link\",class:_vm.activeClass,attrs:{\"aria-haspopup\":\"\",\"aria-label\":_vm.actionEntry.label,\"container\":_vm.menuIDSelector,\"data-text-action-entry\":_vm.actionEntry.key,\"title\":_vm.actionEntry.label},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\",attrs:{\"title\":_vm.actionEntry.label,\"aria-label\":_vm.actionEntry.label,\"aria-haspopup\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),(_vm.state.active)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\",\"data-text-action-entry\":`${_vm.actionEntry.key}-remove`},on:{\"click\":_vm.removeLink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LinkOff')]},proxy:true}],null,false,3589828876)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Remove link'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\",\"data-text-action-entry\":`${_vm.actionEntry.key}-file`},on:{\"click\":_vm.linkFile},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Document')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Link to file or folder'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.isInputMode)?_c('NcActionInput',{attrs:{\"type\":\"text\",\"value\":_vm.href,\"data-text-action-entry\":`${_vm.actionEntry.key}-input`},on:{\"submit\":_vm.linkWebsite},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Web')]},proxy:true}],null,false,1844845715)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Link to website'))+\"\\n\\t\")]):_c('NcActionButton',{attrs:{\"data-text-action-entry\":`${_vm.actionEntry.key}-website`},on:{\"click\":_vm.linkWebsite},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Web')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.state.active ? _vm.t('text', 'Update link') : _vm.t('text', 'Link to website'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-action-entry\":`${_vm.actionEntry.key}-picker`},on:{\"click\":_vm.linkPicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Shape')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Open the Smart Picker'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionInsertLink.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!./ActionInsertLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionInsertLink.vue?vue&type=style&index=0&id=5e172682&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionInsertLink.vue?vue&type=style&index=0&id=5e172682&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ActionInsertLink.vue?vue&type=template&id=5e172682&scoped=true&\"\nimport script from \"./ActionInsertLink.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionInsertLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActionInsertLink.vue?vue&type=style&index=0&id=5e172682&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e172682\",\n null\n \n)\n\nexport default component.exports","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport {\n\tUndo,\n\tRedo,\n\tCodeTags,\n\tDanger,\n\tEmoticon,\n\tFormatBold,\n\tFormatItalic,\n\tFormatUnderline,\n\tFormatStrikethrough,\n\tFormatHeader1,\n\tFormatHeader2,\n\tFormatHeader3,\n\tFormatHeader4,\n\tFormatHeader5,\n\tFormatHeader6,\n\tFormatListNumbered,\n\tFormatListBulleted,\n\tFormatListCheckbox,\n\tFormatQuote,\n\tImages,\n\tInfo,\n\tLinkIcon,\n\tPositive,\n\tTable,\n\tWarn,\n} from '../icons.js'\nimport EmojiPickerAction from './EmojiPickerAction.vue'\nimport ActionAttachmentUpload from './ActionAttachmentUpload.vue'\nimport ActionInsertLink from './ActionInsertLink.vue'\n\nimport { MODIFIERS } from './keys.js'\n\nexport const ReadonlyEntries = [{\n\tkey: 'outline',\n\tforceLabel: true,\n\ticon: FormatListBulleted,\n\tclick: ({ $outlineActions }) => $outlineActions.toggle(),\n\tlabel: ({ $outlineState }) => {\n\t\treturn $outlineState.visible\n\t\t\t? t('text', 'Hide outline')\n\t\t\t: t('text', 'Show outline')\n\t},\n}]\n\nexport default [\n\t{\n\t\tkey: 'undo',\n\t\tlabel: t('text', 'Undo'),\n\t\tkeyChar: 'z',\n\t\tkeyModifiers: [MODIFIERS.Mod],\n\t\ticon: Undo,\n\t\taction: (command) => command.undo(),\n\t\tpriority: 6,\n\t},\n\t{\n\t\tkey: 'redo',\n\t\tlabel: t('text', 'Redo'),\n\t\tkeyChar: 'y',\n\t\tkeyModifiers: [MODIFIERS.Mod],\n\t\ticon: Redo,\n\t\taction: (command) => command.redo(),\n\t\tpriority: 12,\n\t},\n\t{\n\t\tkey: 'bold',\n\t\tlabel: t('text', 'Bold'),\n\t\tkeyChar: 'b',\n\t\tkeyModifiers: [MODIFIERS.Mod],\n\t\ticon: FormatBold,\n\t\tisActive: 'strong',\n\t\taction: (command) => {\n\t\t\treturn command.toggleBold()\n\t\t},\n\t\tpriority: 7,\n\t},\n\t{\n\t\tkey: 'italic',\n\t\tlabel: t('text', 'Italic'),\n\t\tkeyChar: 'i',\n\t\tkeyModifiers: [MODIFIERS.Mod],\n\t\ticon: FormatItalic,\n\t\tisActive: 'em',\n\t\taction: (command) => {\n\t\t\treturn command.toggleItalic()\n\t\t},\n\t\tpriority: 8,\n\t},\n\t{\n\t\tkey: 'underline',\n\t\tlabel: t('text', 'Underline'),\n\t\tkeyChar: 'u',\n\t\tkeyModifiers: [MODIFIERS.Mod],\n\t\ticon: FormatUnderline,\n\t\tisActive: 'underline',\n\t\taction: (command) => {\n\t\t\treturn command.toggleUnderline()\n\t\t},\n\t\tpriority: 15,\n\t},\n\t{\n\t\tkey: 'strikethrough',\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tkeyChar: 'x',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\ticon: FormatStrikethrough,\n\t\tisActive: 'strike',\n\t\taction: (command) => {\n\t\t\treturn command.toggleStrike()\n\t\t},\n\t\tpriority: 16,\n\t},\n\t{\n\t\tkey: 'headings',\n\t\tlabel: t('text', 'Headings'),\n\t\tkeyChar: '1…6',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\ticon: FormatHeader1,\n\t\tisActive: 'heading',\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tkey: 'headings-h1',\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\ticon: FormatHeader1,\n\t\t\t\tisActive: ['heading', { level: 1 }],\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'headings-h2',\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\ticon: FormatHeader2,\n\t\t\t\tisActive: ['heading', { level: 2 }],\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'headings-h3',\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\ticon: FormatHeader3,\n\t\t\t\tisActive: ['heading', { level: 3 }],\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'headings-h4',\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tisActive: ['heading', { level: 4 }],\n\t\t\t\ticon: FormatHeader4,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'headings-h5',\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tisActive: ['heading', { level: 5 }],\n\t\t\t\ticon: FormatHeader5,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'headings-h6',\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tisActive: ['heading', { level: 6 }],\n\t\t\t\ticon: FormatHeader6,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleHeading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'outline',\n\t\t\t\ticon: FormatListBulleted,\n\t\t\t\tclick: ({ $outlineActions }) => $outlineActions.toggle(),\n\t\t\t\tvisible: ({ $outlineState }) => {\n\t\t\t\t\treturn $outlineState.enable\n\t\t\t\t},\n\t\t\t\tlabel: ({ $outlineState }) => {\n\t\t\t\t\treturn $outlineState.visible\n\t\t\t\t\t\t? t('text', 'Hide outline')\n\t\t\t\t\t\t: t('text', 'Show outline')\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tpriority: 1,\n\t},\n\t{\n\t\tkey: 'unordered-list',\n\t\tlabel: t('text', 'Unordered list'),\n\t\tkeyChar: '8',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\tisActive: 'bulletList',\n\t\ticon: FormatListBulleted,\n\t\taction: (command) => {\n\t\t\treturn command.toggleBulletList()\n\t\t},\n\t\tpriority: 9,\n\t},\n\t{\n\t\tkey: 'ordered-list',\n\t\tlabel: t('text', 'Ordered list'),\n\t\tkeyChar: '7',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\tisActive: 'orderedList',\n\t\ticon: FormatListNumbered,\n\t\taction: (command) => {\n\t\t\treturn command.toggleOrderedList()\n\t\t},\n\t\tpriority: 10,\n\t},\n\t{\n\t\tkey: 'task-list',\n\t\tlabel: t('text', 'To-Do list'),\n\t\tkeyChar: '9',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\tisActive: 'taskList',\n\t\ticon: FormatListCheckbox,\n\t\taction: (command) => command.toggleTaskList(),\n\t\tpriority: 11,\n\t},\n\t{\n\t\tkey: 'insert-link',\n\t\tlabel: t('text', 'Insert link'),\n\t\tisActive: 'link',\n\t\ticon: LinkIcon,\n\t\tcomponent: ActionInsertLink,\n\t\tpriority: 2,\n\t},\n\t{\n\t\tkey: 'blockquote',\n\t\tlabel: t('text', 'Blockquote'),\n\t\tkeyChar: 'b',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Shift],\n\t\tisActive: 'blockquote',\n\t\ticon: FormatQuote,\n\t\taction: (command) => {\n\t\t\treturn command.toggleBlockquote()\n\t\t},\n\t\tpriority: 13,\n\t},\n\t{\n\t\tkey: 'callouts',\n\t\tlabel: t('text', 'Callouts'),\n\t\tvisible: false,\n\t\ticon: Info,\n\t\tisActive: 'callout',\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tkey: 'callout-info',\n\t\t\t\tlabel: t('text', 'Info'),\n\t\t\t\tisActive: ['callout', { type: 'info' }],\n\t\t\t\ticon: Info,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleCallout({ type: 'info' })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'callout-success',\n\t\t\t\tlabel: t('text', 'Success'),\n\t\t\t\tisActive: ['callout', { type: 'success' }],\n\t\t\t\ticon: Positive,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleCallout({ type: 'success' })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'callout-warn',\n\t\t\t\tlabel: t('text', 'Warning'),\n\t\t\t\tisActive: ['callout', { type: 'warn' }],\n\t\t\t\ticon: Warn,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleCallout({ type: 'warn' })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'callout-error',\n\t\t\t\tlabel: t('text', 'Danger'),\n\t\t\t\tisActive: ['callout', { type: 'error' }],\n\t\t\t\ticon: Danger,\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.toggleCallout({ type: 'error' })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tpriority: 3,\n\t},\n\t{\n\t\tkey: 'code-block',\n\t\tlabel: t('text', 'Code block'),\n\t\tkeyChar: 'c',\n\t\tkeyModifiers: [MODIFIERS.Mod, MODIFIERS.Alt],\n\t\tisActive: 'codeBlock',\n\t\ticon: CodeTags,\n\t\taction: (command) => {\n\t\t\treturn command.toggleCodeBlock()\n\t\t},\n\t\tpriority: 14,\n\t},\n\t{\n\t\tkey: 'table',\n\t\tlabel: t('text', 'Table'),\n\t\tisActive: 'table',\n\t\ticon: Table,\n\t\taction: (command) => {\n\t\t\treturn command.insertTable()\n\t\t},\n\t\tpriority: 17,\n\t},\n\t{\n\t\tkey: 'emoji-picker',\n\t\tlabel: t('text', 'Insert emoji'),\n\t\ticon: Emoticon,\n\t\tcomponent: EmojiPickerAction,\n\t\taction: (command, emojiObject = {}) => {\n\t\t\treturn command.emoji(emojiObject)\n\t\t},\n\t\tpriority: 5,\n\t},\n\t{\n\t\tkey: 'insert-attachment',\n\t\tlabel: t('text', 'Insert attachment'),\n\t\ticon: Images,\n\t\tcomponent: ActionAttachmentUpload,\n\t\tpriority: 4,\n\t},\n]\n","const isMac = (navigator.userAgent.includes('Mac'))\n\nconst MODIFIERS = {\n\tMod: isMac ? 'Meta' : 'Control',\n\tAlt: 'Alt', // Option key, on Apple computers.\n\tControl: 'Control',\n\tShift: 'Shift',\n\n\t// unused\n\t// AltGraph: 'AltGraph',\n\t// Meta: 'Meta', // Command key on Apple computers\n}\n\nconst TRANSLATIONS = {\n\t[MODIFIERS.Mod]: isMac ? t('text', 'Command') : t('text', 'Control'),\n\t[MODIFIERS.Control]: t('text', 'Ctrl'),\n\t[MODIFIERS.Alt]: t('text', isMac ? 'Option' : 'Alt'),\n\t[MODIFIERS.Shift]: t('text', 'Shift'),\n}\n\nexport {\n\tMODIFIERS,\n\tTRANSLATIONS,\n}\n","/*\n * @copyright Copyright (c) 2022 Vinicius Reis \n *\n * @author Vinicius Reis \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 .\n *\n */\n\nimport {\n\tTRANSLATIONS,\n\tMODIFIERS,\n} from './keys.js'\n\nconst getEntryClasses = (actionEntry, isActive) => {\n\treturn {\n\t\t'is-active': isActive,\n\t\t[`action-menu-${actionEntry.key}`]: true,\n\t}\n}\n\nconst keysString = (keyChar, modifiers = []) => {\n\treturn modifiers\n\t\t.map(mod => TRANSLATIONS[mod])\n\t\t.concat(keyChar.toUpperCase())\n\t\t.join('+')\n}\n\nconst getKeyshortcuts = ({ keyChar, keyModifiers = [] }) => {\n\treturn keyModifiers\n\t\t.map(mod => MODIFIERS[mod])\n\t\t.concat(keyChar)\n\t\t.join('+')\n}\n\nconst getKeys = (isMobile, { keyChar, keyModifiers }) => {\n\treturn (!isMobile && keyChar)\n\t\t? `(${keysString(keyChar, keyModifiers)})`\n\t\t: ''\n}\n\nconst isDisabled = (actionEntry, $editor) => {\n\treturn actionEntry.action && !actionEntry.action($editor.can())\n}\n\nconst getIsActive = ({ isActive }, $editor) => {\n\tif (!isActive) {\n\t\treturn false\n\t}\n\n\tconst args = Array.isArray(isActive)\n\t\t? isActive\n\t\t: [isActive]\n\n\treturn $editor.isActive(...args)\n}\n\nconst getActionState = (actionEntry, $editor) => {\n\tconst active = getIsActive(actionEntry, $editor)\n\n\treturn {\n\t\tdisabled: isDisabled(actionEntry, $editor),\n\t\tclass: getEntryClasses(actionEntry, active),\n\t\tactive,\n\t}\n}\n\nexport {\n\tisDisabled,\n\tgetIsActive,\n\tgetKeys,\n\tgetKeyshortcuts,\n\tgetEntryClasses,\n\tgetActionState,\n}\n","/*\n* @copyright Copyright (c) 2022 Julius Härtl \n*\n* @author Julius Härtl \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 .\n*/\n\nimport tippy from 'tippy.js'\nimport { VueRenderer } from '@tiptap/vue-2'\n\nexport default ({\n\tlistComponent,\n\titems = () => {},\n\tcommand = ({ editor, range, props }) => {},\n}) => ({\n\titems,\n\tcommand,\n\trender: () => {\n\t\tlet component\n\t\tlet popup\n\n\t\treturn {\n\t\t\tonStart: props => {\n\t\t\t\tcomponent = new VueRenderer(listComponent, {\n\t\t\t\t\tparent: this,\n\t\t\t\t\tpropsData: props,\n\t\t\t\t})\n\n\t\t\t\tif (!props.clientRect) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tpopup = tippy('body', {\n\t\t\t\t\tgetReferenceClientRect: props.clientRect,\n\t\t\t\t\tappendTo: () => document.body,\n\t\t\t\t\tcontent: component.element,\n\t\t\t\t\tshowOnCreate: true,\n\t\t\t\t\tinteractive: true,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t})\n\n\t\t\t\tcomponent.ref.$on('select', () => {\n\t\t\t\t\tpopup.length > 0 && popup[0].hide()\n\t\t\t\t})\n\t\t\t},\n\n\t\t\tonUpdate(props) {\n\t\t\t\tcomponent.updateProps(props)\n\n\t\t\t\tif (!props.clientRect || !popup) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tpopup[0].setProps({\n\t\t\t\t\tgetReferenceClientRect: props.clientRect,\n\t\t\t\t})\n\t\t\t},\n\n\t\t\tonKeyDown(props) {\n\t\t\t\tif (!popup) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (props.event.key === 'Escape') {\n\t\t\t\t\tpopup[0].hide()\n\t\t\t\t\tpopup[0].destroy()\n\t\t\t\t\tcomponent.destroy()\n\t\t\t\t\tpopup = null\n\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\treturn component.ref?.onKeyDown?.(props)\n\t\t\t},\n\n\t\t\tonExit() {\n\t\t\t\tif (!popup) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tpopup[0].destroy()\n\t\t\t\tcomponent.destroy()\n\t\t\t},\n\t\t}\n\t},\n})\n","/* eslint-disable camelcase */\n/*\n * @copyright Copyright (c) 2022 Vinicius Reis \n *\n * @author Vinicius Reis \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 .\n *\n */\n\nimport MDI_AlphabeticalVariant from 'vue-material-design-icons/AlphabeticalVariant.vue'\nimport MDI_Close from 'vue-material-design-icons/Close.vue'\nimport MDI_Check from 'vue-material-design-icons/Check.vue'\nimport MDI_CircleMedium from 'vue-material-design-icons/CircleMedium.vue'\nimport MDI_CodeTags from 'vue-material-design-icons/CodeTags.vue'\nimport MDI_Danger from 'vue-material-design-icons/AlertDecagram.vue'\nimport MDI_Delete from 'vue-material-design-icons/Delete.vue'\nimport MDI_Document from 'vue-material-design-icons/FileDocument.vue'\nimport MDI_DotsHorizontal from 'vue-material-design-icons/DotsHorizontal.vue'\nimport MDI_Emoticon from 'vue-material-design-icons/EmoticonOutline.vue'\nimport MDI_Folder from 'vue-material-design-icons/Folder.vue'\nimport MDI_FormatBold from 'vue-material-design-icons/FormatBold.vue'\nimport MDI_AlignHorizontalCenter from 'vue-material-design-icons/AlignHorizontalCenter.vue'\nimport MDI_AlignHorizontalLeft from 'vue-material-design-icons/AlignHorizontalLeft.vue'\nimport MDI_AlignHorizontalRight from 'vue-material-design-icons/AlignHorizontalRight.vue'\nimport MDI_FormatHeader1 from 'vue-material-design-icons/FormatHeader1.vue'\nimport MDI_FormatHeader2 from 'vue-material-design-icons/FormatHeader2.vue'\nimport MDI_FormatHeader3 from 'vue-material-design-icons/FormatHeader3.vue'\nimport MDI_FormatHeader4 from 'vue-material-design-icons/FormatHeader4.vue'\nimport MDI_FormatHeader5 from 'vue-material-design-icons/FormatHeader5.vue'\nimport MDI_FormatHeader6 from 'vue-material-design-icons/FormatHeader6.vue'\nimport MDI_FormatItalic from 'vue-material-design-icons/FormatItalic.vue'\nimport MDI_FormatListBulleted from 'vue-material-design-icons/FormatListBulleted.vue'\nimport MDI_FormatListCheckbox from 'vue-material-design-icons/FormatListCheckbox.vue'\nimport MDI_FormatListNumbered from 'vue-material-design-icons/FormatListNumbered.vue'\nimport MDI_FormatQuote from 'vue-material-design-icons/FormatQuoteClose.vue'\nimport MDI_FormatStrikethrough from 'vue-material-design-icons/FormatStrikethrough.vue'\nimport MDI_FormatUnderline from 'vue-material-design-icons/FormatUnderline.vue'\nimport MDI_Help from 'vue-material-design-icons/HelpCircle.vue'\nimport MDI_Image from 'vue-material-design-icons/ImageOutline.vue'\nimport MDI_Images from 'vue-material-design-icons/ImageMultipleOutline.vue'\nimport MDI_Info from 'vue-material-design-icons/Information.vue'\nimport MDI_Link from 'vue-material-design-icons/Link.vue'\nimport MDI_LinkOff from 'vue-material-design-icons/LinkOff.vue'\nimport MDI_LinkVariantPlus from 'vue-material-design-icons/LinkVariantPlus.vue'\nimport MDI_Loading from 'vue-material-design-icons/Loading.vue'\nimport MDI_Lock from 'vue-material-design-icons/Lock.vue'\nimport MDI_Positive from 'vue-material-design-icons/CheckboxMarkedCircle.vue'\nimport MDI_Redo from 'vue-material-design-icons/ArrowURightTop.vue'\nimport MDI_Shape from 'vue-material-design-icons/Shape.vue'\nimport MDI_Table from 'vue-material-design-icons/Table.vue'\nimport MDI_TableAddColumnAfter from 'vue-material-design-icons/TableColumnPlusAfter.vue'\nimport MDI_TableAddColumnBefore from 'vue-material-design-icons/TableColumnPlusBefore.vue'\nimport MDI_TableAddRowAfter from 'vue-material-design-icons/TableRowPlusAfter.vue'\nimport MDI_TableAddRowBefore from 'vue-material-design-icons/TableRowPlusBefore.vue'\nimport MDI_TableSettings from 'vue-material-design-icons/TableCog.vue'\nimport MDI_TrashCan from 'vue-material-design-icons/TrashCan.vue'\nimport MDI_Undo from 'vue-material-design-icons/ArrowULeftTop.vue'\nimport MDI_Upload from 'vue-material-design-icons/Upload.vue'\nimport MDI_Warn from 'vue-material-design-icons/Alert.vue'\nimport MDI_Web from 'vue-material-design-icons/Web.vue'\nimport MDI_TranslateVariant from 'vue-material-design-icons/TranslateVariant.vue'\n\nconst DEFAULT_ICON_SIZE = 20\n\nconst makeIcon = (original) => ({\n\tfunctional: true,\n\trender(h, { data, props }) {\n\t\treturn h(original, {\n\t\t\tdata,\n\t\t\tkey: data.key,\n\t\t\tstaticClass: data.staticClass,\n\t\t\tprops: { size: DEFAULT_ICON_SIZE, ...props },\n\t\t})\n\t},\n})\n\nexport const Loading = {\n\tfunctional: true,\n\trender(h, { data, props }) {\n\t\treturn h(MDI_Loading, {\n\t\t\tdata,\n\t\t\tstaticClass: 'animation-rotate',\n\t\t\tprops: { size: DEFAULT_ICON_SIZE, ...props },\n\t\t})\n\t},\n}\n\nexport const AlphabeticalVariant = makeIcon(MDI_AlphabeticalVariant)\nexport const AlignHorizontalCenter = makeIcon(MDI_AlignHorizontalCenter)\nexport const AlignHorizontalLeft = makeIcon(MDI_AlignHorizontalLeft)\nexport const AlignHorizontalRight = makeIcon(MDI_AlignHorizontalRight)\nexport const Close = makeIcon(MDI_Close)\nexport const Check = makeIcon(MDI_Check)\nexport const CodeTags = makeIcon(MDI_CodeTags)\nexport const CircleMedium = makeIcon(MDI_CircleMedium)\nexport const Danger = makeIcon(MDI_Danger)\nexport const Delete = makeIcon(MDI_Delete)\nexport const Document = makeIcon(MDI_Document)\nexport const DotsHorizontal = makeIcon(MDI_DotsHorizontal)\nexport const Emoticon = makeIcon(MDI_Emoticon)\nexport const Folder = makeIcon(MDI_Folder)\nexport const FormatBold = makeIcon(MDI_FormatBold)\nexport const FormatHeader1 = makeIcon(MDI_FormatHeader1)\nexport const FormatHeader2 = makeIcon(MDI_FormatHeader2)\nexport const FormatHeader3 = makeIcon(MDI_FormatHeader3)\nexport const FormatHeader4 = makeIcon(MDI_FormatHeader4)\nexport const FormatHeader5 = makeIcon(MDI_FormatHeader5)\nexport const FormatHeader6 = makeIcon(MDI_FormatHeader6)\nexport const FormatItalic = makeIcon(MDI_FormatItalic)\nexport const FormatListBulleted = makeIcon(MDI_FormatListBulleted)\nexport const FormatListCheckbox = makeIcon(MDI_FormatListCheckbox)\nexport const FormatListNumbered = makeIcon(MDI_FormatListNumbered)\nexport const FormatQuote = makeIcon(MDI_FormatQuote)\nexport const FormatStrikethrough = makeIcon(MDI_FormatStrikethrough)\nexport const FormatUnderline = makeIcon(MDI_FormatUnderline)\nexport const Help = makeIcon(MDI_Help)\nexport const Image = makeIcon(MDI_Image)\nexport const Images = makeIcon(MDI_Images)\nexport const Info = makeIcon(MDI_Info)\nexport const LinkIcon = makeIcon(MDI_Link)\nexport const LinkOff = makeIcon(MDI_LinkOff)\nexport const LinkVariantPlus = makeIcon(MDI_LinkVariantPlus)\nexport const Lock = makeIcon(MDI_Lock)\nexport const Positive = makeIcon(MDI_Positive)\nexport const Redo = makeIcon(MDI_Redo)\nexport const Shape = makeIcon(MDI_Shape)\nexport const Table = makeIcon(MDI_Table)\nexport const TableAddColumnAfter = makeIcon(MDI_TableAddColumnAfter)\nexport const TableAddColumnBefore = makeIcon(MDI_TableAddColumnBefore)\nexport const TableAddRowAfter = makeIcon(MDI_TableAddRowAfter)\nexport const TableAddRowBefore = makeIcon(MDI_TableAddRowBefore)\nexport const TableSettings = makeIcon(MDI_TableSettings)\nexport const TrashCan = makeIcon(MDI_TrashCan)\nexport const TranslateVariant = makeIcon(MDI_TranslateVariant)\nexport const Undo = makeIcon(MDI_Undo)\nexport const Upload = makeIcon(MDI_Upload)\nexport const Warn = makeIcon(MDI_Warn)\nexport const Web = makeIcon(MDI_Web)\n","/**\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/*\n * Tiptap extension to ease customize the serialization to markdown\n *\n * Most markdown serialization can be handled by `prosemirror-markdown`.\n * In order to make it easier to add custom markdown rendering\n * this extension will extend the prosemirror schema for nodes and marks\n * with a `toMarkdown` specification if that is defined in a tiptap extension.\n *\n * For nodes `toMarkown` should be function\n * that take a serializer state and such a node, and serializes the node.\n *\n * For marks `toMarkdown` is an object with open and close properties,\n * which hold the strings that should appear before and after.\n *\n * For more details see\n * https://github.com/ProseMirror/prosemirror-markdown#class-markdownserializer\n */\n\nimport { Extension, getExtensionField } from '@tiptap/core'\nimport { Plugin, PluginKey } from '@tiptap/pm/state'\nimport { MarkdownSerializer, defaultMarkdownSerializer } from '@tiptap/pm/markdown'\nimport markdownit from '../markdownit/index.js'\nimport { DOMParser } from '@tiptap/pm/model'\n\nconst Markdown = Extension.create({\n\n\tname: 'markdown',\n\n\textendMarkSchema(extension) {\n\t\tconst context = {\n\t\t\tname: extension.name,\n\t\t\toptions: extension.options,\n\t\t\tstorage: extension.storage,\n\t\t}\n\t\treturn {\n\t\t\ttoMarkdown: getExtensionField(extension, 'toMarkdown', context),\n\t\t}\n\t},\n\n\textendNodeSchema(extension) {\n\t\tconst context = {\n\t\t\tname: extension.name,\n\t\t\toptions: extension.options,\n\t\t\tstorage: extension.storage,\n\t\t}\n\t\treturn {\n\t\t\ttoMarkdown: getExtensionField(extension, 'toMarkdown', context),\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\tlet shiftKey = false\n\n\t\treturn [\n\t\t\t// Parse markdown unless Mod+Shift+V is pressed for text clipboard content\n\t\t\tnew Plugin({\n\t\t\t\tkey: new PluginKey('pasteEventHandler'),\n\t\t\t\tprops: {\n\t\t\t\t\thandleDOMEvents: {\n\t\t\t\t\t\tmouseup(_, event) {\n\t\t\t\t\t\t\tshiftKey = event.shiftKey\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\thandleKeyDown(_, event) {\n\t\t\t\t\t\tshiftKey = event.shiftKey\n\t\t\t\t\t\treturn false\n\t\t\t\t\t},\n\t\t\t\t\tclipboardTextParser(str, $context, _, view) {\n\t\t\t\t\t\tconst parser = DOMParser.fromSchema(view.state.schema)\n\t\t\t\t\t\tconst doc = document.cloneNode(false)\n\t\t\t\t\t\tconst dom = doc.createElement('div')\n\t\t\t\t\t\tif (shiftKey) {\n\t\t\t\t\t\t\t// Treat single newlines as linebreaks and double newlines as paragraph breaks when pasting as plaintext\n\t\t\t\t\t\t\tdom.innerHTML = '

' + str.replaceAll('\\n', '
').replaceAll('

', '

') + '

'\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdom.innerHTML = markdownit.render(str)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn parser.parseSlice(dom, { preserveWhitespace: true, context: $context })\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n})\n\nconst createMarkdownSerializer = ({ nodes, marks }) => {\n\tconst defaultNodes = convertNames(defaultMarkdownSerializer.nodes)\n\tconst defaultMarks = convertNames(defaultMarkdownSerializer.marks)\n\treturn {\n\t\tserializer: new MarkdownSerializer(\n\t\t\t{ ...defaultNodes, ...extractToMarkdown(nodes) },\n\t\t\t{ ...defaultMarks, ...extractToMarkdown(marks) }\n\t\t),\n\t\tserialize(content, options) {\n\t\t\treturn this.serializer.serialize(content, { ...options, tightLists: true })\n\t\t},\n\t}\n}\n\nconst extractToMarkdown = (nodesOrMarks) => {\n\treturn Object\n\t\t.entries(nodesOrMarks)\n\t\t.map(([name, nodeOrMark]) => [name, nodeOrMark.spec.toMarkdown])\n\t\t.filter(([, toMarkdown]) => toMarkdown)\n\t\t.reduce((items, [name, toMarkdown]) => ({\n\t\t\t...items,\n\t\t\t[name]: toMarkdown,\n\t\t}), {})\n}\n\nconst convertNames = (object) => {\n\tconst convert = (name) => {\n\t\treturn name.replace(/_(\\w)/g, (_m, letter) => letter.toUpperCase())\n\t}\n\treturn Object.fromEntries(\n\t\tObject.entries(object)\n\t\t\t.map(([name, value]) => [convert(name), value])\n\t)\n}\n\nexport { createMarkdownSerializer }\nexport default Markdown\n","/*\n * @copyright Copyright (c) 2021 Jonas \n *\n * @author Jonas \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 .\n *\n */\n\nimport { Node } from '@tiptap/core'\nimport { PluginKey } from '@tiptap/pm/state'\n// eslint-disable-next-line import/no-named-as-default\nimport Suggestion from '@tiptap/suggestion'\n\nexport const EmojiPluginKey = new PluginKey('emoji')\n\nconst Emoji = Node.create({\n\tname: 'emoji',\n\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\tsuggestion: {\n\t\t\t\tchar: ':',\n\t\t\t\tallowedPrefixes: [' '],\n\t\t\t\tpluginKey: EmojiPluginKey,\n\t\t\t},\n\t\t}\n\t},\n\n\tcontent: 'text*',\n\n\taddCommands() {\n\t\treturn {\n\t\t\temoji: (emojiObject) => ({ commands }) => {\n\t\t\t\treturn commands.insertContent(emojiObject.native + ' ')\n\t\t\t},\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tSuggestion({\n\t\t\t\teditor: this.editor,\n\t\t\t\t...this.options.suggestion,\n\t\t\t}),\n\t\t]\n\t},\n})\n\nexport default Emoji\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { Extension } from '@tiptap/core'\nimport { Plugin } from '@tiptap/pm/state'\n\nconst Keymap = Extension.create({\n\n\tname: 'customkeymap',\n\n\taddKeyboardShortcuts() {\n\t\treturn this.options\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\thandleKeyDown(view, event) {\n\t\t\t\t\t\tconst key = event.key || event.keyCode\n\t\t\t\t\t\tif ((event.ctrlKey || event.metaKey) && !event.shiftKey && (key === 'f' || key === 70)) {\n\t\t\t\t\t\t\t// We need to stop propagation and dispatch the event on the window\n\t\t\t\t\t\t\t// in order to force triggering the browser native search in the text editor\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\twindow.dispatchEvent(event)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.key === 'Delete' && event.ctrlKey === true) {\n\t\t\t\t\t\t\t// Prevent deleting the file, by core Viewer.vue\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\twindow.dispatchEvent(event)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n\n})\n\nexport default Keymap\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nexport class Span {\n\n\tconstructor(from, to, author) {\n\t\tthis.from = from\n\t\tthis.to = to\n\t\tthis.author = author\n\t}\n\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { Span } from './models.js'\n\n/*\n * This code is heavily inspired by the change tracking example of prosemirror\n * https://github.com/ProseMirror/website/blob/master/example/track/index.js\n */\n\n/**\n * @param {Array} map List of document ranges and corresponding authors\n * @param {object} transform ProseMirror transform object\n * @param {Array} clientIDs List of client IDs\n */\nfunction updateBlameMap(map, transform, clientIDs) {\n\tconst result = []\n\tconst mapping = transform.mapping\n\tfor (let i = 0; i < map.length; i++) {\n\t\tconst span = map[i]\n\t\tconst from = mapping.map(span.from, 1)\n\t\tconst to = mapping.map(span.to, -1)\n\t\tif (from < to) result.push(new Span(from, to, span.author))\n\t}\n\n\tfor (let i = 0; i < mapping.maps.length; i++) {\n\t\tconst map = mapping.maps[i]; const after = mapping.slice(i + 1)\n\t\tmap.forEach((_s, _e, start, end) => {\n\t\t\tinsertIntoBlameMap(result, after.map(start, 1), after.map(end, -1), clientIDs[i])\n\t\t})\n\t}\n\n\treturn result\n}\n\n/**\n * @param {Array} map List of document ranges and corresponding authors\n * @param {number} from The lower bound of the selection's main range\n * @param {number} to The upper bound of the selection's main range\n * @param {number} author ClientID of the author\n */\nfunction insertIntoBlameMap(map, from, to, author) {\n\tif (from >= to) {\n\t\treturn\n\t}\n\tlet pos = 0\n\tlet next\n\tfor (; pos < map.length; pos++) {\n\t\tnext = map[pos]\n\t\tif (next.author === author) {\n\t\t\tif (next.to >= from) break\n\t\t} else if (next.to > from) { // Different author, not before\n\t\t\tif (next.from < from) { // Sticks out to the left (loop below will handle right side)\n\t\t\t\tconst left = new Span(next.from, from, next.author)\n\t\t\t\tif (next.to > to) map.splice(pos++, 0, left)\n\t\t\t\telse map[pos++] = left\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// eslint-ignore\n\twhile ((next = map[pos])) {\n\t\tif (next.author === author) {\n\t\t\tif (next.from > to) break\n\t\t\tfrom = Math.min(from, next.from)\n\t\t\tto = Math.max(to, next.to)\n\t\t\tmap.splice(pos, 1)\n\t\t} else {\n\t\t\tif (next.from >= to) break\n\t\t\tif (next.to > to) {\n\t\t\t\tmap[pos] = new Span(to, next.to, next.author)\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tmap.splice(pos, 1)\n\t\t\t}\n\t\t}\n\t}\n\n\tmap.splice(pos, 0, new Span(from, to, author))\n}\n\nexport default class TrackState {\n\n\tconstructor(blameMap) {\n\t\t// The blame map is a data structure that lists a sequence of\n\t\t// document ranges, along with the author that inserted them. This\n\t\t// can be used to, for example, highlight the part of the document\n\t\t// that was inserted by a author.\n\t\tthis.blameMap = blameMap\n\t}\n\n\t// Apply a transform to this state\n\tapplyTransform(transform) {\n\t\tconst clientID = transform.getMeta('clientID') ?? transform.steps.map(item => 'self')\n\t\tconst newBlame = updateBlameMap(this.blameMap, transform, clientID)\n\t\t// Create a new state—since these are part of the editor state, a\n\t\t// persistent data structure, they must not be mutated.\n\t\treturn new TrackState(newBlame)\n\t}\n\n}\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { Extension } from '@tiptap/core'\nimport { Plugin } from '@tiptap/pm/state'\nimport { Decoration, DecorationSet } from '@tiptap/pm/view'\nimport TrackState from './tracking/TrackState.js'\nimport { Span } from './tracking/models.js'\n\nconst UserColor = Extension.create({\n\n\tname: 'users',\n\n\taddOptions() {\n\t\treturn {\n\t\t\tclientID: 0,\n\t\t\tcolor: (clientID) => {\n\t\t\t\treturn '#' + Math.floor((Math.abs(Math.sin(clientID) * 16777215)) % 16777215).toString(16) + 'aa'\n\t\t\t},\n\t\t\tname: (clientID) => {\n\t\t\t\treturn 'Unknown user ' + clientID\n\t\t\t},\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\tlet viewReference = null\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tclientID: this.options.clientID,\n\t\t\t\tcolor: this.options.color,\n\t\t\t\tname: this.options.name,\n\t\t\t\tview: (editorView) => {\n\t\t\t\t\tviewReference = editorView\n\t\t\t\t\treturn {}\n\t\t\t\t},\n\t\t\t\tstate: {\n\t\t\t\t\tinit(_, instance) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttracked: new TrackState([new Span(0, instance.doc.content.size, null)], [], [], []),\n\t\t\t\t\t\t\tdeco: DecorationSet.empty,\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tapply(tr, instance, oldState, state) {\n\t\t\t\t\t\tlet { tracked, decos } = instance\n\t\t\t\t\t\tlet tState = this.getState(oldState).tracked\n\t\t\t\t\t\tif (tr.docChanged) {\n\t\t\t\t\t\t\tif (!tr.getMeta('clientID')) {\n\t\t\t\t\t\t\t\t// we have an undefined client id for own transactions\n\t\t\t\t\t\t\t\ttr.setMeta('clientID', tr.steps.map(i => this.spec.clientID))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Don't apply transaction when in composition (Github issue #2871)\n\t\t\t\t\t\t\tif (!viewReference.composing) {\n\t\t\t\t\t\t\t\ttracked = tracked.applyTransform(tr)\n\t\t\t\t\t\t\t\ttState = tracked\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdecos = tState.blameMap\n\t\t\t\t\t\t\t.map(span => {\n\t\t\t\t\t\t\t\tconst clientID = span.author\n\t\t\t\t\t\t\t\treturn Decoration.inline(span.from, span.to, {\n\t\t\t\t\t\t\t\t\tclass: 'author-annotation',\n\t\t\t\t\t\t\t\t\tstyle: 'background-color: ' + this.spec.color(clientID) + '66;',\n\t\t\t\t\t\t\t\t\ttitle: this.spec.name(clientID),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}).filter(dec => dec !== null)\n\t\t\t\t\t\treturn { tracked, deco: DecorationSet.create(state.doc, decos) }\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tprops: {\n\t\t\t\t\tdecorations(state) {\n\t\t\t\t\t\treturn this.getState(state).deco\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n\n})\n\nexport default UserColor\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { Node } from '@tiptap/core'\n\nexport default Node.create({\n\tname: 'doc',\n\tcontent: 'block',\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\tTab: () => this.editor.commands.insertContent('\\t'),\n\t\t}\n\t},\n\n})\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n*/\n\nimport { Extension } from '@tiptap/core'\n\n/* eslint-disable import/no-named-as-default */\nimport Text from '@tiptap/extension-text'\nimport PlainTextDocument from './../nodes/PlainTextDocument.js'\n\nexport default Extension.create({\n\tname: 'PlainText',\n\n\taddExtensions() {\n\t\treturn [\n\t\t\tPlainTextDocument,\n\t\t\tText,\n\t\t]\n\t},\n\n})\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TiptapBulletList from '@tiptap/extension-bullet-list'\nimport { listInputRule } from '../commands/index.js'\n\n/* We want to allow for `* [ ]` as an input rule for bullet lists.\n * Therefore the list input rules need to check the input\n * until the first char after the space.\n * Only there we know the user is not trying to create a task list.\n */\nconst BulletList = TiptapBulletList.extend({\n\tparseHTML() {\n\t\treturn this.parent().map(rule => Object.assign(rule, { preserveWhitespace: true }))\n\t},\n\n\taddAttributes() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\tbullet: {\n\t\t\t\tdefault: '-',\n\t\t\t\trendered: false,\n\t\t\t\tisRequired: true,\n\t\t\t\tparseHTML: (el) => el.getAttribute('data-bullet'),\n\t\t\t},\n\t\t}\n\t},\n\n\taddInputRules() {\n\t\treturn [\n\t\t\tlistInputRule(\n\t\t\t\t/^\\s*([-+*])\\s([^\\s[]+)$/,\n\t\t\t\tthis.type\n\t\t\t),\n\t\t]\n\t},\n\n})\n\nexport default BulletList\n","/*\n * @copyright Copyright (c) 2021 Jonas Meurer \n *\n * @author Jonas Meurer \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 .\n *\n */\n\nimport { InputRule, wrappingInputRule } from '@tiptap/core'\n\n/**\n * Wrapping input handler that will append the content of the last match\n *\n * @param {RegExp} find find param for the wrapping input rule\n * @param {object} type Node Type object\n * @param {*} getAttributes handler to get the attributes\n */\nexport default function(find, type, getAttributes) {\n\tconst handler = ({ state, range, match }) => {\n\t\tconst wrap = wrappingInputRule({ find, type, getAttributes })\n\t\twrap.handler({ state, range, match })\n\t\t// Insert the first character after bullet if there is one\n\t\tif (match.length >= 3) {\n\t\t\tstate.tr.insertText(match[2])\n\t\t}\n\t}\n\treturn new InputRule({ find, handler })\n}\n","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Callout.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!./Callout.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Callout.vue?vue&type=style&index=0&id=2734884a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Callout.vue?vue&type=style&index=0&id=2734884a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Callout.vue?vue&type=template&id=2734884a&scoped=true&\"\nimport script from \"./Callout.vue?vue&type=script&lang=js&\"\nexport * from \"./Callout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Callout.vue?vue&type=style&index=0&id=2734884a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2734884a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{staticClass:\"callout\",class:`callout--${_vm.type}`,attrs:{\"data-text-el\":\"callout\",\"as\":\"div\"}},[_c(_vm.icon,{tag:\"component\",staticClass:\"callout__icon\"}),_vm._v(\" \"),_c('NodeViewContent',{staticClass:\"callout__content\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2022 Vinicius Reis \n *\n * @author Vinicius Reis \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 .\n *\n */\n\nimport { Node, isNodeActive, mergeAttributes } from '@tiptap/core'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport { typesAvailable } from './../markdownit/callouts.js'\n\nimport Callout from './Callout.vue'\n\nexport default Node.create({\n\n\tname: 'callout',\n\n\tcontent: 'paragraph+',\n\n\tgroup: 'block',\n\n\tdefining: true,\n\n\taddOptions() {\n\t\treturn {\n\t\t\ttypes: typesAvailable,\n\t\t\tHTMLAttributes: {\n\t\t\t\tclass: 'callout',\n\t\t\t},\n\t\t}\n\t},\n\n\taddAttributes() {\n\t\treturn {\n\t\t\ttype: {\n\t\t\t\tdefault: 'info',\n\t\t\t\trendered: false,\n\t\t\t\tparseHTML: element => {\n\t\t\t\t\treturn element.getAttribute('data-callout')\n\t\t\t\t\t\t|| typesAvailable.find((type) => element.classList.contains(type))\n\t\t\t\t\t\t|| (element.classList.contains('warning') && 'warn')\n\t\t\t\t},\n\t\t\t\trenderHTML: attributes => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t'data-callout': attributes.type,\n\t\t\t\t\t\tclass: `callout-${attributes.type}`,\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'div.callout',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttag: 'p.callout',\n\t\t\t\tpriority: 1001,\n\t\t\t},\n\t\t]\n\t},\n\n\trenderHTML({ node, HTMLAttributes }) {\n\t\tconst { class: classy } = this.options.HTMLAttributes\n\n\t\tconst attributes = {\n\t\t\t...this.options.HTMLAttributes,\n\t\t\t'data-callout': node.attrs.type,\n\t\t\tclass: `${classy} ${classy}-${node.attrs.type}`,\n\t\t}\n\n\t\treturn ['div', mergeAttributes(attributes, HTMLAttributes), 0]\n\t},\n\n\ttoMarkdown: (state, node) => {\n\t\tstate.write('::: ' + (node.attrs.type || 'info') + '\\n')\n\t\tstate.renderContent(node)\n\t\tstate.ensureNewLine()\n\t\tstate.write(':::')\n\t\tstate.closeBlock(node)\n\t},\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(Callout)\n\t},\n\n\taddCommands() {\n\t\treturn {\n\t\t\tsetCallout: attributes => ({ commands }) => {\n\t\t\t\treturn commands.wrapIn(this.name, attributes)\n\t\t\t},\n\t\t\ttoggleCallout: attributes => ({ commands, state }) => {\n\t\t\t\tif (!isNodeActive(state, this.name)) {\n\t\t\t\t\treturn commands.setCallout(attributes)\n\t\t\t\t}\n\n\t\t\t\tif (!isNodeActive(state, this.name, attributes)) {\n\t\t\t\t\treturn commands.updateAttributes(this.name, attributes)\n\t\t\t\t}\n\n\t\t\t\treturn commands.unsetCallout()\n\t\t\t},\n\t\t\tunsetCallout: () => ({ commands }) => {\n\t\t\t\treturn commands.lift(this.name)\n\t\t\t},\n\t\t}\n\t},\n})\n","import TiptapCodeBlock from '@tiptap/extension-code-block'\nimport { defaultMarkdownSerializer } from '@tiptap/pm/markdown'\n\nconst CodeBlock = TiptapCodeBlock.extend({\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'pre',\n\t\t\t\tpreserveWhitespace: 'full',\n\t\t\t\t// Remove trailing newline from code blocks (#2344)\n\t\t\t\tgetContent: (node, schema) => {\n\t\t\t\t\tconst textContent = node.textContent.replace(/\\n$/, '')\n\t\t\t\t\tconst inner = textContent\n\t\t\t\t\t\t? [schema.text(textContent)]\n\t\t\t\t\t\t: []\n\t\t\t\t\treturn schema.nodes.codeBlock.create(null, inner)\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\t},\n\n\ttoMarkdown(state, node, parent, index) {\n\t\t// @tiptap/pm/markdown uses `params` instead of `language` attribute\n\t\tnode.attrs.params = node.attrs.language\n\t\treturn defaultMarkdownSerializer.nodes.code_block(state, node, parent, index)\n\t},\n\n})\n\nexport default CodeBlock\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiList.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!./EmojiList.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiList.vue?vue&type=style&index=0&id=74f9a54a&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiList.vue?vue&type=style&index=0&id=74f9a54a&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmojiList.vue?vue&type=template&id=74f9a54a&scoped=true&\"\nimport script from \"./EmojiList.vue?vue&type=script&lang=js&\"\nexport * from \"./EmojiList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmojiList.vue?vue&type=style&index=0&id=74f9a54a&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74f9a54a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"emoji-list\"},[(_vm.hasResults)?_vm._l((_vm.items),function(emojiObject,index){return _c('div',{key:index,staticClass:\"emoji-list__item\",class:{ 'is-selected': index === _vm.selectedIndex },on:{\"click\":function($event){return _vm.selectItem(index)}}},[_c('span',{staticClass:\"emoji-list__item__emoji\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(emojiObject.native)+\"\\n\\t\\t\\t\")]),_vm._v(\"\\n\\t\\t\\t:\"+_vm._s(emojiObject.short_name)+\"\\n\\t\\t\")])}):_c('div',{staticClass:\"emoji-list__item is-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'No emoji found'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mergeAttributes } from '@tiptap/core'\nimport TiptapCodeBlock from '@tiptap/extension-code-block'\n\nconst FrontMatter = TiptapCodeBlock.extend({\n\tname: 'frontMatter',\n\t// FrontMatter are only valid at the begin of a document\n\tdraggable: false,\n\n\trenderHTML({ node, HTMLAttributes }) {\n\t\treturn this.parent({\n\t\t\tnode,\n\t\t\tHTMLAttributes:\n\t\t\tmergeAttributes(HTMLAttributes, { 'data-title': t('text', 'Front matter'), class: 'frontmatter' }),\n\t\t})\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: 'pre#frontmatter',\n\t\t\tpreserveWhitespace: 'full',\n\t\t\tpriority: 9001,\n\t\t\tattrs: {\n\t\t\t\tlanguage: 'yaml',\n\t\t\t},\n\t\t}]\n\t},\n\ttoMarkdown: (state, node) => {\n\t\tif (!state.out.match(/^\\s*/)) throw Error('FrontMatter must be the first node of the document!')\n\t\tconst text = node.textContent\n\t\t// Make sure the front matter fences are longer than any dash sequence within it\n\t\tconst dashes = text.match(/-{3,}/gm)\n\t\tconst separator = dashes ? (dashes.sort().slice(-1)[0] + '-') : '---'\n\n\t\tstate.write('')\n\t\tstate.out = ''\n\t\tstate.write(`${separator}\\n`)\n\t\tstate.text(text, false)\n\t\tstate.ensureNewLine()\n\t\tstate.write(separator)\n\t\tstate.closeBlock(node)\n\t},\n\n\t// Allow users to add a FrontMatter, but only at the beginning of the document\n\taddInputRules() {\n\t\treturn [\n\t\t\t{\n\t\t\t\tfind: /^---$/g,\n\t\t\t\thandler: ({ state, range, chain }) => {\n\t\t\t\t\tif (range.from === 1) {\n\t\t\t\t\t\tif (state.doc.resolve(1).parent.type.name === this.name) return false\n\t\t\t\t\t\tchain()\n\t\t\t\t\t\t\t.deleteRange(range)\n\t\t\t\t\t\t\t.insertContentAt(0, {\n\t\t\t\t\t\t\t\ttype: this.name,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\t},\n\n\t// Override rules from Codeblock\n\taddCommands() {\n\t\treturn {}\n\t},\n\taddPasteRules: () => [],\n\taddProseMirrorPlugins: () => [],\n})\n\nexport default FrontMatter\n","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParagraphView.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!./ParagraphView.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParagraphView.vue?vue&type=style&index=0&id=40519f7a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParagraphView.vue?vue&type=style&index=0&id=40519f7a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ParagraphView.vue?vue&type=template&id=40519f7a&scoped=true&\"\nimport script from \"./ParagraphView.vue?vue&type=script&lang=js&\"\nexport * from \"./ParagraphView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ParagraphView.vue?vue&type=style&index=0&id=40519f7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40519f7a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{staticClass:\"vue-component\",attrs:{\"as\":\"p\"}},[_c('NodeViewContent',{staticClass:\"paragraph-content\"}),_vm._v(\" \"),(_vm.isLoggedIn && _vm.text)?_c('NcReferenceList',{attrs:{\"text\":_vm.text,\"limit\":1,\"contenteditable\":\"false\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import TiptapParagraph from '@tiptap/extension-paragraph'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport ParagraphView from './ParagraphView.vue'\n\nconst Paragraph = TiptapParagraph.extend({\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(ParagraphView)\n\t},\n\n\tparseHTML() {\n\t\treturn this.parent().map(rule => Object.assign(rule, { preserveWhitespace: 'full' }))\n\t},\n\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\tBackspace: () => {\n\t\t\t\t// Check that cursor is at beginning of text\n\t\t\t\tconst selection = this.editor.state.selection\n\t\t\t\tif (selection.$from.parentOffset !== 0) return false\n\n\t\t\t\tconst node = selection.$from.parent\n\t\t\t\tconst index = selection.$from.index(selection.$from.depth - 1)\n\t\t\t\t// Check there is a leading sibling\n\t\t\t\tif (index === 0) return false\n\n\t\t\t\tconst parent = selection.$from.node(selection.$from.depth - 1)\n\t\t\t\tconst previousNode = parent.child(index - 1)\n\t\t\t\t// Check this and the previous sibling are paragraphs\n\t\t\t\tif (node.type.name === this.name\n\t\t\t\t\t&& previousNode.type.name === this.name) {\n\t\t\t\t\treturn this.editor.chain().joinBackward().setHardBreak().run()\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t},\n\t\t}\n\t},\n})\n\nexport default Paragraph\n","/*\n * @copyright Copyright (c) 2022 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n*/\n\nimport TipTapHardBreak from '@tiptap/extension-hard-break'\n\nconst HardBreak = TipTapHardBreak.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\tsyntax: {\n\t\t\t\tdefault: ' ',\n\t\t\t\trendered: false,\n\t\t\t\tkeepOnSplit: true,\n\t\t\t\tparseHTML: (el) => el.getAttribute('data-syntax') || ' ',\n\t\t\t},\n\t\t}\n\t},\n\n\taddCommands() {\n\t\treturn {\n\t\t\t...this?.parent(),\n\t\t\tsetHardBreak: () => (ctx) => {\n\t\t\t\t// Prevent hard breaks within headings\n\t\t\t\tfor (let d = ctx.state.selection.$from.depth; d >= 0; d--) {\n\t\t\t\t\tif (ctx.state.selection.$from.node(d).type.name === 'heading') return false\n\t\t\t\t}\n\t\t\t\treturn this.parent().setHardBreak()(ctx)\n\t\t\t},\n\t\t}\n\t},\n\n\ttoMarkdown(state, node, parent, index) {\n\t\tfor (let i = index + 1; i < parent.childCount; i++) {\n\t\t\tif (parent.child(i).type !== node.type) {\n\t\t\t\tif (node.attrs.syntax !== 'html') {\n\t\t\t\t\tstate.write(node.attrs.syntax)\n\t\t\t\t\tif (!parent.child(i).text?.startsWith('\\n')) state.write('\\n')\n\t\t\t\t} else {\n\t\t\t\t\tstate.write('
')\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t},\n})\n\nexport default HardBreak\n","import store from '../../store/index.js'\nimport { slugify } from './slug.js'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst setHeadings = (val) => store.dispatch('text/setHeadings', val)\n\nconst extractHeadings = (editor) => {\n\tconst counter = new Map()\n\tconst headings = []\n\tconst tr = editor.state.tr\n\n\tconst getId = text => {\n\t\tconst id = slugify(text)\n\n\t\tif (counter.has(id)) {\n\t\t\tconst next = counter.get(id)\n\n\t\t\t// increment counter\n\t\t\tcounter.set(id, next + 1)\n\n\t\t\treturn `h-${id}--${next}`\n\t\t}\n\n\t\t// define counter\n\t\tcounter.set(id, 1)\n\n\t\treturn 'h-' + id\n\t}\n\n\teditor.state.doc.descendants((node, position) => {\n\t\tif (node.type.name === 'heading') {\n\t\t\tconst text = node.textContent\n\t\t\tconst id = getId(text)\n\t\t\tconst uuid = node.attrs.uuid ?? uuidv4()\n\n\t\t\tif (node.attrs.id !== id || !node.attrs.uuid) {\n\t\t\t\tconst attrs = {\n\t\t\t\t\t...node.attrs,\n\t\t\t\t\tuuid,\n\t\t\t\t\tid,\n\t\t\t\t}\n\n\t\t\t\ttr.setNodeMarkup(position, undefined, attrs)\n\t\t\t}\n\n\t\t\theadings.push(Object.freeze({\n\t\t\t\tlevel: node.attrs.level,\n\t\t\t\tposition,\n\t\t\t\ttext,\n\t\t\t\tid,\n\t\t\t\tuuid,\n\t\t\t}))\n\t\t}\n\t})\n\n\ttr.setMeta('addToHistory', false)\n\ttr.setMeta('preventUpdate', true)\n\n\teditor.view.dispatch(tr)\n\n\tsetHeadings(headings)\n}\n\nexport {\n\textractHeadings,\n\tsetHeadings,\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NodeViewWrapper',{ref:\"container\",attrs:{\"id\":_vm.node.attrs.id,\"as\":_vm.domElement}},[_c('a',{staticClass:\"heading-anchor\",attrs:{\"aria-hidden\":\"true\",\"href\":_vm.href,\"title\":_vm.t('text', 'Link to this section'),\"contenteditable\":false},on:{\"click\":function($event){$event.stopPropagation();return _vm.click.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.linkSymbol))]),_vm._v(\" \"),_c('NodeViewContent',{attrs:{\"as\":\"span\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingView.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!./HeadingView.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingView.vue?vue&type=style&index=0&id=de8491a2&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadingView.vue?vue&type=style&index=0&id=de8491a2&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeadingView.vue?vue&type=template&id=de8491a2&\"\nimport script from \"./HeadingView.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadingView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeadingView.vue?vue&type=style&index=0&id=de8491a2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import TipTapHeading from '@tiptap/extension-heading'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport debounce from 'debounce'\nimport { extractHeadings } from './extractor.js'\nimport HeaderViewVue from './HeadingView.vue'\n\nconst Heading = TipTapHeading.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...this.parent(),\n\t\t\tid: {\n\t\t\t\tdefault: undefined,\n\t\t\t\trendered: true,\n\t\t\t},\n\t\t\tuuid: {\n\t\t\t\tdefault: undefined,\n\t\t\t\trendered: false,\n\t\t\t},\n\t\t}\n\t},\n\n\taddOptions() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\tlinkSymbol: '#',\n\t\t}\n\t},\n\n\taddKeyboardShortcuts() {\n\t\treturn this.options.levels.reduce((items, level) => ({\n\t\t\t...items,\n\t\t\t[`Mod-Shift-${level}`]: () => this.editor.commands.toggleHeading({ level }),\n\t\t}), {})\n\t},\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(HeaderViewVue, {\n\t\t\tupdate: ({ oldNode, newNode, updateProps }) => {\n\t\t\t\tif (newNode.type.name !== this.name) return false\n\t\t\t\t// Make sure to redraw node as the vue renderer will not show the updated children\n\t\t\t\tif (newNode.attrs !== oldNode.attrs) return false\n\t\t\t\tupdateProps()\n\t\t\t\treturn true\n\t\t\t},\n\t\t})\n\t},\n\n\tonCreate() {\n\t\textractHeadings(this.editor)\n\n\t\tif (this.parent) {\n\t\t\tthis.parent()\n\t\t}\n\t},\n\n\tonUpdate: debounce(({ editor }) => {\n\t\tif (editor.view && editor.state && !editor.isDestroyed) {\n\t\t\t// Only run if editor still exists (prevent dangling debounced extractHeadings function)\n\t\t\textractHeadings(editor)\n\t\t}\n\t}, 900),\n\n})\n\nexport default Heading\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowImageModal.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!./ShowImageModal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowImageModal.vue?vue&type=style&index=0&id=8f1a4cfa&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowImageModal.vue?vue&type=style&index=0&id=8f1a4cfa&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ShowImageModal.vue?vue&type=template&id=8f1a4cfa&scoped=true&\"\nimport script from \"./ShowImageModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ShowImageModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ShowImageModal.vue?vue&type=style&index=0&id=8f1a4cfa&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8f1a4cfa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.show)?_c('NcModal',{attrs:{\"size\":\"large\",\"title\":_vm.currentImage.basename,\"out-transition\":true,\"has-next\":true,\"has-previous\":true,\"close-button-contained\":false,\"dark\":true},on:{\"next\":_vm.showNextImage,\"previous\":_vm.showPreviousImage,\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"modal__content\"},[_c('img',{attrs:{\"src\":_vm.currentImage.source}})])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageView.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!./ImageView.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageView.vue?vue&type=style&index=0&id=4febfd28&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageView.vue?vue&type=style&index=0&id=4febfd28&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ImageView.vue?vue&type=template&id=4febfd28&scoped=true&\"\nimport script from \"./ImageView.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageView.vue?vue&type=style&index=0&id=4febfd28&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4febfd28\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',[_c('figure',{staticClass:\"image image-view\",class:{'icon-loading': !_vm.loaded, 'image-view--failed': _vm.failed},attrs:{\"data-component\":\"image-view\",\"data-src\":_vm.src}},[(_vm.canDisplayImage)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(() => _vm.showIcons = false),expression:\"() => showIcons = false\"}],staticClass:\"image__view\",on:{\"mouseover\":function($event){_vm.showIcons = true},\"mouseleave\":function($event){_vm.showIcons = false}}},[_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.failed)?[(_vm.isMediaAttachment)?_c('div',{staticClass:\"media\",on:{\"click\":function($event){return _vm.handleImageClick(_vm.src)}}},[_c('div',{staticClass:\"media__wrapper\"},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],staticClass:\"image__main\",attrs:{\"src\":_vm.imageUrl},on:{\"load\":_vm.onLoaded}}),_vm._v(\" \"),_c('div',{staticClass:\"metadata\"},[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.alt))]),_vm._v(\" \"),_c('span',{staticClass:\"size\"},[_vm._v(_vm._s(_vm.attachmentMetadata.size))])])]),_vm._v(\" \"),(_vm.showDeleteIcon)?_c('div',{staticClass:\"buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('text', 'Delete this attachment'),\"title\":_vm.t('text', 'Delete this attachment')},on:{\"click\":_vm.onDelete},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DeleteIcon')]},proxy:true}],null,false,3930079857)})],1):_vm._e()]):_c('div',[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],staticClass:\"image__main\",attrs:{\"src\":_vm.imageUrl},on:{\"click\":function($event){return _vm.handleImageClick(_vm.src)},\"load\":_vm.onLoaded}})])]:[_c('ImageIcon',{staticClass:\"image__main image__main--broken-icon\",attrs:{\"size\":100}})]],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.isMediaAttachment)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],staticClass:\"image__caption\",attrs:{\"title\":_vm.alt}},[(!_vm.editable)?_c('figcaption',[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.alt)+\"\\n\\t\\t\\t\\t\\t\")]):_c('div',{staticClass:\"image__caption__wrapper\"},[_c('input',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isMediaAttachment),expression:\"!isMediaAttachment\"}],ref:\"altInput\",staticClass:\"image__caption__input\",attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.alt},on:{\"blur\":_vm.updateAlt,\"keyup\":_vm.updateAlt}}),_vm._v(\" \"),(_vm.showImageDeleteIcon)?_c('div',{staticClass:\"image__caption__delete\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('text', 'Delete this image'),\"title\":_vm.t('text', 'Delete this image')},on:{\"click\":_vm.onDelete},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DeleteIcon')]},proxy:true}],null,false,3930079857)})],1):_vm._e()])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"image__modal\"},[_c('ShowImageModal',{attrs:{\"images\":_vm.embeddedImagesList,\"start-index\":_vm.imageIndex,\"show\":_vm.showImageModal},on:{\"close\":function($event){_vm.showImageModal=false}}})],1)],1):_c('div',{staticClass:\"image-view__cant_display\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}]},[_c('a',{attrs:{\"href\":_vm.internalLinkOrImage,\"target\":\"_blank\"}},[(!_vm.isSupportedImage)?_c('span',[_vm._v(_vm._s(_vm.alt))]):_vm._e()])])]),_vm._v(\" \"),(_vm.isSupportedImage)?_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],staticClass:\"image__caption\"},[_c('input',{ref:\"altInput\",attrs:{\"type\":\"text\",\"disabled\":!_vm.editable},domProps:{\"value\":_vm.alt},on:{\"blur\":_vm.updateAlt,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.updateAlt.apply(null, arguments)}}})])]):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('small',{staticClass:\"image__error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errorMessage)+\"\\n\\t\\t\")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TiptapImage from '@tiptap/extension-image'\nimport { Plugin } from '@tiptap/pm/state'\nimport ImageView from './ImageView.vue'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport { defaultMarkdownSerializer } from '@tiptap/pm/markdown'\n\nconst Image = TiptapImage.extend({\n\n\tselectable: false,\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: this.options.allowBase64\n\t\t\t\t\t? 'figure img[src]'\n\t\t\t\t\t: 'figure img[src]:not([src^=\"data:\"])',\n\t\t\t},\n\t\t]\n\t},\n\n\trenderHTML() {\n\t\t// Avoid the prosemirror node creation to trigger image loading as we use a custom node view anyways\n\t\t// Otherwise it would attempt to load the image from the current location before the node view is even initialized\n\t\treturn ['img']\n\t},\n\n\taddOptions() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t}\n\t},\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(ImageView)\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\thandleDrop: (view, event, slice) => {\n\t\t\t\t\t\t// only catch the drop if it contains files\n\t\t\t\t\t\tif (event.dataTransfer.files && event.dataTransfer.files.length > 0) {\n\t\t\t\t\t\t\tconst coordinates = view.posAtCoords({ left: event.clientX, top: event.clientY })\n\t\t\t\t\t\t\tconst customEvent = new CustomEvent('file-drop', {\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tfiles: event.dataTransfer.files,\n\t\t\t\t\t\t\t\t\tposition: coordinates.pos,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tevent.target.dispatchEvent(customEvent)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\thandlePaste: (view, event, slice) => {\n\t\t\t\t\t\t// only catch the paste if it contains files\n\t\t\t\t\t\tif (event.clipboardData.files && event.clipboardData.files.length > 0) {\n\t\t\t\t\t\t\t// let the editor wrapper catch this custom event\n\t\t\t\t\t\t\tconst customEvent = new CustomEvent('image-paste', {\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tfiles: event.clipboardData.files,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tevent.target.dispatchEvent(customEvent)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n\n\t/* Serializes an image node as a block image, so it ensures an image is always a block by itself */\n\ttoMarkdown(state, node, parent, index) {\n\t\tnode.attrs.alt = node.attrs.alt.toString()\n\t\tdefaultMarkdownSerializer.nodes.image(state, node, parent, index)\n\t\tstate.closeBlock(node)\n\t},\n})\n\nexport default Image\n","/*\n * @copyright Copyright (c) 2022 Jonas \n *\n * @author Jonas \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 .\n *\n */\n\nimport TiptapImage from '@tiptap/extension-image'\nimport ImageView from './ImageView.vue'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport { defaultMarkdownSerializer } from '@tiptap/pm/markdown'\n\n// Inline image extension. Needed if markdown contains inline images.\n// Not supported to be created from our UI (we default to block images).\nconst ImageInline = TiptapImage.extend({\n\tname: 'image-inline',\n\n\t// Lower priority than (block) Image extension\n\tpriority: 99,\n\n\tselectable: false,\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: this.options.allowBase64\n\t\t\t\t\t? 'img[src]'\n\t\t\t\t\t: 'img[src]:not([src^=\"data:\"])',\n\t\t\t},\n\t\t]\n\t},\n\n\taddOptions() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\tinline: true,\n\t\t}\n\t},\n\n\t// Empty commands, we want only those from (block) Image extension\n\taddCommands() {\n\t\treturn {}\n\t},\n\n\t// Empty input rules, we want only those from (block) Image extension\n\taddInputRules() {\n\t\treturn []\n\t},\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(ImageView)\n\t},\n\n\ttoMarkdown(state, node, parent, index) {\n\t\treturn defaultMarkdownSerializer.nodes.image(state, node, parent, index)\n\t},\n})\n\nexport default ImageInline\n","import { Mark } from '@tiptap/core'\n\n/**\n * Keep markdown untouched\n */\nconst KeepSyntax = Mark.create({\n\tname: 'keep-syntax',\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'span.keep-md',\n\t\t\t},\n\t\t]\n\t},\n\trenderHTML() {\n\t\treturn ['span', { class: 'keep-md' }, 0]\n\t},\n\ttoMarkdown: {\n\t\topen: '',\n\t\tclose: '',\n\t\tmixable: true,\n\t\tescape: false,\n\t\texpelEnclosingWhitespace: true,\n\t},\n\n\t/**\n\t * Remove mark if there were manual changes\n\t */\n\tonUpdate() {\n\t\tconst tr = this.editor.state.tr\n\n\t\tthis.editor.state.doc.descendants((node, pos, parent, index) => {\n\t\t\tif (node.marks.findIndex(mark => mark.type.name === this.name) !== -1) {\n\t\t\t\tif (node.type.name !== 'text' || node.text.length !== 1) {\n\t\t\t\t\ttr.removeMark(pos, pos + node.nodeSize, this.type)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\tif (tr.docChanged) {\n\t\t\ttr.setMeta('addToHistory', false)\n\t\t\ttr.setMeta('preventUpdate', true)\n\t\t\tthis.editor.view.dispatch(tr)\n\t\t}\n\t},\n})\n\nexport default KeepSyntax\n","\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mention.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!./Mention.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mention.vue?vue&type=style&index=0&id=297bb5fa&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mention.vue?vue&type=style&index=0&id=297bb5fa&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Mention.vue?vue&type=template&id=297bb5fa&scoped=true&\"\nimport script from \"./Mention.vue?vue&type=script&lang=js&\"\nexport * from \"./Mention.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mention.vue?vue&type=style&index=0&id=297bb5fa&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"297bb5fa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{staticClass:\"mention\",attrs:{\"as\":\"span\",\"contenteditable\":\"false\"}},[_c('NcUserBubble',{staticClass:\"mention-user-bubble\",attrs:{\"user\":_vm.node.attrs.id,\"display-name\":_vm.username,\"primary\":_vm.isCurrentUser}},[_vm._v(\"\\n\\t\\t@\"+_vm._s(_vm.username)+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import TipTapMention from '@tiptap/extension-mention'\nimport Mention from './Mention.vue'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport { mergeAttributes } from '@tiptap/core'\n\nexport default TipTapMention.extend({\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'span[data-type=\"user\"]',\n\t\t\t\tgetAttrs: element => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: element.getAttribute('data-id'),\n\t\t\t\t\t\tlabel: element.innerText || element.textContent || element.getAttribute('data-label'),\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpriority: 100,\n\t\t\t},\n\t\t]\n\t},\n\n\trenderHTML({ node, HTMLAttributes }) {\n\t\treturn [\n\t\t\t'span',\n\t\t\tmergeAttributes({ 'data-type': 'user', class: 'mention' }, this.options.HTMLAttributes, HTMLAttributes),\n\t\t\tthis.options.renderLabel({\n\t\t\t\toptions: this.options,\n\t\t\t\tnode,\n\t\t\t}),\n\t\t]\n\t},\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(Mention)\n\t},\n\n\ttoMarkdown(state, node) {\n\t\tstate.write(' ')\n\t\tstate.write(`@[${node.attrs.label}](mention://user/${node.attrs.id})`)\n\t\tstate.write(' ')\n\t},\n})\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkPickerList.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!./LinkPickerList.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkPickerList.vue?vue&type=style&index=0&id=0ea7b674&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkPickerList.vue?vue&type=style&index=0&id=0ea7b674&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LinkPickerList.vue?vue&type=template&id=0ea7b674&scoped=true&\"\nimport script from \"./LinkPickerList.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkPickerList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LinkPickerList.vue?vue&type=style&index=0&id=0ea7b674&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ea7b674\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SuggestionListWrapper',{ref:\"suggestionList\",attrs:{\"command\":_vm.command,\"items\":_vm.items},on:{\"select\":(item) => _vm.$emit('select', item)},scopedSlots:_vm._u([{key:\"default\",fn:function({ item }){return [_c('div',{staticClass:\"link-picker__item\"},[_c('img',{attrs:{\"src\":item.icon}}),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(item.label))])])]}},{key:\"empty\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'No command found'))+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Extension } from '@tiptap/core'\nimport { Suggestion } from '@tiptap/suggestion'\nimport { PluginKey } from '@tiptap/pm/state'\nimport suggestions from '../components/Suggestion/LinkPicker/suggestions.js'\n\nexport const LinkPickerPluginKey = new PluginKey('linkPicker')\nexport default Extension.create({\n\n\tname: 'linkPicker',\n\n\taddOptions() {\n\t\treturn {\n\t\t\tsuggestion: {\n\t\t\t\tchar: '/',\n\t\t\t\tallowedPrefixes: [' '],\n\t\t\t\tpluginKey: LinkPickerPluginKey,\n\t\t\t\t...suggestions(),\n\t\t\t},\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tSuggestion({\n\t\t\t\teditor: this.editor,\n\t\t\t\t...this.options.suggestion,\n\t\t\t}),\n\t\t]\n\t},\n})\n","/*\n * @copyright Copyright (c) 2022 Julius Härtl \n *\n * @author Julius Härtl \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 .\n */\n\nimport createSuggestions from '../suggestions.js'\nimport LinkPickerList from './LinkPickerList.vue'\n\nimport { searchProvider, getLinkWithPicker } from '@nextcloud/vue/dist/Components/NcRichText.js'\n\nexport default () => createSuggestions({\n\tlistComponent: LinkPickerList,\n\tcommand: ({ editor, range, props }) => {\n\t\tgetLinkWithPicker(props.providerId, true)\n\t\t\t.then(link => {\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.insertContentAt(range, link + ' ')\n\t\t\t\t\t.run()\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Smart picker promise rejected', error)\n\t\t\t})\n\t},\n\titems: ({ query }) => {\n\t\treturn searchProvider(query)\n\t\t\t.map(p => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: p.title,\n\t\t\t\t\ticon: p.icon_url,\n\t\t\t\t\tproviderId: p.id,\n\t\t\t\t}\n\t\t\t})\n\t},\n})\n","import { Node } from '@tiptap/core'\n\n/*\n * Markdown tables do not include captions.\n * We still need to parse them though\n * because otherwise tiptap will try to insert their text content\n * and put it in the top row of the table.\n */\nexport default Node.create({\n\tname: 'tableCaption',\n\tcontent: 'inline*',\n\taddAttributes() {\n\t\treturn {}\n\t},\n\n\trenderHTML() {\n\t\treturn ['caption']\n\t},\n\n\ttoMarkdown(state, node) {\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: 'table caption', priority: 90 },\n\t\t]\n\t},\n\n})\n","import { TableCell } from '@tiptap/extension-table-cell'\nimport { Plugin } from '@tiptap/pm/state'\nimport { Fragment } from '@tiptap/pm/model'\n\nexport default TableCell.extend({\n\tcontent: 'inline*',\n\n\ttoMarkdown(state, node) {\n\t\tstate.write(' ')\n\t\tconst backup = state.options?.escapeExtraCharacters\n\t\tstate.options.escapeExtraCharacters = /\\|/\n\t\tstate.renderInline(node)\n\t\tstate.options.escapeExtraCharacters = backup\n\t\tstate.write(' |')\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: 'td', preserveWhitespace: true },\n\t\t\t{ tag: 'th', preserveWhitespace: true },\n\t\t\t{ tag: 'table thead ~ tbody th', priority: 70, preserveWhitespace: true },\n\t\t\t{ tag: 'table thead ~ tbody td', priority: 70, preserveWhitespace: true },\n\t\t]\n\t},\n\n\taddAttributes() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\ttextAlign: {\n\t\t\t\trendered: false,\n\t\t\t\tparseHTML: (element) => element.style.textAlign || null,\n\t\t\t},\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\t// Special-treat empty lines in pasted content to prevent jumping out of cell\n\t\t\t\t\thandlePaste: (view, event, slice) => {\n\t\t\t\t\t\tif (slice.content.childCount > 1) {\n\t\t\t\t\t\t\tconst state = view.state\n\t\t\t\t\t\t\tconst childCount = slice.content.childCount\n\t\t\t\t\t\t\tconst childNodes = []\n\t\t\t\t\t\t\tfor (let i = 0; i < childCount; i++) {\n\t\t\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\t\tchildNodes.push(state.schema.text('\\n'))\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Ignore empty children (i.e. empty lines)\n\t\t\t\t\t\t\t\tif (!slice.content.child(i).firstChild) {\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchildNodes.push(state.schema.text(slice.content.child(i).textContent, slice.content.child(i).firstChild.marks))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst newNode = view.state.schema.node('paragraph', [], childNodes)\n\t\t\t\t\t\t\tslice.content = Fragment.empty.addToStart(newNode)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n})\n","import { TableHeader } from '@tiptap/extension-table-header'\n\nexport default TableHeader.extend({\n\tcontent: 'inline*',\n\n\ttoMarkdown(state, node) {\n\t\tstate.write(' ')\n\t\tstate.renderInline(node)\n\t\tstate.write(' |')\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: 'table thead:empty ~ tbody :first-child th', priority: 80 },\n\t\t\t{ tag: 'table thead:empty ~ tbody :first-child td', priority: 80 },\n\t\t\t{ tag: 'table thead :first-child th', priority: 60 },\n\t\t\t{ tag: 'table thead :first-child td', priority: 60 },\n\t\t\t{ tag: 'table tbody :first-child th', priority: 60 },\n\t\t\t{ tag: 'table tbody :first-child td', priority: 60 },\n\t\t\t{ tag: 'table > :first-child > th', priority: 60 },\n\t\t\t{ tag: 'table > :first-child > td', priority: 60 },\n\t\t]\n\t},\n\n\taddAttributes() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\ttextAlign: {\n\t\t\t\trendered: false,\n\t\t\t\tparseHTML: (element) => element.style.textAlign || null,\n\t\t\t},\n\t\t}\n\t},\n})\n","import { TableRow } from '@tiptap/extension-table-row'\n\nexport default TableRow.extend({\n\tcontent: 'tableCell*',\n\n\ttoMarkdown(state, node) {\n\t\tstate.write('|')\n\t\tstate.renderInline(node)\n\t\tstate.ensureNewLine()\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: 'tr', priority: 70 },\n\t\t]\n\t},\n})\n","import TableRow from './TableRow.js'\n\nexport default TableRow.extend({\n\tname: 'tableHeadRow',\n\tcontent: 'tableHeader*',\n\n\ttoMarkdown(state, node) {\n\t\tstate.write('|')\n\t\tstate.renderInline(node)\n\t\tstate.ensureNewLine()\n\t\tstate.write('|')\n\t\tnode.forEach(cell => {\n\t\t\tlet row = state.repeat('-', cell.textContent.length + 2)\n\t\t\tconst align = cell.attrs?.textAlign\n\t\t\tif (align === 'center' || align === 'left') row = ':' + row.slice(1)\n\t\t\tif (align === 'center' || align === 'right') row = row.slice(0, -1) + ':'\n\t\t\tstate.write(row)\n\t\t\tstate.write('|')\n\t\t})\n\t\tstate.ensureNewLine()\n\t},\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: 'tr:first-of-type', priority: 80 },\n\t\t]\n\t},\n})\n","import { mergeAttributes } from '@tiptap/core'\nimport { Table } from '@tiptap/extension-table'\nimport TableCaption from './TableCaption.js'\nimport TableCell from './TableCell.js'\nimport TableHeader from './TableHeader.js'\nimport TableHeadRow from './TableHeadRow.js'\nimport TableRow from './TableRow.js'\nimport { TextSelection } from '@tiptap/pm/state'\nimport {\n\taddRowAfter,\n\taddRowBefore,\n\tisInTable,\n\tmoveCellForward,\n\tselectedRect,\n\tselectionCell,\n} from '@tiptap/pm/tables'\n\n/**\n *\n * @param {object} schema - schema of the editor\n * @param {number} rowsCount - number of rows in the table\n * @param {number} colsCount - number of cols in the table\n * @param {object} cellContent - currently unused\n */\nfunction createTable(schema, rowsCount, colsCount, cellContent) {\n\tconst headerCells = []\n\tconst cells = []\n\tfor (let index = 0; index < colsCount; index += 1) {\n\t\tconst cell = schema.nodes.tableCell.createAndFill()\n\t\tif (cell) {\n\t\t\tcells.push(cell)\n\t\t}\n\t\tconst headerCell = schema.nodes.tableHeader.createAndFill()\n\t\tif (headerCell) {\n\t\t\theaderCells.push(headerCell)\n\t\t}\n\t}\n\tconst headRow = schema.nodes.tableHeadRow.createChecked(null, headerCells)\n\tconst rows = []\n\tfor (let index = 1; index < rowsCount; index += 1) {\n\t\trows.push(schema.nodes.tableRow.createChecked(null, cells))\n\t}\n\treturn schema.nodes.table.createChecked(null, [headRow, ...rows])\n}\n\n/**\n *\n * @param {object} $cell - resolved position of the current cell\n */\nfunction findSameCellInNextRow($cell) {\n\tif ($cell.index(-1) === $cell.node(-1).childCount - 1) {\n\t\treturn null\n\t}\n\tlet cellStart = $cell.after()\n\tconst table = $cell.node(-1)\n\tfor (let row = $cell.indexAfter(-1); row < table.childCount; row++) {\n\t\tconst rowNode = table.child(row)\n\t\tif (rowNode.childCount >= $cell.index()) {\n\t\t\tfor (let cell = 0; cell < $cell.index(); cell++) {\n\t\t\t\tconst cellNode = rowNode.child(cell)\n\t\t\t\tcellStart += cellNode.nodeSize\n\t\t\t}\n\t\t\treturn cellStart + 1\n\t\t}\n\t\tcellStart += rowNode.nodeSize\n\t}\n}\n\nexport default Table.extend({\n\tcontent: 'tableCaption? tableHeadRow tableRow*',\n\n\taddExtensions() {\n\t\treturn [\n\t\t\tTableCaption,\n\t\t\tTableCell,\n\t\t\tTableHeader,\n\t\t\tTableHeadRow,\n\t\t\tTableRow,\n\t\t]\n\t},\n\n\taddCommands() {\n\t\treturn {\n\t\t\t...this.parent(),\n\t\t\taddRowAfter: () => ({ chain, dispatch }) => {\n\t\t\t\treturn chain()\n\t\t\t\t\t.command(({ state }) => addRowAfter(state, dispatch))\n\t\t\t\t\t.command(({ state, tr }) => {\n\t\t\t\t\t\tconst { tableStart, table, bottom } = selectedRect(state)\n\n\t\t\t\t\t\tif (dispatch) {\n\t\t\t\t\t\t\tconst lastRow = table.child(bottom - 1)\n\t\t\t\t\t\t\tconst newRow = table.child(bottom)\n\t\t\t\t\t\t\tlet pos = tableStart + 1\n\t\t\t\t\t\t\tfor (let i = 0; i < bottom; i++) { pos += table.child(i).nodeSize }\n\n\t\t\t\t\t\t\tfor (let i = 0; i < lastRow.childCount; i++) {\n\t\t\t\t\t\t\t\ttr.setNodeAttribute(\n\t\t\t\t\t\t\t\t\tpos,\n\t\t\t\t\t\t\t\t\t'textAlign',\n\t\t\t\t\t\t\t\t\tlastRow.child(i).attrs.textAlign\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tpos += newRow.child(i).nodeSize\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t})\n\t\t\t\t\t.run()\n\t\t\t},\n\t\t\taddRowBefore: () => ({ chain, dispatch }) =>\n\t\t\t\tchain()\n\t\t\t\t\t.command(({ state }) => addRowBefore(state, dispatch))\n\t\t\t\t\t.command(({ state, tr }) => {\n\t\t\t\t\t\tconst { tableStart, table, top } = selectedRect(state)\n\t\t\t\t\t\tif (dispatch) {\n\t\t\t\t\t\t\tconst lastRow = table.child(top)\n\t\t\t\t\t\t\tconst newRow = table.child(top - 1)\n\t\t\t\t\t\t\tlet pos = tableStart + 1\n\t\t\t\t\t\t\tfor (let i = 0; i < (top - 1); i++) { pos += table.child(i).nodeSize }\n\n\t\t\t\t\t\t\tfor (let i = 0; i < lastRow.childCount; i++) {\n\t\t\t\t\t\t\t\ttr.setNodeAttribute(\n\t\t\t\t\t\t\t\t\tpos,\n\t\t\t\t\t\t\t\t\t'textAlign',\n\t\t\t\t\t\t\t\t\tlastRow.child(i).attrs.textAlign\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tpos += newRow.child(i).nodeSize\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t})\n\t\t\t\t\t.run(),\n\t\t\tinsertTable: () => ({ tr, dispatch, editor }) => {\n\t\t\t\tif (isInTable(tr)) return false\n\t\t\t\tconst node = createTable(editor.schema, 3, 3, true)\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst offset = tr.selection.anchor + 1\n\t\t\t\t\ttr.replaceSelectionWith(node)\n\t\t\t\t\t\t.scrollIntoView()\n\t\t\t\t\t\t.setSelection(TextSelection.near(tr.doc.resolve(offset)))\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t\t// move to the next node after the table from the last cell\n\t\t\tleaveTable: () => ({ tr, dispatch, editor }) => {\n\t\t\t\tif (!isInTable(tr)) return false\n\t\t\t\tconst { $head, empty } = tr.selection\n\t\t\t\tif (!empty) return false\n\t\t\t\t// the selection can temporarily be inside the table but outside of cells.\n\t\t\t\tconst tableDepth = $head.depth < 3 ? 1 : $head.depth - 2\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst $next = tr.doc.resolve($head.after(tableDepth) + 1)\n\t\t\t\t\tconst selection = TextSelection.near($next)\n\t\t\t\t\tdispatch(tr.setSelection(selection).scrollIntoView())\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t\tgoToNextRow: () => ({ tr, dispatch, editor }) => {\n\t\t\t\tif (!isInTable(tr)) return false\n\t\t\t\tconst cell = findSameCellInNextRow(selectionCell(tr))\n\t\t\t\tif (cell == null) return\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst $cell = tr.doc.resolve(cell)\n\t\t\t\t\tconst selection = TextSelection.between($cell, moveCellForward($cell))\n\t\t\t\t\tdispatch(tr.setSelection(selection).scrollIntoView())\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t}\n\t},\n\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t'div',\n\t\t\t{ class: 'table-wrapper', style: 'overflow-x: auto;' },\n\t\t\t['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0],\n\t\t]\n\t},\n\n\ttoMarkdown(state, node) {\n\t\tstate.renderContent(node)\n\t\tstate.closeBlock(node)\n\t},\n\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t...this.parent(),\n\t\t\tTab: () => this.editor.commands.goToNextCell() || this.editor.commands.leaveTable(),\n\t\t\tEnter: ({ editor }) => {\n\t\t\t\tconst { selection } = editor.state\n\t\t\t\tif (!selection.$from.parent.type.name.startsWith('table')) return false\n\n\t\t\t\tif (selection.$from.nodeBefore?.type.name === 'hardBreak') {\n\t\t\t\t\tif (editor.can().goToNextRow() || editor.can().addRowAfter()) {\n\t\t\t\t\t\t// Remove previous hard break and move to next row instead\n\t\t\t\t\t\teditor.chain()\n\t\t\t\t\t\t\t.setTextSelection({ from: selection.from - 1, to: selection.from })\n\t\t\t\t\t\t\t.deleteSelection()\n\t\t\t\t\t\t\t.run()\n\t\t\t\t\t\tif (editor.commands.goToNextRow()) return true\n\t\t\t\t\t\treturn editor.chain().addRowAfter().goToNextRow().run()\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\treturn editor.chain()\n\t\t\t\t\t\t.insertContent('
')\n\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t.run()\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n\n})\n","import Table from './Table/Table.js'\n\nexport default Table\n","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableView.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!./TableView.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableView.vue?vue&type=style&index=0&id=261cbb42&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableView.vue?vue&type=style&index=0&id=261cbb42&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TableView.vue?vue&type=template&id=261cbb42&scoped=true&\"\nimport script from \"./TableView.vue?vue&type=script&lang=js&\"\nexport * from \"./TableView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TableView.vue?vue&type=style&index=0&id=261cbb42&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"261cbb42\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{staticClass:\"table-wrapper\",attrs:{\"data-text-el\":\"table-view\"}},[(_vm.editor.isEditable)?_c('NcActions',{staticClass:\"table-settings\",attrs:{\"force-menu\":\"\",\"data-text-table-actions\":\"settings\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TableSettings')]},proxy:true}],null,false,1699550424)},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"delete\",\"close-after-click\":\"\"},on:{\"click\":_vm.deleteNode},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete')]},proxy:true}],null,false,3429380666)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Delete this table'))+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('NodeViewContent',{staticClass:\"content\",attrs:{\"as\":\"table\"}}),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableCellView.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!./TableCellView.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableCellView.vue?vue&type=style&index=0&id=3543004d&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableCellView.vue?vue&type=style&index=0&id=3543004d&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TableCellView.vue?vue&type=template&id=3543004d&scoped=true&\"\nimport script from \"./TableCellView.vue?vue&type=script&lang=js&\"\nexport * from \"./TableCellView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TableCellView.vue?vue&type=style&index=0&id=3543004d&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3543004d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{style:(_vm.textAlign),attrs:{\"data-text-el\":\"table-cell\",\"as\":\"td\"}},[_c('div',{staticClass:\"container\"},[_c('NodeViewContent',{staticClass:\"content\"}),_vm._v(\" \"),(_vm.editor.isEditable)?_c('NcActions',{attrs:{\"data-text-table-actions\":\"row\"}},[_c('NcActionButton',{attrs:{\"data-text-table-action\":\"add-row-before\",\"close-after-click\":\"\"},on:{\"click\":_vm.addRowBefore},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TableAddRowBefore')]},proxy:true}],null,false,1805502767)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add row before'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"add-row-after\",\"close-after-click\":\"\"},on:{\"click\":_vm.addRowAfter},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TableAddRowAfter')]},proxy:true}],null,false,3179199218)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add row after'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"remove-row\",\"close-after-click\":\"\"},on:{\"click\":_vm.deleteRow},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete')]},proxy:true}],null,false,3429380666)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Delete this row'))+\"\\n\\t\\t\\t\")])],1):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InlineActionsContainer.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!./InlineActionsContainer.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InlineActionsContainer.vue?vue&type=style&index=0&id=40a23119&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InlineActionsContainer.vue?vue&type=style&index=0&id=40a23119&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./InlineActionsContainer.vue?vue&type=template&id=40a23119&\"\nimport script from \"./InlineActionsContainer.vue?vue&type=script&lang=js&\"\nexport * from \"./InlineActionsContainer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InlineActionsContainer.vue?vue&type=style&index=0&id=40a23119&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{staticClass:\"inline-container-base\"},[_c('ul',{staticClass:\"inline-container-content\"},[_vm._t(\"default\")],2)])\n}\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!./TableHeaderView.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!./TableHeaderView.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableHeaderView.vue?vue&type=style&index=0&id=25a85f13&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableHeaderView.vue?vue&type=style&index=0&id=25a85f13&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TableHeaderView.vue?vue&type=template&id=25a85f13&scoped=true&\"\nimport script from \"./TableHeaderView.vue?vue&type=script&lang=js&\"\nexport * from \"./TableHeaderView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TableHeaderView.vue?vue&type=style&index=0&id=25a85f13&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25a85f13\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NodeViewWrapper',{style:(_vm.textAlign),attrs:{\"data-text-el\":\"table-header\",\"as\":\"th\"}},[_c('div',[_c('NodeViewContent',{staticClass:\"content\"}),_vm._v(\" \"),(_vm.editor.isEditable)?_c('NcActions',{ref:\"menu\",attrs:{\"data-text-table-actions\":\"header\"}},[_c('InlineActionsContainer',[_c('NcActionButton',{attrs:{\"data-text-table-action\":\"align-column-left\",\"aria-label\":_vm.t('text', 'Left align column')},on:{\"click\":_vm.alignLeft},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlignHorizontalLeft')]},proxy:true}],null,false,2968467243)}),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"align-column-center\",\"aria-label\":_vm.t('text', 'Center align column')},on:{\"click\":_vm.alignCenter},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlignHorizontalCenter')]},proxy:true}],null,false,536750267)}),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"align-column-right\",\"aria-label\":_vm.t('text', 'Right align column')},on:{\"click\":_vm.alignRight},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlignHorizontalRight')]},proxy:true}],null,false,3861151024)})],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"add-column-before\",\"close-after-click\":\"\"},on:{\"click\":_vm.addColumnBefore},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TableAddColumnBefore')]},proxy:true}],null,false,3782681875)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add column before'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"add-column-after\",\"close-after-click\":\"\"},on:{\"click\":_vm.addColumnAfter},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TableAddColumnAfter')]},proxy:true}],null,false,1608287598)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add column after'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"data-text-table-action\":\"remove-column\",\"close-after-click\":\"\"},on:{\"click\":_vm.deleteColumn},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete')]},proxy:true}],null,false,3429380666)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Delete this column'))+\"\\n\\t\\t\\t\")])],1):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Table from './Table/Table.js'\nimport TableCaption from './Table/TableCaption.js'\nimport TableCell from './Table/TableCell.js'\nimport TableHeader from './Table/TableHeader.js'\nimport TableHeadRow from './Table/TableHeadRow.js'\nimport TableRow from './Table/TableRow.js'\nimport { VueNodeViewRenderer } from '@tiptap/vue-2'\nimport TableView from './Table/TableView.vue'\nimport TableCellView from './Table/TableCellView.vue'\nimport TableHeaderView from './Table/TableHeaderView.vue'\n\n/**\n * Add the node view to the node.\n * The node views include buttons to enable editing the table.\n *\n * @param {object} node - the node to add the view to.\n * @param {object} view - the node view to add to the node.\n */\nfunction extendNodeWithView(node, view) {\n\treturn node.extend({\n\t\taddNodeView() {\n\t\t\treturn VueNodeViewRenderer(view)\n\t\t},\n\t})\n}\n\nexport default Table.extend({\n\n\taddNodeView() {\n\t\treturn VueNodeViewRenderer(TableView)\n\t},\n\n\taddExtensions() {\n\t\treturn [\n\t\t\tTableCaption,\n\t\t\textendNodeWithView(TableCell, TableCellView),\n\t\t\textendNodeWithView(TableHeader, TableHeaderView),\n\t\t\tTableHeadRow,\n\t\t\tTableRow,\n\t\t]\n\t},\n})\n","// Copied from https://github.com/atlassian/prosemirror-utils/tree/1b97ff08f1bbaea781f205744588a3dfd228b0d1/src\n\n// Iterates over parent nodes starting from the given `$pos`, returning the closest node and its start position `predicate` returns truthy for. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const predicate = node => node.type === schema.nodes.blockquote;\n// const parent = findParentNodeClosestToPos(state.doc.resolve(5), predicate);\n// ```\nexport const findParentNodeClosestToPos = ($pos, predicate) => {\n\tfor (let i = $pos.depth; i > 0; i--) {\n\t\tconst node = $pos.node(i)\n\t\tif (predicate(node)) {\n\t\t\treturn {\n\t\t\t\tpos: i > 0 ? $pos.before(i) : 0,\n\t\t\t\tstart: $pos.start(i),\n\t\t\t\tdepth: i,\n\t\t\t\tnode,\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Flattens descendants of a given `node`. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const children = flatten(node);\n// ```\nexport const flatten = (node, descend = true) => {\n\tif (!node) {\n\t\tthrow new Error('Invalid \"node\" parameter')\n\t}\n\tconst result = []\n\tnode.descendants((child, pos) => {\n\t\tresult.push({ node: child, pos })\n\t\tif (!descend) {\n\t\t\treturn false\n\t\t}\n\t})\n\treturn result\n}\n\n// Iterates over descendants of a given `node`, returning child nodes predicate returns truthy for. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const textNodes = findChildren(node, child => child.isText, false);\n// ```\nexport const findChildren = (node, predicate, descend) => {\n\tif (!node) {\n\t\tthrow new Error('Invalid \"node\" parameter')\n\t} else if (!predicate) {\n\t\tthrow new Error('Invalid \"predicate\" parameter')\n\t}\n\treturn flatten(node, descend).filter(child => predicate(child.node))\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TipTapTaskItem from '@tiptap/extension-task-item'\nimport { wrappingInputRule, mergeAttributes } from '@tiptap/core'\nimport { Plugin } from '@tiptap/pm/state'\nimport { findParentNodeClosestToPos } from './../helpers/prosemirrorUtils.js'\n\nconst TaskItem = TipTapTaskItem.extend({\n\n\taddOptions() {\n\t\treturn {\n\t\t\tnested: true,\n\t\t\tHTMLAttributes: {},\n\t\t}\n\t},\n\n\tdraggable: false,\n\n\tcontent: 'paragraph block*',\n\n\taddAttributes() {\n\t\tconst adjust = { ...this.parent() }\n\t\tadjust.checked.parseHTML = el => {\n\t\t\treturn el.querySelector('input[type=checkbox]')?.checked\n\t\t}\n\t\treturn adjust\n\t},\n\n\tparseHTML: [\n\t\t{\n\t\t\tpriority: 101,\n\t\t\ttag: 'li',\n\t\t\tgetAttrs: el => {\n\t\t\t\tconst checkbox = el.querySelector('input[type=checkbox]')\n\t\t\t\treturn checkbox\n\t\t\t},\n\t\t\tcontext: 'taskList/',\n\t\t},\n\t],\n\n\trenderHTML({ node, HTMLAttributes }) {\n\t\tconst listAttributes = { class: 'checkbox-item' }\n\t\tconst checkboxAttributes = { type: 'checkbox', class: '', contenteditable: false }\n\t\tif (node.attrs.checked) {\n\t\t\tcheckboxAttributes.checked = true\n\t\t\tlistAttributes.class += ' checked'\n\t\t}\n\t\treturn [\n\t\t\t'li',\n\t\t\tmergeAttributes(HTMLAttributes, listAttributes),\n\t\t\t[\n\t\t\t\t'input',\n\t\t\t\tcheckboxAttributes,\n\t\t\t],\n\t\t\t[\n\t\t\t\t'label',\n\t\t\t\t0,\n\t\t\t],\n\t\t]\n\t},\n\n\t// overwrite the parent node view so renderHTML gets used\n\taddNodeView: false,\n\n\ttoMarkdown: (state, node) => {\n\t\tstate.write(`[${node.attrs.checked ? 'x' : ' '}] `)\n\t\tstate.renderContent(node)\n\t},\n\n\t addInputRules() {\n\t\treturn [\n\t\t\t...this.parent(),\n\t\t\twrappingInputRule({\n\t\t\t\tfind: /^\\s*([-+*])\\s(\\[(x|X|\\s)?\\])\\s$/,\n\t\t\t\ttype: this.type,\n\t\t\t\tgetAttributes: match => ({\n\t\t\t\t\tchecked: 'xX'.includes(match[match.length - 1]),\n\t\t\t\t}),\n\t\t\t}),\n\t\t]\n\t},\n\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\thandleClick: (view, pos, event) => {\n\t\t\t\t\t\tconst state = view.state\n\t\t\t\t\t\tconst schema = state.schema\n\n\t\t\t\t\t\tconst coordinates = view.posAtCoords({ left: event.clientX, top: event.clientY })\n\t\t\t\t\t\tconst position = state.doc.resolve(coordinates.pos)\n\t\t\t\t\t\tconst parentList = findParentNodeClosestToPos(position, function(node) {\n\t\t\t\t\t\t\treturn node.type === schema.nodes.taskItem\n\t\t\t\t\t\t\t\t|| node.type === schema.nodes.listItem\n\t\t\t\t\t\t})\n\t\t\t\t\t\tconst isListClicked = event.target.tagName.toLowerCase() === 'li'\n\t\t\t\t\t\tif (!isListClicked\n\t\t\t\t\t\t\t|| !parentList\n\t\t\t\t\t\t\t|| parentList.node.type !== schema.nodes.taskItem\n\t\t\t\t\t\t || !view.editable) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst tr = state.tr\n\t\t\t\t\t\ttr.setNodeMarkup(parentList.pos, schema.nodes.taskItem, { checked: !parentList.node.attrs.checked })\n\t\t\t\t\t\tview.dispatch(tr)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n\n})\n\nexport default TaskItem\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TiptapTaskList from '@tiptap/extension-task-list'\n\nconst TaskList = TiptapTaskList.extend({\n\n\tparseHTML: [\n\t\t{\n\t\t\tpriority: 100,\n\t\t\ttag: 'ul.contains-task-list',\n\t\t},\n\t],\n\n\taddAttributes() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\tbullet: {\n\t\t\t\tdefault: '-',\n\t\t\t\trendered: false,\n\t\t\t\tisRequired: true,\n\t\t\t\tparseHTML: (el) => el.getAttribute('data-bullet'),\n\t\t\t},\n\t\t}\n\t},\n\n\ttoMarkdown: (state, node) => {\n\t\tstate.renderList(node, ' ', () => `${node.attrs.bullet} `)\n\t},\n\n})\n\nexport default TaskList\n","/*\n * @copyright Copyright (c) 2021, überdosis GbR\n *\n * @license MIT\n *\n */\n\nimport { Extension } from '@tiptap/core'\nimport { PluginKey, Plugin } from '@tiptap/pm/state'\n\n/**\n * @param {object} args Arguments as deconstructable object\n * @param {Array | object} args.types possible types\n * @param {object} args.node node to check\n */\nfunction nodeEqualsType({ types, node }) {\n\treturn (Array.isArray(types) && types.includes(node.type)) || node.type === types\n}\n\n/**\n * Extension based on:\n * - https://github.com/ueberdosis/tiptap/tree/main/demos/src/Experiments/TrailingNode\n * - https://github.com/ueberdosis/tiptap/blob/v1/packages/tiptap-extensions/src/extensions/TrailingNode.js\n * - https://github.com/remirror/remirror/blob/e0f1bec4a1e8073ce8f5500d62193e52321155b9/packages/prosemirror-trailing-node/src/trailing-node-plugin.ts\n */\n\nconst TrailingNode = Extension.create({\n\tname: 'trailingNode',\n\n\taddOptions() {\n\t\treturn {\n\t\t\tnode: 'paragraph',\n\t\t\tnotAfter: ['paragraph'],\n\t\t}\n\t},\n\n\taddProseMirrorPlugins() {\n\t\tconst plugin = new PluginKey(this.name)\n\t\tconst disabledNodes = Object.entries(this.editor.schema.nodes)\n\t\t\t.map(([, value]) => value)\n\t\t\t.filter(node => this.options.notAfter.includes(node.name))\n\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tkey: plugin,\n\t\t\t\tappendTransaction: (_, __, state) => {\n\t\t\t\t\tconst { doc, tr, schema } = state\n\t\t\t\t\tconst shouldInsertNodeAtEnd = plugin.getState(state)\n\t\t\t\t\tconst endPosition = doc.content.size\n\t\t\t\t\tconst type = schema.nodes[this.options.node]\n\n\t\t\t\t\tif (!shouldInsertNodeAtEnd) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tr.insert(endPosition, type.create())\n\t\t\t\t},\n\t\t\t\tstate: {\n\t\t\t\t\tinit: (_, state) => {\n\t\t\t\t\t\tconst lastNode = state.tr.doc.lastChild\n\t\t\t\t\t\treturn !nodeEqualsType({ node: lastNode, types: disabledNodes })\n\t\t\t\t\t},\n\t\t\t\t\tapply: (tr, value) => {\n\t\t\t\t\t\tif (!tr.docChanged) {\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst lastNode = tr.doc.lastChild\n\t\t\t\t\t\treturn !nodeEqualsType({ node: lastNode, types: disabledNodes })\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t},\n})\n\nexport default TrailingNode\n","/**\n * @copyright Copyright (c) 2020 Azul \n *\n * @author Azul \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\n\nimport { logger } from '../helpers/logger.js'\nimport markdownit from './../markdownit/index.js'\n\nconst absolutePath = function(base, rel) {\n\tif (!rel) {\n\t\treturn base\n\t}\n\tif (rel[0] === '/') {\n\t\treturn rel\n\t}\n\tbase = base.split('/')\n\trel = rel.split('/')\n\twhile (rel[0] === '..' || rel[0] === '.') {\n\t\tif (rel[0] === '..') {\n\t\t\tbase.pop()\n\t\t}\n\t\trel.shift()\n\t}\n\treturn base.concat(rel).join('/')\n}\n\nconst basedir = function(file) {\n\tconst end = file.lastIndexOf('/')\n\treturn (end > 0)\n\t\t? file.slice(0, end)\n\t\t: file.slice(0, end + 1) // basedir('/toplevel') should return '/'\n}\n\nconst domHref = function(node, relativePath) {\n\tconst ref = node.attrs.href\n\tif (!ref) {\n\t\treturn ref\n\t}\n\tif (!OCA.Viewer) {\n\t\treturn ref\n\t}\n\tif (ref.match(/^[a-zA-Z]*:/)) {\n\t\treturn ref\n\t}\n\tif (ref.startsWith('#')) {\n\t\treturn ref\n\t}\n\n\tconst match = ref.match(/^([^?]*)\\?fileId=(\\d+)/)\n\tif (match) {\n\t\tconst [, relPath, id] = match\n\t\tconst currentDir = basedir(relativePath || OCA.Viewer?.file || '/')\n\t\tconst dir = absolutePath(currentDir, basedir(relPath))\n\t\tif (relPath.length > 1 && relPath.endsWith('/')) {\n\t\t\t// is directory\n\t\t\treturn generateUrl(`/apps/files/?dir=${dir}&fileId=${id}`)\n\t\t} else {\n\t\t\treturn generateUrl(`/apps/files/?dir=${dir}&openfile=${id}#relPath=${relPath}`)\n\t\t}\n\t}\n\treturn ref\n}\n\nconst parseHref = function(dom) {\n\tconst ref = dom.getAttribute('href')\n\tif (!ref) {\n\t\treturn ref\n\t}\n\tconst match = ref.match(/\\?dir=([^&]*)&openfile=([^&]*)#relPath=([^&]*)/)\n\tif (match) {\n\t\tconst [, , id, path] = match\n\t\treturn `${path}?fileId=${id}`\n\t}\n\treturn ref\n}\n\nconst openLink = function(event, _attrs) {\n\tconst linkElement = event.target.closest('a')\n\tconst htmlHref = linkElement.href\n\tconst query = OC.parseQueryString(htmlHref)\n\tconst fragment = htmlHref.split('#').pop()\n\tconst fragmentQuery = OC.parseQueryString(fragment)\n\tif (query?.dir && fragmentQuery?.relPath) {\n\t\tconst filename = fragmentQuery.relPath.split('/').pop()\n\t\tconst path = `${query.dir}/${filename}`\n\t\tdocument.title = `${filename} - ${OC.theme.title}`\n\t\tif (window.location.pathname.match(/apps\\/files\\/$/)) {\n\t\t\t// The files app still lacks a popState handler\n\t\t\t// to allow for using the back button\n\t\t\t// OC.Util.History.pushState('', htmlHref)\n\t\t}\n\t\tOCA.Viewer.open({ path })\n\t\treturn\n\t}\n\tif (htmlHref.match(/apps\\/files\\//) && query?.fileId) {\n\t\t// open the direct file link\n\t\twindow.open(generateUrl(`/f/${query.fileId}`), '_self')\n\t\treturn\n\t}\n\tif (!markdownit.validateLink(htmlHref)) {\n\t\tlogger.error('Invalid link', { htmlHref })\n\t\treturn false\n\t}\n\tif (fragment) {\n\t\tconst el = document.getElementById(fragment)\n\t\tif (el) {\n\t\t\tel.scrollIntoView()\n\t\t\twindow.location.hash = fragment\n\t\t\treturn\n\t\t}\n\t}\n\twindow.open(htmlHref)\n\treturn true\n}\n\nexport {\n\tdomHref,\n\tparseHref,\n\topenLink,\n}\n","import { Plugin, PluginKey } from '@tiptap/pm/state'\n\nimport { logger } from '../helpers/logger.js'\n\nconst clickHandler = ({ editor, type, onClick }) => {\n\treturn new Plugin({\n\t\tprops: {\n\t\t\tkey: new PluginKey('textLink'),\n\t\t\thandleClick: (view, pos, event) => {\n\t\t\t\tconst $clicked = view.state.doc.resolve(pos)\n\t\t\t\tconst link = $clicked.marks().find(m => m.type.name === type.name)\n\t\t\t\tif (!link) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (!link.attrs.href) {\n\t\t\t\t\tlogger.warn('Could not determine href of link.')\n\t\t\t\t\tlogger.debug('Link', { link })\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// We use custom onClick handler only for left clicks\n\t\t\t\tif (event.button === 0 && !event.ctrlKey) {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\treturn onClick?.(event, link.attrs)\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t})\n}\n\nconst clickPreventer = () => {\n\treturn new Plugin({\n\t\tprops: {\n\t\t\tkey: new PluginKey('textAvoidLinkClick'),\n\t\t\thandleDOMEvents: {\n\t\t\t\tclick: (view, event) => {\n\t\t\t\t\tif (!view.editable) {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t})\n}\n\nexport { clickHandler, clickPreventer }\n","/*\n * @copyright Copyright (c) 2019 Azul \n *\n * @author Azul \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 .\n *\n */\n\nimport TipTapLink from '@tiptap/extension-link'\nimport { domHref, parseHref, openLink } from './../helpers/links.js'\nimport { clickHandler, clickPreventer } from '../plugins/link.js'\n\nconst Link = TipTapLink.extend({\n\n\taddOptions() {\n\t\treturn {\n\t\t\t...this.parent?.(),\n\t\t\tonClick: openLink,\n\t\t\trelativePath: null,\n\t\t}\n\t},\n\n\taddAttributes() {\n\t\treturn {\n\t\t\thref: {\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t}\n\t},\n\n\tinclusive: false,\n\n\tparseHTML: [\n\t\t{\n\t\t\ttag: 'a[href]',\n\t\t\tgetAttrs: dom => ({\n\t\t\t\thref: parseHref(dom),\n\t\t\t\ttitle: dom.getAttribute('title'),\n\t\t\t}),\n\t\t},\n\t],\n\n\trenderHTML(options) {\n\t\tconst { mark } = options\n\n\t\treturn ['a', {\n\t\t\t...mark.attrs,\n\t\t\thref: domHref(mark, this.options.relativePath),\n\t\t\trel: 'noopener noreferrer nofollow',\n\t\t}, 0]\n\t},\n\n\taddProseMirrorPlugins() {\n\t\tconst plugins = this.parent()\n\t\t\t// remove original handle click\n\t\t\t.filter(({ key }) => {\n\t\t\t\treturn !key.startsWith('handleClickLink')\n\t\t\t})\n\n\t\tif (!this.options.openOnClick) {\n\t\t\treturn plugins\n\t\t}\n\n\t\t// add custom click handler\n\t\treturn [\n\t\t\t...plugins,\n\t\t\tclickHandler({\n\t\t\t\teditor: this.editor,\n\t\t\t\ttype: this.type,\n\t\t\t\tonClick: this.options.onClick,\n\t\t\t}),\n\t\t\tclickPreventer(),\n\t\t]\n\t},\n})\n\nexport default Link\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TipTapStrike from '@tiptap/extension-strike'\n\nexport default TipTapStrike.extend({\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 's',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttag: 'del',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttag: 'strike',\n\t\t\t},\n\t\t\t{\n\t\t\t\tstyle: 'text-decoration',\n\t\t\t\tgetAttrs: value => value === 'line-through',\n\t\t\t},\n\t\t]\n\t},\n\n\trenderHTML() {\n\t\treturn ['s', 0]\n\t},\n\n\t/** Strike is currently unsupported by prosemirror-markdown */\n\ttoMarkdown: {\n\t\topen: '~~',\n\t\tclose: '~~',\n\t\tmixable: true,\n\t\texpelEnclosingWhitespace: true,\n\t},\n})\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { markInputRule, markPasteRule } from '@tiptap/core'\nimport { Bold, starInputRegex, starPasteRegex } from '@tiptap/extension-bold'\n\nconst Strong = Bold.extend({\n\tname: 'strong',\n\n\taddInputRules() {\n\t\treturn [\n\t\t\tmarkInputRule({\n\t\t\t\tfind: starInputRegex,\n\t\t\t\ttype: this.type,\n\t\t\t}),\n\t\t]\n\t},\n\n\taddPasteRules() {\n\t\treturn [\n\t\t\tmarkPasteRule({\n\t\t\t\tfind: starPasteRegex,\n\t\t\t\ttype: this.type,\n\t\t\t}),\n\t\t]\n\t},\n})\n\nexport default Strong\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\nimport TipTapUnderline from '@tiptap/extension-underline'\nimport { markInputRule, markPasteRule } from '@tiptap/core'\nimport { underscoreInputRegex, underscorePasteRegex } from '@tiptap/extension-bold'\n\nconst Underline = TipTapUnderline.extend({\n\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'u',\n\t\t\t},\n\t\t\t{\n\t\t\t\tstyle: 'text-decoration',\n\t\t\t\tgetAttrs: value => value === 'underline',\n\t\t\t},\n\t\t]\n\t},\n\n\trenderHTML() {\n\t\treturn ['u', 0]\n\t},\n\n\ttoMarkdown: {\n\t\topen: '__',\n\t\tclose: '__',\n\t\tmixable: true,\n\t\texpelEnclosingWhitespace: true,\n\t},\n\n\taddInputRules() {\n\t\treturn [\n\t\t\tmarkInputRule({\n\t\t\t\tfind: underscoreInputRegex,\n\t\t\t\ttype: this.type,\n\t\t\t}),\n\t\t]\n\t},\n\n\taddPasteRules() {\n\t\treturn [\n\t\t\tmarkPasteRule({\n\t\t\t\tfind: underscorePasteRegex,\n\t\t\t\ttype: this.type,\n\t\t\t}),\n\t\t]\n\t},\n\n})\n\nexport default Underline\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport TipTapItalic from '@tiptap/extension-italic'\nimport Link from './Link.js'\nimport Strike from './Strike.js'\nimport Strong from './Strong.js'\nimport Underline from './Underline.js'\n\nconst Italic = TipTapItalic.extend({\n\tname: 'em',\n})\n\nexport {\n\tStrong,\n\tItalic,\n\tStrike,\n\tLink,\n\tUnderline,\n}\n","/**\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { Extension } from '@tiptap/core'\n\n/* eslint-disable import/no-named-as-default */\nimport History from '@tiptap/extension-history'\nimport Blockquote from '@tiptap/extension-blockquote'\nimport BulletList from './../nodes/BulletList.js'\nimport Callout from './../nodes/Callouts.js'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport Code from '@tiptap/extension-code'\nimport CodeBlock from './../nodes/CodeBlock.js'\nimport Document from '@tiptap/extension-document'\nimport Dropcursor from '@tiptap/extension-dropcursor'\nimport Emoji from './Emoji.js'\nimport EmojiSuggestion from './../components/Suggestion/Emoji/suggestions.js'\nimport FrontMatter from './../nodes/FrontMatter.js'\nimport Paragraph from './../nodes/Paragraph.js'\nimport HardBreak from './../nodes/HardBreak.js'\nimport Heading from '../nodes/Heading/index.js'\nimport HorizontalRule from '@tiptap/extension-horizontal-rule'\nimport Image from './../nodes/Image.js'\nimport ImageInline from './../nodes/ImageInline.js'\nimport KeepSyntax from './KeepSyntax.js'\nimport ListItem from '@tiptap/extension-list-item'\nimport Markdown from './../extensions/Markdown.js'\nimport Mention from './../extensions/Mention.js'\nimport LinkPicker from './../extensions/LinkPicker.js'\nimport OrderedList from '@tiptap/extension-ordered-list'\nimport Placeholder from '@tiptap/extension-placeholder'\nimport Table from './../nodes/Table.js'\nimport EditableTable from './../nodes/EditableTable.js'\nimport TaskItem from './../nodes/TaskItem.js'\nimport TaskList from './../nodes/TaskList.js'\nimport Text from '@tiptap/extension-text'\nimport TrailingNode from './../nodes/TrailingNode.js'\n/* eslint-enable import/no-named-as-default */\n\nimport { Strong, Italic, Strike, Link, Underline } from './../marks/index.js'\nimport { translate as t } from '@nextcloud/l10n'\n\nexport default Extension.create({\n\tname: 'RichText',\n\n\taddOptions() {\n\t\treturn {\n\t\t\tediting: true,\n\t\t\tlink: {},\n\t\t\textensions: [],\n\t\t\tcomponent: null,\n\t\t\trelativePath: null,\n\t\t}\n\t},\n\n\taddExtensions() {\n\t\tconst defaultExtensions = [\n\t\t\tthis.options.editing ? Markdown : null,\n\t\t\tDocument,\n\t\t\tText,\n\t\t\tParagraph,\n\t\t\tHardBreak,\n\t\t\tHeading,\n\t\t\tStrong,\n\t\t\tItalic,\n\t\t\tStrike,\n\t\t\tBlockquote,\n\t\t\tCharacterCount,\n\t\t\tCode,\n\t\t\tCodeBlock,\n\t\t\tBulletList,\n\t\t\tHorizontalRule,\n\t\t\tOrderedList,\n\t\t\tListItem,\n\t\t\tthis.options.editing ? EditableTable : Table,\n\t\t\tTaskList,\n\t\t\tTaskItem,\n\t\t\tCallout,\n\t\t\tUnderline,\n\t\t\tImage,\n\t\t\tImageInline,\n\t\t\tDropcursor,\n\t\t\tKeepSyntax,\n\t\t\tFrontMatter,\n\t\t\tMention,\n\t\t\tHistory,\n\t\t\tEmoji.configure({\n\t\t\t\tsuggestion: EmojiSuggestion(),\n\t\t\t}),\n\t\t\tLinkPicker,\n\t\t\tthis.options.editing\n\t\t\t\t? Placeholder.configure({\n\t\t\t\t\temptyNodeClass: 'is-empty',\n\t\t\t\t\tplaceholder: t('text', 'Add notes, lists or links …'),\n\t\t\t\t\tshowOnlyWhenEditable: true,\n\t\t\t\t})\n\t\t\t\t: null,\n\t\t\tTrailingNode,\n\t\t]\n\t\tif (this.options.link !== false) {\n\t\t\tdefaultExtensions.push(Link.configure({\n\t\t\t\t...this.options.link,\n\t\t\t\topenOnClick: true,\n\t\t\t\tvalidate: href => /^https?:\\/\\//.test(href),\n\t\t\t\trelativePath: this.options.relativePath,\n\t\t\t}))\n\t\t}\n\t\tconst additionalExtensionNames = this.options.extensions.map(e => e.name)\n\t\treturn [\n\t\t\t...defaultExtensions.filter(e => e && !additionalExtensionNames.includes(e.name)),\n\t\t\t...this.options.extensions,\n\t\t]\n\t},\n\n})\n","/*\n * @copyright Copyright (c) 2022 Julius Härtl \n *\n * @author Julius Härtl \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 .\n */\n\nimport { emojiSearch } from '@nextcloud/vue'\nimport createSuggestions from '../suggestions.js'\nimport EmojiList from './EmojiList.vue'\n\nexport default () => createSuggestions({\n\tlistComponent: EmojiList,\n\titems: ({ query }) => {\n\t\treturn emojiSearch(query)\n\t},\n\tcommand: ({ editor, range, props }) => {\n\t\teditor\n\t\t\t.chain()\n\t\t\t.focus()\n\t\t\t.insertContentAt(range, props.native + ' ')\n\t\t\t.run()\n\t},\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate },attrs:{\"id\":\"rich-workspace\"}},[(_vm.file)?_c('Editor',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.path,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus,\"autohide\":_vm.autohide,\"active\":\"\",\"rich-workspace\":\"\"},on:{\"ready\":function($event){_vm.ready=true},\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=3d44b5a3&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=3d44b5a3&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=3d44b5a3&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=3d44b5a3&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d44b5a3\",\n null\n \n)\n\nexport default component.exports","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport { openMimetypes } from './mime.js'\nimport { getSharingToken } from './token.js'\nimport RichWorkspace from '../views/RichWorkspace.vue'\nimport { imagePath } from '@nextcloud/router'\nimport store from '../store/index.js'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst optimalPath = function(from, to) {\n\tconst current = from.split('/')\n\tconst target = to.split('/')\n\tcurrent.pop() // ignore filename\n\twhile (current[0] === target[0]) {\n\t\tcurrent.shift()\n\t\ttarget.shift()\n\t\t// Handle case where target is the current directory\n\t\tif (current.length === 0 && target.length === 0) {\n\t\t\treturn '.'\n\t\t}\n\t}\n\tconst relativePath = current.fill('..').concat(target)\n\tconst absolutePath = to.split('/')\n\treturn relativePath.length < absolutePath.length\n\t\t? relativePath.join('/')\n\t\t: to\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(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 file'),\n\t\t\t\ttemplateName: t('text', 'New text file') + '.' + loadState('text', 'default_file_extension'),\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: t('text', 'Create new text file'),\n\t\t\t\tactionHandler(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 = getSharingToken()\n\tconst filesTable = document.querySelector('#preview table.files-filestable')\n\tif (!sharingToken || !filesTable) {\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\timagePath('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.vue'),\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: function(h) { // eslint-disable-line\n\t\t\t\t\t\t\tconst self = this\n\t\t\t\t\t\t\treturn h(Editor, {\n\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\t\tmimeType: file.mimetype,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\tclose: function() { // eslint-disable-line\n\t\t\t\t\t\t\t\t\t\tself.$destroy()\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\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 newRichWorkspaceFileMenuPlugin = {\n\tattach(menu) {\n\t\tconst fileList = menu.fileList\n\t\tconst descriptionFile = t('text', 'Readme') + '.' + loadState('text', 'default_file_extension')\n\t\t// only attach to main file list, public view is not supported yet\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\t// register the new menu entry\n\t\tmenu.addMenuEntry({\n\t\t\tid: 'rich-workspace-init',\n\t\t\tdisplayName: t('text', 'Add description'),\n\t\t\ttemplateName: descriptionFile,\n\t\t\ticonClass: 'icon-rename',\n\t\t\tfileType: 'file',\n\t\t\tuseInput: false,\n\t\t\tactionHandler() {\n\t\t\t\treturn window.FileList\n\t\t\t\t\t.createFile(descriptionFile, { scrollTo: false, animate: false })\n\t\t\t\t\t.then(() => emit('Text::showRichWorkspace', { autofocus: true }))\n\t\t\t},\n\t\t\tshouldShow() {\n\t\t\t\treturn !fileList.findFile(descriptionFile)\n\t\t\t},\n\t\t})\n\t},\n}\n\nconst addMenuRichWorkspace = () => {\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newRichWorkspaceFileMenuPlugin)\n}\n\nconst FilesWorkspacePlugin = {\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\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(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\t\taddMenuRichWorkspace()\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\tstore,\n\t\t\t}).$mount(this.el)\n\t\t\tsubscribe('files:navigation:changed', () => {\n\t\t\t\t// Expose if the default file list is active to the component\n\t\t\t\t// to only render the workspace if the file list is actually visible\n\t\t\t\tvm.active = OCA.Files.App.getCurrentFileList() === fileList\n\t\t\t})\n\t\t\tfileList.$el.on('urlChanged', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\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\toptimalPath,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","import { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('text')\n\t.detectUser()\n\t.build()\n\nexport {\n\tlogger,\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nconst mimetypesImages = [\n\t'image/png',\n\t'image/jpeg',\n\t'image/jpg',\n\t'image/gif',\n\t'image/x-xbitmap',\n\t'image/x-ms-bmp',\n\t'image/bmp',\n\t'image/svg+xml',\n\t'image/webp',\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/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/asciidoc',\n\t'text/css',\n\t'text/html',\n\t'text/org',\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\nif (!window.oc_appswebroots?.richdocuments && !window.oc_appswebroots?.onlyoffice) {\n\topenMimetypesPlainText.push('text/csv')\n}\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\tmimetypesImages,\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","const getSharingToken = () => document.getElementById('sharingToken')\n\t? document.getElementById('sharingToken').value\n\t: null\n\nexport { getSharingToken }\n","/*\n * @copyright Copyright (c) 2022 Vinicius Reis \n *\n * @author Vinicius Reis \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 .\n *\n */\n\nimport container from 'markdown-it-container'\n\nexport const typesAvailable = ['info', 'warn', 'error', 'success']\n\nconst buildRender = type => (tokens, idx, options, env, slf) => {\n\tconst tag = tokens[idx]\n\n\t// add attributes to the opening tag\n\tif (tag.nesting === 1) {\n\t\ttag.attrSet('data-callout', type)\n\t\ttag.attrJoin('class', `callout callout-${type}`)\n\t}\n\n\treturn slf.renderToken(tokens, idx, options, env, slf)\n}\n\n/**\n * @param {object} md Markdown object\n */\nexport default (md) => {\n\t// create a custom container to each callout type\n\ttypesAvailable.forEach(type => {\n\t\tmd.use(container, type, {\n\t\t\trender: buildRender(type),\n\t\t})\n\t})\n\n\treturn md\n}\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\n/**\n * @param {import('markdown-it')} md Markdown object\n */\nexport default function splitMixedLists(md) {\n\tmd.core.ruler.after('task-lists', 'split-mixed-task-lists', state => {\n\t\tconst tokens = state.tokens\n\n\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\tconst token = tokens[i]\n\t\t\tif (!includesClass(token, 'contains-task-list')) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst firstChild = tokens[i + 1]\n\t\t\tconst startsWithTask = includesClass(firstChild, 'task-list-item')\n\t\t\tif (!startsWithTask) {\n\t\t\t\ttoken.attrs.splice(token.attrIndex('class'))\n\t\t\t\tif (token.attrs.length === 0) {\n\t\t\t\t\ttoken.attrs = null\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst splitBefore = findChildOf(tokens, i, child => {\n\t\t\t\treturn child.nesting === 1\n\t\t\t\t\t&& includesClass(child, 'task-list-item') !== startsWithTask\n\t\t\t})\n\t\t\tif (splitBefore > i) {\n\t\t\t\tsplitListAt(tokens, splitBefore, state.Token)\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t})\n}\n\n/**\n * @param {object} token MarkdownIT token\n * @param {string} cls Class name to query\n */\nfunction includesClass(token, cls) {\n\treturn token.attrGet('class')?.split(' ').includes(cls) || false\n}\n\n/**\n * @param {Array} tokens - all the tokens in the doc\n * @param {number} index - index into the tokens array where to split\n * @param {object} TokenConstructor - constructor provided by Markdown-it\n */\nfunction splitListAt(tokens, index, TokenConstructor) {\n\tconst closeList = new TokenConstructor('bullet_list_close', 'ul', -1)\n\tcloseList.block = true\n\tconst openList = new TokenConstructor('bullet_list_open', 'ul', 1)\n\topenList.attrSet('class', 'contains-task-list')\n\topenList.block = true\n\topenList.markup = tokens[index].markup\n\ttokens.splice(index, 0, closeList, openList)\n}\n\n/**\n * @param {Array} tokens - all the tokens in the doc\n * @param {number} parentIndex - index of the parent in the tokens array\n * @param {Function} predicate - test function returned child needs to pass\n */\nfunction findChildOf(tokens, parentIndex, predicate) {\n\tconst searchLevel = tokens[parentIndex].level + 1\n\tfor (let i = parentIndex + 1; i < tokens.length; i++) {\n\t\tconst token = tokens[i]\n\t\tif (token.level < searchLevel) {\n\t\t\treturn -1\n\t\t}\n\t\tif ((token.level === searchLevel) && predicate(tokens[i])) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n","import MarkdownIt from 'markdown-it'\nimport taskLists from '@hedgedoc/markdown-it-task-lists'\nimport markdownitMentions from '@quartzy/markdown-it-mentions'\nimport underline from './underline.js'\nimport splitMixedLists from './splitMixedLists.js'\nimport callouts from './callouts.js'\nimport hardbreak from './hardbreak.js'\nimport keepSyntax from './keepSyntax.js'\nimport frontMatter from 'markdown-it-front-matter'\nimport implicitFigures from 'markdown-it-image-figures'\nimport { escapeHtml } from 'markdown-it/lib/common/utils.js'\n\nconst markdownit = MarkdownIt('commonmark', { html: false, breaks: false })\n\t.enable('strikethrough')\n\t.enable('table')\n\t.use(taskLists, { enable: true, labelAfter: true })\n\t.use(frontMatter, (fm) => {})\n\t.use(splitMixedLists)\n\t.use(underline)\n\t.use(hardbreak)\n\t.use(callouts)\n\t.use(keepSyntax)\n\t.use(markdownitMentions)\n\t.use(implicitFigures)\n\n// Render front matter tokens\nmarkdownit.renderer.rules.front_matter = (tokens, idx, options) => `
${escapeHtml(tokens[idx].meta)}
`\n\n// Render lists with bullet attribute\nmarkdownit.renderer.rules.bullet_list_open = (tokens, idx, options) => {\n\ttokens[idx].attrs = [\n\t\t...(tokens[idx].attrs || []),\n\t\t['data-bullet', tokens[idx].markup],\n\t]\n\treturn markdownit.renderer.renderToken(tokens, idx, options)\n}\n\nexport default markdownit\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\n/**\n * @param {object} md Markdown object\n */\nexport default function markdownUnderlines(md) {\n\tmd.inline.ruler2.after('emphasis', 'underline', state => {\n\t\tconst tokens = state.tokens\n\n\t\tfor (let i = tokens.length - 1; i > 0; i--) {\n\t\t\tconst token = tokens[i]\n\n\t\t\tif (token.markup === '__') {\n\t\t\t\tif (token.type === 'strong_open') {\n\t\t\t\t\ttokens[i].tag = 'u'\n\t\t\t\t\ttokens[i].type = 'u_open'\n\t\t\t\t}\n\t\t\t\tif (token.type === 'strong_close') {\n\t\t\t\t\ttokens[i].tag = 'u'\n\t\t\t\t\ttokens[i].type = 'u_close'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t})\n}\n","/**\n * @copyright Copyright (c) 2022\n *\n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport markdownitNewline from 'markdown-it/lib/rules_inline/newline.js'\nimport markdownitEscape from 'markdown-it/lib/rules_inline/escape.js'\n\n/**\n * Add information about used markdown syntax to HTML hard breaks\n *\n * @param {import('markdown-it')} md Markdown object\n */\nexport default function keepHardbreakSyntax(md) {\n\t// Add syntax information to hard line breaks using double spaces\n\tmd.inline.ruler.at('newline', (state, silent) => {\n\t\tconst rval = markdownitNewline(state, silent)\n\t\tif (rval && state.tokens.length && state.tokens[state.tokens.length - 1].type === 'hardbreak') state.tokens[state.tokens.length - 1].attrSet('syntax', ' ')\n\t\treturn rval\n\t})\n\n\t// Add syntax information to hard line breaks using a backslash\n\tmd.inline.ruler.at('escape', (state, silent) => {\n\t\tconst rval = markdownitEscape(state, silent)\n\t\tif (rval && state.tokens.length && state.tokens[state.tokens.length - 1].type === 'hardbreak') state.tokens[state.tokens.length - 1].attrSet('syntax', '\\\\')\n\t\treturn rval\n\t})\n\n\t// Add rule for parsing `
` tags (as we have HTML disabled)\n\tmd.inline.ruler.after('html_inline', 'html_breaks', (state) => {\n\t\tconst res = state.src.slice(state.pos).match(/^\\s*/)\n\n\t\tif (res) {\n\t\t\tconst token = state.push('hardbreak', 'br', 0)\n\t\t\ttoken.attrPush(['syntax', 'html'])\n\t\t\tstate.pos += res[0].length\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\n\t// Adds syntax attribute to `
` and fixes issue #3370 (no additional newline after `
`)\n\tmd.renderer.rules.hardbreak = (tokens, idx, options) => `
`\n}\n","/**\n * @copyright Copyright (c) 2022\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n/**\n * Add a mark for keeping special markdown syntax unescaped\n *\n * @param {object} md Markdown object\n */\nexport default function keepSyntax(md) {\n\t// Extracting named groups as positive lookbehind patterns are not supported by Safari\n\tconst escaped = /(\\n(?[#\\-*+>])|(?[`*\\\\~[\\]]+))/\n\n\tmd.core.ruler.before('text_join', 'tag-markdown-syntax', state => {\n\t\tconst open = new state.Token('keep_md_open', 'span', 1)\n\t\topen.attrSet('class', 'keep-md')\n\t\tconst close = new state.Token('keep_md_close', 'span', -1)\n\n\t\tfor (let i = 0; i < state.tokens.length; i++) {\n\t\t\tconst block = state.tokens[i]\n\t\t\tif (block.type !== 'inline') continue\n\n\t\t\tfor (let j = 0; j < block.children.length; j++) {\n\t\t\t\tconst token = block.children[j]\n\t\t\t\tif (token.type === 'text') {\n\t\t\t\t\tconst match = escaped.exec(token.content)\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst index = match.groups.linestart ? match.index + 1 : match.index\n\t\t\t\t\t\tconst matchChars = match.groups.linestart ?? match.groups.special\n\t\t\t\t\t\tconst contentNext = index + matchChars.length\n\t\t\t\t\t\tblock.children.splice(j, 1,\n\t\t\t\t\t\t\tObject.assign({}, token, { content: token.content.slice(0, index) }),\n\t\t\t\t\t\t\tObject.assign({}, open),\n\t\t\t\t\t\t\tObject.assign({}, token, { content: token.content.slice(index, contentNext) }),\n\t\t\t\t\t\t\tObject.assign({}, close),\n\t\t\t\t\t\t\tObject.assign({}, token, { content: token.content.slice(contentNext) })\n\t\t\t\t\t\t)\n\t\t\t\t\t\tj += 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t})\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport store, { textModule } from '../store/index.js'\n\n/**\n * This mixin is required since we cannot be sure that the root Vue instance has\n * registered the global store. This might be the case if the text app components\n * are mounted in other apps e.g. viewer\n */\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\t$store: store,\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tif (typeof this.$store === 'undefined') {\n\t\t\t// Store is undefined, e.g. when used through `viewer.js`\n\t\t\tthis.$store = store\n\t\t} else if (!this.$store.hasModule('text')) {\n\t\t\t// Store lacks text modul (another store exists), e.g. when used as component via NPM package\n\t\t\tthis.$store.registerModule('text', textModule)\n\t\t}\n\t},\n}\n","/**\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nclass SessionApi {\n\n\t#options\n\n\tconstructor(options = {}) {\n\t\tthis.#options = options\n\t}\n\n\topen({ fileId }) {\n\t\treturn axios.put(this.#url('session/create'), {\n\t\t\tfileId,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\ttoken: this.#options.shareToken,\n\t\t\tguestName: this.#options.guestName,\n\t\t\tforceRecreate: this.#options.forceRecreate,\n\t\t}).then(response => new Connection(response, this.#options))\n\t}\n\n\t#url(endpoint) {\n\t\tconst isPublic = !!this.#options.shareToken\n\t\treturn _endpointUrl(endpoint, isPublic)\n\t}\n\n}\n\nexport class Connection {\n\n\t#content\n\t#documentState\n\t#document\n\t#session\n\t#lock\n\t#readOnly\n\t#options\n\n\tconstructor(response, options) {\n\t\tconst { document, session, lock, readOnly, content, documentState } = response.data\n\t\tthis.#document = document\n\t\tthis.#session = session\n\t\tthis.#lock = lock\n\t\tthis.#readOnly = readOnly\n\t\tthis.#content = content\n\t\tthis.#documentState = documentState\n\t\tthis.#options = options\n\t}\n\n\tget session() {\n\t\treturn this.#session\n\t}\n\n\tget document() {\n\t\treturn this.#document\n\t}\n\n\tget docStateVersion() {\n\t\treturn this.#documentState ? this.#document.lastSavedVersion : 0\n\t}\n\n\tget state() {\n\t\treturn {\n\t\t\tdocument: { ...this.#document, readOnly: this.#readOnly },\n\t\t\tsession: this.#session,\n\t\t\tdocumentSource: this.#content || '',\n\t\t\tdocumentState: this.#documentState,\n\t\t}\n\t}\n\n\tget #defaultParams() {\n\t\treturn {\n\t\t\tdocumentId: this.#document.id,\n\t\t\tsessionId: this.#session.id,\n\t\t\tsessionToken: this.#session.token,\n\t\t\ttoken: this.#options.shareToken,\n\t\t}\n\t}\n\n\tsync({ version, autosaveContent, documentState, force, manualSave }) {\n\t\treturn axios.post(this.#url('session/sync'), {\n\t\t\t...this.#defaultParams,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\tversion,\n\t\t\tautosaveContent,\n\t\t\tdocumentState,\n\t\t\tforce,\n\t\t\tmanualSave,\n\t\t})\n\t}\n\n\tpush({ steps, version, awareness }) {\n\t\treturn axios.post(this.#url('session/push'), {\n\t\t\t...this.#defaultParams,\n\t\t\tfilePath: this.#options.filePath,\n\t\t\tsteps,\n\t\t\tversion,\n\t\t\tawareness,\n\t\t})\n\t}\n\n\t// TODO: maybe return a new connection here so connections have immutable state\n\tupdate(guestName) {\n\t\treturn axios.post(this.#url('session'), {\n\t\t\t...this.#defaultParams,\n\t\t\tguestName,\n\t\t}).then(({ data }) => {\n\t\t\tthis.#session = data\n\t\t})\n\t}\n\n\tuploadAttachment(file) {\n\t\tconst formData = new FormData()\n\t\tformData.append('file', file)\n\t\tconst url = _endpointUrl('attachment/upload')\n\t\t\t+ '?documentId=' + encodeURIComponent(this.#document.id)\n\t\t\t+ '&sessionId=' + encodeURIComponent(this.#session.id)\n\t\t\t+ '&sessionToken=' + encodeURIComponent(this.#session.token)\n\t\t\t+ '&shareToken=' + encodeURIComponent(this.#options.shareToken || '')\n\t\treturn axios.post(url, formData, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'multipart/form-data',\n\t\t\t},\n\t\t})\n\t}\n\n\tinsertAttachmentFile(filePath) {\n\t\treturn axios.post(_endpointUrl('attachment/filepath'), {\n\t\t\tdocumentId: this.#document.id,\n\t\t\tsessionId: this.#session.id,\n\t\t\tsessionToken: this.#session.token,\n\t\t\tfilePath,\n\t\t})\n\t}\n\n\tclose() {\n\t\treturn axios.post(this.#url('session/close'), this.#defaultParams)\n\t}\n\n\t#url(endpoint) {\n\t\tconst isPublic = !!this.#defaultParams.token\n\t\treturn _endpointUrl(endpoint, isPublic)\n\t}\n\n}\n\n/**\n *\n * @param {string} endpoint - endpoint of the url inside apps/text\n * @param {boolean} isPublic - public url or not\n */\nfunction _endpointUrl(endpoint, isPublic = false) {\n\tconst _baseUrl = generateUrl('/apps/text')\n\tif (isPublic) {\n\t\treturn `${_baseUrl}/public/${endpoint}`\n\t}\n\treturn `${_baseUrl}/${endpoint}`\n}\n\nexport default SessionApi\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { logger } from '../helpers/logger.js'\nimport { SyncService, ERROR_TYPE } from './SyncService.js'\nimport { Connection } from './SessionApi.js'\n\n/**\n * Minimum inverval to refetch the document changes\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL = 300\n\n/**\n * Maximum interval between refetches of document state if multiple users have joined\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_MAX = 5000\n\n/**\n * Interval to check for changes when there is only one user joined\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_SINGLE_EDITOR = 5000\n\n/**\n * Interval to fetch for changes when a browser window is considered invisible by the\n * page visibility API https://developer.mozilla.org/de/docs/Web/API/Page_Visibility_API\n *\n * @type {number} time in ms\n */\nconst FETCH_INTERVAL_INVISIBLE = 60000\n\n/* Maximum number of retries for fetching before emitting a connection error */\nconst MAX_RETRY_FETCH_COUNT = 5\n\n/**\n * Timeout for sessions to be marked as disconnected\n * Make sure that this is higher than any FETCH_INTERVAL_ values\n */\nconst COLLABORATOR_DISCONNECT_TIME = FETCH_INTERVAL_INVISIBLE * 1.5\n\nclass PollingBackend {\n\n\t/** @type {SyncService} */\n\t#syncService\n\t/** @type {Connection} */\n\t#connection\n\n\t#lastPoll\n\t#fetchInterval\n\t#fetchRetryCounter\n\t#pollActive\n\t#initialLoadingFinished\n\n\tconstructor(syncService, connection) {\n\t\tthis.#syncService = syncService\n\t\tthis.#connection = connection\n\t\tthis.#fetchInterval = FETCH_INTERVAL\n\t\tthis.#fetchRetryCounter = 0\n\t\tthis.#lastPoll = 0\n\t}\n\n\tconnect() {\n\t\tif (this.fetcher > 0) {\n\t\t\tconsole.error('Trying to connect, but already connected')\n\t\t\treturn\n\t\t}\n\t\tthis.#initialLoadingFinished = false\n\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), 50)\n\t\tdocument.addEventListener('visibilitychange', this.visibilitychange.bind(this))\n\t}\n\n\t/**\n\t * This method is only called though the timer\n\t */\n\tasync _fetchSteps() {\n\t\tif (this.#pollActive) {\n\t\t\treturn\n\t\t}\n\n\t\tconst now = Date.now()\n\n\t\tif (this.#lastPoll > (now - this.#fetchInterval)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.fetcher) {\n\t\t\tconsole.error('No inverval but triggered')\n\t\t\treturn\n\t\t}\n\n\t\tthis.#pollActive = true\n\n\t\tlogger.debug('[PollingBackend] Fetching steps', this.#syncService.version)\n\t\tawait this.#connection.sync({\n\t\t\tversion: this.#syncService.version,\n\t\t\tforce: false,\n\t\t\tmanualSave: false,\n\t\t}).then(this._handleResponse.bind(this), this._handleError.bind(this))\n\t\tthis.#lastPoll = Date.now()\n\t\tthis.#pollActive = false\n\t}\n\n\t_handleResponse({ data }) {\n\t\tconst { document, sessions } = data\n\t\tthis.#fetchRetryCounter = 0\n\n\t\tthis.#syncService.emit('change', { document, sessions })\n\t\tthis.#syncService._receiveSteps(data)\n\n\t\tif (data.steps.length === 0) {\n\t\t\tif (!this.#initialLoadingFinished) {\n\t\t\t\tthis.#initialLoadingFinished = true\n\t\t\t}\n\t\t\tif (this.#syncService.checkIdle()) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst disconnect = Date.now() - COLLABORATOR_DISCONNECT_TIME\n\t\t\tconst alive = sessions.filter((s) => s.lastContact * 1000 > disconnect)\n\t\t\tif (alive.length < 2) {\n\t\t\t\tthis.maximumRefetchTimer()\n\t\t\t} else {\n\t\t\t\tthis.increaseRefetchTimer()\n\t\t\t}\n\t\t\tthis.#syncService.emit('stateChange', { initialLoading: true })\n\t\t\treturn\n\t\t}\n\n\t\tif (this.#initialLoadingFinished) {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n\t_handleError(e) {\n\t\tif (!e.response || e.code === 'ECONNABORTED') {\n\t\t\tif (this.#fetchRetryCounter++ >= MAX_RETRY_FETCH_COUNT) {\n\t\t\t\tlogger.error('[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED')\n\t\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: { retry: false } })\n\n\t\t\t} else {\n\t\t\t\tlogger.error(`[PollingBackend:fetchSteps] Network error when fetching steps, retry ${this.#fetchRetryCounter}`)\n\t\t\t}\n\t\t} else if (e.response.status === 409) {\n\t\t\t// Still apply the steps to update our version of the document\n\t\t\tthis._handleResponse(e.response)\n\t\t\tlogger.error('Conflict during file save, please resolve')\n\t\t\tthis.#syncService.emit('error', {\n\t\t\t\ttype: ERROR_TYPE.SAVE_COLLISSION,\n\t\t\t\tdata: {\n\t\t\t\t\toutsideChange: e.response.data.outsideChange,\n\t\t\t\t},\n\t\t\t})\n\t\t} else if (e.response.status === 403) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 404) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 503) {\n\t\t\tthis.increaseRefetchTimer()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: { retry: false } })\n\t\t\tlogger.error('Failed to fetch steps due to unavailable service', { error: e })\n\t\t} else {\n\t\t\tthis.disconnect()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: { retry: false } })\n\t\t\tlogger.error('Failed to fetch steps due to other reason', { error: e })\n\t\t}\n\n\t}\n\n\tdisconnect() {\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = 0\n\t\tdocument.removeEventListener('visibilitychange', this.visibilitychange.bind(this))\n\t}\n\n\tresetRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL\n\n\t}\n\n\tincreaseRefetchTimer() {\n\t\tthis.#fetchInterval = Math.min(this.#fetchInterval * 2, FETCH_INTERVAL_MAX)\n\t}\n\n\tmaximumRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL_SINGLE_EDITOR\n\t}\n\n\tvisibilitychange() {\n\t\tif (document.visibilityState === 'hidden') {\n\t\t\tthis.#fetchInterval = FETCH_INTERVAL_INVISIBLE\n\t\t} else {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n}\n\nexport default PollingBackend\n","/* eslint-disable jsdoc/valid-types */\n/**\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport mitt from 'mitt'\nimport debounce from 'debounce'\n\nimport PollingBackend from './PollingBackend.js'\nimport SessionApi, { Connection } from './SessionApi.js'\nimport { logger } from '../helpers/logger.js'\n\n/**\n * Timeout after which the editor will consider a document without changes being synced as idle\n * The session will be terminated and the document will stay open in read-only mode with a button to reconnect if needed\n *\n * @type {number}\n */\nconst IDLE_TIMEOUT = 1440\n\n/**\n * Interval to save the serialized document and the document state\n *\n * @type {number} time in ms\n */\nconst AUTOSAVE_INTERVAL = 30000\n\nconst COLLABORATOR_IDLE_TIME = 60\n\nconst COLLABORATOR_DISCONNECT_TIME = 90\n\nconst ERROR_TYPE = {\n\t/**\n\t * Failed to save collaborative document due to external change\n\t * collission needs to be resolved manually\n\t */\n\tSAVE_COLLISSION: 0,\n\t/**\n\t * Failed to push changes for MAX_REBASE_RETRY times\n\t */\n\tPUSH_FAILURE: 1,\n\n\tLOAD_ERROR: 2,\n\n\tCONNECTION_FAILED: 3,\n\n\tSOURCE_NOT_FOUND: 4,\n}\n\nclass SyncService {\n\n\tconstructor({ serialize, getDocumentState, ...options }) {\n\t\t/** @type {import('mitt').Emitter} _bus */\n\t\tthis._bus = mitt()\n\n\t\tthis.serialize = serialize\n\t\tthis.getDocumentState = getDocumentState\n\t\tthis._api = new SessionApi(options)\n\t\tthis.connection = null\n\n\t\tthis.sessions = []\n\n\t\tthis.steps = []\n\t\tthis.stepClientIDs = []\n\n\t\tthis.lastStepPush = Date.now()\n\n\t\tthis.version = null\n\t\tthis.sending = false\n\n\t\tthis.autosave = debounce(this._autosave.bind(this), AUTOSAVE_INTERVAL)\n\n\t\treturn this\n\t}\n\n\tasync open({ fileId, initialSession }) {\n\t\tconst onChange = ({ sessions }) => {\n\t\t\tthis.sessions = sessions\n\t\t}\n\t\tthis.on('change', onChange)\n\n\t\tconst connect = initialSession\n\t\t\t? Promise.resolve(new Connection({ data: initialSession }, {}))\n\t\t\t: this._api.open({ fileId })\n\t\t\t\t.catch(error => this._emitError(error))\n\n\t\tthis.connection = await connect\n\t\tif (!this.connection) {\n\t\t\tthis.off('change', onChange)\n\t\t\t// Error was already emitted in connect\n\t\t\treturn\n\t\t}\n\t\tthis.backend = new PollingBackend(this, this.connection)\n\t\tthis.version = this.connection.docStateVersion\n\t\tthis.emit('opened', {\n\t\t\t...this.connection.state,\n\t\t\tversion: this.version,\n\t\t})\n\t\tthis.emit('loaded', {\n\t\t\t...this.connection.state,\n\t\t\tversion: this.version,\n\t\t})\n\t}\n\n\tstartSync() {\n\t\tthis.backend.connect()\n\t}\n\n\tsyncUp() {\n\t\tthis.backend.resetRefetchTimer()\n\t}\n\n\t_emitError(error) {\n\t\tif (!error.response || error.code === 'ECONNABORTED') {\n\t\t\tthis.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t} else {\n\t\t\tthis.emit('error', { type: ERROR_TYPE.LOAD_ERROR, data: error.response })\n\t\t}\n\t}\n\n\tupdateSession(guestName) {\n\t\tif (!this.connection.isPublic) {\n\t\t\treturn\n\t\t}\n\t\treturn this.connection.update(guestName)\n\t\t\t.catch((error) => {\n\t\t\t\tlogger.error('Failed to update the session', { error })\n\t\t\t\treturn Promise.reject(error)\n\t\t\t})\n\t}\n\n\tsendSteps(getSendable) {\n\t\tif (!this.connection || this.sending) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.sendSteps(getSendable)\n\t\t\t}, 200)\n\t\t\treturn\n\t\t}\n\t\tthis.sending = true\n\t\tconst data = getSendable()\n\t\tif (data.steps.length > 0) {\n\t\t\tthis.emit('stateChange', { dirty: true })\n\t\t}\n\t\treturn this.connection.push(data)\n\t\t\t.then((response) => {\n\t\t\t\tthis.sending = false\n\t\t\t}).catch(({ response, code }) => {\n\t\t\t\tlogger.error('failed to apply steps due to collission, retrying')\n\t\t\t\tthis.sending = false\n\t\t\t\tif (!response || code === 'ECONNABORTED') {\n\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst { status, data } = response\n\t\t\t\tif (status === 403) {\n\t\t\t\t\tif (!data.document) {\n\t\t\t\t\t\t// either the session is invalid or the document is read only.\n\t\t\t\t\t\tlogger.error('failed to write to document - not allowed')\n\t\t\t\t\t}\n\t\t\t\t\t// Only emit conflict event if we have synced until the latest version\n\t\t\t\t\tif (data.document?.currentVersion === this.version) {\n\t\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.PUSH_FAILURE, data: {} })\n\t\t\t\t\t\tOC.Notification.showTemporary('Changes could not be sent yet')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// TODO: Retry and warn\n\t\t\t})\n\t}\n\n\t_receiveSteps({ steps, document, sessions }) {\n\t\tconst awareness = sessions\n\t\t\t.filter(s => s.lastContact > (Math.floor(Date.now() / 1000) - COLLABORATOR_DISCONNECT_TIME))\n\t\t\t.filter(s => s.lastAwarenessMessage)\n\t\t\t.map(s => {\n\t\t\t\treturn { step: s.lastAwarenessMessage, clientId: s.clientId }\n\t\t\t})\n\t\tconst newSteps = awareness\n\t\tthis.steps = [...this.steps, ...awareness.map(s => s.step)]\n\t\tfor (let i = 0; i < steps.length; i++) {\n\t\t\tconst singleSteps = steps[i].data\n\t\t\tif (this.version < steps[i].version) {\n\t\t\t\tthis.version = steps[i].version\n\t\t\t}\n\t\t\tif (!Array.isArray(singleSteps)) {\n\t\t\t\tlogger.error('Invalid step data, skipping step', { step: steps[i] })\n\t\t\t\t// TODO: recover\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsingleSteps.forEach(step => {\n\t\t\t\tthis.steps.push(step)\n\t\t\t\tnewSteps.push({\n\t\t\t\t\tstep,\n\t\t\t\t\tclientID: steps[i].sessionId,\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tthis.lastStepPush = Date.now()\n\t\tthis.emit('sync', {\n\t\t\tsteps: newSteps,\n\t\t\t// TODO: do we actually need to dig into the connection here?\n\t\t\tdocument: this.connection.document,\n\t\t\tversion: this.version,\n\t\t})\n\t}\n\n\tcheckIdle() {\n\t\tconst lastPushMinutesAgo = (Date.now() - this.lastStepPush) / 1000 / 60\n\t\tif (lastPushMinutesAgo > IDLE_TIMEOUT) {\n\t\t\tlogger.debug(`[SyncService] Document is idle for ${this.IDLE_TIMEOUT} minutes, suspending connection`)\n\t\t\tthis.emit('idle')\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\n\t_getContent() {\n\t\treturn this.serialize()\n\t}\n\n\tasync save({ force = false, manualSave = true } = {}) {\n\t\tlogger.debug('[SyncService] saving', arguments[0])\n\t\ttry {\n\t\t\tconst response = await this.connection.sync({\n\t\t\t\tversion: this.version,\n\t\t\t\tautosaveContent: this._getContent(),\n\t\t\t\tdocumentState: this.getDocumentState(),\n\t\t\t\tforce,\n\t\t\t\tmanualSave,\n\t\t\t})\n\t\t\tthis.emit('stateChange', { dirty: false })\n\t\t\tlogger.debug('[SyncService] saved', response)\n\t\t\tconst { document, sessions } = response.data\n\t\t\tthis.emit('save', { document, sessions })\n\t\t\tthis.autosave.clear()\n\t\t} catch (e) {\n\t\t\tlogger.error('Failed to save document.', { error: e })\n\t\t}\n\t}\n\n\tforceSave() {\n\t\treturn this.save({ force: true })\n\t}\n\n\t_autosave() {\n\t\treturn this.save({ manualSave: false })\n\t}\n\n\tasync close() {\n\t\tthis.backend?.disconnect()\n\t\tconst timeout = new Promise((resolve) => setTimeout(resolve, 2000))\n\t\tawait Promise.any([timeout, this.save()])\n\t\treturn this._close()\n\t}\n\n\t_close() {\n\t\tif (this.connection === null) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tthis.backend.disconnect()\n\t\treturn this.connection.close()\n\t}\n\n\tuploadAttachment(file) {\n\t\treturn this.connection.uploadAttachment(file)\n\t}\n\n\tinsertAttachmentFile(filePath) {\n\t\treturn this.connection.insertAttachmentFile(filePath)\n\t}\n\n\ton(event, callback) {\n\t\tthis._bus.on(event, callback)\n\t\treturn this\n\t}\n\n\toff(event, callback) {\n\t\tthis._bus.off(event, callback)\n\t\treturn this\n\t}\n\n\temit(event, data) {\n\t\tthis._bus.emit(event, data)\n\t}\n\n}\n\nexport default SyncService\nexport { SyncService, ERROR_TYPE, IDLE_TIMEOUT, COLLABORATOR_IDLE_TIME, COLLABORATOR_DISCONNECT_TIME }\n","export const SET_VIEW_WIDTH = 'SET_VIEW_WIDTH'\nexport const SET_SHOW_AUTHOR_ANNOTATIONS = 'SET_SHOW_AUTHOR_ANNOTATIONS'\nexport const SET_CURRENT_SESSION = 'SET_CURRENT_SESSION'\nexport const SET_HEADINGS = 'SET_HEADINGS'\n","/**\n * @copyright Copyright (c) 2022 Vinicius Reis \n *\n * @author Vinicius Reis \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport debounce from 'debounce'\nimport { SET_VIEW_WIDTH } from './mutation-types.js'\n\nconst getClientWidth = () => document.documentElement.clientWidth\n\nconst plugin = ({ commit }) => {\n\tconst onResize = debounce(() => {\n\t\tcommit(`text/${SET_VIEW_WIDTH}`, getClientWidth())\n\t}, 100)\n\n\twindow.addEventListener('resize', onResize)\n}\n\nexport { getClientWidth }\n\nexport default plugin\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nimport {\n\tSET_SHOW_AUTHOR_ANNOTATIONS,\n\tSET_CURRENT_SESSION,\n\tSET_VIEW_WIDTH,\n\tSET_HEADINGS,\n} from './mutation-types.js'\nimport plugin, { getClientWidth } from './plugin.js'\n\nconst persistentStorage = getBuilder('text').persist().build()\n\nVue.use(Vuex)\n\nexport const textModule = {\n\tstate: {\n\t\tshowAuthorAnnotations: persistentStorage.getItem('showAuthorAnnotations') === 'true',\n\t\tcurrentSession: persistentStorage.getItem('currentSession'),\n\t\tviewWidth: getClientWidth(),\n\t\theadings: Object.freeze([]),\n\t},\n\tmutations: {\n\t\t[SET_VIEW_WIDTH](state, value) {\n\t\t\tstate.viewWidth = value\n\t\t},\n\t\t[SET_SHOW_AUTHOR_ANNOTATIONS](state, value) {\n\t\t\tstate.showAuthorAnnotations = value\n\t\t\tpersistentStorage.setItem('showAuthorAnnotations', '' + value)\n\t\t},\n\t\t[SET_CURRENT_SESSION](state, value) {\n\t\t\tstate.currentSession = value\n\t\t\tpersistentStorage.setItem('currentSession', value)\n\t\t},\n\t\t[SET_HEADINGS](state, value) {\n\t\t\tif (state.headings.length !== value.length) {\n\t\t\t\tstate.headings = Object.freeze(value)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// merge with previous position\n\t\t\tconst old = state.headings\n\t\t\tconst headings = value.map((row, index) => {\n\t\t\t\tconst previous = old[index].level\n\n\t\t\t\treturn Object.freeze({\n\t\t\t\t\t...row,\n\t\t\t\t\tprevious,\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tstate.headings = Object.freeze(headings)\n\t\t},\n\t},\n\tactions: {\n\t\tsetShowAuthorAnnotations({ commit }, value) {\n\t\t\tcommit(SET_SHOW_AUTHOR_ANNOTATIONS, value)\n\t\t},\n\t\tsetCurrentSession({ commit }, value) {\n\t\t\tcommit(SET_CURRENT_SESSION, value)\n\t\t},\n\t\tsetHeadings({ commit }, value) {\n\t\t\tcommit(SET_HEADINGS, value)\n\t\t},\n\t},\n}\n\nconst store = new Store({\n\tplugins: [plugin],\n\tmodules: {\n\t\ttext: {\n\t\t\tnamespaced: true,\n\t\t\t...textModule,\n\t\t},\n\t},\n})\n\nexport default store\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-menubar .entry-action.is-active:not(.entry-action-item),.v-popper__inner .entry-action.is-active:not(.entry-action-item),.text-menubar button.entry-action__button.is-active,.v-popper__inner button.entry-action__button.is-active{opacity:1;background-color:var(--color-primary-element-light);border-radius:50%}.text-menubar .entry-action.is-active:not(.entry-action-item) .material-design-icon>svg,.v-popper__inner .entry-action.is-active:not(.entry-action-item) .material-design-icon>svg,.text-menubar button.entry-action__button.is-active .material-design-icon>svg,.v-popper__inner button.entry-action__button.is-active .material-design-icon>svg{fill:var(--color-primary-element)}.text-menubar button.entry-action__button,.v-popper__inner button.entry-action__button{height:44px;margin:0;border:0;position:relative;color:var(--color-main-text);background-color:rgba(0,0,0,0);vertical-align:top;box-shadow:none;padding:0}.text-menubar button.entry-action__button p,.v-popper__inner button.entry-action__button p{padding:0}.text-menubar button.entry-action__button:is(li.entry-action-item button),.v-popper__inner button.entry-action__button:is(li.entry-action-item button){padding:0 .5em 0 0}.text-menubar button.entry-action__button:not(li.entry-action-item button),.v-popper__inner button.entry-action__button:not(li.entry-action-item button){width:44px}.text-menubar button.entry-action__button:hover,.text-menubar button.entry-action__button:focus,.text-menubar button.entry-action__button:active,.v-popper__inner button.entry-action__button:hover,.v-popper__inner button.entry-action__button:focus,.v-popper__inner button.entry-action__button:active{background-color:var(--color-background-dark)}.text-menubar button.entry-action__button:hover:not(:disabled),.text-menubar button.entry-action__button:focus:not(:disabled),.text-menubar button.entry-action__button:active:not(:disabled),.v-popper__inner button.entry-action__button:hover:not(:disabled),.v-popper__inner button.entry-action__button:focus:not(:disabled),.v-popper__inner button.entry-action__button:active:not(:disabled){box-shadow:var(--color-primary-element)}.text-menubar button.entry-action__button:hover,.text-menubar button.entry-action__button:focus,.v-popper__inner button.entry-action__button:hover,.v-popper__inner button.entry-action__button:focus{opacity:1}.text-menubar button.entry-action__button:focus-visible,.v-popper__inner button.entry-action__button:focus-visible{box-shadow:var(--color-primary-element)}.text-menubar .entry-action.entry-action-item.is-active,.v-popper__inner .entry-action.entry-action-item.is-active{background-color:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.text-menubar .button-vue svg,.v-popper__inner .button-vue svg{fill:var(--color-main-text)}.text-menubar .action-item__menutoggle.action-item__menutoggle--with-icon-slot,.v-popper__inner .action-item__menutoggle.action-item__menutoggle--with-icon-slot{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/ActionEntry.scss\"],\"names\":[],\"mappings\":\"AAAA,0OACC,SAAA,CACA,mDAAA,CACA,iBAAA,CACA,kVACC,iCAAA,CAKD,uFACC,WAAA,CACA,QAAA,CACA,QAAA,CAEA,iBAAA,CACA,4BAAA,CACA,8BAAA,CACA,kBAAA,CACA,eAAA,CACA,SAAA,CAEA,2FACC,SAAA,CAGD,uJACC,kBAAA,CAGD,yJACC,UAAA,CAGD,2SAGC,6CAAA,CACA,qYACC,uCAAA,CAIF,sMAEC,SAAA,CAED,mHACC,uCAAA,CAaD,mHACC,mDAAA,CACA,wCAAA,CAKD,+DACC,2BAAA,CAIF,iKACC,SAAA\",\"sourcesContent\":[\"%text__is-active-item-btn {\\n\\topacity: 1;\\n\\tbackground-color: var(--color-primary-element-light);\\n\\tborder-radius: 50%;\\n\\t.material-design-icon > svg {\\n\\t\\tfill: var(--color-primary-element);\\n\\t}\\n}\\n\\n.text-menubar, .v-popper__inner {\\n\\tbutton.entry-action__button {\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tborder: 0;\\n\\t\\t// opacity: 0.5;\\n\\t\\tposition: relative;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\tvertical-align: top;\\n\\t\\tbox-shadow: none;\\n\\t\\tpadding: 0;\\n\\n\\t\\tp {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&:is(li.entry-action-item button) {\\n\\t\\t\\tpadding: 0 0.5em 0 0;\\n\\t\\t}\\n\\n\\t\\t&:not(li.entry-action-item button) {\\n\\t\\t\\twidth: 44px;\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t&:not(:disabled) {\\n\\t\\t\\t\\tbox-shadow: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t\\t&:focus-visible {\\n\\t\\t\\tbox-shadow: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&.is-active {\\n\\t\\t\\t@extend %text__is-active-item-btn;\\n\\t\\t}\\n\\t}\\n\\n\\t.entry-action.is-active:not(.entry-action-item) {\\n\\t\\t@extend %text__is-active-item-btn;\\n\\t}\\n\\n\\t.entry-action.entry-action-item {\\n\\t\\t&.is-active {\\n\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t}\\n\\t}\\n\\n\\t.button-vue {\\n\\t\\tsvg {\\n\\t\\t\\tfill: var(--color-main-text);\\n\\t\\t}\\n\\t}\\n\\n\\t.action-item__menutoggle.action-item__menutoggle--with-icon-slot {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".editor__content[data-v-a4201d8a]{max-width:var(--text-editor-max-width);margin:auto;position:relative;width:100%}.text-editor__content-wrapper[data-v-a4201d8a]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-a4201d8a]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-a4201d8a],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-a4201d8a]{height:100%;position:relative}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/BaseReader.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,sCAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAGD,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.editor__content {\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\\n.text-editor__content-wrapper {\\n\\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\\n\\tdisplay: grid;\\n\\tgrid-template-columns: 1fr auto;\\n\\t&.--show-outline {\\n\\t\\tgrid-template-columns: var(--side-width) auto var(--side-width);\\n\\t}\\n\\t.text-editor__content-wrapper__left,\\n\\t.text-editor__content-wrapper__right {\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#resolve-conflicts[data-v-44412072]{display:flex;width:100%;margin:auto;padding:20px 0}#resolve-conflicts button[data-v-44412072]{margin:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/CollisionResolveDialog.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,YAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CAEA,2CACC,WAAA\",\"sourcesContent\":[\"\\n#resolve-conflicts {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\tmargin: auto;\\n\\tpadding: 20px 0;\\n\\n\\tbutton {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal-container .text-editor[data-v-7437ef6a]{top:0;height:calc(100vh - var(--header-height))}.text-editor[data-v-7437ef6a]{display:block;width:100%;max-width:100%;height:100%;left:0;margin:0 auto;position:relative;background-color:var(--color-main-background)}.text-editor .text-editor__wrapper.has-conflicts[data-v-7437ef6a]{height:calc(100% - 50px)}#body-public[data-v-7437ef6a]{height:auto}#files-public-content .text-editor[data-v-7437ef6a]{top:0;width:100%}#files-public-content .text-editor .text-editor__main[data-v-7437ef6a]{overflow:auto;z-index:20}#files-public-content .text-editor .has-conflicts .text-editor__main[data-v-7437ef6a]{padding-top:0}.menubar-placeholder[data-v-7437ef6a],.text-editor--readonly-bar[data-v-7437ef6a]{position:fixed;position:-webkit-sticky;position:sticky;top:0;opacity:0;visibility:hidden;height:44px;padding-top:3px;padding-bottom:3px}.text-editor--readonly-bar[data-v-7437ef6a],.menubar-placeholder--with-slot[data-v-7437ef6a]{opacity:unset;visibility:unset;z-index:50;max-width:var(--text-editor-max-width);margin:auto;width:100%;background-color:var(--color-main-background)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,KAAA,CACA,yCAAA,CAGD,8BACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CACA,MAAA,CACA,aAAA,CACA,iBAAA,CACA,6CAAA,CAGD,kEACC,wBAAA,CAGD,8BACC,WAAA,CAIA,oDACC,KAAA,CACA,UAAA,CAEA,uEACC,aAAA,CACA,UAAA,CAED,sFACC,aAAA,CAKH,kFAEC,cAAA,CACA,uBAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CAGD,6FAEC,aAAA,CACA,gBAAA,CAEA,UAAA,CACA,sCAAA,CACA,WAAA,CACA,UAAA,CACA,6CAAA\",\"sourcesContent\":[\"\\n.modal-container .text-editor {\\n\\ttop: 0;\\n\\theight: calc(100vh - var(--header-height));\\n}\\n\\n.text-editor {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmax-width: 100%;\\n\\theight: 100%;\\n\\tleft: 0;\\n\\tmargin: 0 auto;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.text-editor .text-editor__wrapper.has-conflicts {\\n\\theight: calc(100% - 50px);\\n}\\n\\n#body-public {\\n\\theight: auto;\\n}\\n\\n#files-public-content {\\n\\t.text-editor {\\n\\t\\ttop: 0;\\n\\t\\twidth: 100%;\\n\\n\\t\\t.text-editor__main {\\n\\t\\t\\toverflow: auto;\\n\\t\\t\\tz-index: 20;\\n\\t\\t}\\n\\t\\t.has-conflicts .text-editor__main {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.menubar-placeholder,\\n.text-editor--readonly-bar {\\n\\tposition: fixed;\\n\\tposition: -webkit-sticky;\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\topacity: 0;\\n\\tvisibility: hidden;\\n\\theight: 44px; // important for mobile so that the buttons are always inside the container\\n\\tpadding-top:3px;\\n\\tpadding-bottom: 3px;\\n}\\n\\n.text-editor--readonly-bar,\\n.menubar-placeholder--with-slot {\\n\\topacity: unset;\\n\\tvisibility: unset;\\n\\n\\tz-index: 50;\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\twidth: 100%;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--text-editor-max-width: 670px }.modal-container .text-editor{position:absolute}.ProseMirror-hideselection{caret-color:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-hideselection *::-moz-selection{background:rgba(0,0,0,0);color:var(--color-main-text)}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\\\"\\\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}.has-conflicts .ProseMirror-menubar,.text-editor__wrapper.icon-loading .ProseMirror-menubar{display:none}.ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.ProseMirror-gapcursor:after{content:\\\"\\\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--color-main-text);animation:ProseMirror-cursor-blink 1.1s steps(2, start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.animation-rotate{animation:rotate var(--animation-duration, 0.8s) linear infinite}[data-handler=text]{background-color:var(--color-main-background);border-top:3px solid var(--color-primary-element)}[data-handler=text] .modal-title{font-weight:bold}@keyframes fadeInDown{from{opacity:0;transform:translate3d(0, -100%, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-100%, 0, 0)}to{opacity:1;transform:translate3d(0, 0, 0)}}.fadeInLeft{animation-name:fadeInLeft}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor div.ProseMirror h1,.text-editor div.ProseMirror h2,.text-editor div.ProseMirror h3,.text-editor div.ProseMirror h4,.text-editor div.ProseMirror h5{break-after:avoid}.text-editor div.ProseMirror .image,.text-editor div.ProseMirror img,.text-editor div.ProseMirror table{break-inside:avoid-page;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}}.text-editor__wrapper div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}.text-editor__wrapper div.ProseMirror :target{scroll-margin-top:50px}.text-editor__wrapper div.ProseMirror[contenteditable=true],.text-editor__wrapper div.ProseMirror[contenteditable=false],.text-editor__wrapper div.ProseMirror [contenteditable=true],.text-editor__wrapper div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}.text-editor__wrapper div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),.text-editor__wrapper div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror[contenteditable=false]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=true]:focus-visible,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus,.text-editor__wrapper div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}.text-editor__wrapper div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}.text-editor__wrapper div.ProseMirror .checkbox-item input[type=checkbox]{display:none}.text-editor__wrapper div.ProseMirror .checkbox-item:before{content:\\\"\\\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}.text-editor__wrapper div.ProseMirror .checkbox-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}.text-editor__wrapper div.ProseMirror .checkbox-item.checked label{color:var(--color-text-maxcontrast);text-decoration:line-through}.text-editor__wrapper div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}.text-editor__wrapper div.ProseMirror>*:first-child{margin-top:10px}.text-editor__wrapper div.ProseMirror>h1:first-child,.text-editor__wrapper div.ProseMirror h2:first-child,.text-editor__wrapper div.ProseMirror h3:first-child,.text-editor__wrapper div.ProseMirror h4:first-child,.text-editor__wrapper div.ProseMirror h5:first-child,.text-editor__wrapper div.ProseMirror h6:first-child{margin-top:0}.text-editor__wrapper div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}.text-editor__wrapper div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}.text-editor__wrapper div.ProseMirror em{font-style:italic}.text-editor__wrapper div.ProseMirror h1,.text-editor__wrapper div.ProseMirror h2,.text-editor__wrapper div.ProseMirror h3,.text-editor__wrapper div.ProseMirror h4,.text-editor__wrapper div.ProseMirror h5,.text-editor__wrapper div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror h1{font-size:36px}.text-editor__wrapper div.ProseMirror h2{font-size:30px}.text-editor__wrapper div.ProseMirror h3{font-size:24px}.text-editor__wrapper div.ProseMirror h4{font-size:21px}.text-editor__wrapper div.ProseMirror h5{font-size:17px}.text-editor__wrapper div.ProseMirror h6{font-size:14px}.text-editor__wrapper div.ProseMirror img{cursor:default;max-width:100%}.text-editor__wrapper div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}.text-editor__wrapper div.ProseMirror hr:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}.text-editor__wrapper div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.text-editor__wrapper div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}.text-editor__wrapper div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}.text-editor__wrapper div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.text-editor__wrapper div.ProseMirror li{position:relative;padding-left:3px}.text-editor__wrapper div.ProseMirror li p{margin-bottom:.5em}.text-editor__wrapper div.ProseMirror ul,.text-editor__wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}.text-editor__wrapper div.ProseMirror ul>li{list-style-type:disc}.text-editor__wrapper div.ProseMirror li ul>li{list-style-type:circle}.text-editor__wrapper div.ProseMirror li li ul>li{list-style-type:square}.text-editor__wrapper div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}.text-editor__wrapper div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}.text-editor__wrapper div.ProseMirror table{margin-top:1em}.text-editor__wrapper div.ProseMirror table td,.text-editor__wrapper div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}.text-editor__wrapper div.ProseMirror table td:first-child,.text-editor__wrapper div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}.text-editor__wrapper div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}.text-editor__wrapper div.ProseMirror table th>div{display:flex}.text-editor__wrapper div.ProseMirror table tr{background-color:var(--table-color-background)}.text-editor__wrapper div.ProseMirror table tr:hover,.text-editor__wrapper div.ProseMirror table tr:active,.text-editor__wrapper div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}.text-editor__wrapper div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.text-editor__wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}.text-editor__wrapper .editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.text-editor__wrapper .editor__content{tab-size:4}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre{background-color:var(--color-main-background)}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-comment,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-quote{color:#999}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-variable,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-template-variable,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-attribute,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-tag,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-name,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-regexp,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-link,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-id,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-class{color:#f2777a}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-number,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-meta,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-built_in,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-builtin-name,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-literal,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-type,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-params{color:#f99157}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-string,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-symbol,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-bullet{color:#9c9}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-title,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-section{color:#fc6}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-keyword,.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-selector-tag{color:#69c}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-emphasis{font-style:italic}.text-editor__wrapper:not(.is-rich-editor) .ProseMirror pre code .hljs-strong{font-weight:700}.text-editor__wrapper .text-editor__main.draggedOver{background-color:var(--color-primary-element-light)}.text-editor__wrapper .text-editor__main .text-editor__content-wrapper{position:relative}.text-editor__wrapper.has-conflicts>.editor{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper{width:50%}.text-editor__wrapper.has-conflicts>.content-wrapper #read-only-editor{margin:0px auto;padding-top:50px;overflow:initial}#files-public-content{height:100%}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid #0d0d0d;border-right:1px solid #0d0d0d;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-style:normal;font-weight:600;line-height:normal;user-select:none;color:#0d0d0d;padding:.1rem .3rem;border-radius:3px 3px 3px 0;white-space:nowrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./css/style.scss\",\"webpack://./css/print.scss\",\"webpack://./css/prosemirror.scss\",\"webpack://./src/components/Editor.vue\"],\"names\":[],\"mappings\":\"AAEA,MACC,+BAAA,CAGD,8BACC,iBAAA,CAGD,2BACC,yBAAA,CACA,4BAAA,CAEA,wCACC,wBAAA,CACA,4BAAA,CAGD,6CACC,wBAAA,CACA,4BAAA,CAIF,0BACC,sBAAA,CAID,4BACC,YAAA,CAEA,kCACC,UAAA,CACA,iBAAA,CACA,UAAA,CACA,UAAA,CAAA,QAAA,CAAA,WAAA,CACA,qBAAA,CACA,mBAAA,CAMD,4FACC,YAAA,CAIF,uBACC,YAAA,CACA,mBAAA,CACA,iBAAA,CAEA,6BACC,UAAA,CACA,aAAA,CACA,iBAAA,CACA,QAAA,CACA,UAAA,CACA,2CAAA,CACA,gEAAA,CAIF,oCACC,GACC,iBAAA,CAAA,CAIF,kBACC,gEAAA,CAGD,oBACC,6CAAA,CACA,iDAAA,CACA,iCACC,gBAAA,CAKF,sBACC,KACC,SAAA,CACA,kCAAA,CAGD,GACC,SAAA,CACA,8BAAA,CAAA,CAMF,sBACC,KACC,SAAA,CACA,kCAAA,CAGD,GACC,SAAA,CACA,8BAAA,CAAA,CAIF,YACC,yBAAA,CChHD,aACC,MACC,OAAA,CACA,0BAAA,CAGD,KAEC,iBAAA,CACA,2BAAA,CAGD,2BAEC,WAAA,CACA,qBAAA,CAEA,4BAAA,CAEA,yCAEC,uBAAA,CAED,4CAEC,OAAA,CACA,kBAAA,CAKD,2BAEC,uBAAA,CAED,0BAEC,uBAAA,CAED,8BAEC,cAAA,CAED,mCACC,kBAAA,CACA,cAAA,CAIA,gKAEC,iBAAA,CAED,wGAEC,uBAAA,CAEA,wBAAA,CACA,iCAAA,CAID,gCACC,qBAAA,CACA,2BAAA,CACA,mCAAA,CACA,4BAAA,CACA,6CAAA,CAED,6CACC,iCAAA,CAGD,gCACC,4CAAA,CACA,2BAAA,CACA,4BAAA,CAED,6CACC,sBAAA,CAKH,gDACC,YAAA,CAIA,6CACC,aAAA,CAGD,+CACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,iBAAA,CAED,0DACC,YAAA,CAAA,CCjGH,sCACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,8CAEC,sBAAA,CAGD,oPAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,4XACC,sBAAA,CAGD,wjBACC,0BAAA,CAIF,qDACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,0EACC,YAAA,CAED,4DACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,oEACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,mEACC,mCAAA,CACA,4BAAA,CAGF,2DACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,oDACC,eAAA,CAIA,8TACC,YAAA,CAIF,wCACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,2DACC,iBAAA,CACA,gBAAA,CAGD,yCACC,iBAAA,CAGD,sPAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,yCACC,cAAA,CAGD,0CACC,cAAA,CACA,cAAA,CAGD,yCACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,+CACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,0CACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,sDACC,iBAAA,CACA,kDAAA,CAGD,8DACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,6CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,yCACC,iBAAA,CACA,gBAAA,CAEA,2CACC,kBAAA,CAIF,kFACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,4CACC,oBAAA,CAID,+CACC,sBAAA,CAID,kDACC,sBAAA,CAGD,iDACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,4CACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,4CACC,cAAA,CAID,8FACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,sHACC,+CAAA,CAGF,+CACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,+CACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,mDACC,YAAA,CAGF,+CACC,8CAAA,CACA,gKACC,oDAAA,CAKD,0EAAA,iDAAA,CACA,yEAAA,kDAAA,CAIA,yEAAA,oDAAA,CACA,wEAAA,qDAAA,CAOH,kEACC,aAAA,CAGD,sEACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,uCACC,UAAA,CCxSC,4DACC,6CAAA,CAEA,oEACC,2BAAA,CACA,wBAAA,CACA,aAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAGA,4JAEC,UAAA,CAED,otBASC,aAAA,CAED,uiBAOC,aAAA,CAED,0OAGC,UAAA,CAED,4JAEC,UAAA,CAED,mKAEC,UAAA,CAED,gFACC,iBAAA,CAED,8EACC,eAAA,CAQH,qDACC,mDAAA,CAED,uEACC,iBAAA,CAKH,4CACC,SAAA,CAGD,qDACC,SAAA,CACA,uEACC,eAAA,CACA,gBAAA,CACA,gBAAA,CAMF,sBACC,WAAA,CAGD,gBACC,GAAA,sBAAA,CACA,KAAA,wBAAA,CAAA,CAID,6BACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CACA,6BAAA,CACA,8BAAA,CACA,iBAAA,CACA,mBAAA,CAID,6BACC,iBAAA,CACA,UAAA,CACA,SAAA,CACA,cAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,gBAAA,CACA,aAAA,CACA,mBAAA,CACA,2BAAA,CACA,kBAAA\",\"sourcesContent\":[\"@use 'sass:math';\\n\\n:root {\\n\\t--text-editor-max-width: 670px\\n}\\n\\n.modal-container .text-editor {\\n\\tposition: absolute;\\n}\\n\\n.ProseMirror-hideselection {\\n\\tcaret-color: transparent;\\n\\tcolor: var(--color-main-text);\\n\\n\\t*::selection {\\n\\t\\tbackground: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\t*::-moz-selection {\\n\\t\\tbackground: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n}\\n\\n.ProseMirror-selectednode {\\n\\toutline: 2px solid #8cf;\\n}\\n\\n/* Make sure li selections wrap around markers */\\nli.ProseMirror-selectednode {\\n\\toutline: none;\\n\\n\\t&:after {\\n\\t\\tcontent: '';\\n\\t\\tposition: absolute;\\n\\t\\tleft: -32px;\\n\\t\\tright: -2px; top: -2px; bottom: -2px;\\n\\t\\tborder: 2px solid #8cf;\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\\n.has-conflicts,\\n.text-editor__wrapper.icon-loading {\\n\\t.ProseMirror-menubar {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.ProseMirror-gapcursor {\\n\\tdisplay: none;\\n\\tpointer-events: none;\\n\\tposition: absolute;\\n\\n\\t&:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\ttop: -2px;\\n\\t\\twidth: 20px;\\n\\t\\tborder-top: 1px solid var(--color-main-text);\\n\\t\\tanimation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n\\t}\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n\\tto {\\n\\t\\tvisibility: hidden;\\n\\t}\\n}\\n\\n.animation-rotate {\\n\\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\\n}\\n\\n[data-handler='text'] {\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-top: 3px solid var(--color-primary-element);\\n\\t.modal-title {\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInDown.css\\n@keyframes fadeInDown {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t\\ttransform: translate3d(0, -100%, 0);\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t\\ttransform: translate3d(0, 0, 0);\\n\\t}\\n}\\n\\n\\n// from https://github.com/animate-css/animate.css/blob/main/source/fading_entrances/fadeInLeft.css\\n@keyframes fadeInLeft {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t\\ttransform: translate3d(-100%, 0, 0);\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t\\ttransform: translate3d(0, 0, 0);\\n\\t}\\n}\\n\\n.fadeInLeft {\\n\\tanimation-name: fadeInLeft;\\n}\\n\",\"@media print {\\n\\t@page {\\n\\t\\tsize: A4;\\n\\t\\tmargin: 2.5cm 2cm 2cm 2.5cm;\\n\\t}\\n\\n\\tbody {\\n\\t\\t// position: fixed does not support scrolling and as such only prints one page\\n\\t\\tposition: absolute;\\n\\t\\toverflow: visible!important;\\n\\t}\\n\\n\\t#viewer[data-handler='text'] {\\n\\t\\t// Hide top border\\n\\t\\tborder: none;\\n\\t\\twidth: 100%!important;\\n\\t\\t// NcModal uses fixed, which will be cropped when printed\\n\\t\\tposition: absolute!important;\\n\\n\\t\\t.modal-header {\\n\\t\\t\\t// Hide modal header (close button)\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.modal-container {\\n\\t\\t\\t// Make sure top aligned as we hided the menubar */\\n\\t\\t\\ttop: 0px;\\n\\t\\t\\theight: fit-content;\\n\\t\\t}\\n\\t}\\n\\n\\t.text-editor {\\n\\t\\t.text-menubar {\\n\\t\\t\\t// Hide menu bar\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.action-item {\\n\\t\\t\\t// Hide table settings\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.editor__content {\\n\\t\\t\\t// Margins set by page rule\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.text-editor__wrapper {\\n\\t\\t\\theight: fit-content;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\n\\t\\tdiv.ProseMirror {\\n\\t\\t\\th1, h2, h3, h4, h5 {\\n\\t\\t\\t\\t// orphaned headlines are ugly\\n\\t\\t\\t\\tbreak-after: avoid;\\n\\t\\t\\t}\\n\\t\\t\\t.image, img, table {\\n\\t\\t\\t\\t// try no page breaks within tables or images\\n\\t\\t\\t\\tbreak-inside: avoid-page;\\n\\t\\t\\t\\t// Some more indention\\n\\t\\t\\t\\tmax-width: 90%!important;\\n\\t\\t\\t\\tmargin: 5vw auto 5vw 5%!important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add some borders below header and between columns\\n\\t\\t\\tth {\\n\\t\\t\\t\\tcolor: black!important;\\n\\t\\t\\t\\tfont-weight: bold!important;\\n\\t\\t\\t\\tborder-width: 0 1px 2px 0!important;\\n\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\tborder-style: none solid solid none!important;\\n\\t\\t\\t}\\n\\t\\t\\tth:last-of-type {\\n\\t\\t\\t\\tborder-width: 0 0 2px 0!important;\\n\\t\\t\\t}\\n\\n\\t\\t\\ttd {\\n\\t\\t\\t\\tborder-style: none solid none none!important;\\n\\t\\t\\t\\tborder-width: 1px!important;\\n\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t}\\n\\t\\t\\ttd:last-of-type {\\n\\t\\t\\t\\tborder: none!important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.menubar-placeholder, .text-editor--readonly-bar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.text-editor__content-wrapper {\\n\\t\\t&.--show-outline {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.editor--outline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\theight: auto;\\n\\t\\t\\toverflow: unset;\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t\\t.editor--outline__btn-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\",\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: 14px;\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: 14px;\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\tlabel {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 36px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 21px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: 14px;\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t+ & {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\",\"\\n@import './../../css/style';\\n@import './../../css/print';\\n\\n.text-editor__wrapper {\\n\\t@import './../../css/prosemirror';\\n\\n\\t&:not(.is-rich-editor) .ProseMirror {\\n\\t\\tpre {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tcontent: attr(data-language);\\n\\t\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\ttext-align: right;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 0.6rem;\\n\\t\\t\\t}\\n\\t\\t\\tcode {\\n\\t\\t\\t\\t.hljs-comment,\\n\\t\\t\\t\\t.hljs-quote {\\n\\t\\t\\t\\t\\tcolor: #999999;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-variable,\\n\\t\\t\\t\\t.hljs-template-variable,\\n\\t\\t\\t\\t.hljs-attribute,\\n\\t\\t\\t\\t.hljs-tag,\\n\\t\\t\\t\\t.hljs-name,\\n\\t\\t\\t\\t.hljs-regexp,\\n\\t\\t\\t\\t.hljs-link,\\n\\t\\t\\t\\t.hljs-selector-id,\\n\\t\\t\\t\\t.hljs-selector-class {\\n\\t\\t\\t\\t\\tcolor: #f2777a;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-number,\\n\\t\\t\\t\\t.hljs-meta,\\n\\t\\t\\t\\t.hljs-built_in,\\n\\t\\t\\t\\t.hljs-builtin-name,\\n\\t\\t\\t\\t.hljs-literal,\\n\\t\\t\\t\\t.hljs-type,\\n\\t\\t\\t\\t.hljs-params {\\n\\t\\t\\t\\t\\tcolor: #f99157;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-string,\\n\\t\\t\\t\\t.hljs-symbol,\\n\\t\\t\\t\\t.hljs-bullet {\\n\\t\\t\\t\\t\\tcolor: #99cc99;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-title,\\n\\t\\t\\t\\t.hljs-section {\\n\\t\\t\\t\\t\\tcolor: #ffcc66;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-keyword,\\n\\t\\t\\t\\t.hljs-selector-tag {\\n\\t\\t\\t\\t\\tcolor: #6699cc;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-emphasis {\\n\\t\\t\\t\\t\\tfont-style: italic;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t.hljs-strong {\\n\\t\\t\\t\\t\\tfont-weight: 700;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// relative position for the alignment of the menububble\\n\\t.text-editor__main {\\n\\t\\t&.draggedOver {\\n\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t}\\n\\t\\t.text-editor__content-wrapper {\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t}\\n}\\n\\n.text-editor__wrapper.has-conflicts > .editor {\\n\\twidth: 50%;\\n}\\n\\n.text-editor__wrapper.has-conflicts > .content-wrapper {\\n\\twidth: 50%;\\n\\t#read-only-editor {\\n\\t\\tmargin: 0px auto;\\n\\t\\tpadding-top: 50px;\\n\\t\\toverflow: initial;\\n\\t}\\n}\\n\\n// Required in order to make the public pages behave the same if talk is enabled or not\\n// as Talk overwrites the public page styles and changes the DOM layout for the sidebar injection\\n#files-public-content {\\n\\theight: 100%;\\n}\\n\\n@keyframes spin {\\n\\t0% { transform: rotate(0deg); }\\n\\t100% { transform: rotate(360deg); }\\n}\\n\\n/* Give a remote user a caret */\\n.collaboration-cursor__caret {\\n\\tposition: relative;\\n\\tmargin-left: -1px;\\n\\tmargin-right: -1px;\\n\\tborder-left: 1px solid #0D0D0D;\\n\\tborder-right: 1px solid #0D0D0D;\\n\\tword-break: normal;\\n\\tpointer-events: none;\\n}\\n\\n/* Render the username above the caret */\\n.collaboration-cursor__label {\\n\\tposition: absolute;\\n\\ttop: -1.4em;\\n\\tleft: -1px;\\n\\tfont-size: 12px;\\n\\tfont-style: normal;\\n\\tfont-weight: 600;\\n\\tline-height: normal;\\n\\tuser-select: none;\\n\\tcolor: #0D0D0D;\\n\\tpadding: 0.1rem 0.3rem;\\n\\tborder-radius: 3px 3px 3px 0;\\n\\twhite-space: nowrap;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".editor__content[data-v-b6d104c8]{max-width:var(--text-editor-max-width);margin:auto;position:relative;width:100%}.ie .editor__content[data-v-b6d104c8] .ProseMirror{padding-top:50px}.text-editor__content-wrapper[data-v-b6d104c8]{--side-width: calc((100% - var(--text-editor-max-width)) / 2);display:grid;grid-template-columns:1fr auto}.text-editor__content-wrapper.--show-outline[data-v-b6d104c8]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-b6d104c8],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-b6d104c8]{height:100%;position:relative}.is-rich-workspace .text-editor__content-wrapper[data-v-b6d104c8]{--side-width: var(--text-editor-max-width);grid-template-columns:var(--side-width) auto}.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-b6d104c8],.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-b6d104c8]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/ContentContainer.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,sCAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAIA,mDACC,gBAAA,CAIF,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA,CAKD,kEACC,0CAAA,CACA,4CAAA,CACA,6MAEC,YAAA\",\"sourcesContent\":[\"\\n.editor__content {\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\\n.ie {\\n\\t.editor__content:deep(.ProseMirror) {\\n\\t\\tpadding-top: 50px;\\n\\t}\\n}\\n\\n.text-editor__content-wrapper {\\n\\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\\n\\tdisplay: grid;\\n\\tgrid-template-columns: 1fr auto;\\n\\t&.--show-outline {\\n\\t\\tgrid-template-columns: var(--side-width) auto var(--side-width);\\n\\t}\\n\\t.text-editor__content-wrapper__left,\\n\\t.text-editor__content-wrapper__right {\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\\n.is-rich-workspace {\\n\\t.text-editor__content-wrapper {\\n\\t\\t--side-width: var(--text-editor-max-width);\\n\\t\\tgrid-template-columns: var(--side-width) auto;\\n\\t\\t.text-editor__content-wrapper__left,\\n\\t\\t.text-editor__content-wrapper__right {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".document-status[data-v-4fde7cc0]{position:sticky;top:0;z-index:10000;max-height:50px;background-color:var(--color-main-background)}.document-status .msg[data-v-4fde7cc0]{padding:12px;background-position:8px center;color:var(--color-text-maxcontrast)}.document-status .msg.icon-error[data-v-4fde7cc0]{padding-left:30px}.document-status .msg .button[data-v-4fde7cc0]{margin-left:8px}.document-status .msg.msg-locked .lock-icon[data-v-4fde7cc0]{padding:0 10px;float:left}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/DocumentStatus.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,eAAA,CACA,KAAA,CACA,aAAA,CACA,eAAA,CACA,6CAAA,CAEA,uCACC,YAAA,CACA,8BAAA,CACA,mCAAA,CAEA,kDACC,iBAAA,CAGD,+CACC,eAAA,CAGD,6DACC,cAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.document-status {\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tz-index: 10000;\\n\\tmax-height: 50px;\\n\\tbackground-color: var(--color-main-background);\\n\\n\\t.msg {\\n\\t\\tpadding: 12px;\\n\\t\\tbackground-position: 8px center;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&.icon-error {\\n\\t\\t\\tpadding-left: 30px;\\n\\t\\t}\\n\\n\\t\\t.button {\\n\\t\\t\\tmargin-left: 8px;\\n\\t\\t}\\n\\n\\t\\t&.msg-locked .lock-icon {\\n\\t\\t\\tpadding: 0 10px;\\n\\t\\t\\tfloat: left;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".editor--outline[data-v-4a57d3b2]{width:300px;padding:0 10px 10px 10px;position:fixed;overflow:auto;max-height:calc(100% - 204px)}.editor--outline-mobile[data-v-4a57d3b2]{box-shadow:8px 0 17px -19px var(--color-box-shadow);background-color:var(--color-main-background-translucent);z-index:1}.editor--outline__header[data-v-4a57d3b2]{margin:0;position:sticky;top:0;z-index:1;background-color:var(--color-main-background);padding:.6em .6em .6em 0;display:flex;align-items:center}.editor--outline__header h2[data-v-4a57d3b2]{font-size:1rem;line-height:1.1rem;flex-grow:1;padding:0;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/EditorOutline.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,WAAA,CACA,wBAAA,CACA,cAAA,CACA,aAAA,CAEA,6BAAA,CAEA,yCACC,mDAAA,CACA,yDAAA,CACA,SAAA,CAGD,0CACC,QAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,6CAAA,CACA,wBAAA,CACA,YAAA,CACA,kBAAA,CAEA,6CACC,cAAA,CACA,kBAAA,CACA,WAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.editor--outline {\\n\\twidth: 300px;\\n\\tpadding: 0 10px 10px 10px;\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\t// 204px = 50px nc header + 60px collectives titlebar + 44px menubar + 50px bottom margin\\n\\tmax-height: calc(100% - 204px);\\n\\n\\t&-mobile {\\n\\t\\tbox-shadow: 8px 0 17px -19px var(--color-box-shadow);\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t\\tz-index: 1;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\tz-index: 1;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tpadding: 0.6em 0.6em 0.6em 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\th2 {\\n\\t\\t\\tfont-size: 1rem;\\n\\t\\t\\tline-height: 1.1rem;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-editor__main[data-v-8ffa875e],.editor[data-v-8ffa875e]{background:var(--color-main-background);color:var(--color-main-text);background-clip:padding-box;border-radius:var(--border-radius);padding:0;position:relative;width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/MainContainer.vue\"],\"names\":[],\"mappings\":\"AACA,6DACC,uCAAA,CACA,4BAAA,CACA,2BAAA,CACA,kCAAA,CACA,SAAA,CACA,iBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.text-editor__main, .editor {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-main-text);\\n\\tbackground-clip: padding-box;\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 0;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-editor__session-list[data-v-72fc82a8]{display:flex}.text-editor__session-list input[data-v-72fc82a8],.text-editor__session-list div[data-v-72fc82a8]{vertical-align:middle;margin-left:3px}.save-status[data-v-72fc82a8]{border-radius:50%;color:var(--color-text-lighter);display:inline-flex;justify-content:center;padding:0;height:44px;width:44px}.save-status[data-v-72fc82a8]:hover{background-color:var(--color-background-hover)}.last-saved[data-v-72fc82a8]{padding:6px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/Status.vue\"],\"names\":[],\"mappings\":\"AACA,4CACC,YAAA,CAEA,kGACC,qBAAA,CACA,eAAA,CAIF,8BACC,iBAAA,CACA,+BAAA,CACA,mBAAA,CACA,sBAAA,CACA,SAAA,CACA,WAAA,CACA,UAAA,CAEA,oCACC,8CAAA,CAIF,6BACC,WAAA\",\"sourcesContent\":[\"\\n.text-editor__session-list {\\n\\tdisplay: flex;\\n\\n\\tinput, div {\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-left: 3px;\\n\\t}\\n}\\n\\n.save-status {\\n\\tborder-radius: 50%;\\n\\tcolor: var(--color-text-lighter);\\n\\tdisplay: inline-flex;\\n\\tjustify-content: center;\\n\\tpadding: 0;\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n}\\n\\n.last-saved {\\n\\tpadding: 6px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".--initial-render .editor--toc__item{--initial-padding-left: 0;animation:initialPadding 1.5s}.editor--toc{padding:0 10px;color:var(--color-main-text-maxcontrast);--animation-duration: 0.8s}.editor--toc h3{padding-left:.75rem}.editor--toc__list{width:100%;list-style:none;font-size:.9rem;padding:0;animation-name:fadeInLeft;animation-duration:var(--animation-duration)}.editor--toc__item{transform:translateX(var(--padding-left, 0rem));text-overflow:ellipsis;overflow:hidden;white-space:nowrap;animation:initialPadding calc(var(--animation-duration)*2);width:calc(100% - var(--padding-left))}.editor--toc__item a:hover{color:var(--color-primary-element-hover)}.editor--toc__item--1{--padding-left: 0rem;font-weight:600}.editor--toc__item--1:not(:nth-child(1)){margin-top:.5rem}.editor--toc__item--2{--padding-left: 1rem}.editor--toc__item--3{--padding-left: 2rem}.editor--toc__item--4{--padding-left: 3rem}.editor--toc__item--5{--padding-left: 4rem}.editor--toc__item--6{--padding-left: 5rem}.editor--toc__item--previous-1{--initial-padding-left: 0rem }.editor--toc__item--previous-2{--initial-padding-left: 1rem }.editor--toc__item--previous-3{--initial-padding-left: 2rem }.editor--toc__item--previous-4{--initial-padding-left: 3rem }.editor--toc__item--previous-5{--initial-padding-left: 4rem }.editor--toc__item--previous-6{--initial-padding-left: 5rem }@keyframes initialPadding{from{transform:translateX(var(--initial-padding-left, initial))}to{transform:translateX(var(--padding-left, 0rem))}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/TableOfContents.vue\"],\"names\":[],\"mappings\":\"AAGE,qCACC,yBAAA,CACA,6BAAA,CAKH,aACC,cAAA,CACA,wCAAA,CACA,0BAAA,CAEA,gBACC,mBAAA,CAGD,mBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,SAAA,CAEA,yBAAA,CACA,4CAAA,CAGD,mBACC,+CAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,0DAAA,CACA,sCAAA,CAEA,2BACC,wCAAA,CAGD,sBACC,oBAAA,CACA,eAAA,CACA,yCACC,gBAAA,CAIF,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,sBACC,oBAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAGD,+BACC,6BAAA,CAKH,0BACE,KACD,0DAAA,CAGC,GACD,+CAAA,CAAA\",\"sourcesContent\":[\"\\n.--initial-render {\\n\\t.editor--toc {\\n\\t\\t&__item {\\n\\t\\t\\t--initial-padding-left: 0;\\n\\t\\t\\tanimation: initialPadding 1.5s;\\n\\t\\t}\\n\\t}\\n}\\n\\n.editor--toc {\\n\\tpadding: 0 10px;\\n\\tcolor: var(--color-main-text-maxcontrast);\\n\\t--animation-duration: 0.8s;\\n\\n\\th3 {\\n\\t\\tpadding-left: 0.75rem;\\n\\t}\\n\\n\\t&__list {\\n\\t\\twidth: 100%;\\n\\t\\tlist-style: none;\\n\\t\\tfont-size: 0.9rem;\\n\\t\\tpadding: 0;\\n\\n\\t\\tanimation-name: fadeInLeft;\\n\\t\\tanimation-duration: var(--animation-duration);\\n\\t}\\n\\n\\t&__item {\\n\\t\\ttransform: translateX(var(--padding-left, 0rem));\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\tanimation: initialPadding calc(var(--animation-duration) * 2);\\n\\t\\twidth: calc(100% - var(--padding-left));\\n\\n\\t\\ta:hover {\\n\\t\\t\\tcolor: var(--color-primary-element-hover);\\n\\t\\t}\\n\\n\\t\\t&--1 {\\n\\t\\t\\t--padding-left: 0rem;\\n\\t\\t\\tfont-weight: 600;\\n\\t\\t\\t&:not(:nth-child(1)) {\\n\\t\\t\\t\\tmargin-top: 0.5rem;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--2 {\\n\\t\\t\\t--padding-left: 1rem;\\n\\t\\t}\\n\\n\\t\\t&--3 {\\n\\t\\t\\t--padding-left: 2rem;\\n\\t\\t}\\n\\n\\t\\t&--4 {\\n\\t\\t\\t--padding-left: 3rem;\\n\\t\\t}\\n\\n\\t\\t&--5 {\\n\\t\\t\\t--padding-left: 4rem;\\n\\t\\t}\\n\\n\\t\\t&--6 {\\n\\t\\t\\t--padding-left: 5rem;\\n\\t\\t}\\n\\n\\t\\t&--previous-1 {\\n\\t\\t\\t--initial-padding-left: 0rem\\n\\t\\t}\\n\\n\\t\\t&--previous-2 {\\n\\t\\t\\t--initial-padding-left: 1rem\\n\\t\\t}\\n\\n\\t\\t&--previous-3 {\\n\\t\\t\\t--initial-padding-left: 2rem\\n\\t\\t}\\n\\n\\t\\t&--previous-4 {\\n\\t\\t\\t--initial-padding-left: 3rem\\n\\t\\t}\\n\\n\\t\\t&--previous-5 {\\n\\t\\t\\t--initial-padding-left: 4rem\\n\\t\\t}\\n\\n\\t\\t&--previous-6 {\\n\\t\\t\\t--initial-padding-left: 5rem\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes initialPadding {\\n from {\\n\\ttransform: translateX(var(--initial-padding-left, initial));\\n }\\n\\n to {\\n\\ttransform: translateX(var(--padding-left, 0rem));\\n }\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-editor__wrapper[data-v-dad37ee2]{display:flex;width:100%;height:100%}.text-editor__wrapper.show-color-annotations[data-v-dad37ee2] .author-annotation{padding-top:2px;padding-bottom:2px}.text-editor__wrapper[data-v-dad37ee2]:not(.show-color-annotations) .author-annotation,.text-editor__wrapper[data-v-dad37ee2]:not(.show-color-annotations) .image{background-color:rgba(0,0,0,0) !important}.text-editor__wrapper .ProseMirror[data-v-dad37ee2]{margin-top:0 !important}.text-editor__wrapper.icon-loading .text-editor__main[data-v-dad37ee2]{opacity:.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/Wrapper.vue\"],\"names\":[],\"mappings\":\"AAEA,uCACC,YAAA,CACA,UAAA,CACA,WAAA,CAEA,iFACC,eAAA,CACA,kBAAA,CAGD,kKAEC,yCAAA,CAGD,oDACC,uBAAA,CAGA,uEACC,UAAA\",\"sourcesContent\":[\"\\n\\n.text-editor__wrapper {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t&.show-color-annotations:deep(.author-annotation) {\\n\\t\\tpadding-top: 2px;\\n\\t\\tpadding-bottom: 2px;\\n\\t}\\n\\n\\t&:not(.show-color-annotations):deep(.author-annotation),\\n\\t&:not(.show-color-annotations):deep(.image) {\\n\\t\\tbackground-color: transparent !important;\\n\\t}\\n\\n\\t.ProseMirror {\\n\\t\\tmargin-top: 0 !important;\\n\\t}\\n\\t&.icon-loading {\\n\\t\\t.text-editor__main {\\n\\t\\t\\topacity: 0.3;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-a7b1a700] .modal-wrapper .modal-container{width:max-content;padding:30px 40px 20px;user-select:text}@media only screen and (max-width: 512px){[data-v-a7b1a700] .modal-wrapper .modal-container{width:inherit;padding:10px 0}}table[data-v-a7b1a700]{margin-top:24px;border-collapse:collapse}table tbody tr[data-v-a7b1a700]:hover,table tbody tr[data-v-a7b1a700]:focus,table tbody tr[data-v-a7b1a700]:active{background-color:rgba(0,0,0,0) !important}table thead tr[data-v-a7b1a700]{border:none}table th[data-v-a7b1a700]{font-weight:bold;padding:.75rem 1rem .75rem 0;border-bottom:2px solid var(--color-background-darker)}table td[data-v-a7b1a700]{padding:.75rem 1rem .75rem 0;border-top:1px solid var(--color-background-dark);border-bottom:unset}table td.noborder[data-v-a7b1a700]{border-top:unset}table td.ellipsis_top[data-v-a7b1a700]{padding-bottom:0}table td.ellipsis[data-v-a7b1a700]{padding-top:0;padding-bottom:0}table td.ellipsis_bottom[data-v-a7b1a700]{padding-top:0}table kbd[data-v-a7b1a700]{font-size:smaller}table code[data-v-a7b1a700]{padding:.2em .4em;font-size:90%;background-color:var(--color-background-dark);border-radius:6px}div.ProseMirror[data-v-a7b1a700]{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror[data-v-a7b1a700] :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true][data-v-a7b1a700],div.ProseMirror[contenteditable=false][data-v-a7b1a700],div.ProseMirror [contenteditable=true][data-v-a7b1a700],div.ProseMirror [contenteditable=false][data-v-a7b1a700]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}div.ProseMirror[contenteditable=true][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true][data-v-a7b1a700]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false][data-v-a7b1a700]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true][data-v-a7b1a700]:focus,div.ProseMirror[contenteditable=true][data-v-a7b1a700]:focus-visible,div.ProseMirror[contenteditable=false][data-v-a7b1a700]:focus,div.ProseMirror[contenteditable=false][data-v-a7b1a700]:focus-visible,div.ProseMirror [contenteditable=true][data-v-a7b1a700]:focus,div.ProseMirror [contenteditable=true][data-v-a7b1a700]:focus-visible,div.ProseMirror [contenteditable=false][data-v-a7b1a700]:focus,div.ProseMirror [contenteditable=false][data-v-a7b1a700]:focus-visible{box-shadow:none !important}div.ProseMirror .checkbox-item[data-v-a7b1a700]{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox][data-v-a7b1a700]{display:none}div.ProseMirror .checkbox-item[data-v-a7b1a700]:before{content:\\\"\\\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}div.ProseMirror .checkbox-item.checked[data-v-a7b1a700]:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label[data-v-a7b1a700]{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label[data-v-a7b1a700]{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*[data-v-a7b1a700]:first-child{margin-top:10px}div.ProseMirror>h1[data-v-a7b1a700]:first-child,div.ProseMirror h2[data-v-a7b1a700]:first-child,div.ProseMirror h3[data-v-a7b1a700]:first-child,div.ProseMirror h4[data-v-a7b1a700]:first-child,div.ProseMirror h5[data-v-a7b1a700]:first-child,div.ProseMirror h6[data-v-a7b1a700]:first-child{margin-top:0}div.ProseMirror a[data-v-a7b1a700]{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content[data-v-a7b1a700]{margin-bottom:1em;line-height:150%}div.ProseMirror em[data-v-a7b1a700]{font-style:italic}div.ProseMirror h1[data-v-a7b1a700],div.ProseMirror h2[data-v-a7b1a700],div.ProseMirror h3[data-v-a7b1a700],div.ProseMirror h4[data-v-a7b1a700],div.ProseMirror h5[data-v-a7b1a700],div.ProseMirror h6[data-v-a7b1a700]{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1[data-v-a7b1a700]{font-size:36px}div.ProseMirror h2[data-v-a7b1a700]{font-size:30px}div.ProseMirror h3[data-v-a7b1a700]{font-size:24px}div.ProseMirror h4[data-v-a7b1a700]{font-size:21px}div.ProseMirror h5[data-v-a7b1a700]{font-size:17px}div.ProseMirror h6[data-v-a7b1a700]{font-size:14px}div.ProseMirror img[data-v-a7b1a700]{cursor:default;max-width:100%}div.ProseMirror hr[data-v-a7b1a700]{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr[data-v-a7b1a700]:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre[data-v-a7b1a700]{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre.frontmatter[data-v-a7b1a700]{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter[data-v-a7b1a700]::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code[data-v-a7b1a700]{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li[data-v-a7b1a700]{position:relative;padding-left:3px}div.ProseMirror li p[data-v-a7b1a700]{margin-bottom:.5em}div.ProseMirror ul[data-v-a7b1a700],div.ProseMirror ol[data-v-a7b1a700]{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li[data-v-a7b1a700]{list-style-type:disc}div.ProseMirror li ul>li[data-v-a7b1a700]{list-style-type:circle}div.ProseMirror li li ul>li[data-v-a7b1a700]{list-style-type:square}div.ProseMirror blockquote[data-v-a7b1a700]{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table[data-v-a7b1a700]{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table[data-v-a7b1a700]{margin-top:1em}div.ProseMirror table td[data-v-a7b1a700],div.ProseMirror table th[data-v-a7b1a700]{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td[data-v-a7b1a700]:first-child,div.ProseMirror table th[data-v-a7b1a700]:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td[data-v-a7b1a700]{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th[data-v-a7b1a700]{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div[data-v-a7b1a700]{display:flex}div.ProseMirror table tr[data-v-a7b1a700]{background-color:var(--table-color-background)}div.ProseMirror table tr[data-v-a7b1a700]:hover,div.ProseMirror table tr[data-v-a7b1a700]:active,div.ProseMirror table tr[data-v-a7b1a700]:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th[data-v-a7b1a700]:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th[data-v-a7b1a700]:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-a7b1a700]:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-a7b1a700]:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor[data-v-a7b1a700]{display:block}.editor__content p.is-empty[data-v-a7b1a700]:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content[data-v-a7b1a700]{tab-size:4}div.ProseMirror[data-v-a7b1a700]{display:inline;margin-top:unset;position:unset;padding:unset;line-height:unset}div.ProseMirror h1[data-v-a7b1a700],div.ProseMirror h6[data-v-a7b1a700]{display:inline;padding:0;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/HelpModal.vue\",\"webpack://./css/prosemirror.scss\"],\"names\":[],\"mappings\":\"AAEC,kDACC,iBAAA,CACA,sBAAA,CACA,gBAAA,CAID,0CACC,kDACC,aAAA,CACA,cAAA,CAAA,CAKH,uBACC,eAAA,CACA,wBAAA,CAGC,mHACC,yCAAA,CAIF,gCACC,WAAA,CAGD,0BACC,gBAAA,CACA,4BAAA,CACA,sDAAA,CAGD,0BACC,4BAAA,CACA,iDAAA,CACA,mBAAA,CAEA,mCACC,gBAAA,CAGD,uCACC,gBAAA,CAGD,mCACC,aAAA,CACA,gBAAA,CAGD,0CACC,aAAA,CAIF,2BACC,iBAAA,CAGD,4BACC,iBAAA,CACA,aAAA,CACA,6CAAA,CACA,iBAAA,CCjEF,iCACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,yCAEC,sBAAA,CAGD,gOAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,wWACC,sBAAA,CAGD,ghBACC,0BAAA,CAIF,gDACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,qEACC,YAAA,CAED,uDACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,+DACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,8DACC,mCAAA,CACA,4BAAA,CAGF,sDACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,+CACC,eAAA,CAIA,gSACC,YAAA,CAIF,mCACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,sDACC,iBAAA,CACA,gBAAA,CAGD,oCACC,iBAAA,CAGD,wNAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,oCACC,cAAA,CAGD,qCACC,cAAA,CACA,cAAA,CAGD,oCACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,0CACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,qCACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,iDACC,iBAAA,CACA,kDAAA,CAGD,yDACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,wCACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,oCACC,iBAAA,CACA,gBAAA,CAEA,sCACC,kBAAA,CAIF,wEACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,uCACC,oBAAA,CAID,0CACC,sBAAA,CAID,6CACC,sBAAA,CAGD,4CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,uCACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,uCACC,cAAA,CAID,oFACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,4GACC,+CAAA,CAGF,0CACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,0CACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,8CACC,YAAA,CAGF,0CACC,8CAAA,CACA,iJACC,oDAAA,CAKD,qEAAA,iDAAA,CACA,oEAAA,kDAAA,CAIA,oEAAA,oDAAA,CACA,mEAAA,qDAAA,CAOH,6DACC,aAAA,CAGD,iEACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,kCACC,UAAA,CDtOD,iCACC,cAAA,CACA,gBAAA,CACA,cAAA,CACA,aAAA,CACA,iBAAA,CAEA,wEACC,cAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n:deep(.modal-wrapper) {\\n\\t.modal-container {\\n\\t\\twidth: max-content;\\n\\t\\tpadding: 30px 40px 20px;\\n\\t\\tuser-select: text;\\n\\t}\\n\\n\\t// Remove padding-right on mobile, screen might not be wide enough\\n\\t@media only screen and (max-width: 512px) {\\n\\t\\t.modal-container {\\n\\t\\t\\twidth: inherit;\\n\\t\\t\\tpadding: 10px 0;\\n\\t\\t}\\n\\t}\\n}\\n\\ntable {\\n\\tmargin-top: 24px;\\n\\tborder-collapse: collapse;\\n\\n\\ttbody tr {\\n\\t\\t&:hover, &:focus, &:active {\\n\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\tthead tr {\\n\\t\\tborder: none;\\n\\t}\\n\\n\\tth {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: .75rem 1rem .75rem 0;\\n\\t\\tborder-bottom: 2px solid var(--color-background-darker);\\n\\t}\\n\\n\\ttd {\\n\\t\\tpadding: .75rem 1rem .75rem 0;\\n\\t\\tborder-top: 1px solid var(--color-background-dark);\\n\\t\\tborder-bottom: unset;\\n\\n\\t\\t&.noborder {\\n\\t\\t\\tborder-top: unset;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis_top {\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&.ellipsis_bottom {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\tkbd {\\n\\t\\tfont-size: smaller;\\n\\t}\\n\\n\\tcode {\\n\\t\\tpadding: .2em .4em;\\n\\t\\tfont-size: 90%;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: 6px;\\n\\t}\\n}\\n\\n@import '../../css/prosemirror';\\n\\ndiv.ProseMirror {\\n\\tdisplay: inline;\\n\\tmargin-top: unset;\\n\\tposition: unset;\\n\\tpadding: unset;\\n\\tline-height: unset;\\n\\n\\th1, h6 {\\n\\t\\tdisplay: inline;\\n\\t\\tpadding: 0;\\n\\t\\tmargin: 0;\\n\\t}\\n}\\n\",\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: 14px;\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: 14px;\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\tlabel {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 36px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 21px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: 14px;\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t+ & {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal__content[data-v-8f1a4cfa]{height:80vh;padding:0 50px;display:flex;justify-content:center}.modal__content img[data-v-8f1a4cfa]{width:100%;height:100%;object-fit:contain}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ImageView/ShowImageModal.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,WAAA,CACA,cAAA,CACA,YAAA,CACA,sBAAA,CACA,qCACC,UAAA,CACA,WAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.modal__content {\\n\\theight: 80vh;\\n\\tpadding: 0 50px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\timg {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tobject-fit: contain;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"ul.inline-container-content{display:flex;justify-content:space-between}ul.inline-container-content li{flex:1 1}ul.inline-container-content .action-button{padding:0 !important;width:100%;display:flex;justify-content:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/InlineActionsContainer.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,YAAA,CACA,6BAAA,CACA,+BACC,QAAA,CAGD,2CAEC,oBAAA,CACA,UAAA,CACA,YAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\nul.inline-container-content {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tli {\\n\\t\\tflex: 1 1;\\n\\t}\\n\\n\\t.action-button {\\n\\t\\t// Fix action buttons beeing shifted to the left (right padding)\\n\\t\\tpadding: 0 !important;\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-menubar[data-v-829d9a78]{--background-blur: blur(10px);position:sticky;top:0;z-index:10021;background-color:var(--color-main-background-translucent);backdrop-filter:var(--background-blur);max-height:44px;padding-top:3px;padding-bottom:3px;visibility:hidden;display:flex;justify-content:flex-end;align-items:center}.text-menubar.text-menubar--ready[data-v-829d9a78]:not(.text-menubar--autohide){visibility:visible;animation-name:fadeInDown;animation-duration:.3s}.text-menubar.text-menubar--autohide[data-v-829d9a78]{opacity:0;transition:visibility .2s .4s,opacity .2s .4s}.text-menubar.text-menubar--autohide.text-menubar--show[data-v-829d9a78]{visibility:visible;opacity:1}.text-menubar .text-menubar__entries[data-v-829d9a78]{display:flex;flex-grow:1;margin-left:max(0px,(100% - var(--text-editor-max-width))/2)}.text-menubar .text-menubar__slot[data-v-829d9a78]{justify-content:flex-end;display:flex;min-width:max(0px,min(100px,(100% - var(--text-editor-max-width))/2))}.text-menubar.text-menubar--is-workspace .text-menubar__entries[data-v-829d9a78]{margin-left:0}@media(max-width: 660px){.text-menubar .text-menubar__entries[data-v-829d9a78]{margin-left:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/MenuBar.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,6BAAA,CACA,eAAA,CACA,KAAA,CACA,aAAA,CACA,yDAAA,CACA,sCAAA,CACA,eAAA,CACA,eAAA,CACA,kBAAA,CAEA,iBAAA,CAEA,YAAA,CACA,wBAAA,CACA,kBAAA,CAEA,gFACC,kBAAA,CACA,yBAAA,CACA,sBAAA,CAGD,sDACC,SAAA,CACA,6CAAA,CACA,yEACC,kBAAA,CACA,SAAA,CAGF,sDACC,YAAA,CACA,WAAA,CACA,4DAAA,CAGD,mDACC,wBAAA,CACA,YAAA,CACA,qEAAA,CAIA,iFACC,aAAA,CAIF,yBACC,sDACC,aAAA,CAAA\",\"sourcesContent\":[\"\\n.text-menubar {\\n\\t--background-blur: blur(10px);\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tz-index: 10021; // above modal-header so menubar is always on top\\n\\tbackground-color: var(--color-main-background-translucent);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tmax-height: 44px; // important for mobile so that the buttons are always inside the container\\n\\tpadding-top:3px;\\n\\tpadding-bottom: 3px;\\n\\n\\tvisibility: hidden;\\n\\n\\tdisplay: flex;\\n\\tjustify-content: flex-end;\\n\\talign-items: center;\\n\\n\\t&.text-menubar--ready:not(.text-menubar--autohide) {\\n\\t\\tvisibility: visible;\\n\\t\\tanimation-name: fadeInDown;\\n\\t\\tanimation-duration: 0.3s;\\n\\t}\\n\\n\\t&.text-menubar--autohide {\\n\\t\\topacity: 0;\\n\\t\\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\\n\\t\\t&.text-menubar--show {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\t.text-menubar__entries {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tmargin-left: max(0px, calc((100% - var(--text-editor-max-width)) / 2));\\n\\t}\\n\\n\\t.text-menubar__slot {\\n\\t\\tjustify-content: flex-end;\\n\\t\\tdisplay: flex;\\n\\t\\tmin-width: max(0px, min(100px, (100% - var(--text-editor-max-width)) / 2));\\n\\t}\\n\\n\\t&.text-menubar--is-workspace {\\n\\t\\t.text-menubar__entries {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 660px) {\\n\\t\\t.text-menubar__entries {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".translate-dialog[data-v-6f82ffba]{margin:24px}textarea[data-v-6f82ffba]{display:block;width:100%;margin-bottom:12px}.language-selector[data-v-6f82ffba]{display:flex;align-items:center;margin-bottom:12px}.language-selector label[data-v-6f82ffba]{flex-grow:1}.translate-actions[data-v-6f82ffba]{display:flex;justify-content:flex-end}.translate-actions button[data-v-6f82ffba]{margin-left:12px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Modal/Translate.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,WAAA,CAGD,0BACC,aAAA,CACA,UAAA,CACA,kBAAA,CAID,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,0CACC,WAAA,CAIF,oCACC,YAAA,CACA,wBAAA,CAEA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.translate-dialog {\\n\\tmargin: 24px;\\n}\\n\\ntextarea {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin-bottom: 12px;\\n\\n}\\n\\n.language-selector {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmargin-bottom: 12px;\\n\\n\\tlabel {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\\n.translate-actions {\\n\\tdisplay: flex;\\n\\tjustify-content: flex-end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#read-only-editor{overflow:scroll}.thumbnailContainer #read-only-editor{width:100%}.thumbnailContainer #read-only-editor .ProseMirror{height:auto;margin:0 0 0 0;padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Reader.vue\"],\"names\":[],\"mappings\":\"AAEA,kBACC,eAAA,CAGD,sCACC,UAAA,CAEA,mDACC,WAAA,CACA,cAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n\\n#read-only-editor {\\n\\toverflow: scroll;\\n}\\n\\n.thumbnailContainer #read-only-editor {\\n\\twidth: 100%;\\n\\n\\t.ProseMirror {\\n\\t\\theight: auto;\\n\\t\\tmargin: 0 0 0 0;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size:14px;outline:none;--table-color-border: var(--color-border);--table-color-heading: var(--color-text-maxcontrast);--table-color-heading-border: var(--color-border-dark);--table-color-background: var(--color-main-background);--table-color-background-hover: var(--color-primary-element-light);--table-border-radius: var(--border-radius)}div.ProseMirror :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true],div.ProseMirror[contenteditable=false],div.ProseMirror [contenteditable=true],div.ProseMirror [contenteditable=false]{width:100%;background-color:rgba(0,0,0,0);color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}div.ProseMirror[contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true]:focus,div.ProseMirror[contenteditable=true]:focus-visible,div.ProseMirror[contenteditable=false]:focus,div.ProseMirror[contenteditable=false]:focus-visible,div.ProseMirror [contenteditable=true]:focus,div.ProseMirror [contenteditable=true]:focus-visible,div.ProseMirror [contenteditable=false]:focus,div.ProseMirror [contenteditable=false]:focus-visible{box-shadow:none !important}div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox]{display:none}div.ProseMirror .checkbox-item:before{content:\\\"\\\";vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}div.ProseMirror .checkbox-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*:first-child{margin-top:10px}div.ProseMirror>h1:first-child,div.ProseMirror h2:first-child,div.ProseMirror h3:first-child,div.ProseMirror h4:first-child,div.ProseMirror h5:first-child,div.ProseMirror h6:first-child{margin-top:0}div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content{margin-bottom:1em;line-height:150%}div.ProseMirror em{font-style:italic}div.ProseMirror h1,div.ProseMirror h2,div.ProseMirror h3,div.ProseMirror h4,div.ProseMirror h5,div.ProseMirror h6{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1{font-size:36px}div.ProseMirror h2{font-size:30px}div.ProseMirror h3{font-size:24px}div.ProseMirror h4{font-size:21px}div.ProseMirror h5{font-size:17px}div.ProseMirror h6{font-size:14px}div.ProseMirror img{cursor:default;max-width:100%}div.ProseMirror hr{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre{white-space:pre-wrap;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror pre.frontmatter{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li{position:relative;padding-left:3px}div.ProseMirror li p{margin-bottom:.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li{list-style-type:disc}div.ProseMirror li ul>li{list-style-type:circle}div.ProseMirror li li ul>li{list-style-type:square}div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table{margin-top:1em}div.ProseMirror table td,div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td:first-child,div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div{display:flex}div.ProseMirror table tr{background-color:var(--table-color-background)}div.ProseMirror table tr:hover,div.ProseMirror table tr:active,div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content{tab-size:4}@media print{@page{size:A4;margin:2.5cm 2cm 2cm 2.5cm}body{position:absolute;overflow:visible !important}#viewer[data-handler=text]{border:none;width:100% !important;position:absolute !important}#viewer[data-handler=text] .modal-header{display:none !important}#viewer[data-handler=text] .modal-container{top:0px;height:fit-content}.text-editor .text-menubar{display:none !important}.text-editor .action-item{display:none !important}.text-editor .editor__content{max-width:100%}.text-editor .text-editor__wrapper{height:fit-content;position:unset}.text-editor div.ProseMirror h1,.text-editor div.ProseMirror h2,.text-editor div.ProseMirror h3,.text-editor div.ProseMirror h4,.text-editor div.ProseMirror h5{break-after:avoid}.text-editor div.ProseMirror .image,.text-editor div.ProseMirror img,.text-editor div.ProseMirror table{break-inside:avoid-page;max-width:90% !important;margin:5vw auto 5vw 5% !important}.text-editor div.ProseMirror th{color:#000 !important;font-weight:bold !important;border-width:0 1px 2px 0 !important;border-color:gray !important;border-style:none solid solid none !important}.text-editor div.ProseMirror th:last-of-type{border-width:0 0 2px 0 !important}.text-editor div.ProseMirror td{border-style:none solid none none !important;border-width:1px !important;border-color:gray !important}.text-editor div.ProseMirror td:last-of-type{border:none !important}.menubar-placeholder,.text-editor--readonly-bar{display:none}.text-editor__content-wrapper.--show-outline{display:block}.text-editor__content-wrapper .editor--outline{width:auto;height:auto;overflow:unset;position:relative}.text-editor__content-wrapper .editor--outline__btn-close{display:none}}@media print{#content{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./css/prosemirror.scss\",\"webpack://./css/print.scss\",\"webpack://./src/components/RichTextReader.vue\"],\"names\":[],\"mappings\":\"AAGA,gBACC,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,mCAAA,CACA,2BAAA,CACA,0BAAA,CACA,gBAAA,CACA,cAAA,CACA,YAAA,CAuNA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CA1NA,wBAEC,sBAAA,CAGD,4JAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,oSACC,sBAAA,CAGD,wYACC,0BAAA,CAIF,+BACC,YAAA,CACA,iBAAA,CAEA,iBAAA,CAEA,oDACC,YAAA,CAED,sCACC,UAAA,CACA,qBAAA,CACA,sBAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CACA,kCAAA,CACA,WAAA,CACA,UAAA,CACA,0BAAA,CACA,0BAAA,CACA,cAAA,CAGA,8CACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,6CACC,mCAAA,CACA,4BAAA,CAGF,qCACC,aAAA,CACA,WAAA,CACA,2BAAA,CAIF,8BACC,eAAA,CAIA,0LACC,YAAA,CAIF,kBACC,kCAAA,CACA,yBAAA,CACA,cAAA,CAGD,qCACC,iBAAA,CACA,gBAAA,CAGD,mBACC,iBAAA,CAGD,kHAMC,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,mBACC,cAAA,CAGD,oBACC,cAAA,CACA,cAAA,CAGD,mBACC,aAAA,CACA,WAAA,CACA,YAAA,CACA,UAAA,CAGD,yBACC,UAAA,CACA,aAAA,CACA,UAAA,CACA,yCAAA,CACA,eAAA,CAGD,oBACC,oBAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,gCACC,iBAAA,CACA,kDAAA,CAGD,wCACC,aAAA,CACA,wBAAA,CACA,mCAAA,CACA,mBAAA,CAGD,uBACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,mBACC,iBAAA,CACA,gBAAA,CAEA,qBACC,kBAAA,CAIF,sCACC,iBAAA,CACA,gBAAA,CACA,iBAAA,CAGD,sBACC,oBAAA,CAID,yBACC,sBAAA,CAID,4BACC,sBAAA,CAGD,2BACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA,CAWD,sBACC,gBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBACC,cAAA,CAID,kDACC,0CAAA,CACA,aAAA,CACA,kBAAA,CACA,cAAA,CACA,0EACC,+CAAA,CAGF,yBACC,kBAAA,CACA,YAAA,CACA,4BAAA,CAED,yBACC,mBAAA,CACA,kBAAA,CACA,qDAAA,CACA,gCAAA,CAEA,6BACC,YAAA,CAGF,yBACC,8CAAA,CACA,8FACC,oDAAA,CAKD,oDAAA,iDAAA,CACA,mDAAA,kDAAA,CAIA,mDAAA,oDAAA,CACA,kDAAA,qDAAA,CAOH,4CACC,aAAA,CAGD,gDACC,8BAAA,CACA,UAAA,CACA,mCAAA,CACA,mBAAA,CACA,QAAA,CAGD,iBACC,UAAA,CChTD,aACC,MACC,OAAA,CACA,0BAAA,CAGD,KAEC,iBAAA,CACA,2BAAA,CAGD,2BAEC,WAAA,CACA,qBAAA,CAEA,4BAAA,CAEA,yCAEC,uBAAA,CAED,4CAEC,OAAA,CACA,kBAAA,CAKD,2BAEC,uBAAA,CAED,0BAEC,uBAAA,CAED,8BAEC,cAAA,CAED,mCACC,kBAAA,CACA,cAAA,CAIA,gKAEC,iBAAA,CAED,wGAEC,uBAAA,CAEA,wBAAA,CACA,iCAAA,CAID,gCACC,qBAAA,CACA,2BAAA,CACA,mCAAA,CACA,4BAAA,CACA,6CAAA,CAED,6CACC,iCAAA,CAGD,gCACC,4CAAA,CACA,2BAAA,CACA,4BAAA,CAED,6CACC,sBAAA,CAKH,gDACC,YAAA,CAIA,6CACC,aAAA,CAGD,+CACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,iBAAA,CAED,0DACC,YAAA,CAAA,CChGH,aAEC,SACC,YAAA,CAAA\",\"sourcesContent\":[\"@use 'sass:selector';\\n\\n/* Document rendering styles */\\ndiv.ProseMirror {\\n\\theight: 100%;\\n\\tposition: relative;\\n\\tword-wrap: break-word;\\n\\twhite-space: pre-wrap;\\n\\t-webkit-font-variant-ligatures: none;\\n\\tfont-variant-ligatures: none;\\n\\tpadding: 4px 8px 200px 14px;\\n\\tline-height: 150%;\\n\\tfont-size: 14px;\\n\\toutline: none;\\n\\n\\t:target {\\n\\t\\t// Menubar height: 44px + 3px bottom + 3px top padding\\n\\t\\tscroll-margin-top: 50px;\\n\\t}\\n\\n\\t&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\topacity: 1;\\n\\t\\t-webkit-user-select: text;\\n\\t\\tuser-select: text;\\n\\t\\tfont-size: 14px;\\n\\n\\t\\t&:not(.collaboration-cursor__caret) {\\n\\t\\t\\tborder: none !important;\\n\\t\\t}\\n\\n\\t\\t&:focus, &:focus-visible {\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\tlabel {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\ttext-decoration: line-through;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\t> h1,h2,h3,h4,h5,h6 {\\n\\t\\t&:first-child {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp .paragraph-content {\\n\\t\\tmargin-bottom: 1em;\\n\\t\\tline-height: 150%;\\n\\t}\\n\\n\\tem {\\n\\t\\tfont-style: italic;\\n\\t}\\n\\n\\th1,\\n\\th2,\\n\\th3,\\n\\th4,\\n\\th5,\\n\\th6 {\\n\\t\\tfont-weight: 600;\\n\\t\\tline-height: 1.1em;\\n\\t\\tmargin-top: 24px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n\\n\\th1 {\\n\\t\\tfont-size: 36px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 30px;\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\th4 {\\n\\t\\tfont-size: 21px;\\n\\t}\\n\\n\\th5 {\\n\\t\\tfont-size: 17px;\\n\\t}\\n\\n\\th6 {\\n\\t\\tfont-size: 14px;\\n\\t}\\n\\n\\timg {\\n\\t\\tcursor: default;\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\thr {\\n\\t\\tpadding: 2px 0;\\n\\t\\tborder: none;\\n\\t\\tmargin: 2em 0;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\thr:after {\\n\\t\\tcontent: '';\\n\\t\\tdisplay: block;\\n\\t\\theight: 1px;\\n\\t\\tbackground-color: var(--color-border-dark);\\n\\t\\tline-height: 2px;\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tpre.frontmatter {\\n\\t\\tmargin-bottom: 2em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t}\\n\\n\\tpre.frontmatter::before {\\n\\t\\tdisplay: block;\\n\\t\\tcontent: attr(data-title);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-bottom: 0.5em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t+ & {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\",\"@media print {\\n\\t@page {\\n\\t\\tsize: A4;\\n\\t\\tmargin: 2.5cm 2cm 2cm 2.5cm;\\n\\t}\\n\\n\\tbody {\\n\\t\\t// position: fixed does not support scrolling and as such only prints one page\\n\\t\\tposition: absolute;\\n\\t\\toverflow: visible!important;\\n\\t}\\n\\n\\t#viewer[data-handler='text'] {\\n\\t\\t// Hide top border\\n\\t\\tborder: none;\\n\\t\\twidth: 100%!important;\\n\\t\\t// NcModal uses fixed, which will be cropped when printed\\n\\t\\tposition: absolute!important;\\n\\n\\t\\t.modal-header {\\n\\t\\t\\t// Hide modal header (close button)\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.modal-container {\\n\\t\\t\\t// Make sure top aligned as we hided the menubar */\\n\\t\\t\\ttop: 0px;\\n\\t\\t\\theight: fit-content;\\n\\t\\t}\\n\\t}\\n\\n\\t.text-editor {\\n\\t\\t.text-menubar {\\n\\t\\t\\t// Hide menu bar\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.action-item {\\n\\t\\t\\t// Hide table settings\\n\\t\\t\\tdisplay: none!important;\\n\\t\\t}\\n\\t\\t.editor__content {\\n\\t\\t\\t// Margins set by page rule\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.text-editor__wrapper {\\n\\t\\t\\theight: fit-content;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\n\\t\\tdiv.ProseMirror {\\n\\t\\t\\th1, h2, h3, h4, h5 {\\n\\t\\t\\t\\t// orphaned headlines are ugly\\n\\t\\t\\t\\tbreak-after: avoid;\\n\\t\\t\\t}\\n\\t\\t\\t.image, img, table {\\n\\t\\t\\t\\t// try no page breaks within tables or images\\n\\t\\t\\t\\tbreak-inside: avoid-page;\\n\\t\\t\\t\\t// Some more indention\\n\\t\\t\\t\\tmax-width: 90%!important;\\n\\t\\t\\t\\tmargin: 5vw auto 5vw 5%!important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add some borders below header and between columns\\n\\t\\t\\tth {\\n\\t\\t\\t\\tcolor: black!important;\\n\\t\\t\\t\\tfont-weight: bold!important;\\n\\t\\t\\t\\tborder-width: 0 1px 2px 0!important;\\n\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t\\tborder-style: none solid solid none!important;\\n\\t\\t\\t}\\n\\t\\t\\tth:last-of-type {\\n\\t\\t\\t\\tborder-width: 0 0 2px 0!important;\\n\\t\\t\\t}\\n\\n\\t\\t\\ttd {\\n\\t\\t\\t\\tborder-style: none solid none none!important;\\n\\t\\t\\t\\tborder-width: 1px!important;\\n\\t\\t\\t\\tborder-color: gray!important;\\n\\t\\t\\t}\\n\\t\\t\\ttd:last-of-type {\\n\\t\\t\\t\\tborder: none!important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.menubar-placeholder, .text-editor--readonly-bar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.text-editor__content-wrapper {\\n\\t\\t&.--show-outline {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.editor--outline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\theight: auto;\\n\\t\\t\\toverflow: unset;\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\t\\t.editor--outline__btn-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\",\"\\n@import './../../css/prosemirror';\\n@import './../../css/print';\\n\\n@media print {\\n\\t// Hide Content behind modal, this also hides the sidebar if open\\n\\t#content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emoji-list[data-v-74f9a54a]{border-radius:var(--border-radius);background-color:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow);overflow:auto;min-width:200px;max-width:200px;padding:4px;max-height:195.5px;margin:5px 0}.emoji-list__item[data-v-74f9a54a]{border-radius:8px;padding:4px 8px;margin-bottom:4px;opacity:.8;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emoji-list__item[data-v-74f9a54a]:last-child{margin-bottom:0}.emoji-list__item__emoji[data-v-74f9a54a]{padding-right:8px}.emoji-list__item.is-selected[data-v-74f9a54a],.emoji-list__item[data-v-74f9a54a]:focus,.emoji-list__item[data-v-74f9a54a]:hover{opacity:1;background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/Emoji/EmojiList.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kCAAA,CACA,6CAAA,CACA,4CAAA,CACA,aAAA,CAEA,eAAA,CACA,eAAA,CACA,WAAA,CAEA,kBAAA,CACA,YAAA,CAEA,mCACC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,UAAA,CACA,cAAA,CAGA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,8CACC,eAAA,CAGD,0CACC,iBAAA,CAGD,iIAGC,SAAA,CACA,mDAAA\",\"sourcesContent\":[\"\\n.emoji-list {\\n\\tborder-radius: var(--border-radius);\\n\\tbackground-color: var(--color-main-background);\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n\\toverflow: auto;\\n\\n\\tmin-width: 200px;\\n\\tmax-width: 200px;\\n\\tpadding: 4px;\\n\\t// Show maximum 5 entries and a half to show scroll\\n\\tmax-height: 35.5px * 5 + 18px;\\n\\tmargin: 5px 0;\\n\\n\\t&__item {\\n\\t\\tborder-radius: 8px;\\n\\t\\tpadding: 4px 8px;\\n\\t\\tmargin-bottom: 4px;\\n\\t\\topacity: 0.8;\\n\\t\\tcursor: pointer;\\n\\n\\t\\t// Take care of long names\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t&:last-child {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&__emoji {\\n\\t\\t\\tpadding-right: 8px;\\n\\t\\t}\\n\\n\\t\\t&.is-selected,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".link-picker__item[data-v-0ea7b674]{display:flex;align-items:center}.link-picker__item>div[data-v-0ea7b674]{padding:4px;padding-left:8px;overflow:hidden;text-overflow:ellipsis}.link-picker__item img[data-v-0ea7b674]{width:20px;height:20px;filter:var(--background-invert-if-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/LinkPicker/LinkPickerList.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,YAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGD,wCACC,UAAA,CACA,WAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n.link-picker__item {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\n\\t& > div {\\n\\t\\tpadding: 4px;\\n\\t\\tpadding-left: 8px;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\timg {\\n\\t\\twidth: 20px;\\n\\t\\theight: 20px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../assets/status-icons/user-status-online.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../../../assets/status-icons/user-status-dnd.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../../../assets/status-icons/user-status-away.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".autocomplete-result[data-v-2145738d]{display:flex;height:30px;padding:10px}.highlight .autocomplete-result[data-v-2145738d]{color:var(--color-main-text);background:var(--color-primary-element-light)}.highlight .autocomplete-result[data-v-2145738d],.highlight .autocomplete-result *[data-v-2145738d]{cursor:pointer}.autocomplete-result__icon[data-v-2145738d]{position:relative;flex:0 0 30px;width:30px;min-width:30px;height:30px;border-radius:30px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:10px}.autocomplete-result__icon--with-avatar[data-v-2145738d]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-2145738d]{position:absolute;right:-4px;bottom:-4px;box-sizing:border-box;width:18px;height:18px;border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:var(--default-font-size);line-height:15px;background-repeat:no-repeat;background-size:16px;background-position:center}.autocomplete-result__status--online[data-v-2145738d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.autocomplete-result__status--dnd[data-v-2145738d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#fff}.autocomplete-result__status--away[data-v-2145738d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.autocomplete-result__status--icon[data-v-2145738d]{border:none;background-color:rgba(0,0,0,0)}.autocomplete-result__content[data-v-2145738d]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0;padding-left:10px}.autocomplete-result__title[data-v-2145738d],.autocomplete-result__subline[data-v-2145738d]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-2145738d]{color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/Mention/AutoCompleteResult.vue\"],\"names\":[],\"mappings\":\"AAIA,sCACC,YAAA,CACA,WALgB,CAMhB,YALsB,CAOtB,iDACC,4BAAA,CACA,6CAAA,CACA,oGACC,cAAA,CAIF,4CACC,iBAAA,CACA,aAAA,CACA,UAnBe,CAoBf,cApBe,CAqBf,WArBe,CAsBf,kBAtBe,CAuBf,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,yDACC,aAAA,CACA,qBAAA,CAIF,8CACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,qBAAA,CACA,UAAA,CACA,WAAA,CACA,6CAAA,CACA,iBAAA,CACA,6CAAA,CACA,kCAAA,CACA,gBAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CAEA,sDACC,wDAAA,CAED,mDACC,wDAAA,CACA,qBAAA,CAED,oDACC,wDAAA,CAED,oDACC,WAAA,CACA,8BAAA,CAIF,+CACC,YAAA,CACA,aAAA,CACA,qBAAA,CACA,sBAAA,CACA,WAAA,CACA,iBAtEqB,CAyEtB,4FAEC,kBAAA,CACA,eAAA,CACA,sBAAA,CAGD,+CACC,+BAAA\",\"sourcesContent\":[\"\\n$clickable-area: 30px;\\n$autocomplete-padding: 10px;\\n\\n.autocomplete-result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $autocomplete-padding;\\n\\n\\t.highlight & {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground: var(--color-primary-element-light);\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: $clickable-area;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: 18px;\\n\\t\\theight: 18px;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: 50%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: 15px;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\n\\n\\t\\t&--online{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-online.svg');\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-dnd.svg');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\tbackground-image: url('../../../assets/status-icons/user-status-away.svg');\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $autocomplete-padding;\\n\\t}\\n\\n\\t&__title,\\n\\t&__subline {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".items{position:relative;border-radius:var(--border-radius);background:var(--color-main-background);overflow:hidden;font-size:.9rem;box-shadow:0 1px 5px var(--color-box-shadow);min-width:250px}.item-empty{padding:4px 8px;opacity:.8}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/Mention/MentionList.vue\"],\"names\":[],\"mappings\":\"AACA,OACC,iBAAA,CACA,kCAAA,CACA,uCAAA,CACA,eAAA,CACA,eAAA,CACA,4CAAA,CACA,eAAA,CAGD,YACC,eAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.items {\\n\\tposition: relative;\\n\\tborder-radius: var(--border-radius);\\n\\tbackground: var(--color-main-background);\\n\\toverflow: hidden;\\n\\tfont-size: 0.9rem;\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n\\tmin-width: 250px;\\n}\\n\\n.item-empty {\\n\\tpadding: 4px 8px;\\n\\topacity: 0.8;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".suggestion-list[data-v-04aba4e2]{border-radius:var(--border-radius);background-color:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow);overflow:auto;min-width:200px;max-width:400px;padding:4px;max-height:195.5px;margin:5px 0}.suggestion-list__item[data-v-04aba4e2]{border-radius:8px;padding:4px 8px;margin-bottom:4px;opacity:.8;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suggestion-list__item[data-v-04aba4e2]:last-child{margin-bottom:0}.suggestion-list__item__emoji[data-v-04aba4e2]{padding-right:8px}.suggestion-list__item.is-selected[data-v-04aba4e2],.suggestion-list__item[data-v-04aba4e2]:focus,.suggestion-list__item[data-v-04aba4e2]:hover{opacity:1;background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Suggestion/SuggestionListWrapper.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,kCAAA,CACA,6CAAA,CACA,4CAAA,CACA,aAAA,CAEA,eAAA,CACA,eAAA,CACA,WAAA,CAEA,kBAAA,CACA,YAAA,CAEA,wCACC,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,UAAA,CACA,cAAA,CAGA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,mDACC,eAAA,CAGD,+CACC,iBAAA,CAGD,gJAGC,SAAA,CACA,mDAAA\",\"sourcesContent\":[\"\\n.suggestion-list {\\n\\tborder-radius: var(--border-radius);\\n\\tbackground-color: var(--color-main-background);\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n\\toverflow: auto;\\n\\n\\tmin-width: 200px;\\n\\tmax-width: 400px;\\n\\tpadding: 4px;\\n\\t// Show maximum 5 entries and a half to show scroll\\n\\tmax-height: 35.5px * 5 + 18px;\\n\\tmargin: 5px 0;\\n\\n\\t&__item {\\n\\t\\tborder-radius: 8px;\\n\\t\\tpadding: 4px 8px;\\n\\t\\tmargin-bottom: 4px;\\n\\t\\topacity: 0.8;\\n\\t\\tcursor: pointer;\\n\\n\\t\\t// Take care of long names\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t&:last-child {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t&__emoji {\\n\\t\\t\\tpadding-right: 8px;\\n\\t\\t}\\n\\n\\t\\t&.is-selected,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".callout[data-v-2734884a]{background-color:var(--callout-background, var(--color-background-hover));border-left-color:var(--callout-border, var(--color-primary-element));border-radius:var(--border-radius);padding:1em;padding-left:.5em;border-left-width:.3em;border-left-style:solid;position:relative;margin-bottom:.5em;display:flex;align-items:center;justify-content:flex-start}.callout[data-v-2734884a]{margin-top:.5em}.callout .callout__content[data-v-2734884a]{margin-left:1em}.callout .callout__content[data-v-2734884a] p:last-child{margin-bottom:0}.callout .callout__icon[data-v-2734884a],.callout .callout__icon[data-v-2734884a] svg{color:var(--callout-border)}.callout[data-v-2734884a],.callout--info[data-v-2734884a]{--callout-border: var(--color-info, #006aa3)}.callout--warn[data-v-2734884a]{--callout-border: var(--color-warning)}.callout--error[data-v-2734884a]{--callout-border: var(--color-error)}.callout--success[data-v-2734884a]{--callout-border: var(--color-success)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/Callout.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,yEAAA,CACA,qEAAA,CACA,kCAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,YAAA,CACA,kBAAA,CACA,0BAAA,CAEA,0BACC,eAAA,CAGD,4CACC,eAAA,CAEC,yDACC,eAAA,CAMF,sFACC,2BAAA,CAKF,0DACC,4CAAA,CAID,gCACC,sCAAA,CAID,iCACC,oCAAA,CAID,mCACC,sCAAA\",\"sourcesContent\":[\"\\n.callout {\\n\\tbackground-color: var(--callout-background, var(--color-background-hover));\\n\\tborder-left-color: var(--callout-border, var(--color-primary-element));\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em;\\n\\tpadding-left: 0.5em;\\n\\tborder-left-width: 0.3em;\\n\\tborder-left-style: solid;\\n\\tposition: relative;\\n\\tmargin-bottom: 0.5em;\\n\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: flex-start;\\n\\n\\t+ & {\\n\\t\\tmargin-top: 0.5em;\\n\\t}\\n\\n\\t.callout__content {\\n\\t\\tmargin-left: 1em;\\n\\t\\t&:deep(p) {\\n\\t\\t\\t&:last-child {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.callout__icon {\\n\\t\\t&, :deep(svg) {\\n\\t\\t\\tcolor: var(--callout-border);\\n\\t\\t}\\n\\t}\\n\\n\\t// Info (default) variables\\n\\t&, &--info {\\n\\t\\t--callout-border: var(--color-info, #006aa3);\\n\\t}\\n\\n\\t// Warn variables\\n\\t&--warn {\\n\\t\\t--callout-border: var(--color-warning);\\n\\t}\\n\\n\\t// Error variables\\n\\t&--error {\\n\\t\\t--callout-border: var(--color-error);\\n\\t}\\n\\n\\t// Success variables\\n\\t&--success {\\n\\t\\t--callout-border: var(--color-success);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"div.ProseMirror h1,div.ProseMirror h2,div.ProseMirror h3,div.ProseMirror h4,div.ProseMirror h5,div.ProseMirror h6{position:relative}div.ProseMirror h1 .heading-anchor[contenteditable=false],div.ProseMirror h2 .heading-anchor[contenteditable=false],div.ProseMirror h3 .heading-anchor[contenteditable=false],div.ProseMirror h4 .heading-anchor[contenteditable=false],div.ProseMirror h5 .heading-anchor[contenteditable=false],div.ProseMirror h6 .heading-anchor[contenteditable=false]{width:1em;opacity:0;padding:0;left:-1em;bottom:0;font-size:max(1em,16px);position:absolute;text-decoration:none;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}div.ProseMirror h1:hover .heading-anchor,div.ProseMirror h2:hover .heading-anchor,div.ProseMirror h3:hover .heading-anchor,div.ProseMirror h4:hover .heading-anchor,div.ProseMirror h5:hover .heading-anchor,div.ProseMirror h6:hover .heading-anchor{opacity:.5 !important}div.ProseMirror h1:focus-visible,div.ProseMirror h2:focus-visible,div.ProseMirror h3:focus-visible,div.ProseMirror h4:focus-visible,div.ProseMirror h5:focus-visible,div.ProseMirror h6:focus-visible{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/Heading/HeadingView.vue\"],\"names\":[],\"mappings\":\"AAGC,kHACC,iBAAA,CACA,4VAEC,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,uBAAA,CACA,iBAAA,CACA,oBAAA,CACA,wBAAA,CACA,2BAAA,CACA,uDAAA,CAGD,sPACC,qBAAA,CAGD,sMACC,YAAA\",\"sourcesContent\":[\"\\ndiv.ProseMirror {\\n\\t/* Anchor links */\\n\\th1,h2,h3,h4,h5,h6 {\\n\\t\\tposition: relative;\\n\\t\\t.heading-anchor[contenteditable=\\\"false\\\"] {\\n\\t\\t\\t// Shrink clickable area of anchor permalinks to not overlay the heading\\n\\t\\t\\twidth: 1em;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tleft: -1em;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tfont-size: max(1em, 16px);\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttext-decoration: none;\\n\\t\\t\\ttransition-duration: .15s;\\n\\t\\t\\ttransition-property: opacity;\\n\\t\\t\\ttransition-timing-function: cubic-bezier(.4,0,.2,1);\\n\\t\\t}\\n\\n\\t\\t&:hover .heading-anchor {\\n\\t\\t\\topacity: 0.5!important;\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\toutline: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".image[data-v-4febfd28]{margin:0;padding:0}.image[data-v-4febfd28],.image *[data-v-4febfd28]{-webkit-user-modify:read-only !important}.image__caption[data-v-4febfd28]{text-align:center;color:var(--color-text-lighter);display:flex;align-items:center;justify-content:center}.image__caption__wrapper[data-v-4febfd28]{position:relative}.image__caption__delete[data-v-4febfd28]{display:flex;flex-basis:20%;align-items:center;width:20px;height:20px;position:absolute;right:-6px;bottom:10px}.image__caption__delete[data-v-4febfd28],.image__caption__delete svg[data-v-4febfd28]{cursor:pointer}.image__caption .image__caption__wrapper[data-v-4febfd28]{flex-basis:80%}.image__caption input[type=text][data-v-4febfd28]{width:85%;text-align:center;background-color:rgba(0,0,0,0);border:none !important;color:var(--color-text-maxcontrast) !important}.image__caption input[type=text][data-v-4febfd28]:focus{border:2px solid var(--color-border-dark) !important;color:var(--color-main-text) !important}.image__caption figcaption[data-v-4febfd28]{color:var(--color-text-maxcontrast) !important;max-width:80%;text-align:center;width:fit-content}.image__loading[data-v-4febfd28]{height:100px}.image__main[data-v-4febfd28]{max-height:calc(100vh - 50px - 50px)}.image__main--broken-icon[data-v-4febfd28],.image__error-message[data-v-4febfd28]{color:var(--color-text-maxcontrast)}.image__error-message[data-v-4febfd28]{display:block;text-align:center}.image__view[data-v-4febfd28]{text-align:center;position:relative}.image__view img[data-v-4febfd28]{max-width:100%}.image__view:hover input[type=text][data-v-4febfd28]{border:2px solid var(--color-border-dark) !important;color:var(--color-main-text) !important}.media[data-v-4febfd28]{display:flex;align-items:center;justify-content:left}.media .media__wrapper[data-v-4febfd28]{display:flex;border:2px solid var(--color-border);border-radius:var(--border-radius-large);padding:8px}.media .media__wrapper img[data-v-4febfd28]{width:44px;height:44px}.media .media__wrapper .metadata[data-v-4febfd28]{margin-left:8px;display:flex;flex-direction:column;align-items:start}.media .media__wrapper .metadata span[data-v-4febfd28]{line-height:20px;font-weight:normal}.media .media__wrapper .metadata span.size[data-v-4febfd28]{color:var(--color-text-maxcontrast)}.media .buttons[data-v-4febfd28]{margin-left:8px}.fade-enter-active[data-v-4febfd28]{transition:opacity .3s ease-in-out}.fade-enter-to[data-v-4febfd28]{opacity:1}.fade-enter[data-v-4febfd28]{opacity:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/ImageView.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,QAAA,CACA,SAAA,CAEA,kDACC,wCAAA,CAIF,iCACC,iBAAA,CACA,+BAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,0CACC,iBAAA,CAED,yCACC,YAAA,CACA,cAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,sFACC,cAAA,CAGF,0DACC,cAAA,CAED,kDACC,SAAA,CACA,iBAAA,CACA,8BAAA,CACA,sBAAA,CACA,8CAAA,CAEA,wDACC,oDAAA,CACA,uCAAA,CAGF,4CACC,8CAAA,CACA,aAAA,CACA,iBAAA,CACA,iBAAA,CAIF,iCACC,YAAA,CAGD,8BACC,oCAAA,CAGD,kFACC,mCAAA,CAGD,uCACC,aAAA,CACA,iBAAA,CAGD,8BACC,iBAAA,CACA,iBAAA,CAEA,kCACC,cAAA,CAIA,qDACC,oDAAA,CACA,uCAAA,CAKH,wBACC,YAAA,CACA,kBAAA,CACA,oBAAA,CACA,wCACC,YAAA,CACA,oCAAA,CACA,wCAAA,CACA,WAAA,CAEA,4CACC,UAAA,CACA,WAAA,CAGD,kDACC,eAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,uDACC,gBAAA,CACA,kBAAA,CAEA,4DACC,mCAAA,CAKJ,iCACC,eAAA,CAIF,oCACC,kCAAA,CAGD,gCACC,SAAA,CAGD,6BACC,SAAA\",\"sourcesContent\":[\"\\n.image {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\n\\t&, * {\\n\\t\\t-webkit-user-modify: read-only !important;\\n\\t}\\n}\\n\\n.image__caption {\\n\\ttext-align: center;\\n\\tcolor: var(--color-text-lighter);\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\t&__wrapper {\\n\\t\\tposition: relative;\\n\\t}\\n\\t&__delete {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-basis: 20%;\\n\\t\\talign-items: center;\\n\\t\\twidth: 20px;\\n\\t\\theight: 20px;\\n\\t\\tposition: absolute;\\n\\t\\tright: -6px;\\n\\t\\tbottom: 10px;\\n\\t\\t&, svg {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\t.image__caption__wrapper {\\n\\t\\tflex-basis: 80%;\\n\\t}\\n\\tinput[type='text'] {\\n\\t\\twidth: 85%;\\n\\t\\ttext-align: center;\\n\\t\\tbackground-color: transparent;\\n\\t\\tborder: none !important;\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-border-dark) !important;\\n\\t\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\t}\\n\\t}\\n\\tfigcaption {\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\tmax-width: 80%;\\n\\t\\ttext-align: center;\\n\\t\\twidth: fit-content;\\n\\t}\\n}\\n\\n.image__loading {\\n\\theight: 100px;\\n}\\n\\n.image__main {\\n\\tmax-height: calc(100vh - 50px - 50px);\\n}\\n\\n.image__main--broken-icon, .image__error-message {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\\n.image__error-message {\\n\\tdisplay: block;\\n\\ttext-align: center;\\n}\\n\\n.image__view {\\n\\ttext-align: center;\\n\\tposition: relative;\\n\\n\\timg {\\n\\t\\tmax-width: 100%;\\n\\t}\\n\\n\\t&:hover {\\n\\t\\tinput[type='text'] {\\n\\t\\t\\tborder: 2px solid var(--color-border-dark) !important;\\n\\t\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.media {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: left;\\n\\t.media__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: 8px;\\n\\n\\t\\timg {\\n\\t\\t\\twidth: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\n\\t\\t.metadata {\\n\\t\\t\\tmargin-left: 8px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: start;\\n\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 20px;\\n\\t\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t\\t&.size {\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t.buttons {\\n\\t\\tmargin-left: 8px;\\n\\t}\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity .3s ease-in-out;\\n}\\n\\n.fade-enter-to {\\n\\topacity: 1;\\n}\\n\\n.fade-enter {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-40519f7a] div.widgets--list a.widget-default{color:var(--color-main-text);padding:0;text-decoration:none}[data-v-40519f7a] .widget-default--details{overflow:hidden}[data-v-40519f7a] .widget-default--details p{margin-bottom:4px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/ParagraphView.vue\"],\"names\":[],\"mappings\":\"AACA,qDACC,4BAAA,CACA,SAAA,CACA,oBAAA,CAGD,2CACC,eAAA,CACA,6CACC,4BAAA\",\"sourcesContent\":[\"\\n:deep(div.widgets--list a.widget-default) {\\n\\tcolor: var(--color-main-text);\\n\\tpadding: 0;\\n\\ttext-decoration: none;\\n}\\n\\n:deep(.widget-default--details) {\\n\\toverflow:hidden;\\n\\tp {\\n\\t\\tmargin-bottom: 4px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"td[data-v-3543004d]{position:relative}td .container[data-v-3543004d]{display:flex;flex-wrap:wrap;min-height:36px}td .content[data-v-3543004d]{flex:1 1 0;margin:0;padding-top:.6em}td .action-item[data-v-3543004d]{position:absolute;right:-48px;flex:0 1 auto;display:none;top:2px}td:last-child .action-item[data-v-3543004d]{display:block;opacity:50%}td:last-child:hover .action-item[data-v-3543004d],td:last-child:active .action-item[data-v-3543004d],td:last-child:focus .action-item[data-v-3543004d],td:last-child:focus-within .action-item[data-v-3543004d]{opacity:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/Table/TableCellView.vue\"],\"names\":[],\"mappings\":\"AACA,oBACC,iBAAA,CAEA,+BACC,YAAA,CACA,cAAA,CACA,eAAA,CAGD,6BACC,UAAA,CACA,QAAA,CACA,gBAAA,CAGD,iCACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,YAAA,CACA,OAAA,CAIA,4CACC,aAAA,CACA,WAAA,CAIA,gNACC,YAAA\",\"sourcesContent\":[\"\\ntd {\\n\\tposition: relative;\\n\\n\\t.container {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tmin-height: 36px;\\n\\t}\\n\\n\\t.content {\\n\\t\\tflex: 1 1 0;\\n\\t\\tmargin: 0;\\n\\t\\tpadding-top: 0.6em;\\n\\t}\\n\\n\\t.action-item {\\n\\t\\tposition: absolute;\\n\\t\\tright: -48px;\\n\\t\\tflex: 0 1 auto;\\n\\t\\tdisplay: none;\\n\\t\\ttop: 2px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\t.action-item {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\topacity: 50%;\\n\\t\\t}\\n\\n\\t\\t&:hover, &:active, &:focus, &:focus-within {\\n\\t\\t\\t.action-item {\\n\\t\\t\\t\\topacity: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"th .content[data-v-25a85f13]{margin:0;padding-top:.75em;flex-grow:1}th .action-item[data-v-25a85f13]{opacity:50%}th:hover .action-item[data-v-25a85f13],th:active .action-item[data-v-25a85f13],th:focus .action-item[data-v-25a85f13],th:focus-within .action-item[data-v-25a85f13]{opacity:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/Table/TableHeaderView.vue\"],\"names\":[],\"mappings\":\"AAGC,6BACC,QAAA,CACA,iBAAA,CACA,WAAA,CAED,iCACC,WAAA,CAIA,oKACC,YAAA\",\"sourcesContent\":[\"\\nth {\\n\\n\\t.content {\\n\\t\\tmargin: 0;\\n\\t\\tpadding-top: 0.75em;\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\t.action-item {\\n\\t\\topacity: 50%;\\n\\t}\\n\\n\\t&:hover, &:active, &:focus, &:focus-within {\\n\\t\\t.action-item {\\n\\t\\t\\topacity: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".table-wrapper[data-v-261cbb42]{position:relative;overflow-x:auto}.clearfix[data-v-261cbb42]{clear:both}table[data-v-261cbb42]{float:left}.table-settings[data-v-261cbb42]{padding-left:3px;opacity:.5;position:absolute;top:0;right:3px}.table-settings[data-v-261cbb42]:hover{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/Table/TableView.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,iBAAA,CACA,eAAA,CAGD,2BACC,UAAA,CAGD,uBACC,UAAA,CAGD,iCACC,gBAAA,CACA,UAAA,CACA,iBAAA,CACA,KAAA,CACA,SAAA,CAEA,uCACC,SAAA\",\"sourcesContent\":[\"\\n.table-wrapper {\\n\\tposition: relative;\\n\\toverflow-x: auto;\\n}\\n\\n.clearfix {\\n\\tclear: both;\\n}\\n\\ntable {\\n\\tfloat: left;\\n}\\n\\n.table-settings {\\n\\tpadding-left: 3px;\\n\\topacity: .5;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 3px;\\n\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{position:fixed;background-color:var(--color-main-background)}#content[class=app-public]{margin:0;margin-top:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,cAAA,CACA,6CAAA,CAED,2BACC,QAAA,CACA,YAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tposition: fixed;\\n\\tbackground-color: var(--color-main-background);\\n}\\n#content[class=app-public] {\\n\\tmargin: 0;\\n\\tmargin-top: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#direct-editor[data-v-4a7c5de5]{width:100%;height:100%;position:fixed;overflow:auto}#direct-editor[data-v-4a7c5de5] .text-editor{height:100%;top:0}#direct-editor[data-v-4a7c5de5] .text-editor__wrapper div.ProseMirror{margin-top:0}pre[data-v-4a7c5de5]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-4a7c5de5]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:rgba(0,0,0,0);opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-4a7c5de5]:hover,button[data-v-4a7c5de5]:focus,button[data-v-4a7c5de5]:active{background-color:var(--color-background-dark)}button.is-active[data-v-4a7c5de5],button[data-v-4a7c5de5]:hover,button[data-v-4a7c5de5]:focus{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CAEA,6CACC,WAAA,CACA,KAAA,CAED,sEACC,YAAA,CAIF,qBACC,UAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CAGD,wBACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,oBAAA,CACA,QAAA,CACA,8BAAA,CACA,UAAA,CACA,4BAAA,CACA,iCAAA,CACA,kBAAA,CACA,2FACC,6CAAA,CAED,8FAGC,SAAA\",\"sourcesContent\":[\"\\n#direct-editor {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\n\\t&:deep(.text-editor) {\\n\\t\\theight: 100%;\\n\\t\\ttop: 0;\\n\\t}\\n\\t&:deep(.text-editor__wrapper div.ProseMirror) {\\n\\t\\tmargin-top: 0;\\n\\t}\\n}\\n\\npre {\\n\\twidth: 100%;\\n\\tmax-width: 700px;\\n\\tmargin: auto;\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\\nbutton {\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\tmargin: 0;\\n\\tbackground-size: 16px;\\n\\tborder: 0;\\n\\tbackground-color: transparent;\\n\\topacity: .5;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-position: center center;\\n\\tvertical-align: top;\\n\\t&:hover, &:focus, &:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\t&.is-active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#rich-workspace[data-v-3d44b5a3]{padding:0 50px;margin-bottom:-24px;text-align:left;max-height:0;transition:max-height .5s cubic-bezier(0, 1, 0, 1);z-index:61;position:relative}#rich-workspace.creatable[data-v-3d44b5a3]{min-height:100px}#rich-workspace[data-v-3d44b5a3]:only-child{margin-bottom:0}.empty-workspace[data-v-3d44b5a3]{cursor:pointer;display:block;padding-top:43px;color:var(--color-text-maxcontrast)}#rich-workspace[data-v-3d44b5a3] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-3d44b5a3] .text-editor{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-3d44b5a3] .text-editor__wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-3d44b5a3] .text-editor__main{overflow:visible !important}#rich-workspace[data-v-3d44b5a3] .content-wrapper{overflow:scroll !important;max-height:calc(40vh - 50px);padding-left:10px;padding-bottom:10px}#rich-workspace[data-v-3d44b5a3] .text-editor__wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-3d44b5a3] .editor__content{margin:0}#rich-workspace.focus[data-v-3d44b5a3]{max-height:50vh}#rich-workspace[data-v-3d44b5a3]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-3d44b5a3]:not(.focus):not(.icon-loading):not(.empty):after{content:\\\"\\\";position:absolute;z-index:1;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));width:100%;height:4em}#rich-workspace.dark[data-v-3d44b5a3]:not(.focus):not(.icon-loading):after{background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background))}@media only screen and (max-width: 1024px){#rich-workspace[data-v-3d44b5a3]:not(.focus){max-height:30vh}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/RichWorkspace.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,cAAA,CAEA,mBAAA,CACA,eAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,iBAAA,CACA,2CACC,gBAAA,CAKF,4CACC,eAAA,CAGD,kCACC,cAAA,CACA,aAAA,CACA,gBAAA,CACA,mCAAA,CAGD,4DACC,UAAA,CACA,WAAA,CACA,6CAAA,CACA,SAAA,CACA,WAAA,CAGD,8CACC,WAAA,CACA,yBAAA,CACA,mBAAA,CAGD,uDACC,yBAAA,CACA,gBAAA,CAGD,oDACC,2BAAA,CAGD,kDACC,0BAAA,CACA,4BAAA,CACA,iBAAA,CACA,mBAAA,CAGD,oEACC,WAAA,CACA,QAAA,CAGD,kDACC,QAAA,CAGD,uCACC,eAAA,CAGD,6CACC,eAAA,CACA,iBAAA,CACA,eAAA,CAGD,kFACC,UAAA,CACA,iBAAA,CACA,SAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,iGAAA,CACA,UAAA,CACA,UAAA,CAGD,2EACC,2FAAA,CAGD,2CACC,6CACC,eAAA,CAAA\",\"sourcesContent\":[\"\\n#rich-workspace {\\n\\tpadding: 0 50px;\\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\\tz-index: 61;\\n\\tposition: relative;\\n\\t&.creatable {\\n\\t\\tmin-height: 100px;\\n\\t}\\n}\\n\\n/* For subfolders, where there are no Recommendations */\\n#rich-workspace:only-child {\\n\\tmargin-bottom: 0;\\n}\\n\\n.empty-workspace {\\n\\tcursor: pointer;\\n\\tdisplay: block;\\n\\tpadding-top: 43px;\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\\n#rich-workspace:deep(div[contenteditable=false]) {\\n\\twidth: 100%;\\n\\tpadding: 0px;\\n\\tbackground-color: var(--color-main-background);\\n\\topacity: 1;\\n\\tborder: none;\\n}\\n\\n#rich-workspace:deep(.text-editor) {\\n\\theight: 100%;\\n\\tposition: unset !important;\\n\\ttop: auto !important;\\n}\\n\\n#rich-workspace:deep(.text-editor__wrapper) {\\n\\tposition: unset !important;\\n\\toverflow: visible;\\n}\\n\\n#rich-workspace:deep(.text-editor__main) {\\n\\toverflow: visible !important;\\n}\\n\\n#rich-workspace:deep(.content-wrapper) {\\n\\toverflow: scroll !important;\\n\\tmax-height: calc(40vh - 50px);\\n\\tpadding-left: 10px;\\n\\tpadding-bottom: 10px;\\n}\\n\\n#rich-workspace:deep(.text-editor__wrapper .ProseMirror) {\\n\\tpadding: 0px;\\n\\tmargin: 0;\\n}\\n\\n#rich-workspace:deep(.editor__content) {\\n\\tmargin: 0;\\n}\\n\\n#rich-workspace.focus {\\n\\tmax-height: 50vh;\\n}\\n\\n#rich-workspace:not(.focus) {\\n\\tmax-height: 30vh;\\n\\tposition: relative;\\n\\toverflow: hidden;\\n}\\n\\n#rich-workspace:not(.focus):not(.icon-loading):not(.empty):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\\n#rich-workspace.dark:not(.focus):not(.icon-loading):after {\\n\\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t#rich-workspace:not(.focus) {\\n\\t\\tmax-height: 30vh;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.action[data-v-5e172682] {\\n\\t/* to unify width of ActionInput and ActionButton */\\n\\tmin-width: 218px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/ActionInsertLink.vue\"],\"names\":[],\"mappings\":\";AA4PA;CACA,mDAAA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.text-readonly-bar[data-v-6402d32d] {\\n\\tdisplay: flex;\\n}\\n.text-readonly-bar__entries[data-v-6402d32d] {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Menu/ReadonlyBar.vue\"],\"names\":[],\"mappings\":\";AAiCA;CACA,aAAA;AACA;AACA;CACA,aAAA;CACA,YAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n/* This is required to properly render the bubble text (which seems linke a browser bug) */\\n.text-editor__wrapper div.ProseMirror .mention[contenteditable=false][data-v-297bb5fa] * {\\n\\t-webkit-user-modify: read-only !important;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/extensions/Mention.vue\"],\"names\":[],\"mappings\":\";AA8CA,0FAAA;AACA;CACA,yCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./1c\": [\n\t\t30908\n\t],\n\t\"./1c.js\": [\n\t\t30908\n\t],\n\t\"./1c.js.js\": [\n\t\t9856,\n\t\t\"highlight/1c-js-js\"\n\t],\n\t\"./abnf\": [\n\t\t62853\n\t],\n\t\"./abnf.js\": [\n\t\t62853\n\t],\n\t\"./abnf.js.js\": [\n\t\t5116,\n\t\t\"highlight/abnf-js-js\"\n\t],\n\t\"./accesslog\": [\n\t\t35976\n\t],\n\t\"./accesslog.js\": [\n\t\t35976\n\t],\n\t\"./accesslog.js.js\": [\n\t\t36461,\n\t\t\"highlight/accesslog-js-js\"\n\t],\n\t\"./actionscript\": [\n\t\t55505\n\t],\n\t\"./actionscript.js\": [\n\t\t55505\n\t],\n\t\"./actionscript.js.js\": [\n\t\t78197,\n\t\t\"highlight/actionscript-js-js\"\n\t],\n\t\"./ada\": [\n\t\t40059\n\t],\n\t\"./ada.js\": [\n\t\t40059\n\t],\n\t\"./ada.js.js\": [\n\t\t16880,\n\t\t\"highlight/ada-js-js\"\n\t],\n\t\"./angelscript\": [\n\t\t72921\n\t],\n\t\"./angelscript.js\": [\n\t\t72921\n\t],\n\t\"./angelscript.js.js\": [\n\t\t62053,\n\t\t\"highlight/angelscript-js-js\"\n\t],\n\t\"./apache\": [\n\t\t4998\n\t],\n\t\"./apache.js\": [\n\t\t4998\n\t],\n\t\"./apache.js.js\": [\n\t\t69773,\n\t\t\"highlight/apache-js-js\"\n\t],\n\t\"./applescript\": [\n\t\t99733\n\t],\n\t\"./applescript.js\": [\n\t\t99733\n\t],\n\t\"./applescript.js.js\": [\n\t\t56323,\n\t\t\"highlight/applescript-js-js\"\n\t],\n\t\"./arcade\": [\n\t\t70149\n\t],\n\t\"./arcade.js\": [\n\t\t70149\n\t],\n\t\"./arcade.js.js\": [\n\t\t99434,\n\t\t\"highlight/arcade-js-js\"\n\t],\n\t\"./arduino\": [\n\t\t89860\n\t],\n\t\"./arduino.js\": [\n\t\t89860\n\t],\n\t\"./arduino.js.js\": [\n\t\t1345,\n\t\t\"highlight/arduino-js-js\"\n\t],\n\t\"./armasm\": [\n\t\t93138\n\t],\n\t\"./armasm.js\": [\n\t\t93138\n\t],\n\t\"./armasm.js.js\": [\n\t\t96358,\n\t\t\"highlight/armasm-js-js\"\n\t],\n\t\"./asciidoc\": [\n\t\t88699\n\t],\n\t\"./asciidoc.js\": [\n\t\t88699\n\t],\n\t\"./asciidoc.js.js\": [\n\t\t5301,\n\t\t\"highlight/asciidoc-js-js\"\n\t],\n\t\"./aspectj\": [\n\t\t59950\n\t],\n\t\"./aspectj.js\": [\n\t\t59950\n\t],\n\t\"./aspectj.js.js\": [\n\t\t79219,\n\t\t\"highlight/aspectj-js-js\"\n\t],\n\t\"./autohotkey\": [\n\t\t31599\n\t],\n\t\"./autohotkey.js\": [\n\t\t31599\n\t],\n\t\"./autohotkey.js.js\": [\n\t\t54598,\n\t\t\"highlight/autohotkey-js-js\"\n\t],\n\t\"./autoit\": [\n\t\t1892\n\t],\n\t\"./autoit.js\": [\n\t\t1892\n\t],\n\t\"./autoit.js.js\": [\n\t\t81923,\n\t\t\"highlight/autoit-js-js\"\n\t],\n\t\"./avrasm\": [\n\t\t53105\n\t],\n\t\"./avrasm.js\": [\n\t\t53105\n\t],\n\t\"./avrasm.js.js\": [\n\t\t66522,\n\t\t\"highlight/avrasm-js-js\"\n\t],\n\t\"./awk\": [\n\t\t44868\n\t],\n\t\"./awk.js\": [\n\t\t44868\n\t],\n\t\"./awk.js.js\": [\n\t\t36775,\n\t\t\"highlight/awk-js-js\"\n\t],\n\t\"./axapta\": [\n\t\t52059\n\t],\n\t\"./axapta.js\": [\n\t\t52059\n\t],\n\t\"./axapta.js.js\": [\n\t\t5432,\n\t\t\"highlight/axapta-js-js\"\n\t],\n\t\"./bash\": [\n\t\t98780\n\t],\n\t\"./bash.js\": [\n\t\t98780\n\t],\n\t\"./bash.js.js\": [\n\t\t13574,\n\t\t\"highlight/bash-js-js\"\n\t],\n\t\"./basic\": [\n\t\t80995\n\t],\n\t\"./basic.js\": [\n\t\t80995\n\t],\n\t\"./basic.js.js\": [\n\t\t18080,\n\t\t\"highlight/basic-js-js\"\n\t],\n\t\"./bnf\": [\n\t\t87061\n\t],\n\t\"./bnf.js\": [\n\t\t87061\n\t],\n\t\"./bnf.js.js\": [\n\t\t14060,\n\t\t\"highlight/bnf-js-js\"\n\t],\n\t\"./brainfuck\": [\n\t\t16380\n\t],\n\t\"./brainfuck.js\": [\n\t\t16380\n\t],\n\t\"./brainfuck.js.js\": [\n\t\t37195,\n\t\t\"highlight/brainfuck-js-js\"\n\t],\n\t\"./c\": [\n\t\t80612\n\t],\n\t\"./c.js\": [\n\t\t80612\n\t],\n\t\"./c.js.js\": [\n\t\t96991,\n\t\t\"highlight/c-js-js\"\n\t],\n\t\"./cal\": [\n\t\t15762\n\t],\n\t\"./cal.js\": [\n\t\t15762\n\t],\n\t\"./cal.js.js\": [\n\t\t65197,\n\t\t\"highlight/cal-js-js\"\n\t],\n\t\"./capnproto\": [\n\t\t90614\n\t],\n\t\"./capnproto.js\": [\n\t\t90614\n\t],\n\t\"./capnproto.js.js\": [\n\t\t79955,\n\t\t\"highlight/capnproto-js-js\"\n\t],\n\t\"./ceylon\": [\n\t\t33796\n\t],\n\t\"./ceylon.js\": [\n\t\t33796\n\t],\n\t\"./ceylon.js.js\": [\n\t\t1263,\n\t\t\"highlight/ceylon-js-js\"\n\t],\n\t\"./clean\": [\n\t\t52222\n\t],\n\t\"./clean.js\": [\n\t\t52222\n\t],\n\t\"./clean.js.js\": [\n\t\t45443,\n\t\t\"highlight/clean-js-js\"\n\t],\n\t\"./clojure\": [\n\t\t92177\n\t],\n\t\"./clojure-repl\": [\n\t\t42012\n\t],\n\t\"./clojure-repl.js\": [\n\t\t42012\n\t],\n\t\"./clojure-repl.js.js\": [\n\t\t21487,\n\t\t\"highlight/clojure-repl-js-js\"\n\t],\n\t\"./clojure.js\": [\n\t\t92177\n\t],\n\t\"./clojure.js.js\": [\n\t\t73864,\n\t\t\"highlight/clojure-js-js\"\n\t],\n\t\"./cmake\": [\n\t\t35849\n\t],\n\t\"./cmake.js\": [\n\t\t35849\n\t],\n\t\"./cmake.js.js\": [\n\t\t30520,\n\t\t\"highlight/cmake-js-js\"\n\t],\n\t\"./coffeescript\": [\n\t\t1857\n\t],\n\t\"./coffeescript.js\": [\n\t\t1857\n\t],\n\t\"./coffeescript.js.js\": [\n\t\t1493,\n\t\t\"highlight/coffeescript-js-js\"\n\t],\n\t\"./coq\": [\n\t\t99087\n\t],\n\t\"./coq.js\": [\n\t\t99087\n\t],\n\t\"./coq.js.js\": [\n\t\t36768,\n\t\t\"highlight/coq-js-js\"\n\t],\n\t\"./cos\": [\n\t\t72569\n\t],\n\t\"./cos.js\": [\n\t\t72569\n\t],\n\t\"./cos.js.js\": [\n\t\t2210,\n\t\t\"highlight/cos-js-js\"\n\t],\n\t\"./cpp\": [\n\t\t6248\n\t],\n\t\"./cpp.js\": [\n\t\t6248\n\t],\n\t\"./cpp.js.js\": [\n\t\t16365,\n\t\t\"highlight/cpp-js-js\"\n\t],\n\t\"./crmsh\": [\n\t\t77740\n\t],\n\t\"./crmsh.js\": [\n\t\t77740\n\t],\n\t\"./crmsh.js.js\": [\n\t\t31965,\n\t\t\"highlight/crmsh-js-js\"\n\t],\n\t\"./crystal\": [\n\t\t83147\n\t],\n\t\"./crystal.js\": [\n\t\t83147\n\t],\n\t\"./crystal.js.js\": [\n\t\t63882,\n\t\t\"highlight/crystal-js-js\"\n\t],\n\t\"./csharp\": [\n\t\t63707\n\t],\n\t\"./csharp.js\": [\n\t\t63707\n\t],\n\t\"./csharp.js.js\": [\n\t\t29676,\n\t\t\"highlight/csharp-js-js\"\n\t],\n\t\"./csp\": [\n\t\t89534\n\t],\n\t\"./csp.js\": [\n\t\t89534\n\t],\n\t\"./csp.js.js\": [\n\t\t82162,\n\t\t\"highlight/csp-js-js\"\n\t],\n\t\"./css\": [\n\t\t15064\n\t],\n\t\"./css.js\": [\n\t\t15064\n\t],\n\t\"./css.js.js\": [\n\t\t45429,\n\t\t\"highlight/css-js-js\"\n\t],\n\t\"./d\": [\n\t\t118\n\t],\n\t\"./d.js\": [\n\t\t118\n\t],\n\t\"./d.js.js\": [\n\t\t51484,\n\t\t\"highlight/d-js-js\"\n\t],\n\t\"./dart\": [\n\t\t26642\n\t],\n\t\"./dart.js\": [\n\t\t26642\n\t],\n\t\"./dart.js.js\": [\n\t\t86573,\n\t\t\"highlight/dart-js-js\"\n\t],\n\t\"./delphi\": [\n\t\t7762\n\t],\n\t\"./delphi.js\": [\n\t\t7762\n\t],\n\t\"./delphi.js.js\": [\n\t\t71839,\n\t\t\"highlight/delphi-js-js\"\n\t],\n\t\"./diff\": [\n\t\t87731\n\t],\n\t\"./diff.js\": [\n\t\t87731\n\t],\n\t\"./diff.js.js\": [\n\t\t11612,\n\t\t\"highlight/diff-js-js\"\n\t],\n\t\"./django\": [\n\t\t33189\n\t],\n\t\"./django.js\": [\n\t\t33189\n\t],\n\t\"./django.js.js\": [\n\t\t94723,\n\t\t\"highlight/django-js-js\"\n\t],\n\t\"./dns\": [\n\t\t31344\n\t],\n\t\"./dns.js\": [\n\t\t31344\n\t],\n\t\"./dns.js.js\": [\n\t\t37854,\n\t\t\"highlight/dns-js-js\"\n\t],\n\t\"./dockerfile\": [\n\t\t57360\n\t],\n\t\"./dockerfile.js\": [\n\t\t57360\n\t],\n\t\"./dockerfile.js.js\": [\n\t\t33866,\n\t\t\"highlight/dockerfile-js-js\"\n\t],\n\t\"./dos\": [\n\t\t20605\n\t],\n\t\"./dos.js\": [\n\t\t20605\n\t],\n\t\"./dos.js.js\": [\n\t\t5378,\n\t\t\"highlight/dos-js-js\"\n\t],\n\t\"./dsconfig\": [\n\t\t7522\n\t],\n\t\"./dsconfig.js\": [\n\t\t7522\n\t],\n\t\"./dsconfig.js.js\": [\n\t\t63264,\n\t\t\"highlight/dsconfig-js-js\"\n\t],\n\t\"./dts\": [\n\t\t11729\n\t],\n\t\"./dts.js\": [\n\t\t11729\n\t],\n\t\"./dts.js.js\": [\n\t\t24232,\n\t\t\"highlight/dts-js-js\"\n\t],\n\t\"./dust\": [\n\t\t1450\n\t],\n\t\"./dust.js\": [\n\t\t1450\n\t],\n\t\"./dust.js.js\": [\n\t\t26229,\n\t\t\"highlight/dust-js-js\"\n\t],\n\t\"./ebnf\": [\n\t\t13039\n\t],\n\t\"./ebnf.js\": [\n\t\t13039\n\t],\n\t\"./ebnf.js.js\": [\n\t\t82808,\n\t\t\"highlight/ebnf-js-js\"\n\t],\n\t\"./elixir\": [\n\t\t62543\n\t],\n\t\"./elixir.js\": [\n\t\t62543\n\t],\n\t\"./elixir.js.js\": [\n\t\t40785,\n\t\t\"highlight/elixir-js-js\"\n\t],\n\t\"./elm\": [\n\t\t25658\n\t],\n\t\"./elm.js\": [\n\t\t25658\n\t],\n\t\"./elm.js.js\": [\n\t\t7977,\n\t\t\"highlight/elm-js-js\"\n\t],\n\t\"./erb\": [\n\t\t32151\n\t],\n\t\"./erb.js\": [\n\t\t32151\n\t],\n\t\"./erb.js.js\": [\n\t\t9214,\n\t\t\"highlight/erb-js-js\"\n\t],\n\t\"./erlang\": [\n\t\t57569\n\t],\n\t\"./erlang-repl\": [\n\t\t12282\n\t],\n\t\"./erlang-repl.js\": [\n\t\t12282\n\t],\n\t\"./erlang-repl.js.js\": [\n\t\t78191,\n\t\t\"highlight/erlang-repl-js-js\"\n\t],\n\t\"./erlang.js\": [\n\t\t57569\n\t],\n\t\"./erlang.js.js\": [\n\t\t84485,\n\t\t\"highlight/erlang-js-js\"\n\t],\n\t\"./excel\": [\n\t\t5817\n\t],\n\t\"./excel.js\": [\n\t\t5817\n\t],\n\t\"./excel.js.js\": [\n\t\t72276,\n\t\t\"highlight/excel-js-js\"\n\t],\n\t\"./fix\": [\n\t\t13146\n\t],\n\t\"./fix.js\": [\n\t\t13146\n\t],\n\t\"./fix.js.js\": [\n\t\t29274,\n\t\t\"highlight/fix-js-js\"\n\t],\n\t\"./flix\": [\n\t\t93090\n\t],\n\t\"./flix.js\": [\n\t\t93090\n\t],\n\t\"./flix.js.js\": [\n\t\t2556,\n\t\t\"highlight/flix-js-js\"\n\t],\n\t\"./fortran\": [\n\t\t13532\n\t],\n\t\"./fortran.js\": [\n\t\t13532\n\t],\n\t\"./fortran.js.js\": [\n\t\t33800,\n\t\t\"highlight/fortran-js-js\"\n\t],\n\t\"./fsharp\": [\n\t\t36652\n\t],\n\t\"./fsharp.js\": [\n\t\t36652\n\t],\n\t\"./fsharp.js.js\": [\n\t\t11770,\n\t\t\"highlight/fsharp-js-js\"\n\t],\n\t\"./gams\": [\n\t\t47903\n\t],\n\t\"./gams.js\": [\n\t\t47903\n\t],\n\t\"./gams.js.js\": [\n\t\t3060,\n\t\t\"highlight/gams-js-js\"\n\t],\n\t\"./gauss\": [\n\t\t45004\n\t],\n\t\"./gauss.js\": [\n\t\t45004\n\t],\n\t\"./gauss.js.js\": [\n\t\t51715,\n\t\t\"highlight/gauss-js-js\"\n\t],\n\t\"./gcode\": [\n\t\t11871\n\t],\n\t\"./gcode.js\": [\n\t\t11871\n\t],\n\t\"./gcode.js.js\": [\n\t\t84025,\n\t\t\"highlight/gcode-js-js\"\n\t],\n\t\"./gherkin\": [\n\t\t16499\n\t],\n\t\"./gherkin.js\": [\n\t\t16499\n\t],\n\t\"./gherkin.js.js\": [\n\t\t21442,\n\t\t\"highlight/gherkin-js-js\"\n\t],\n\t\"./glsl\": [\n\t\t21942\n\t],\n\t\"./glsl.js\": [\n\t\t21942\n\t],\n\t\"./glsl.js.js\": [\n\t\t79958,\n\t\t\"highlight/glsl-js-js\"\n\t],\n\t\"./gml\": [\n\t\t81921\n\t],\n\t\"./gml.js\": [\n\t\t81921\n\t],\n\t\"./gml.js.js\": [\n\t\t98186,\n\t\t\"highlight/gml-js-js\"\n\t],\n\t\"./go\": [\n\t\t92399\n\t],\n\t\"./go.js\": [\n\t\t92399\n\t],\n\t\"./go.js.js\": [\n\t\t64368,\n\t\t\"highlight/go-js-js\"\n\t],\n\t\"./golo\": [\n\t\t9574\n\t],\n\t\"./golo.js\": [\n\t\t9574\n\t],\n\t\"./golo.js.js\": [\n\t\t361,\n\t\t\"highlight/golo-js-js\"\n\t],\n\t\"./gradle\": [\n\t\t89878\n\t],\n\t\"./gradle.js\": [\n\t\t89878\n\t],\n\t\"./gradle.js.js\": [\n\t\t57741,\n\t\t\"highlight/gradle-js-js\"\n\t],\n\t\"./graphql\": [\n\t\t21738\n\t],\n\t\"./graphql.js\": [\n\t\t21738\n\t],\n\t\"./graphql.js.js\": [\n\t\t94840,\n\t\t\"highlight/graphql-js-js\"\n\t],\n\t\"./groovy\": [\n\t\t54658\n\t],\n\t\"./groovy.js\": [\n\t\t54658\n\t],\n\t\"./groovy.js.js\": [\n\t\t56464,\n\t\t\"highlight/groovy-js-js\"\n\t],\n\t\"./haml\": [\n\t\t21950\n\t],\n\t\"./haml.js\": [\n\t\t21950\n\t],\n\t\"./haml.js.js\": [\n\t\t31061,\n\t\t\"highlight/haml-js-js\"\n\t],\n\t\"./handlebars\": [\n\t\t71407\n\t],\n\t\"./handlebars.js\": [\n\t\t71407\n\t],\n\t\"./handlebars.js.js\": [\n\t\t74313,\n\t\t\"highlight/handlebars-js-js\"\n\t],\n\t\"./haskell\": [\n\t\t67077\n\t],\n\t\"./haskell.js\": [\n\t\t67077\n\t],\n\t\"./haskell.js.js\": [\n\t\t98107,\n\t\t\"highlight/haskell-js-js\"\n\t],\n\t\"./haxe\": [\n\t\t42720\n\t],\n\t\"./haxe.js\": [\n\t\t42720\n\t],\n\t\"./haxe.js.js\": [\n\t\t43127,\n\t\t\"highlight/haxe-js-js\"\n\t],\n\t\"./hsp\": [\n\t\t69662\n\t],\n\t\"./hsp.js\": [\n\t\t69662\n\t],\n\t\"./hsp.js.js\": [\n\t\t67423,\n\t\t\"highlight/hsp-js-js\"\n\t],\n\t\"./http\": [\n\t\t78937\n\t],\n\t\"./http.js\": [\n\t\t78937\n\t],\n\t\"./http.js.js\": [\n\t\t49706,\n\t\t\"highlight/http-js-js\"\n\t],\n\t\"./hy\": [\n\t\t99358\n\t],\n\t\"./hy.js\": [\n\t\t99358\n\t],\n\t\"./hy.js.js\": [\n\t\t85952,\n\t\t\"highlight/hy-js-js\"\n\t],\n\t\"./inform7\": [\n\t\t84458\n\t],\n\t\"./inform7.js\": [\n\t\t84458\n\t],\n\t\"./inform7.js.js\": [\n\t\t96955,\n\t\t\"highlight/inform7-js-js\"\n\t],\n\t\"./ini\": [\n\t\t94762\n\t],\n\t\"./ini.js\": [\n\t\t94762\n\t],\n\t\"./ini.js.js\": [\n\t\t38305,\n\t\t\"highlight/ini-js-js\"\n\t],\n\t\"./irpf90\": [\n\t\t60320\n\t],\n\t\"./irpf90.js\": [\n\t\t60320\n\t],\n\t\"./irpf90.js.js\": [\n\t\t78463,\n\t\t\"highlight/irpf90-js-js\"\n\t],\n\t\"./isbl\": [\n\t\t14664\n\t],\n\t\"./isbl.js\": [\n\t\t14664\n\t],\n\t\"./isbl.js.js\": [\n\t\t77648,\n\t\t\"highlight/isbl-js-js\"\n\t],\n\t\"./java\": [\n\t\t28257\n\t],\n\t\"./java.js\": [\n\t\t28257\n\t],\n\t\"./java.js.js\": [\n\t\t53664,\n\t\t\"highlight/java-js-js\"\n\t],\n\t\"./javascript\": [\n\t\t40978\n\t],\n\t\"./javascript.js\": [\n\t\t40978\n\t],\n\t\"./javascript.js.js\": [\n\t\t14204,\n\t\t\"highlight/javascript-js-js\"\n\t],\n\t\"./jboss-cli\": [\n\t\t84111\n\t],\n\t\"./jboss-cli.js\": [\n\t\t84111\n\t],\n\t\"./jboss-cli.js.js\": [\n\t\t28948,\n\t\t\"highlight/jboss-cli-js-js\"\n\t],\n\t\"./json\": [\n\t\t40014\n\t],\n\t\"./json.js\": [\n\t\t40014\n\t],\n\t\"./json.js.js\": [\n\t\t14547,\n\t\t\"highlight/json-js-js\"\n\t],\n\t\"./julia\": [\n\t\t24629\n\t],\n\t\"./julia-repl\": [\n\t\t25850\n\t],\n\t\"./julia-repl.js\": [\n\t\t25850\n\t],\n\t\"./julia-repl.js.js\": [\n\t\t40996,\n\t\t\"highlight/julia-repl-js-js\"\n\t],\n\t\"./julia.js\": [\n\t\t24629\n\t],\n\t\"./julia.js.js\": [\n\t\t34380,\n\t\t\"highlight/julia-js-js\"\n\t],\n\t\"./kotlin\": [\n\t\t65812\n\t],\n\t\"./kotlin.js\": [\n\t\t65812\n\t],\n\t\"./kotlin.js.js\": [\n\t\t15847,\n\t\t\"highlight/kotlin-js-js\"\n\t],\n\t\"./lasso\": [\n\t\t73530\n\t],\n\t\"./lasso.js\": [\n\t\t73530\n\t],\n\t\"./lasso.js.js\": [\n\t\t88178,\n\t\t\"highlight/lasso-js-js\"\n\t],\n\t\"./latex\": [\n\t\t47408\n\t],\n\t\"./latex.js\": [\n\t\t47408\n\t],\n\t\"./latex.js.js\": [\n\t\t32429,\n\t\t\"highlight/latex-js-js\"\n\t],\n\t\"./ldif\": [\n\t\t57604\n\t],\n\t\"./ldif.js\": [\n\t\t57604\n\t],\n\t\"./ldif.js.js\": [\n\t\t57137,\n\t\t\"highlight/ldif-js-js\"\n\t],\n\t\"./leaf\": [\n\t\t23961\n\t],\n\t\"./leaf.js\": [\n\t\t23961\n\t],\n\t\"./leaf.js.js\": [\n\t\t10822,\n\t\t\"highlight/leaf-js-js\"\n\t],\n\t\"./less\": [\n\t\t44210\n\t],\n\t\"./less.js\": [\n\t\t44210\n\t],\n\t\"./less.js.js\": [\n\t\t63224,\n\t\t\"highlight/less-js-js\"\n\t],\n\t\"./lisp\": [\n\t\t91943\n\t],\n\t\"./lisp.js\": [\n\t\t91943\n\t],\n\t\"./lisp.js.js\": [\n\t\t94091,\n\t\t\"highlight/lisp-js-js\"\n\t],\n\t\"./livecodeserver\": [\n\t\t82299\n\t],\n\t\"./livecodeserver.js\": [\n\t\t82299\n\t],\n\t\"./livecodeserver.js.js\": [\n\t\t99261,\n\t\t\"highlight/livecodeserver-js-js\"\n\t],\n\t\"./livescript\": [\n\t\t69735\n\t],\n\t\"./livescript.js\": [\n\t\t69735\n\t],\n\t\"./livescript.js.js\": [\n\t\t72714,\n\t\t\"highlight/livescript-js-js\"\n\t],\n\t\"./llvm\": [\n\t\t55669\n\t],\n\t\"./llvm.js\": [\n\t\t55669\n\t],\n\t\"./llvm.js.js\": [\n\t\t43195,\n\t\t\"highlight/llvm-js-js\"\n\t],\n\t\"./lsl\": [\n\t\t37034\n\t],\n\t\"./lsl.js\": [\n\t\t37034\n\t],\n\t\"./lsl.js.js\": [\n\t\t64675,\n\t\t\"highlight/lsl-js-js\"\n\t],\n\t\"./lua\": [\n\t\t4981\n\t],\n\t\"./lua.js\": [\n\t\t4981\n\t],\n\t\"./lua.js.js\": [\n\t\t58353,\n\t\t\"highlight/lua-js-js\"\n\t],\n\t\"./makefile\": [\n\t\t97903\n\t],\n\t\"./makefile.js\": [\n\t\t97903\n\t],\n\t\"./makefile.js.js\": [\n\t\t49591,\n\t\t\"highlight/makefile-js-js\"\n\t],\n\t\"./markdown\": [\n\t\t52003\n\t],\n\t\"./markdown.js\": [\n\t\t52003\n\t],\n\t\"./markdown.js.js\": [\n\t\t11855,\n\t\t\"highlight/markdown-js-js\"\n\t],\n\t\"./mathematica\": [\n\t\t8601\n\t],\n\t\"./mathematica.js\": [\n\t\t8601\n\t],\n\t\"./mathematica.js.js\": [\n\t\t68752,\n\t\t\"highlight/mathematica-js-js\"\n\t],\n\t\"./matlab\": [\n\t\t48009\n\t],\n\t\"./matlab.js\": [\n\t\t48009\n\t],\n\t\"./matlab.js.js\": [\n\t\t53959,\n\t\t\"highlight/matlab-js-js\"\n\t],\n\t\"./maxima\": [\n\t\t27020\n\t],\n\t\"./maxima.js\": [\n\t\t27020\n\t],\n\t\"./maxima.js.js\": [\n\t\t11307,\n\t\t\"highlight/maxima-js-js\"\n\t],\n\t\"./mel\": [\n\t\t67739\n\t],\n\t\"./mel.js\": [\n\t\t67739\n\t],\n\t\"./mel.js.js\": [\n\t\t85316,\n\t\t\"highlight/mel-js-js\"\n\t],\n\t\"./mercury\": [\n\t\t44261\n\t],\n\t\"./mercury.js\": [\n\t\t44261\n\t],\n\t\"./mercury.js.js\": [\n\t\t64896,\n\t\t\"highlight/mercury-js-js\"\n\t],\n\t\"./mipsasm\": [\n\t\t74807\n\t],\n\t\"./mipsasm.js\": [\n\t\t74807\n\t],\n\t\"./mipsasm.js.js\": [\n\t\t61511,\n\t\t\"highlight/mipsasm-js-js\"\n\t],\n\t\"./mizar\": [\n\t\t49291\n\t],\n\t\"./mizar.js\": [\n\t\t49291\n\t],\n\t\"./mizar.js.js\": [\n\t\t59718,\n\t\t\"highlight/mizar-js-js\"\n\t],\n\t\"./mojolicious\": [\n\t\t8895\n\t],\n\t\"./mojolicious.js\": [\n\t\t8895\n\t],\n\t\"./mojolicious.js.js\": [\n\t\t54368,\n\t\t\"highlight/mojolicious-js-js\"\n\t],\n\t\"./monkey\": [\n\t\t9676\n\t],\n\t\"./monkey.js\": [\n\t\t9676\n\t],\n\t\"./monkey.js.js\": [\n\t\t9724,\n\t\t\"highlight/monkey-js-js\"\n\t],\n\t\"./moonscript\": [\n\t\t56486\n\t],\n\t\"./moonscript.js\": [\n\t\t56486\n\t],\n\t\"./moonscript.js.js\": [\n\t\t94766,\n\t\t\"highlight/moonscript-js-js\"\n\t],\n\t\"./n1ql\": [\n\t\t71414\n\t],\n\t\"./n1ql.js\": [\n\t\t71414\n\t],\n\t\"./n1ql.js.js\": [\n\t\t85334,\n\t\t\"highlight/n1ql-js-js\"\n\t],\n\t\"./nestedtext\": [\n\t\t5384\n\t],\n\t\"./nestedtext.js\": [\n\t\t5384\n\t],\n\t\"./nestedtext.js.js\": [\n\t\t82574,\n\t\t\"highlight/nestedtext-js-js\"\n\t],\n\t\"./nginx\": [\n\t\t94028\n\t],\n\t\"./nginx.js\": [\n\t\t94028\n\t],\n\t\"./nginx.js.js\": [\n\t\t68815,\n\t\t\"highlight/nginx-js-js\"\n\t],\n\t\"./nim\": [\n\t\t45968\n\t],\n\t\"./nim.js\": [\n\t\t45968\n\t],\n\t\"./nim.js.js\": [\n\t\t51698,\n\t\t\"highlight/nim-js-js\"\n\t],\n\t\"./nix\": [\n\t\t84802\n\t],\n\t\"./nix.js\": [\n\t\t84802\n\t],\n\t\"./nix.js.js\": [\n\t\t54831,\n\t\t\"highlight/nix-js-js\"\n\t],\n\t\"./node-repl\": [\n\t\t69609\n\t],\n\t\"./node-repl.js\": [\n\t\t69609\n\t],\n\t\"./node-repl.js.js\": [\n\t\t75233,\n\t\t\"highlight/node-repl-js-js\"\n\t],\n\t\"./nsis\": [\n\t\t9968\n\t],\n\t\"./nsis.js\": [\n\t\t9968\n\t],\n\t\"./nsis.js.js\": [\n\t\t49113,\n\t\t\"highlight/nsis-js-js\"\n\t],\n\t\"./objectivec\": [\n\t\t2446\n\t],\n\t\"./objectivec.js\": [\n\t\t2446\n\t],\n\t\"./objectivec.js.js\": [\n\t\t3707,\n\t\t\"highlight/objectivec-js-js\"\n\t],\n\t\"./ocaml\": [\n\t\t57552\n\t],\n\t\"./ocaml.js\": [\n\t\t57552\n\t],\n\t\"./ocaml.js.js\": [\n\t\t63808,\n\t\t\"highlight/ocaml-js-js\"\n\t],\n\t\"./openscad\": [\n\t\t6277\n\t],\n\t\"./openscad.js\": [\n\t\t6277\n\t],\n\t\"./openscad.js.js\": [\n\t\t11393,\n\t\t\"highlight/openscad-js-js\"\n\t],\n\t\"./oxygene\": [\n\t\t80136\n\t],\n\t\"./oxygene.js\": [\n\t\t80136\n\t],\n\t\"./oxygene.js.js\": [\n\t\t93871,\n\t\t\"highlight/oxygene-js-js\"\n\t],\n\t\"./parser3\": [\n\t\t43412\n\t],\n\t\"./parser3.js\": [\n\t\t43412\n\t],\n\t\"./parser3.js.js\": [\n\t\t93773,\n\t\t\"highlight/parser3-js-js\"\n\t],\n\t\"./perl\": [\n\t\t12482\n\t],\n\t\"./perl.js\": [\n\t\t12482\n\t],\n\t\"./perl.js.js\": [\n\t\t35740,\n\t\t\"highlight/perl-js-js\"\n\t],\n\t\"./pf\": [\n\t\t4485\n\t],\n\t\"./pf.js\": [\n\t\t4485\n\t],\n\t\"./pf.js.js\": [\n\t\t85243,\n\t\t\"highlight/pf-js-js\"\n\t],\n\t\"./pgsql\": [\n\t\t89814\n\t],\n\t\"./pgsql.js\": [\n\t\t89814\n\t],\n\t\"./pgsql.js.js\": [\n\t\t64460,\n\t\t\"highlight/pgsql-js-js\"\n\t],\n\t\"./php\": [\n\t\t92656\n\t],\n\t\"./php-template\": [\n\t\t35112\n\t],\n\t\"./php-template.js\": [\n\t\t35112\n\t],\n\t\"./php-template.js.js\": [\n\t\t6511,\n\t\t\"highlight/php-template-js-js\"\n\t],\n\t\"./php.js\": [\n\t\t92656\n\t],\n\t\"./php.js.js\": [\n\t\t70693,\n\t\t\"highlight/php-js-js\"\n\t],\n\t\"./plaintext\": [\n\t\t62437\n\t],\n\t\"./plaintext.js\": [\n\t\t62437\n\t],\n\t\"./plaintext.js.js\": [\n\t\t13651,\n\t\t\"highlight/plaintext-js-js\"\n\t],\n\t\"./pony\": [\n\t\t46874\n\t],\n\t\"./pony.js\": [\n\t\t46874\n\t],\n\t\"./pony.js.js\": [\n\t\t50864,\n\t\t\"highlight/pony-js-js\"\n\t],\n\t\"./powershell\": [\n\t\t85040\n\t],\n\t\"./powershell.js\": [\n\t\t85040\n\t],\n\t\"./powershell.js.js\": [\n\t\t23003,\n\t\t\"highlight/powershell-js-js\"\n\t],\n\t\"./processing\": [\n\t\t25371\n\t],\n\t\"./processing.js\": [\n\t\t25371\n\t],\n\t\"./processing.js.js\": [\n\t\t81414,\n\t\t\"highlight/processing-js-js\"\n\t],\n\t\"./profile\": [\n\t\t73476\n\t],\n\t\"./profile.js\": [\n\t\t73476\n\t],\n\t\"./profile.js.js\": [\n\t\t13445,\n\t\t\"highlight/profile-js-js\"\n\t],\n\t\"./prolog\": [\n\t\t63944\n\t],\n\t\"./prolog.js\": [\n\t\t63944\n\t],\n\t\"./prolog.js.js\": [\n\t\t45640,\n\t\t\"highlight/prolog-js-js\"\n\t],\n\t\"./properties\": [\n\t\t17546\n\t],\n\t\"./properties.js\": [\n\t\t17546\n\t],\n\t\"./properties.js.js\": [\n\t\t19862,\n\t\t\"highlight/properties-js-js\"\n\t],\n\t\"./protobuf\": [\n\t\t15559\n\t],\n\t\"./protobuf.js\": [\n\t\t15559\n\t],\n\t\"./protobuf.js.js\": [\n\t\t88241,\n\t\t\"highlight/protobuf-js-js\"\n\t],\n\t\"./puppet\": [\n\t\t93867\n\t],\n\t\"./puppet.js\": [\n\t\t93867\n\t],\n\t\"./puppet.js.js\": [\n\t\t973,\n\t\t\"highlight/puppet-js-js\"\n\t],\n\t\"./purebasic\": [\n\t\t92938\n\t],\n\t\"./purebasic.js\": [\n\t\t92938\n\t],\n\t\"./purebasic.js.js\": [\n\t\t53893,\n\t\t\"highlight/purebasic-js-js\"\n\t],\n\t\"./python\": [\n\t\t38245\n\t],\n\t\"./python-repl\": [\n\t\t3722\n\t],\n\t\"./python-repl.js\": [\n\t\t3722\n\t],\n\t\"./python-repl.js.js\": [\n\t\t53693,\n\t\t\"highlight/python-repl-js-js\"\n\t],\n\t\"./python.js\": [\n\t\t38245\n\t],\n\t\"./python.js.js\": [\n\t\t43720,\n\t\t\"highlight/python-js-js\"\n\t],\n\t\"./q\": [\n\t\t82623\n\t],\n\t\"./q.js\": [\n\t\t82623\n\t],\n\t\"./q.js.js\": [\n\t\t90999,\n\t\t\"highlight/q-js-js\"\n\t],\n\t\"./qml\": [\n\t\t23797\n\t],\n\t\"./qml.js\": [\n\t\t23797\n\t],\n\t\"./qml.js.js\": [\n\t\t96012,\n\t\t\"highlight/qml-js-js\"\n\t],\n\t\"./r\": [\n\t\t54730\n\t],\n\t\"./r.js\": [\n\t\t54730\n\t],\n\t\"./r.js.js\": [\n\t\t26930,\n\t\t\"highlight/r-js-js\"\n\t],\n\t\"./reasonml\": [\n\t\t2318\n\t],\n\t\"./reasonml.js\": [\n\t\t2318\n\t],\n\t\"./reasonml.js.js\": [\n\t\t39057,\n\t\t\"highlight/reasonml-js-js\"\n\t],\n\t\"./rib\": [\n\t\t94820\n\t],\n\t\"./rib.js\": [\n\t\t94820\n\t],\n\t\"./rib.js.js\": [\n\t\t50363,\n\t\t\"highlight/rib-js-js\"\n\t],\n\t\"./roboconf\": [\n\t\t41874\n\t],\n\t\"./roboconf.js\": [\n\t\t41874\n\t],\n\t\"./roboconf.js.js\": [\n\t\t25875,\n\t\t\"highlight/roboconf-js-js\"\n\t],\n\t\"./routeros\": [\n\t\t74005\n\t],\n\t\"./routeros.js\": [\n\t\t74005\n\t],\n\t\"./routeros.js.js\": [\n\t\t95873,\n\t\t\"highlight/routeros-js-js\"\n\t],\n\t\"./rsl\": [\n\t\t92852\n\t],\n\t\"./rsl.js\": [\n\t\t92852\n\t],\n\t\"./rsl.js.js\": [\n\t\t25978,\n\t\t\"highlight/rsl-js-js\"\n\t],\n\t\"./ruby\": [\n\t\t67905\n\t],\n\t\"./ruby.js\": [\n\t\t67905\n\t],\n\t\"./ruby.js.js\": [\n\t\t7453,\n\t\t\"highlight/ruby-js-js\"\n\t],\n\t\"./ruleslanguage\": [\n\t\t32192\n\t],\n\t\"./ruleslanguage.js\": [\n\t\t32192\n\t],\n\t\"./ruleslanguage.js.js\": [\n\t\t51506,\n\t\t\"highlight/ruleslanguage-js-js\"\n\t],\n\t\"./rust\": [\n\t\t9880\n\t],\n\t\"./rust.js\": [\n\t\t9880\n\t],\n\t\"./rust.js.js\": [\n\t\t75391,\n\t\t\"highlight/rust-js-js\"\n\t],\n\t\"./sas\": [\n\t\t93129\n\t],\n\t\"./sas.js\": [\n\t\t93129\n\t],\n\t\"./sas.js.js\": [\n\t\t56262,\n\t\t\"highlight/sas-js-js\"\n\t],\n\t\"./scala\": [\n\t\t30729\n\t],\n\t\"./scala.js\": [\n\t\t30729\n\t],\n\t\"./scala.js.js\": [\n\t\t76940,\n\t\t\"highlight/scala-js-js\"\n\t],\n\t\"./scheme\": [\n\t\t82254\n\t],\n\t\"./scheme.js\": [\n\t\t82254\n\t],\n\t\"./scheme.js.js\": [\n\t\t76613,\n\t\t\"highlight/scheme-js-js\"\n\t],\n\t\"./scilab\": [\n\t\t85149\n\t],\n\t\"./scilab.js\": [\n\t\t85149\n\t],\n\t\"./scilab.js.js\": [\n\t\t47731,\n\t\t\"highlight/scilab-js-js\"\n\t],\n\t\"./scss\": [\n\t\t71062\n\t],\n\t\"./scss.js\": [\n\t\t71062\n\t],\n\t\"./scss.js.js\": [\n\t\t61258,\n\t\t\"highlight/scss-js-js\"\n\t],\n\t\"./shell\": [\n\t\t7874\n\t],\n\t\"./shell.js\": [\n\t\t7874\n\t],\n\t\"./shell.js.js\": [\n\t\t16605,\n\t\t\"highlight/shell-js-js\"\n\t],\n\t\"./smali\": [\n\t\t10943\n\t],\n\t\"./smali.js\": [\n\t\t10943\n\t],\n\t\"./smali.js.js\": [\n\t\t21216,\n\t\t\"highlight/smali-js-js\"\n\t],\n\t\"./smalltalk\": [\n\t\t17659\n\t],\n\t\"./smalltalk.js\": [\n\t\t17659\n\t],\n\t\"./smalltalk.js.js\": [\n\t\t5229,\n\t\t\"highlight/smalltalk-js-js\"\n\t],\n\t\"./sml\": [\n\t\t45935\n\t],\n\t\"./sml.js\": [\n\t\t45935\n\t],\n\t\"./sml.js.js\": [\n\t\t26301,\n\t\t\"highlight/sml-js-js\"\n\t],\n\t\"./sqf\": [\n\t\t3677\n\t],\n\t\"./sqf.js\": [\n\t\t3677\n\t],\n\t\"./sqf.js.js\": [\n\t\t27351,\n\t\t\"highlight/sqf-js-js\"\n\t],\n\t\"./sql\": [\n\t\t98935\n\t],\n\t\"./sql.js\": [\n\t\t98935\n\t],\n\t\"./sql.js.js\": [\n\t\t43066,\n\t\t\"highlight/sql-js-js\"\n\t],\n\t\"./stan\": [\n\t\t50052\n\t],\n\t\"./stan.js\": [\n\t\t50052\n\t],\n\t\"./stan.js.js\": [\n\t\t41047,\n\t\t\"highlight/stan-js-js\"\n\t],\n\t\"./stata\": [\n\t\t60454\n\t],\n\t\"./stata.js\": [\n\t\t60454\n\t],\n\t\"./stata.js.js\": [\n\t\t78525,\n\t\t\"highlight/stata-js-js\"\n\t],\n\t\"./step21\": [\n\t\t37022\n\t],\n\t\"./step21.js\": [\n\t\t37022\n\t],\n\t\"./step21.js.js\": [\n\t\t85098,\n\t\t\"highlight/step21-js-js\"\n\t],\n\t\"./stylus\": [\n\t\t88688\n\t],\n\t\"./stylus.js\": [\n\t\t88688\n\t],\n\t\"./stylus.js.js\": [\n\t\t91613,\n\t\t\"highlight/stylus-js-js\"\n\t],\n\t\"./subunit\": [\n\t\t40726\n\t],\n\t\"./subunit.js\": [\n\t\t40726\n\t],\n\t\"./subunit.js.js\": [\n\t\t93299,\n\t\t\"highlight/subunit-js-js\"\n\t],\n\t\"./swift\": [\n\t\t77690\n\t],\n\t\"./swift.js\": [\n\t\t77690\n\t],\n\t\"./swift.js.js\": [\n\t\t82974,\n\t\t\"highlight/swift-js-js\"\n\t],\n\t\"./taggerscript\": [\n\t\t15460\n\t],\n\t\"./taggerscript.js\": [\n\t\t15460\n\t],\n\t\"./taggerscript.js.js\": [\n\t\t43700,\n\t\t\"highlight/taggerscript-js-js\"\n\t],\n\t\"./tap\": [\n\t\t30422\n\t],\n\t\"./tap.js\": [\n\t\t30422\n\t],\n\t\"./tap.js.js\": [\n\t\t17532,\n\t\t\"highlight/tap-js-js\"\n\t],\n\t\"./tcl\": [\n\t\t78158\n\t],\n\t\"./tcl.js\": [\n\t\t78158\n\t],\n\t\"./tcl.js.js\": [\n\t\t16925,\n\t\t\"highlight/tcl-js-js\"\n\t],\n\t\"./thrift\": [\n\t\t30906\n\t],\n\t\"./thrift.js\": [\n\t\t30906\n\t],\n\t\"./thrift.js.js\": [\n\t\t9377,\n\t\t\"highlight/thrift-js-js\"\n\t],\n\t\"./tp\": [\n\t\t6123\n\t],\n\t\"./tp.js\": [\n\t\t6123\n\t],\n\t\"./tp.js.js\": [\n\t\t12686,\n\t\t\"highlight/tp-js-js\"\n\t],\n\t\"./twig\": [\n\t\t71973\n\t],\n\t\"./twig.js\": [\n\t\t71973\n\t],\n\t\"./twig.js.js\": [\n\t\t73660,\n\t\t\"highlight/twig-js-js\"\n\t],\n\t\"./typescript\": [\n\t\t28987\n\t],\n\t\"./typescript.js\": [\n\t\t28987\n\t],\n\t\"./typescript.js.js\": [\n\t\t92373,\n\t\t\"highlight/typescript-js-js\"\n\t],\n\t\"./vala\": [\n\t\t41462\n\t],\n\t\"./vala.js\": [\n\t\t41462\n\t],\n\t\"./vala.js.js\": [\n\t\t2239,\n\t\t\"highlight/vala-js-js\"\n\t],\n\t\"./vbnet\": [\n\t\t27531\n\t],\n\t\"./vbnet.js\": [\n\t\t27531\n\t],\n\t\"./vbnet.js.js\": [\n\t\t48701,\n\t\t\"highlight/vbnet-js-js\"\n\t],\n\t\"./vbscript\": [\n\t\t4703\n\t],\n\t\"./vbscript-html\": [\n\t\t48704\n\t],\n\t\"./vbscript-html.js\": [\n\t\t48704\n\t],\n\t\"./vbscript-html.js.js\": [\n\t\t43992,\n\t\t\"highlight/vbscript-html-js-js\"\n\t],\n\t\"./vbscript.js\": [\n\t\t4703\n\t],\n\t\"./vbscript.js.js\": [\n\t\t55872,\n\t\t\"highlight/vbscript-js-js\"\n\t],\n\t\"./verilog\": [\n\t\t54494\n\t],\n\t\"./verilog.js\": [\n\t\t54494\n\t],\n\t\"./verilog.js.js\": [\n\t\t44118,\n\t\t\"highlight/verilog-js-js\"\n\t],\n\t\"./vhdl\": [\n\t\t48110\n\t],\n\t\"./vhdl.js\": [\n\t\t48110\n\t],\n\t\"./vhdl.js.js\": [\n\t\t63461,\n\t\t\"highlight/vhdl-js-js\"\n\t],\n\t\"./vim\": [\n\t\t53638\n\t],\n\t\"./vim.js\": [\n\t\t53638\n\t],\n\t\"./vim.js.js\": [\n\t\t54971,\n\t\t\"highlight/vim-js-js\"\n\t],\n\t\"./wasm\": [\n\t\t81533\n\t],\n\t\"./wasm.js\": [\n\t\t81533\n\t],\n\t\"./wasm.js.js\": [\n\t\t7809,\n\t\t\"highlight/wasm-js-js\"\n\t],\n\t\"./wren\": [\n\t\t68563\n\t],\n\t\"./wren.js\": [\n\t\t68563\n\t],\n\t\"./wren.js.js\": [\n\t\t87106,\n\t\t\"highlight/wren-js-js\"\n\t],\n\t\"./x86asm\": [\n\t\t19947\n\t],\n\t\"./x86asm.js\": [\n\t\t19947\n\t],\n\t\"./x86asm.js.js\": [\n\t\t50923,\n\t\t\"highlight/x86asm-js-js\"\n\t],\n\t\"./xl\": [\n\t\t49338\n\t],\n\t\"./xl.js\": [\n\t\t49338\n\t],\n\t\"./xl.js.js\": [\n\t\t66778,\n\t\t\"highlight/xl-js-js\"\n\t],\n\t\"./xml\": [\n\t\t4610\n\t],\n\t\"./xml.js\": [\n\t\t4610\n\t],\n\t\"./xml.js.js\": [\n\t\t20722,\n\t\t\"highlight/xml-js-js\"\n\t],\n\t\"./xquery\": [\n\t\t5595\n\t],\n\t\"./xquery.js\": [\n\t\t5595\n\t],\n\t\"./xquery.js.js\": [\n\t\t8001,\n\t\t\"highlight/xquery-js-js\"\n\t],\n\t\"./yaml\": [\n\t\t71392\n\t],\n\t\"./yaml.js\": [\n\t\t71392\n\t],\n\t\"./yaml.js.js\": [\n\t\t8564,\n\t\t\"highlight/yaml-js-js\"\n\t],\n\t\"./zephir\": [\n\t\t42222\n\t],\n\t\"./zephir.js\": [\n\t\t42222\n\t],\n\t\"./zephir.js.js\": [\n\t\t64181,\n\t\t\"highlight/zephir-js-js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 63497;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 15596,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 15596,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor\",attrs:{\"id\":\"editor-container\",\"data-text-el\":\"editor-container\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();$event.preventDefault();return (() => {}).apply(null, arguments)}}},[(_vm.displayedStatus)?_c('DocumentStatus',{attrs:{\"idle\":_vm.idle,\"lock\":_vm.lock,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue},on:{\"reconnect\":_vm.reconnect}}):_vm._e(),_vm._v(\" \"),(_vm.displayed)?_c('Wrapper',{attrs:{\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue,\"content-loaded\":_vm.contentLoaded,\"show-author-annotations\":_vm.showAuthorAnnotations,\"show-outline-outside\":_vm.showOutlineOutside},on:{\"outline-toggled\":_vm.outlineToggled}},[(_vm.hasEditor)?_c('MainContainer',[(_vm.readOnly)?_c('div',{staticClass:\"text-editor--readonly-bar\"},[_c('ReadonlyBar',[_c('Status',{attrs:{\"document\":_vm.document,\"dirty\":_vm.dirty,\"sessions\":_vm.filteredSessions,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue}})],1)],1):[(_vm.renderMenus)?_c('MenuBar',{ref:\"menubar\",attrs:{\"autohide\":_vm.autohide,\"loaded\":_vm.menubarLoaded},on:{\"update:loaded\":function($event){_vm.menubarLoaded=$event}}},[_c('Status',{attrs:{\"document\":_vm.document,\"dirty\":_vm.dirty,\"sessions\":_vm.filteredSessions,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue}}),_vm._v(\" \"),_vm._t(\"header\")],2):_c('div',{staticClass:\"menubar-placeholder\"})],_vm._v(\" \"),_c('ContentContainer',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.contentLoaded),expression:\"contentLoaded\"}],ref:\"contentWrapper\"})],2):_vm._e(),_vm._v(\" \"),(_vm.hasSyncCollission)?_c('Reader',{attrs:{\"content\":_vm.syncError.data.outsideChange,\"is-rich-editor\":_vm.isRichEditor}}):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\n/*\n * This helper provides Base64 encoding and decoding for ArrayBuffers.\n *\n * We use lib0/buffer for now as it's a dependency of y.js\n * and does not add new dependencies.\n *\n */\n\nimport { toBase64, fromBase64 } from 'lib0/buffer'\n\n/**\n *\n * @param {ArrayBuffer} data - binary data to encode\n */\nexport function encodeArrayBuffer(data) {\n\tconst view = new Uint8Array(data)\n\treturn toBase64(view)\n}\n\n/**\n *\n * @param {string} encoded - base64 encoded string to decode\n */\nexport function decodeArrayBuffer(encoded) {\n\treturn fromBase64(encoded)\n}\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\nimport { WebsocketProvider } from 'y-websocket'\nimport initWebSocketPolyfill from './WebSocketPolyfill.js'\nimport { logger } from '../helpers/logger.js'\n\n/**\n *\n * @param {object} options - options for the sync provider\n * @param {object} options.ydoc - the Ydoc\n * @param {object} options.syncService - sync service to build upon\n * @param {number} options.fileId - file id of the file to open\n * @param {object} options.initialSession - initialSession to start from\n */\nexport default function createSyncServiceProvider({ ydoc, syncService, fileId, initialSession }) {\n\tif (!fileId) {\n\t\t// We need a file id as a unique identifier for y.js as otherwise state might leak between different files\n\t\tthrow new Error('fileId is required')\n\t}\n\tconst WebSocketPolyfill = initWebSocketPolyfill(syncService, fileId, initialSession)\n\tconst websocketProvider = new WebsocketProvider(\n\t\t'ws://localhost:1234',\n\t\t'file:' + fileId,\n\t\tydoc,\n\t\t{ WebSocketPolyfill }\n\t)\n\twebsocketProvider.on('status', event => logger.debug('status', event))\n\treturn websocketProvider\n}\n","/*\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \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 .\n *\n */\n\nimport { logger } from '../helpers/logger.js'\nimport { encodeArrayBuffer, decodeArrayBuffer } from '../helpers/base64.js'\n\n/**\n *\n * @param {object} syncService - the sync service to build upon\n * @param {number} fileId - id of the file to open\n * @param {object} initialSession - initial session to open\n */\nexport default function initWebSocketPolyfill(syncService, fileId, initialSession) {\n\treturn class WebSocketPolyfill {\n\n\t\t#url\n\t\t#session\n\t\t#version\n\t\tbinaryType\n\t\tonmessage\n\t\tonerror\n\t\tonclose\n\t\tonopen\n\t\t#handlers\n\t\t#queue\n\n\t\tconstructor(url) {\n\t\t\tthis.url = url\n\t\t\tthis.#queue = []\n\t\t\tlogger.debug('WebSocketPolyfill#constructor', { url, fileId, initialSession })\n\t\t\tthis.#registerHandlers({\n\t\t\t\topened: ({ version, session }) => {\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tlogger.debug('opened ', { version, session })\n\t\t\t\t\tthis.#session = session\n\t\t\t\t\tthis.onopen?.()\n\t\t\t\t},\n\t\t\t\tloaded: ({ version, session, content }) => {\n\t\t\t\t\tlogger.debug('loaded ', { version, session })\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tthis.#session = session\n\t\t\t\t},\n\t\t\t\tsync: ({ steps, version }) => {\n\t\t\t\t\tlogger.debug('synced ', { version, steps })\n\t\t\t\t\tthis.#version = version\n\t\t\t\t\tif (steps) {\n\t\t\t\t\t\tsteps.forEach(s => {\n\t\t\t\t\t\t\tconst data = decodeArrayBuffer(s.step)\n\t\t\t\t\t\t\tthis.onmessage({ data })\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t\t\tsyncService.open({ fileId, initialSession })\n\t\t}\n\n\t\t#registerHandlers(handlers) {\n\t\t\tthis.#handlers = handlers\n\t\t\tObject.entries(this.#handlers)\n\t\t\t\t.forEach(([key, value]) => syncService.on(key, value))\n\t\t}\n\n\t\tsend(...data) {\n\t\t\tconst sending = this.#queue.length > 0\n\t\t\tthis.#queue.push(...data)\n\t\t\tif (!sending) {\n\t\t\t\tthis.#initiateSending()\n\t\t\t}\n\t\t}\n\n\t\t#initiateSending() {\n\t\t\tlet outbox\n\t\t\tsyncService.sendSteps(() => {\n\t\t\t\toutbox = this.#queue\n\t\t\t\tconst data = {\n\t\t\t\t\tsteps: this.#steps,\n\t\t\t\t\tawareness: this.#awareness,\n\t\t\t\t\tversion: this.#version,\n\t\t\t\t}\n\t\t\t\tthis.#queue = []\n\t\t\t\tlogger.debug('sending steps ', data)\n\t\t\t\treturn data\n\t\t\t})?.catch(() => {\n\t\t\t\t// try to send the steps again\n\t\t\t\tthis.#queue = [...outbox, ...this.#queue]\n\t\t\t})\n\t\t}\n\n\t\tget #steps() {\n\t\t\treturn this.#queue.map(s => encodeArrayBuffer(s))\n\t\t\t\t.filter(s => s < 'AQ')\n\t\t}\n\n\t\tget #awareness() {\n\t\t\treturn this.#queue.map(s => encodeArrayBuffer(s))\n\t\t\t\t.findLast(s => s > 'AQ') || ''\n\t\t}\n\n\t\tclose() {\n\t\t\tObject.entries(this.#handlers)\n\t\t\t\t.forEach(([key, value]) => syncService.off(key, value))\n\t\t\tthis.#handlers = []\n\t\t\tsyncService.close().then(() => {\n\t\t\t\tthis.onclose()\n\t\t\t})\n\t\t\tlogger.debug('Websocket closed')\n\t\t}\n\n\t}\n}\n","/**\n * @copyright Copyright (c) 2022 Max \n *\n * @author Max \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { generateUrl, generateRemoteUrl } from '@nextcloud/router'\nimport pathNormalize from 'path-normalize'\nimport axios from '@nextcloud/axios'\nimport { formatFileSize } from '@nextcloud/files'\n\nimport { logger } from '../helpers/logger.js'\n\nexport default class AttachmentResolver {\n\n\t#session\n\t#user\n\t#shareToken\n\t#currentDirectory\n\t#attachmentDirectory\n\n\tATTACHMENT_TYPE_IMAGE = 'image'\n\tATTACHMENT_TYPE_MEDIA = 'media'\n\n\tconstructor({ session, user, shareToken, currentDirectory, fileId }) {\n\t\tthis.#session = session\n\t\tthis.#user = user\n\t\tthis.#shareToken = shareToken\n\t\tthis.#currentDirectory = currentDirectory\n\t\tfileId ||= session?.documentId\n\t\tthis.#attachmentDirectory = `.attachments.${fileId}`\n\t}\n\n\t/*\n\t * Resolve a given src.\n\t * @param { string } the original src in the node.\n\t * @param { bool } choose to fetch the raw image or a preview | default = false\n\t * @returns { Array } - resolved candidates to try.\n\t *\n\t * Currently returns either one or two urls.\n\t */\n\tasync resolve(src, preferRawImage = false) {\n\t\tif (this.#session && src.startsWith('text://')) {\n\t\t\tconst imageFileName = getQueryVariable(src, 'imageFileName')\n\t\t\treturn [{\n\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\turl: this.#getImageAttachmentUrl(imageFileName, preferRawImage),\n\t\t\t}]\n\t\t}\n\n\t\t// Has session and URL points to attachment from current document\n\t\tif (this.#session && src.startsWith(`.attachments.${this.#session?.documentId}/`)) {\n\t\t\tconst imageFileName = decodeURIComponent(src.replace(`.attachments.${this.#session?.documentId}/`, '').split('?')[0])\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\t\turl: this.#getImageAttachmentUrl(imageFileName, preferRawImage),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_MEDIA,\n\t\t\t\t\turl: this.#getMediaPreviewUrl(imageFileName),\n\t\t\t\t\tname: imageFileName,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tif (isDirectUrl(src)) {\n\t\t\treturn [{\n\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\turl: src,\n\t\t\t}]\n\t\t}\n\n\t\tif (hasPreview(src)) { // && this.#mime !== 'image/gif') {\n\t\t\treturn [{\n\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\turl: this.#previewUrl(src),\n\t\t\t}]\n\t\t}\n\n\t\t// Has session and URL points to attachment from a (different) text document\n\t\tif (this.#session && src.match(/^\\.attachments\\.\\d+\\//)) {\n\t\t\tconst imageFileName = this.#relativePath(src)\n\t\t\t\t.replace(/\\.attachments\\.\\d+\\//, '')\n\t\t\t// Try webdav URL, use attachment API as fallback\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\t\turl: this.#davUrl(src),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\t\turl: this.#getImageAttachmentUrl(imageFileName, preferRawImage),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_MEDIA,\n\t\t\t\t\turl: this.#getMediaPreviewUrl(imageFileName),\n\t\t\t\t\tname: imageFileName,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\t// Doesn't have session and URL points to attachment from (current or different) text document\n\t\tif (!this.#session && src.match(/^\\.attachments\\.\\d+\\//)) {\n\t\t\tconst imageFileName = this.#relativePath(src)\n\t\t\t\t.replace(/\\.attachments\\.\\d+\\//, '')\n\t\t\tconst { mimeType, size } = await this.getMetadata(this.#davUrl(src))\n\t\t\t// Without session, use webdav URL for images and mimetype icon for media attachments\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\t\t\turl: this.#davUrl(src),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: this.ATTACHMENT_TYPE_MEDIA,\n\t\t\t\t\turl: this.getMimeUrl(mimeType),\n\t\t\t\t\tmetadata: { size },\n\t\t\t\t\tname: imageFileName,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\treturn [{\n\t\t\ttype: this.ATTACHMENT_TYPE_IMAGE,\n\t\t\turl: this.#davUrl(src),\n\t\t}]\n\t}\n\n\t#getImageAttachmentUrl(imageFileName, preferRawImage = false) {\n\t\tif (!this.#session) {\n\t\t\treturn this.#davUrl(\n\t\t\t\t`${this.#attachmentDirectory}/${imageFileName}`\n\t\t\t)\n\t\t}\n\n\t\tif (this.#user || !this.#shareToken) {\n\t\t\treturn generateUrl('/apps/text/image?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&imageFileName={imageFileName}&preferRawImage={preferRawImage}', {\n\t\t\t\t...this.#textApiParams(),\n\t\t\t\timageFileName,\n\t\t\t\tpreferRawImage: preferRawImage ? 1 : 0,\n\t\t\t})\n\t\t}\n\n\t\treturn generateUrl('/apps/text/image?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&imageFileName={imageFileName}&shareToken={shareToken}&preferRawImage={preferRawImage}', {\n\t\t\t...this.#textApiParams(),\n\t\t\timageFileName,\n\t\t\tshareToken: this.#shareToken,\n\t\t\tpreferRawImage: preferRawImage ? 1 : 0,\n\t\t})\n\t}\n\n\t#getMediaPreviewUrl(mediaFileName) {\n\t\tif (this.#user || !this.#shareToken) {\n\t\t\treturn generateUrl('/apps/text/mediaPreview?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&mediaFileName={mediaFileName}', {\n\t\t\t\t...this.#textApiParams(),\n\t\t\t\tmediaFileName,\n\t\t\t})\n\t\t}\n\n\t\treturn generateUrl('/apps/text/mediaPreview?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&mediaFileName={mediaFileName}&shareToken={shareToken}', {\n\t\t\t...this.#textApiParams(),\n\t\t\tmediaFileName,\n\t\t\tshareToken: this.#shareToken,\n\t\t})\n\t}\n\n\tgetMediaMetadataUrl(mediaFileName) {\n\t\tif (this.#user || !this.#shareToken) {\n\t\t\treturn generateUrl('/apps/text/mediaMetadata?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&mediaFileName={mediaFileName}', {\n\t\t\t\t...this.#textApiParams(),\n\t\t\t\tmediaFileName,\n\t\t\t})\n\t\t}\n\n\t\treturn generateUrl('/apps/text/mediaMetadata?documentId={documentId}&sessionId={sessionId}&sessionToken={sessionToken}&mediaFileName={mediaFileName}&shareToken={shareToken}', {\n\t\t\t...this.#textApiParams(),\n\t\t\tmediaFileName,\n\t\t\tshareToken: this.#shareToken,\n\t\t})\n\t}\n\n\t#textApiParams() {\n\t\tif (this.#session) {\n\t\t\treturn {\n\t\t\t\tdocumentId: this.#session.documentId,\n\t\t\t\tsessionId: this.#session.id,\n\t\t\t\tsessionToken: this.#session.token,\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n\n\t#previewUrl(src) {\n\t\tconst imageFileId = getQueryVariable(src, 'fileId')\n\t\tconst path = this.#filePath(src)\n\t\tconst fileQuery = `file=${encodeURIComponent(path)}`\n\t\tconst query = fileQuery + '&x=1024&y=1024&a=true'\n\n\t\tif (this.#user && imageFileId) {\n\t\t\treturn generateUrl(`/core/preview?fileId=${imageFileId}&${query}`)\n\t\t}\n\n\t\tif (this.#user) {\n\t\t\treturn generateUrl(`/core/preview.png?${query}`)\n\t\t}\n\n\t\tif (this.#shareToken) {\n\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${this.#shareToken}?${query}`)\n\t\t}\n\n\t\tlogger.error('No way to authenticate image retrival - need to be logged in or provide a token')\n\t\treturn src\n\t}\n\n\t#davUrl(src) {\n\t\tif (this.#user) {\n\t\t\tconst uid = this.#user.uid\n\t\t\tconst encoded = encodeURI(this.#filePath(src))\n\t\t\treturn generateRemoteUrl(`dav/files/${uid}${encoded}`)\n\t\t}\n\n\t\tconst path = this.#filePath(src).split('/')\n\t\tconst basename = path.pop()\n\t\tconst dirname = path.join('/')\n\n\t\treturn generateUrl('/s/{token}/download?path={dirname}&files={basename}', {\n\t\t\ttoken: this.#shareToken,\n\t\t\tbasename,\n\t\t\tdirname,\n\t\t})\n\t}\n\n\t/**\n\t * Return the relativePath to a file specified in the url\n\t *\n\t * @param {string} src - url to extract path from\n\t */\n\t#relativePath(src) {\n\t\tif (src.startsWith('text://')) {\n\t\t\treturn [\n\t\t\t\tthis.#attachmentDirectory,\n\t\t\t\tgetQueryVariable(src, 'imageFileName'),\n\t\t\t].join('/')\n\t\t}\n\n\t\treturn decodeURI(src.split('?')[0])\n\t}\n\n\t#filePath(src) {\n\t\tconst f = [\n\t\t\tthis.#currentDirectory,\n\t\t\tthis.#relativePath(src),\n\t\t].join('/')\n\n\t\treturn pathNormalize(f)\n\t}\n\n\tasync getMetadata(src) {\n\t\tconst headResponse = await axios.head(src)\n\t\tconst mimeType = headResponse.headers['content-type']\n\t\tconst size = formatFileSize(headResponse.headers['content-length'])\n\t\treturn { mimeType, size }\n\t}\n\n\tgetMimeUrl(mimeType) {\n\t\treturn mimeType ? OC.MimeType.getIconUrl(mimeType) : null\n\t}\n\n}\n\n/**\n * Check if a url can be loaded directly - i.e. is one of\n * - remote url\n * - data url\n * - preview url\n *\n * @param {string} src - the url to check\n */\nfunction isDirectUrl(src) {\n\treturn src.startsWith('http://')\n\t\t|| src.startsWith('https://')\n\t\t|| src.startsWith('data:')\n\t\t|| src.match(/^(\\/index.php)?\\/core\\/preview/)\n\t\t|| src.match(/^(\\/index.php)?\\/apps\\/files_sharing\\/publicpreview\\//)\n}\n\n/**\n * Check if the given url has a preview\n *\n * @param {string} src - the url to check\n */\nfunction hasPreview(src) {\n\treturn getQueryVariable(src, 'hasPreview') === 'true'\n}\n\n/**\n * Extract the value of a query variable from the given url\n *\n * @param {string} src - the url to extract query variable from\n * @param {string} variable - name of the variable to read out\n */\nfunction getQueryVariable(src, variable) {\n\tconst query = src.split('?')[1]\n\n\tif (typeof query === 'undefined') {\n\t\treturn\n\t}\n\n\tconst vars = query.split(/[&#]/)\n\n\tif (typeof vars === 'undefined') {\n\t\treturn\n\t}\n\n\tfor (let i = 0; i < vars.length; i++) {\n\t\tconst pair = vars[i].split('=')\n\t\tif (decodeURIComponent(pair[0]) === variable) {\n\t\t\treturn decodeURIComponent(pair[1])\n\t\t}\n\t}\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nconst extensionHighlight = {\n\tpy: 'python',\n\tgyp: 'python',\n\twsgi: 'python',\n\thtm: 'html',\n\txhtml: 'html',\n\terl: 'erlang',\n\tjsp: 'java',\n\tpl: 'perl',\n\trss: 'xml',\n\tatom: 'xml',\n\txsl: 'xml',\n\tplist: 'xml',\n\trb: 'ruby',\n\tbuilder: 'ruby',\n\tgemspec: 'ruby',\n\tpodspec: 'ruby',\n\tthor: 'ruby',\n\tdiff: 'patch',\n\ths: 'haskell',\n\ticl: 'haskell',\n\tphp3: 'php',\n\tphp4: 'php',\n\tphp5: 'php',\n\tphp6: 'php',\n\tsh: 'bash',\n\tzsh: 'bash',\n\tst: 'smalltalk',\n\tas: 'actionscript',\n\tapacheconf: 'apache',\n\tosacript: 'applescript',\n\tb: 'brainfuck',\n\tbf: 'brainfuck',\n\tclj: 'clojure',\n\t'cmake.in': 'cmake',\n\tcoffee: 'coffeescript',\n\tcson: 'coffescript',\n\ticed: 'coffescript',\n\tc: 'cpp',\n\th: 'cpp',\n\t'c++': 'cpp',\n\t'h++': 'cpp',\n\thh: 'cpp',\n\tjinja: 'django',\n\tbat: 'dos',\n\tcmd: 'dos',\n\tfs: 'fsharp',\n\thbs: 'handlebars',\n\t'html.hbs': 'handlebars',\n\t'html.handlebars': 'handlebars',\n\tsublime_metrics: 'json',\n\tsublime_session: 'json',\n\t'sublime-keymap': 'json',\n\t'sublime-mousemap': 'json',\n\t'sublime-project': 'json',\n\t'sublime-settings': 'json',\n\t'sublime-workspace': 'json',\n\tjs: 'javascript',\n\tmk: 'makefile',\n\tmak: 'makefile',\n\tmd: 'markdown',\n\tmkdown: 'markdown',\n\tmkd: 'markdown',\n\tnginxconf: 'nginx',\n\tm: 'objectivec',\n\tmm: 'objectivec',\n\tml: 'ocaml',\n\trs: 'rust',\n\tsci: 'scilab',\n\ttxt: 'plaintext',\n\tvb: 'vbnet',\n\tvbs: 'vbscript',\n}\n\nexport default extensionHighlight\nexport {\n\textensionHighlight,\n}\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AutoCompleteResult.vue?vue&type=template&id=2145738d&scoped=true&\"\nimport script from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoCompleteResult.vue?vue&type=style&index=0&id=2145738d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2145738d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"autocomplete-result\"},[_c('div',{staticClass:\"autocomplete-result__icon\",class:[_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? 'with-avatar' : ''}`],style:(_vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null)},[(_vm.haveStatus)?_c('div',{staticClass:\"autocomplete-result__status\",class:[`autocomplete-result__status--${_vm.status && _vm.status.icon ? 'icon' : _vm.status.status}`]},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.status && _vm.status.icon || '')+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"autocomplete-result__content\"},[_c('span',{staticClass:\"autocomplete-result__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"autocomplete-result__subline\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\\t\")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./MentionList.vue?vue&type=template&id=a58c38da&\"\nimport script from \"./MentionList.vue?vue&type=script&lang=js&\"\nexport * from \"./MentionList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MentionList.vue?vue&type=style&index=0&id=a58c38da&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SuggestionListWrapper',{ref:\"suggestionList\",attrs:{\"command\":_vm.command,\"items\":_vm.items},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active}){return [_c('AutoCompleteResult',{class:active ? 'highlight' : null,attrs:{\"id\":item.id,\"label\":item.label,\"icon\":\"icon-user\",\"source\":\"users\"}})]}},{key:\"empty\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'No user found'))+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport MentionList from './MentionList.vue'\nimport createSuggestions from '../suggestions.js'\n\nconst USERS_LIST_ENDPOINT_URL = generateUrl('apps/text/api/v1/users')\n\nconst emitMention = ({ session, props }) => {\n\taxios.put(generateUrl('apps/text/session/mention'), {\n\t\tdocumentId: session.documentId,\n\t\tsessionId: session.id,\n\t\tsessionToken: session.token,\n\t\tmention: props.id,\n\t})\n}\n\nexport default ({ session, params }) => createSuggestions({\n\tlistComponent: MentionList,\n\titems: async ({ query }) => {\n\t\tconst params = {\n\t\t\tdocumentId: session.documentId,\n\t\t\tsessionId: session.id,\n\t\t\tsessionToken: session.token,\n\t\t\tfilter: query,\n\t\t}\n\t\tconst response = await axios.post(USERS_LIST_ENDPOINT_URL, params)\n\t\tconst users = JSON.parse(JSON.stringify(response.data))\n\t\tconst result = []\n\n\t\tObject.keys(users).map(key => result.push({\n\t\t\tid: key,\n\t\t\tlabel: users[key],\n\t\t}))\n\n\t\treturn result\n\t},\n\n\tcommand: ({ editor, range, props }) => {\n\t\tif (params?.emitMention) {\n\t\t\tparams.emitMention({ props })\n\t\t} else {\n\t\t\temitMention({\n\t\t\t\tsession,\n\t\t\t\tprops,\n\t\t\t})\n\t\t}\n\n\t\t// Insert mention\n\t\t// from https://github.com/ueberdosis/tiptap/blob/9a254bf9daf6d839bd02c968e14837098b903b38/packages/extension-mention/src/mention.ts\n\n\t\t// increase range.to by one when the next node is of type \"text\"\n\t\t// and starts with a space character\n\t\tconst nodeAfter = editor.view.state.selection.$to.nodeAfter\n\t\tconst overrideSpace = nodeAfter?.text?.startsWith(' ')\n\n\t\tif (overrideSpace) {\n\t\t\trange.to += 1\n\t\t}\n\n\t\teditor\n\t\t\t.chain()\n\t\t\t.focus()\n\t\t\t.insertContentAt(range, [\n\t\t\t\t{\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tattrs: props,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\ttext: ' ',\n\t\t\t\t},\n\t\t\t])\n\t\t\t.run()\n\n\t\twindow.getSelection()?.collapseToEnd()\n\t},\n\t...params,\n})\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/index.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport MentionSuggestion from './components/Suggestion/Mention/suggestions.js'\n\nimport 'proxy-polyfill'\n\nimport { Editor } from '@tiptap/core'\nimport { lowlight } from 'lowlight/lib/core.js'\nimport hljs from 'highlight.js'\n\nimport { logger } from './helpers/logger.js'\nimport { Mention, PlainText, RichText } from './extensions/index.js'\n// eslint-disable-next-line import/no-named-as-default\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\n\nconst loadSyntaxHighlight = async (language) => {\n\tconst list = hljs.listLanguages()\n\tlogger.debug('Supported languages', { list })\n\tif (!lowlight.listLanguages().includes(language)) {\n\t\ttry {\n\t\t\tlogger.debug('Loading language', language)\n\t\t\t// eslint-disable-next-line n/no-missing-import\n\t\t\tconst syntax = await import(/* webpackChunkName: \"highlight/[request]\" */`../node_modules/highlight.js/lib/languages/${language}`)\n\t\t\tlowlight.registerLanguage(language, syntax.default)\n\t\t} catch (error) {\n\t\t\t// fallback to none\n\t\t\tlogger.debug('No matching highlighing found', { error })\n\t\t}\n\t}\n}\n\nconst createEditor = ({ language, onCreate, onUpdate = () => {}, extensions, enableRichEditing, session, relativePath }) => {\n\tlet defaultExtensions\n\tif (enableRichEditing) {\n\t\tdefaultExtensions = [\n\t\t\tRichText.configure({\n\t\t\t\trelativePath,\n\t\t\t\tcomponent: this,\n\t\t\t\textensions: [\n\t\t\t\t\tMention.configure({\n\t\t\t\t\t\tsuggestion: MentionSuggestion({\n\t\t\t\t\t\t\tsession,\n\t\t\t\t\t\t}),\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t}),\n\t\t]\n\t} else {\n\t\tdefaultExtensions = [PlainText, CodeBlockLowlight.configure({ lowlight, defaultLanguage: language })]\n\t}\n\n\treturn new Editor({\n\t\tonCreate,\n\t\tonUpdate,\n\t\teditorProps: {\n\t\t\tscrollMargin: 50,\n\t\t\tscrollThreshold: 50,\n\t\t},\n\t\textensions: defaultExtensions.concat(extensions || []),\n\t})\n}\n\nconst SerializeException = function(message) {\n\tthis.message = message\n}\n\nconst serializePlainText = (tiptap) => {\n\tconst doc = tiptap.getJSON()\n\n\tif (doc.content.length !== 1 || typeof doc.content[0].content === 'undefined' || doc.content[0].content.length !== 1) {\n\t\tif (doc.content[0].type === 'codeBlock' && typeof doc.content[0].content === 'undefined') {\n\t\t\treturn ''\n\t\t}\n\t\tthrow new SerializeException('Failed to serialize document to plain text')\n\t}\n\tconst codeBlock = doc.content[0].content[0]\n\tif (codeBlock.type !== 'text') {\n\t\tthrow new SerializeException('Failed to serialize document to plain text')\n\t}\n\treturn codeBlock.text\n}\n\nexport default createEditor\nexport { createEditor, serializePlainText, loadSyntaxHighlight }\n","/*\n * @copyright Copyright (c) 2023 Max \n *\n * @author Max \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 .\n *\n */\n\nimport escapeHtml from 'escape-html'\nimport markdownit from './../markdownit/index.js'\n\nexport default {\n\tmethods: {\n\t\tsetContent(content, { isRich, addToHistory = true } = {}) {\n\t\t\tconst html = isRich\n\t\t\t\t? markdownit.render(content) + '

'\n\t\t\t\t: `

${escapeHtml(content)}
`\n\t\t\tthis.$editor.chain()\n\t\t\t\t.setContent(html, addToHistory)\n\t\t\t\t.command(({ tr }) => {\n\t\t\t\t\ttr.setMeta('addToHistory', addToHistory)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.run()\n\t\t},\n\n\t},\n}\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=style&index=0&id=44412072&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=style&index=0&id=44412072&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollisionResolveDialog.vue?vue&type=template&id=44412072&scoped=true&\"\nimport script from \"./CollisionResolveDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CollisionResolveDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollisionResolveDialog.vue?vue&type=style&index=0&id=44412072&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44412072\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"collision-resolve-dialog\",class:{'icon-loading': _vm.clicked },attrs:{\"id\":\"resolve-conflicts\"}},[_c('NcButton',{attrs:{\"disabled\":_vm.clicked,\"data-cy\":\"resolveThisVersion\"},on:{\"click\":_vm.resolveThisVersion}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use current version'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":_vm.clicked,\"data-cy\":\"resolveServerVersion\"},on:{\"click\":_vm.resolveServerVersion}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use the saved version'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.vue?vue&type=style&index=0&id=4fde7cc0&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentStatus.vue?vue&type=style&index=0&id=4fde7cc0&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DocumentStatus.vue?vue&type=template&id=4fde7cc0&scoped=true&\"\nimport script from \"./DocumentStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./DocumentStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DocumentStatus.vue?vue&type=style&index=0&id=4fde7cc0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4fde7cc0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"document-status\"},[(_vm.isLoadingError)?_c('NcEmptyContent',{attrs:{\"title\":_vm.t('text', 'Failed to load file'),\"description\":_vm.syncError.data.data},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertOctagonOutline')]},proxy:true}],null,false,235676370)}):(_vm.idle)?_c('p',{staticClass:\"msg\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Document idle for {timeout} minutes, click to continue editing', { timeout: _vm.IDLE_TIMEOUT }))+\" \"),_c('a',{staticClass:\"button primary\",on:{\"click\":_vm.reconnect}},[_vm._v(_vm._s(_vm.t('text', 'Reconnect')))])]):(_vm.hasSyncCollission)?_c('p',{staticClass:\"msg icon-error\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'The document has been changed outside of the editor. The changes cannot be applied.'))+\"\\n\\t\")]):(_vm.hasConnectionIssue)?_c('p',{staticClass:\"msg\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'File could not be loaded. Please check your internet connection.'))+\" \"),_c('a',{staticClass:\"button primary\",on:{\"click\":_vm.reconnect}},[_vm._v(_vm._s(_vm.t('text', 'Reconnect')))])]):_vm._e(),_vm._v(\" \"),(_vm.lock)?_c('p',{staticClass:\"msg msg-locked\"},[_c('Lock'),_vm._v(\" \"+_vm._s(_vm.t('text', 'This file is opened read-only as it is currently locked by {user}.', { user: _vm.lock.displayName }))+\"\\n\\t\")],1):_vm._e(),_vm._v(\" \"),(_vm.hasSyncCollission)?_c('CollisionResolveDialog',{attrs:{\"sync-error\":_vm.syncError}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport debounce from 'debounce'\n\nconst getClientWidth = () => document.documentElement.clientWidth\nconst isMobile = () => getClientWidth() < 768\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis.$onResize = debounce(() => {\n\t\t\tthis.isMobile = isMobile()\n\t\t}, 100)\n\n\t\twindow.addEventListener('resize', this.$onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.$onResize)\n\t},\n}\n","/*\n * @copyright Copyright (c) 2023 Max \n *\n * @author Max \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 .\n *\n */\n\n/* moment.js displays intervals as \"Some seconds ago\" and the like.\n * Use `this.refreshMoment` in a computed to live update these.\n *\n * Updates happen every 20 seconds as that is enough\n * given the granularity of moment.js\n */\nexport default {\n\n\tdata() {\n\t\treturn {\n\t\t\trefreshMoment: 0,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tthis.$refreshInterval = setInterval(() => {\n\t\t\tthis.refreshMoment++\n\t\t}, 20000)\n\t},\n\n\tbeforeDestroy() {\n\t\tclearInterval(this.$refreshInterval)\n\t},\n\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=style&index=0&id=72fc82a8&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=style&index=0&id=72fc82a8&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=72fc82a8&scoped=true&\"\nimport script from \"./Status.vue?vue&type=script&lang=js&\"\nexport * from \"./Status.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Status.vue?vue&type=style&index=0&id=72fc82a8&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72fc82a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor__session-list\"},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.lastSavedStatusTooltip),expression:\"lastSavedStatusTooltip\"}],staticClass:\"save-status\",class:_vm.saveStatusClass},[_c('NcButton',{attrs:{\"type\":\"tertiary\"},on:{\"click\":_vm.onClickSave},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcSavingIndicatorIcon',{attrs:{\"saving\":_vm.saveStatusClass === 'saving',\"error\":_vm.saveStatusClass === 'error'}})]},proxy:true}])})],1),_vm._v(\" \"),_c('SessionList',{attrs:{\"sessions\":_vm.sessions}},[_c('p',{staticClass:\"last-saved\",attrs:{\"slot\":\"lastSaved\"},slot:\"lastSaved\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Last saved'))+\": \"+_vm._s(_vm.lastSavedString)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.$isPublic && !_vm.currentSession.userId)?_c('GuestNameDialog',{attrs:{\"session\":_vm.currentSession}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n","/*\n * @copyright Copyright (c) 2023 Max \n *\n * @author Max \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 .\n *\n */\n\nimport { encodeArrayBuffer, decodeArrayBuffer } from '../helpers/base64.js'\nimport { Doc, encodeStateAsUpdate, applyUpdate } from 'yjs'\n\n/**\n *\n * @param {Doc} ydoc - encode state of this doc\n */\nexport function getDocumentState(ydoc) {\n\tconst update = encodeStateAsUpdate(ydoc)\n\treturn encodeArrayBuffer(update)\n}\n\n/**\n *\n * @param {Doc} ydoc - apply state to this doc\n * @param {string} documentState - base64 encoded doc state\n */\nexport function applyDocumentState(ydoc, documentState) {\n\tconst update = decodeArrayBuffer(documentState)\n\tapplyUpdate(ydoc, update)\n}\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&id=7437ef6a&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&id=7437ef6a&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=1&id=7437ef6a&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=1&id=7437ef6a&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=7437ef6a&scoped=true&\"\nimport script from \"./Editor.vue?vue&type=script&lang=js&\"\nexport * from \"./Editor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Editor.vue?vue&type=style&index=0&id=7437ef6a&prod&scoped=true&lang=scss&\"\nimport style1 from \"./Editor.vue?vue&type=style&index=1&id=7437ef6a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7437ef6a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-wrapper text-editor__content-wrapper\",class:{\n\t\t'--show-outline': _vm.showOutline\n\t},attrs:{\"data-text-el\":\"editor-content-wrapper\"}},[(_vm.showOutline)?_c('div',{staticClass:\"text-editor__content-wrapper__left\"},[_c('EditorOutline')],1):_vm._e(),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),_c('EditorContent',{staticClass:\"editor__content text-editor__content\",attrs:{\"tabindex\":\"0\",\"role\":\"document\",\"editor\":_vm.$editor}}),_vm._v(\" \"),_c('div',{staticClass:\"text-editor__content-wrapper__right\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=style&index=0&id=b6d104c8&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentContainer.vue?vue&type=style&index=0&id=b6d104c8&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContentContainer.vue?vue&type=template&id=b6d104c8&scoped=true&\"\nimport script from \"./ContentContainer.vue?vue&type=script&lang=js&\"\nexport * from \"./ContentContainer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContentContainer.vue?vue&type=style&index=0&id=b6d104c8&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6d104c8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor--outline\",class:{ 'editor--outline-mobile': _vm.mobile },attrs:{\"data-text-el\":\"editor-outline\"}},[_c('header',{staticClass:\"editor--outline__header\"},[_c('NcButton',{staticClass:\"editor--outline__btn-close\",attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('text', 'Close outline view')},on:{\"click\":_vm.$outlineActions.toggle},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}])}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Outline')))])],1),_vm._v(\" \"),_c('TableOfContents')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableOfContents.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!./TableOfContents.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableOfContents.vue?vue&type=style&index=0&id=b2a2fa9e&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableOfContents.vue?vue&type=style&index=0&id=b2a2fa9e&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TableOfContents.vue?vue&type=template&id=b2a2fa9e&\"\nimport script from \"./TableOfContents.vue?vue&type=script&lang=js&\"\nexport * from \"./TableOfContents.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TableOfContents.vue?vue&type=style&index=0&id=b2a2fa9e&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor--toc\",class:{ '--initial-render': _vm.initialRender },attrs:{\"data-text-el\":\"editor-table-of-contents\"}},[_c('ul',{staticClass:\"editor--toc__list\"},_vm._l((_vm.headings),function(heading){return _c('li',{key:heading.uuid,staticClass:\"editor--toc__item\",class:{\n\t\t\t\t[`editor--toc__item--${heading.level}`]: true,\n\t\t\t\t[`editor--toc__item--previous-${heading.previous}`]: heading.previous > 0,\n\t\t\t},attrs:{\"data-toc-level\":heading.level}},[_c('a',{attrs:{\"href\":`#${heading.id}`},on:{\"click\":function($event){$event.preventDefault();return _vm.goto(heading)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(heading.text)+\"\\n\\t\\t\\t\")])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorOutline.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!./EditorOutline.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorOutline.vue?vue&type=style&index=0&id=4a57d3b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorOutline.vue?vue&type=style&index=0&id=4a57d3b2&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditorOutline.vue?vue&type=template&id=4a57d3b2&scoped=true&\"\nimport script from \"./EditorOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorOutline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditorOutline.vue?vue&type=style&index=0&id=4a57d3b2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a57d3b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor\"},[(_vm.$editorUpload)?_c('MediaHandler',{staticClass:\"text-editor__main\"},[_vm._t(\"default\")],2):_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaHandler.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaHandler.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MediaHandler.vue?vue&type=template&id=93931758&\"\nimport script from \"./MediaHandler.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaHandler.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"editor editor-media-handler\",class:{ draggedOver: _vm.draggedOver },attrs:{\"data-text-el\":\"editor-media-handler\"},on:{\"image-paste\":_vm.onPaste,\"dragover\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.setDraggedOver(true)},\"dragleave\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.setDraggedOver(false)},\"file-drop\":_vm.onEditorDrop}},[_c('input',{ref:\"attachmentFileInput\",staticClass:\"hidden-visually\",attrs:{\"data-text-el\":\"attachment-file-input\",\"type\":\"file\",\"accept\":\"*/*\",\"aria-hidden\":\"true\",\"multiple\":\"\"},on:{\"change\":_vm.onAttachmentUploadFilePicked}}),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./MainContainer.vue?vue&type=template&id=8ffa875e&scoped=true&\"\nimport script from \"./MainContainer.vue?vue&type=script&lang=js&\"\nexport * from \"./MainContainer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MainContainer.vue?vue&type=style&index=0&id=8ffa875e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8ffa875e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Wrapper',{attrs:{\"content-loaded\":true}},[_c('MainContainer',[(!_vm.readOnly)?_c('MenuBar',{attrs:{\"autohide\":false}}):_c('ReadonlyBar'),_vm._v(\" \"),_c('ContentContainer')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownContentEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownContentEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MarkdownContentEditor.vue?vue&type=template&id=044a857d&scoped=true&\"\nimport script from \"./MarkdownContentEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./MarkdownContentEditor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"044a857d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-editor__wrapper\",class:{\n\t\t'has-conflicts': _vm.hasSyncCollission,\n\t\t'icon-loading': !_vm.contentLoaded && !_vm.hasConnectionIssue,\n\t\t'is-rich-workspace': _vm.$isRichWorkspace,\n\t\t'is-rich-editor': _vm.$isRichEditor,\n\t\t'show-color-annotations': _vm.showAuthorAnnotations\n\t}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=style&index=0&id=dad37ee2&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=style&index=0&id=dad37ee2&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Wrapper.vue?vue&type=template&id=dad37ee2&scoped=true&\"\nimport script from \"./Wrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./Wrapper.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Wrapper.vue?vue&type=style&index=0&id=dad37ee2&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dad37ee2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',_vm._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"entry-list-action entry-action\",attrs:{\"role\":\"menu\",\"container\":_vm.menuIDSelector,\"aria-label\":_vm.actionEntry.label,\"force-menu\":true,\"title\":_vm.actionEntry.label,\"data-text-action-entry\":_vm.actionEntry.key,\"data-text-action-active\":_vm.activeKey},on:{\"update:open\":_vm.onOpenChange},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{key:_vm.iconKey,tag:\"component\"})]},proxy:true}])},'NcActions',_vm.state,false),[_vm._v(\" \"),_vm._l((_vm.children),function(child){return _c('ActionSingle',_vm._g({key:`child-${child.key}`,attrs:{\"is-item\":\"\",\"action-entry\":child},on:{\"trigged\":_vm.onTrigger}},_vm.$listeners))}),_vm._v(\" \"),_vm._t(\"lastAction\",null,null,{ visible: _vm.visible })],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ActionList.vue?vue&type=template&id=5a9c3619&\"\nimport script from \"./ActionList.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionSingle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionSingle.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./ActionSingle.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionSingle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-menubar\",class:{\n\t\t'text-menubar--ready': _vm.isReady,\n\t\t'text-menubar--show': _vm.isVisible,\n\t\t'text-menubar--autohide': _vm.autohide,\n\t\t'text-menubar--is-workspace': _vm.$isRichWorkspace\n\t},attrs:{\"id\":_vm.randomID,\"data-text-el\":\"menubar\",\"role\":\"menubar\",\"aria-label\":_vm.t('text', 'Formatting menu bar')}},[(_vm.displayHelp)?_c('HelpModal',{on:{\"close\":_vm.hideHelp}}):_vm._e(),_vm._v(\" \"),(_vm.displayTranslate !== false)?_c('Translate',{attrs:{\"content\":_vm.displayTranslate},on:{\"insert-content\":_vm.translateInsert,\"replace-content\":_vm.translateReplace,\"close\":_vm.hideTranslate}}):_vm._e(),_vm._v(\" \"),(_vm.$isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"text-menubar__entries\",attrs:{\"role\":\"group\",\"aria-label\":_vm.t('text', 'Editor actions')}},[_vm._l((_vm.visibleEntries),function(actionEntry){return _c('ActionEntry',_vm._b({key:`text-action--${actionEntry.key}`},'ActionEntry',{ actionEntry },false))}),_vm._v(\" \"),_c('ActionList',{key:\"text-action--remain\",attrs:{\"action-entry\":_vm.hiddenEntries},scopedSlots:_vm._u([{key:\"lastAction\",fn:function({ visible }){return [_c('NcActionButton',{on:{\"click\":_vm.showTranslate},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('TranslateVariant')]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Translate'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionFormattingHelp',{on:{\"click\":_vm.showHelp}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('CharacterCount',_vm._b({},'CharacterCount',{ visible },false))]}}],null,false,1235075227)})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-menubar__slot\"},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.vue?vue&type=script&lang=js&\"","/**\n * Check if current platform is a mobile device\n *\n * @return {boolean} whether the platform is a mobile device\n */\nexport function isMobilePlatform() {\n\t// Use client hints if already available\n\tif (navigator?.userAgentData?.mobile !== undefined) return navigator.userAgentData.mobile\n\n\t// use regex to match userAgent (required for Safari and Firefox in 2022)\n\tconst mobileDevices = [\n\t\t/Android/i,\n\t\t/webOS/i,\n\t\t/iPhone/i,\n\t\t/iPad/i,\n\t\t/iPod/i,\n\t\t/playbook/i,\n\t\t/silk/i,\n\t\t/BlackBerry/i,\n\t\t/Windows Phone/i,\n\t]\n\n\treturn mobileDevices.some(regex => navigator.userAgent.match(regex))\n}\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.vue?vue&type=style&index=0&id=a7b1a700&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpModal.vue?vue&type=style&index=0&id=a7b1a700&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HelpModal.vue?vue&type=template&id=a7b1a700&scoped=true&\"\nimport script from \"./HelpModal.vue?vue&type=script&lang=js&\"\nexport * from \"./HelpModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HelpModal.vue?vue&type=style&index=0&id=a7b1a700&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a7b1a700\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{attrs:{\"size\":\"normal\",\"data-text-el\":\"formatting-help\",\"title\":_vm.t('text', 'Formatting help')},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Formatting help')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('text', 'Speed up your writing with simple shortcuts.')))]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Just type the Markdown syntax or use keyboard shortcuts from below.'))+\"\\n\\t\")]):_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Just type the Markdown syntax from below.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('table',[_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.t('text', 'Style')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('text', 'Syntax')))]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('th',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Keyboard shortcuts'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('tbody',[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'New paragraph')))]),_vm._v(\" \"),_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Hard line break')))]),_vm._v(\" \"),_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'followed by'))+\"\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Backspace')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Enter')))])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Bold')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"**\"+_vm._s(_vm.t('text', 'Bold text'))+\"**\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"B\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Italic')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"*\"+_vm._s(_vm.t('text', 'Italicized text'))+\"*\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"I\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Strikethrough')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"~~\"+_vm._s(_vm.t('text', 'Mistaken text'))+\"~~\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"X\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Underline')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"__\"+_vm._s(_vm.t('text', 'Underlined text'))+\"__\")])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"U\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"ellipsis_top\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Heading 1'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"ellipsis_top\"},[_c('code',[_vm._v(\"# \"+_vm._s(_vm.t('text', 'Heading level 1')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"ellipsis_top\"},[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"1\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"noborder ellipsis\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"noborder ellipsis\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"ellipsis noborder\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t…\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Heading 6'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_c('code',[_vm._v(\"###### \"+_vm._s(_vm.t('text', 'Heading level 6')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',{staticClass:\"noborder ellipsis_bottom\"},[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"6\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Unordered list')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"* \"+_vm._s(_vm.t('text', 'An item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"8\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Ordered list')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"1. \"+_vm._s(_vm.t('text', 'First item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Shift')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\"7\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Checklist')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"* [] \"+_vm._s(_vm.t('text', 'To-Do item')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Blockquote')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"> \"+_vm._s(_vm.t('text', 'Quoted text')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td',[_c('kbd',[_vm._v(_vm._s(_vm.t('text', 'Ctrl')))]),_vm._v(\"\\n\\t\\t\\t\\t\\t+\\n\\t\\t\\t\\t\\t\"),_c('kbd',[_vm._v(\">\")])]):_vm._e()]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('text', 'Code block')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(\"``` \"+_vm._s(_vm.t('text', 'Some code')))])]),_vm._v(\" \"),(!_vm.isMobileCached)?_c('td'):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionFormattingHelp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionFormattingHelp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ActionFormattingHelp.vue?vue&type=template&id=d7e3074a&\"\nimport script from \"./ActionFormattingHelp.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionFormattingHelp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActionButton',_vm._g({attrs:{\"close-after-click\":\"\",\"data-text-action-entry\":\"formatting-help\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Help')]},proxy:true}])},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('text', 'Formatting help'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActionText',{attrs:{\"data-text-action-entry\":\"character-count\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlphabeticalVariant')]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.countString)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CharacterCount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CharacterCount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CharacterCount.vue?vue&type=template&id=1009fc0d&\"\nimport script from \"./CharacterCount.vue?vue&type=script&lang=js&\"\nexport * from \"./CharacterCount.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"translate-dialog\"},[_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Translate')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.input),expression:\"input\"}],domProps:{\"value\":(_vm.input)},on:{\"input\":function($event){if($event.target.composing)return;_vm.input=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"fromLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'Source language')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"fromLanguage\",\"options\":_vm.fromLanguages,\"append-to-body\":false},model:{value:(_vm.fromLanguage),callback:function ($$v) {_vm.fromLanguage=$$v},expression:\"fromLanguage\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"toLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'Target language')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"toLanguage\",\"options\":_vm.toLanguages,\"disabled\":!_vm.fromLanguage,\"append-to-body\":false},model:{value:(_vm.toLanguage),callback:function ($$v) {_vm.toLanguage=$$v},expression:\"toLanguage\"}})],1),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.result),expression:\"result\"}],class:{'icon-loading': _vm.loading },attrs:{\"readonly\":\"\"},domProps:{\"value\":(_vm.result)},on:{\"input\":function($event){if($event.target.composing)return;_vm.result=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"translate-actions\"},[(_vm.loading)?_c('NcLoadingIcon'):_vm._e(),_vm._v(\" \"),(!_vm.result)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.translate}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Translate'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.result && _vm.content)?_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":_vm.contentReplace}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Replace'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.result)?_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.contentInsert}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('text', 'Insert'))+\"\\n\\t\\t\\t\")]):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n