From b9eab5ba403dea4f2e5ef31c85d9f700b346acdd Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 2 Aug 2023 16:20:48 +0200 Subject: [PATCH 1/2] fix(editor): Don't load both Tiptap collaboration history extensions Instead of loading Tiptap `extension-history` in RichText.js, let's load it only in `MarkdownContentEditor.vue`. * Editor.vue loads `extension-collaboration` * MarkdownContentEditor.vue loads `extension-history` Fixes: #4601 Signed-off-by: Jonas --- src/components/Editor/MarkdownContentEditor.vue | 5 +++++ src/extensions/RichText.js | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/Editor/MarkdownContentEditor.vue b/src/components/Editor/MarkdownContentEditor.vue index ce43aa8631d..a8844a4b4f2 100644 --- a/src/components/Editor/MarkdownContentEditor.vue +++ b/src/components/Editor/MarkdownContentEditor.vue @@ -35,6 +35,8 @@ import MainContainer from './MainContainer.vue' import MenuBar from '../Menu/MenuBar.vue' import { useOutlineActions, useOutlineStateMixin } from './Wrapper.provider.js' import { Editor } from '@tiptap/core' +/* eslint-disable import/no-named-as-default */ +import History from '@tiptap/extension-history' import { EDITOR, IS_RICH_EDITOR, useLinkClickHook } from '../Editor.provider.js' import { createMarkdownSerializer } from '../../extensions/Markdown.js' import markdownit from '../../markdownit/index.js' @@ -112,6 +114,9 @@ export default { }, } : undefined, + extensions: [ + History, + ], }), ] }, diff --git a/src/extensions/RichText.js b/src/extensions/RichText.js index 499f32abd0d..277af99f0db 100644 --- a/src/extensions/RichText.js +++ b/src/extensions/RichText.js @@ -24,7 +24,6 @@ import { Extension } from '@tiptap/core' import { lowlight } from 'lowlight' /* eslint-disable import/no-named-as-default */ -import History from '@tiptap/extension-history' import Blockquote from '@tiptap/extension-blockquote' import BulletList from './../nodes/BulletList.js' import Callout from './../nodes/Callouts.js' @@ -105,7 +104,6 @@ export default Extension.create({ KeepSyntax, FrontMatter, Mention, - History, Emoji.configure({ suggestion: EmojiSuggestion(), }), From f263b8d21eb42d0a1f0e9cd8769b70ee597bbdbf Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Wed, 2 Aug 2023 15:02:03 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- js/editor.js | 4 ++-- js/editor.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 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/js/editor.js b/js/editor.js index fd04e1f6113..1b9ccef2c84 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:(t,e,n)=>{"use strict";n.d(e,{$r:()=>k,BG:()=>b,C6:()=>A,Cy:()=>m,FQ:()=>a,HB:()=>o,IT:()=>d,OV:()=>p,QT:()=>v,Uw:()=>r,Zf:()=>x,a_:()=>y,cY:()=>l,eP:()=>w,fB:()=>C,q$:()=>s,rz:()=>f,sw:()=>u,vo:()=>c,wU:()=>h,ww:()=>_,zZ:()=>g});var i=n(52029);const r=Symbol("tiptap:editor"),o=Symbol("editor:file"),a=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"),h=Symbol("sync:service"),A=Symbol("editor:upload"),p=Symbol("hook:link-click"),u=Symbol("hook:mention-search"),g=Symbol("hook:mention-insert"),m={inject:{$editor:{from:r,default:null}}},b={inject:{$syncService:{from:h,default:null}}},C={inject:{$isPublic:{from:l,default:!1}}},f={inject:{$isRichWorkspace:{from:d,default:!1}}},v={inject:{$isRichEditor:{from:c,default:!1}}},_={inject:{$isMobile:{from:s,default:!1}}},y={inject:{$file:{from:o,default:()=>({fileId:0,relativePath:null,document:null})}}},x={inject:{$attachmentResolver:{from:a,default:{resolve:t=>(i.k.warn("No attachment resolver provided. Some attachment sources cannot be resolved."),[t])}}}},w={inject:{$editorUpload:{from:A,default:!0}}},k={inject:{$linkHookClick:{from:p,default:null}}}},33528:(t,e,n)=>{"use strict";n.d(e,{TI:()=>s,eS:()=>o,gn:()=>r,kZ:()=>a,qj:()=>l,uT:()=>i});const i=Symbol("state:uploading-state"),r=Symbol("editor:action:attachment-prompt"),o=Symbol("editor:action:upload-attachment"),a={inject:{$uploadingState:{from:i,default:{isUploadingAttachments:!1}}}},s={inject:{$callAttachmentPrompt:{from:r,default:()=>{}}}},l={inject:{$callChooseLocalAttachment:{from:o,default:()=>{}}}}},28612:(t,e,n)=>{"use strict";n.d(e,{Ad:()=>a,Dr:()=>i,aM:()=>r,vV:()=>o});const i=Symbol("wrapper:outline-state"),r=Symbol("wrapper:outline-actions"),o={inject:{$outlineState:{from:i,default:{visible:!1,enable:!1}}}},a={inject:{$outlineActions:{from:r,default:{toggle:()=>{}}}}}},85724:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var i=n(68418),r=n(70285);const o={name:"ActionEntry",functional:!0,render(t,e){const{actionEntry:n}=e.props,{data:o,props:a,listeners:s}=e,{key:l}=o,c={data:o,key:l,props:a,on:s};return n.component?t(n.component,c):n.children?t(r.Z,c):t(i.Z,c)}}},76115:(t,e,n)=>{"use strict";n.d(e,{b:()=>w});var i=n(15961),r=n(20296),o=n.n(r),a=n(31728),s=n(28612),l=n(72076),c=n(13815),d=n(93379),h=n.n(d),A=n(7795),p=n.n(A),u=n(90569),g=n.n(u),m=n(3565),b=n.n(m),C=n(19216),f=n.n(C),v=n(44589),_=n.n(v),y=n(97646),x={};x.styleTagTransform=_(),x.setAttributes=b(),x.insert=g().bind(null,"head"),x.domAPI=p(),x.insertStyleElement=f();h()(y.Z,x);y.Z&&y.Z.locals&&y.Z.locals;const w={directives:{Tooltip:i.u},mixins:[a.Cy,a.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:t}=this.actionEntry;return"function"==typeof t?t(this):t},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=o()(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:(t,e,n)=>{"use strict";n.d(e,{V:()=>i,q:()=>r});const i=Symbol("menu::id"),r={inject:{$menuID:{from:i,default:null}},computed:{menuIDSelector(){return"#".concat(this.$menuID)}}}},82496:(e,n,i)=>{"use strict";i.d(n,{E:()=>O,Z:()=>R});var r=i(32318),o=i(76115),a=i(15961),s=i(60948);const l={name:"EmojiPickerAction",components:{NcEmojiPicker:a.Xo,NcButton:a.P2},extends:o.b,mixins:[s.q],methods:{addEmoji(t){let{id:e,native:n}=t;this.actionEntry.action(this.$editor.chain(),{id:e,native:n}).focus().run()}}};var c=i(51900);const d=(0,c.Z)(l,(function(){var t=this,e=t._self._c;return e("NcEmojiPicker",{staticClass:"entry-action entry-action__emoji",attrs:{"data-text-action-entry":t.actionEntry.key,container:t.menuIDSelector},on:{"select-data":t.addEmoji}},[e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.actionEntry.label,expression:"actionEntry.label"}],staticClass:"entry-action__button",attrs:{role:"menu",title:t.actionEntry.label,"aria-label":t.actionEntry.label,"aria-haspopup":!0},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.icon,{tag:"component"})]},proxy:!0}])})],1)}),[],!1,null,null,null).exports;var h=i(31728),A=i(33528);const p={name:"ActionAttachmentUpload",components:{NcActions:a.O3,NcActionButton:a.Js,Loading:r.gb,Folder:r.gt,Upload:r.gq},extends:o.b,mixins:[h.fB,h.eP,A.TI,A.kZ,A.qj,s.q],computed:{icon(){return this.isUploadingAttachments?r.gb:this.actionEntry.icon},isUploadingAttachments(){return this.$uploadingState.isUploadingAttachments}}};const u=(0,c.Z)(p,(function(){var t=this,e=t._self._c;return e("NcActions",{staticClass:"entry-action entry-action__image-upload",attrs:{"data-text-action-entry":t.actionEntry.key,name:t.actionEntry.label,"aria-label":t.actionEntry.label,container:t.menuIDSelector,role:"menu","aria-haspopup":""},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.icon,{tag:"component",attrs:{name:t.actionEntry.label,"aria-label":t.actionEntry.label,"aria-haspopup":""}})]},proxy:!0}])},[t._v(" "),t.$editorUpload?e("NcActionButton",{attrs:{"close-after-click":"",disabled:t.isUploadingAttachments,"data-text-action-entry":"".concat(t.actionEntry.key,"-upload")},on:{click:t.$callChooseLocalAttachment},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Upload")]},proxy:!0}],null,!1,933298848)},[t._v("\n\t\t"+t._s(t.t("text","Upload from computer"))+"\n\t")]):t._e(),t._v(" "),t.$isPublic?t._e():e("NcActionButton",{attrs:{"close-after-click":"",disabled:t.isUploadingAttachments,"data-text-action-entry":"".concat(t.actionEntry.key,"-insert")},on:{click:t.$callAttachmentPrompt},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Folder")]},proxy:!0}],null,!1,2750733237)},[t._v("\n\t\t"+t._s(t.t("text","Insert from Files"))+"\n\t")])],1)}),[],!1,null,null,null).exports;var g=i(86680),m=i(3255),b=i(73845),C=i(43573);const f={name:"ActionInsertLink",components:{NcActions:a.O3,NcActionButton:a.Js,NcActionInput:a.Iw,Document:r.BB,Loading:r.gb,LinkOff:r.pR,Web:r.ph,Shape:r.bn},extends:o.b,mixins:[h.a_,s.q],data:()=>({href:null,isInputMode:!1,startPath:null}),computed:{activeClass(){return this.state.active?"is-active":""},relativePath(){var t,e;return null!==(t=null===(e=this.$file)||void 0===e?void 0:e.relativePath)&&void 0!==t?t:"/"}},methods:{linkFile(){null===this.startPath&&(this.startPath=this.relativePath.split("/").slice(0,-1).join("/"));new m.GB(t("text","Select file or folder to link to"),!1,[],!0,m.K9.Choose,!0,this.startPath).pick().then((t=>{OC.Files.getClient().getFileInfo(t).then(((t,e)=>{const n=(0,C.Lz)(this.relativePath,"".concat(e.path,"/").concat(e.name)).split("/").map(encodeURIComponent).join("/")+("dir"===e.type?"/":""),i="".concat(n,"?fileId=").concat(e.id);this.setLink(i,e.name),this.startPath=e.path+("dir"===e.type?"/".concat(e.name,"/"):"")}))}))},linkWebsite(t){if("submit"===(null==t?void 0:t.type)){const e=[...t.target.elements].filter((t=>"text"===(null==t?void 0:t.type)))[0].value;return this.$refs.menu.closeMenu(),this.isInputMode=!1,this.href=null,this.setLink(e,e)}if((0,b.zh)(this.$editor.state,"link")){const t=(0,b.Jo)(this.$editor.state,"link");this.href=t.href}this.isInputMode=!0},setLink(t,e){var n;t&&![/^[a-zA-Z]+:/,/^\//,/\?fileId=/,/^\.\.?\//,/^[^.]*[/$]/,/^#/].find((e=>t.match(e)))&&(t="https://"+t);const i=t.replaceAll(" ","%20"),r=this.$editor.chain();null!==(n=this.$editor.view.state)&&void 0!==n&&n.selection.empty?r.insertContent({type:"paragraph",content:[{type:"text",marks:[{type:"link",attrs:{href:i}}],text:e}]}):r.setLink({href:i}),r.focus().run()},removeLink(){this.$editor.chain().unsetLink().focus().run()},linkPicker(){(0,g.getLinkWithPicker)(null,!0).then((t=>{this.$editor.chain().focus().insertContent(t+" ").run()})).catch((t=>{console.error("Smart picker promise rejected",t)}))}}};var v=i(93379),_=i.n(v),y=i(7795),x=i.n(y),w=i(90569),k=i.n(w),E=i(3565),j=i.n(E),M=i(19216),S=i.n(M),N=i(44589),I=i.n(N),B=i(23069),T={};T.styleTagTransform=I(),T.setAttributes=j(),T.insert=k().bind(null,"head"),T.domAPI=x(),T.insertStyleElement=S();_()(B.Z,T);B.Z&&B.Z.locals&&B.Z.locals;const D=(0,c.Z)(f,(function(){var t=this,e=t._self._c;return e("NcActions",{ref:"menu",staticClass:"entry-action entry-action__insert-link",class:t.activeClass,attrs:{"aria-haspopup":"","aria-label":t.actionEntry.label,container:t.menuIDSelector,"data-text-action-entry":t.actionEntry.key,name:t.actionEntry.label},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.icon,{tag:"component",attrs:{name:t.actionEntry.label,"aria-label":t.actionEntry.label,"aria-haspopup":""}})]},proxy:!0}])},[t._v(" "),t.state.active?e("NcActionButton",{attrs:{"close-after-click":"","data-text-action-entry":"".concat(t.actionEntry.key,"-remove")},on:{click:t.removeLink},scopedSlots:t._u([{key:"icon",fn:function(){return[e("LinkOff")]},proxy:!0}],null,!1,3589828876)},[t._v("\n\t\t"+t._s(t.t("text","Remove link"))+"\n\t")]):t._e(),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":"","data-text-action-entry":"".concat(t.actionEntry.key,"-file")},on:{click:t.linkFile},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Document")]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("text","Link to file or folder"))+"\n\t")]),t._v(" "),t.isInputMode?e("NcActionInput",{attrs:{type:"text",value:t.href,"data-text-action-entry":"".concat(t.actionEntry.key,"-input")},on:{submit:t.linkWebsite},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Web")]},proxy:!0}],null,!1,1844845715)},[t._v("\n\t\t"+t._s(t.t("text","Link to website"))+"\n\t")]):e("NcActionButton",{attrs:{"data-text-action-entry":"".concat(t.actionEntry.key,"-website")},on:{click:t.linkWebsite},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Web")]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.state.active?t.t("text","Update link"):t.t("text","Link to website"))+"\n\t")]),t._v(" "),e("NcActionButton",{attrs:{"data-text-action-entry":"".concat(t.actionEntry.key,"-picker")},on:{click:t.linkPicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Shape")]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("text","Open the Smart Picker"))+"\n\t")])],1)}),[],!1,null,"b01cbf5e",null).exports;var P=i(59400);const O=[{key:"outline",forceLabel:!0,icon:r.Cj,click:t=>{let{$outlineActions:e}=t;return e.toggle()},label:e=>{let{$outlineState:n}=e;return n.visible?t("text","Hide outline"):t("text","Show outline")}}],R=[{key:"undo",label:t("text","Undo"),keyChar:"z",keyModifiers:[P.v.Mod],icon:r.WP,action:t=>t.undo(),priority:6},{key:"redo",label:t("text","Redo"),keyChar:"y",keyModifiers:[P.v.Mod],icon:r.Jw,action:t=>t.redo(),priority:12},{key:"bold",label:t("text","Bold"),keyChar:"b",keyModifiers:[P.v.Mod],icon:r.VK,isActive:"strong",action:t=>t.toggleBold(),priority:7},{key:"italic",label:t("text","Italic"),keyChar:"i",keyModifiers:[P.v.Mod],icon:r.mV,isActive:"em",action:t=>t.toggleItalic(),priority:8},{key:"underline",label:t("text","Underline"),keyChar:"u",keyModifiers:[P.v.Mod],icon:r.Bz,isActive:"underline",action:t=>t.toggleUnderline(),priority:15},{key:"strikethrough",label:t("text","Strikethrough"),keyChar:"x",keyModifiers:[P.v.Mod,P.v.Shift],icon:r.Lo,isActive:"strike",action:t=>t.toggleStrike(),priority:16},{key:"headings",label:t("text","Headings"),keyChar:"1…6",keyModifiers:[P.v.Mod,P.v.Shift],icon:r.Lz,isActive:"heading",children:[{key:"headings-h1",label:t("text","Heading 1"),icon:r.Lz,isActive:["heading",{level:1}],action:t=>t.toggleHeading({level:1})},{key:"headings-h2",label:t("text","Heading 2"),icon:r.DB,isActive:["heading",{level:2}],action:t=>t.toggleHeading({level:2})},{key:"headings-h3",label:t("text","Heading 3"),icon:r.XD,isActive:["heading",{level:3}],action:t=>t.toggleHeading({level:3})},{key:"headings-h4",label:t("text","Heading 4"),isActive:["heading",{level:4}],icon:r.fy,action:t=>t.toggleHeading({level:4})},{key:"headings-h5",label:t("text","Heading 5"),isActive:["heading",{level:5}],icon:r.Ze,action:t=>t.toggleHeading({level:5})},{key:"headings-h6",label:t("text","Heading 6"),isActive:["heading",{level:6}],icon:r.J4,action:t=>t.toggleHeading({level:6})},{key:"outline",icon:r.Cj,click:t=>{let{$outlineActions:e}=t;return e.toggle()},visible:t=>{let{$outlineState:e}=t;return e.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:[P.v.Mod,P.v.Shift],isActive:"bulletList",icon:r.Cj,action:t=>t.toggleBulletList(),priority:9},{key:"ordered-list",label:t("text","Ordered list"),keyChar:"7",keyModifiers:[P.v.Mod,P.v.Shift],isActive:"orderedList",icon:r.mH,action:t=>t.toggleOrderedList(),priority:10},{key:"task-list",label:t("text","To-Do list"),keyChar:"9",keyModifiers:[P.v.Mod,P.v.Shift],isActive:"taskList",icon:r.Fv,action:t=>t.toggleTaskList(),priority:11},{key:"insert-link",label:t("text","Insert link"),isActive:"link",icon:r.xP,component:D,priority:2},{key:"blockquote",label:t("text","Blockquote"),keyChar:"b",keyModifiers:[P.v.Mod,P.v.Shift],isActive:"blockquote",icon:r.UX,action:t=>t.toggleBlockquote(),priority:13},{key:"callouts",label:t("text","Callouts"),visible:!1,icon:r.kI,isActive:"callout",children:[{key:"callout-info",label:t("text","Info"),isActive:["callout",{type:"info"}],icon:r.kI,action:t=>t.toggleCallout({type:"info"})},{key:"callout-success",label:t("text","Success"),isActive:["callout",{type:"success"}],icon:r.Ho,action:t=>t.toggleCallout({type:"success"})},{key:"callout-warn",label:t("text","Warning"),isActive:["callout",{type:"warn"}],icon:r.uU,action:t=>t.toggleCallout({type:"warn"})},{key:"callout-error",label:t("text","Danger"),isActive:["callout",{type:"error"}],icon:r.b0,action:t=>t.toggleCallout({type:"error"})}],priority:3},{key:"code-block",label:t("text","Code block"),keyChar:"c",keyModifiers:[P.v.Mod,P.v.Alt],isActive:"codeBlock",icon:r.Nk,action:t=>t.toggleCodeBlock(),priority:14},{key:"table",label:t("text","Table"),isActive:"table",icon:r.iA,action:t=>t.insertTable(),priority:17},{key:"emoji-picker",label:t("text","Insert emoji"),icon:r.tk,component:d,action:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.emoji(e)},priority:5},{key:"insert-attachment",label:t("text","Insert attachment"),icon:r.rU,component:u,priority:4}]},59400:(e,n,i)=>{"use strict";i.d(n,{K:()=>a,v:()=>o});const r=navigator.userAgent.includes("Mac"),o={Mod:r?"Meta":"Control",Alt:"Alt",Control:"Control",Shift:"Shift"},a={[o.Mod]:r?t("text","Command"):t("text","Control"),[o.Control]:t("text","Ctrl"),[o.Alt]:t("text",r?"Option":"Alt"),[o.Shift]:t("text","Shift")}},72076:(t,e,n)=>{"use strict";n.d(e,{FZ:()=>o,RR:()=>a,vK:()=>l,wr:()=>c});var i=n(59400);const r=(t,e)=>({"is-active":e,["action-menu-".concat(t.key)]:!0}),o=t=>{let{keyChar:e,keyModifiers:n=[]}=t;return n.map((t=>i.v[t])).concat(e).join("+")},a=(t,e)=>{let{keyChar:n,keyModifiers:r}=e;return!t&&n?"(".concat(function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).map((t=>i.K[t])).concat(t.toUpperCase()).join("+")}(n,r),")"):""},s=(t,e)=>t.action&&!t.action(e.can()),l=(t,e)=>{let{isActive:n}=t;if(!n)return!1;const i=Array.isArray(n)?n:[n];return e.isActive(...i)},c=(t,e)=>{const n=l(t,e);return{disabled:s(t,e),class:r(t,n),active:n}}},28374:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var i=n(13861),r=n(79835);const o=t=>{let{listComponent:e,items:n=(()=>{}),command:o=(t=>{let{editor:e,range:n,props:i}=t})}=t;return{items:n,command:o,render:()=>{let t,n;return{onStart:o=>{t=new r.aA(e,{parent:void 0,propsData:o}),o.clientRect&&(n=(0,i.ZP)("body",{getReferenceClientRect:o.clientRect,appendTo:()=>document.body,content:t.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}),t.ref.$on("select",(()=>{n.length>0&&n[0].hide()})))},onUpdate(e){t.updateProps(e),e.clientRect&&n&&n[0].setProps({getReferenceClientRect:e.clientRect})},onKeyDown(e){var i,r;if(n)return"Escape"===e.event.key?(n[0].hide(),n[0].destroy(),t.destroy(),n=null,!0):null===(i=t.ref)||void 0===i||null===(r=i.onKeyDown)||void 0===r?void 0:r.call(i,e)},onExit(){n&&(n[0].destroy(),t.destroy())}}}}}},32318:(t,e,n)=>{"use strict";n.d(e,{Ah:()=>Zt,BB:()=>ht,BF:()=>At,Bz:()=>Mt,Cj:()=>xt,DB:()=>bt,Ee:()=>Nt,F5:()=>zt,Fq:()=>Ht,Fv:()=>wt,HG:()=>dt,Ho:()=>Pt,IY:()=>$t,J4:()=>_t,Jw:()=>Ot,L9:()=>ot,Lo:()=>jt,Lz:()=>mt,Nk:()=>lt,Pn:()=>it,QK:()=>rt,UX:()=>Et,VK:()=>gt,WP:()=>Gt,WW:()=>St,XD:()=>Ct,Ze:()=>vt,_2:()=>Ut,b0:()=>ct,bn:()=>Rt,fy:()=>ft,gb:()=>nt,gq:()=>Wt,gr:()=>at,gt:()=>ut,iA:()=>Lt,kI:()=>Bt,mH:()=>kt,mV:()=>yt,pR:()=>Dt,ph:()=>Kt,pn:()=>Ft,rU:()=>It,tk:()=>pt,uU:()=>qt,x8:()=>st,xP:()=>Tt});var i=n(96963),r=n(82675),o=n(80419),a=n(75441),s=n(45795),l=n(75816),c=n(57612),d=n(13881),h=n(89115),A=n(37319),p=n(34829),u=n(88723),g=n(10864),m=n(39027),b=n(4738),C=n(57637),f=n(13237),v=n(52986),_=n(17238),y=n(11465),x=n(94669),w=n(34415),k=n(9829),E=n(65875),j=n(35357),M=n(92801),S=n(42413),N=n(88505),I=n(39227),B=n(5039),T=n(93603),D=n(37838),P=n(19695),O=n(72468),R=n(64836),L=n(65745),Z=n(79542),$=n(91265),z=n(96104),F=n(21666),U=n(61562),H=n(52880),G=n(49759),W=n(39850),q=n(9571),K=n(69699),V=n(33581),Y=n(4650),Q=n(75762),X=n(8421),J=n(97859),tt=n(54503);const et=t=>({functional:!0,render(e,n){let{data:i,props:r}=n;return e(t,{data:i,key:i.key,staticClass:i.staticClass,props:{size:20,...r}})}}),nt={functional:!0,render(t,e){let{data:n,props:i}=e;return t(L.Z,{data:n,staticClass:"animation-rotate",props:{size:20,...i}})}},it=et(i.Z),rt=et(g.Z),ot=et(m.Z),at=et(b.Z),st=et(r.default),lt=(et(o.default),et(s.Z)),ct=(et(a.Z),et(l.default)),dt=et(c.Z),ht=et(d.Z),At=et(h.default),pt=et(A.Z),ut=et(p.default),gt=et(u.Z),mt=et(C.Z),bt=et(f.Z),Ct=et(v.Z),ft=et(_.Z),vt=et(y.Z),_t=et(x.Z),yt=et(w.Z),xt=et(k.Z),wt=et(E.Z),kt=et(j.Z),Et=et(M.Z),jt=et(S.Z),Mt=et(N.Z),St=et(I.default),Nt=et(B.Z),It=et(T.Z),Bt=et(D.default),Tt=et(P.Z),Dt=et(O.Z),Pt=(et(R.Z),et(Z.Z),et($.default)),Ot=et(z.Z),Rt=et(F.Z),Lt=et(U.Z),Zt=et(H.Z),$t=et(G.Z),zt=et(W.Z),Ft=et(q.Z),Ut=et(K.Z),Ht=(et(V.Z),et(tt.Z)),Gt=et(Y.Z),Wt=et(Q.Z),qt=et(X.default),Kt=et(J.default)},73073:(t,e,n)=>{"use strict";n.d(e,{Z:()=>A,g:()=>c});var i=n(73845),r=n(2376),o=n(55963),a=n(40187),s=n(87823);const l=i.hj.create({name:"markdown",extendMarkSchema(t){const e={name:t.name,options:t.options,storage:t.storage};return{toMarkdown:(0,i.Nl)(t,"toMarkdown",e)}},extendNodeSchema(t){const e={name:t.name,options:t.options,storage:t.storage};return{toMarkdown:(0,i.Nl)(t,"toMarkdown",e)}},addProseMirrorPlugins(){let t=!1;return[new r.Sy({key:new r.H$("pasteEventHandler"),props:{handleDOMEvents:{mouseup:(e,n)=>(t=n.shiftKey,!1)},handleKeyDown:(e,n)=>(t=n.shiftKey,!1),clipboardTextParser(e,n,i,r){const o=s.aw.fromSchema(r.state.schema),l=document.cloneNode(!1).createElement("div");return l.innerHTML=t?"

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

","

")+"

":a.Z.render(e),o.parseSlice(l,{preserveWhitespace:!0,context:n})}}})]}}),c=t=>{let{nodes:e,marks:n}=t;const i=h(o.Dm.nodes),r=h(o.Dm.marks);return{serializer:new o.nZ({...i,...d(e)},{...r,...d(n)}),serialize(t,e){return this.serializer.serialize(t,{...e,tightLists:!0})}}},d=t=>Object.entries(t).map((t=>{let[e,n]=t;return[e,n.spec.toMarkdown]})).filter((t=>{let[,e]=t;return e})).reduce(((t,e)=>{let[n,i]=e;return{...t,[n]:i}}),{}),h=t=>{const e=t=>t.replace(/_(\w)/g,((t,e)=>e.toUpperCase()));return Object.fromEntries(Object.entries(t).map((t=>{let[n,i]=t;return[e(n),i]})))},A=l},78979:(e,n,i)=>{"use strict";function r(t){setTimeout((()=>{const e=document.getElementById("collaboration-cursor__label__".concat(t));e&&(e.classList.add("collaboration-cursor__label__active"),setTimeout((()=>{null==e||e.classList.remove("collaboration-cursor__label__active")}),50))}),50)}function o(){return Math.floor(Date.now()/1e3)}i.d(n,{lN:()=>a,N8:()=>A,pf:()=>ae,f3:()=>v,Ho:()=>hn});const a=i(14539).l.extend({addOptions:()=>({provider:null,user:{name:null,clientId:null,color:null,lastUpdate:o()},render:t=>{const e=document.createElement("span");e.classList.add("collaboration-cursor__caret"),e.setAttribute("style","border-color: ".concat(t.color));const n=document.createElement("div");return n.classList.add("collaboration-cursor__label"),n.id="collaboration-cursor__label__".concat(t.clientId),n.setAttribute("style","background-color: ".concat(t.color)),n.insertBefore(document.createTextNode(t.name),null),e.insertBefore(n,null),e}}),onCreate(){this.options.provider.awareness.on("change",((t,e)=>{let{added:n,removed:i,updated:o}=t;if("local"!==e)for(const t of[...n,...o])t!==this.options.user.clientId&&r(t)}))},onTransaction(t){var e;let{transaction:n}=t;const{updated:i,meta:r}=n;!i||null!==(e=r.addToHistory)&&void 0!==e&&!e||r.pointer||(this.options.user.lastUpdate=o(),this.options.provider.awareness.setLocalStateField("user",this.options.user))}});var s=i(73845),l=i(2376),c=i(16722);const d=new l.H$("emoji"),h=s.NB.create({name:"emoji",addOptions:()=>({HTMLAttributes:{},suggestion:{char:":",allowedPrefixes:[" "],pluginKey:d}}),content:"text*",addCommands:()=>({emoji:t=>e=>{let{commands:n}=e;return n.insertContent(t.native+" ")}}),addProseMirrorPlugins(){return[(0,c.ZP)({editor:this.editor,...this.options.suggestion})]}}),A=s.hj.create({name:"customkeymap",addKeyboardShortcuts(){return this.options},addProseMirrorPlugins:()=>[new l.Sy({props:{handleKeyDown(t,e){const n=e.key||e.keyCode;return!e.ctrlKey&&!e.metaKey||e.shiftKey||"f"!==n&&70!==n?"Delete"===e.key&&!0===e.ctrlKey?(e.stopPropagation(),window.dispatchEvent(e),!0):void 0:(e.stopPropagation(),window.dispatchEvent(e),!0)}}})]});var p=i(84348);class u{constructor(t,e,n){this.from=t,this.to=e,this.author=n}}function g(t,e,n,i){if(e>=n)return;let r,o=0;for(;o=e)break}else if(r.to>e){if(r.fromn?t.splice(o++,0,i):t[o++]=i}break}for(;r=t[o];)if(r.author===i){if(r.from>n)break;e=Math.min(e,r.from),n=Math.max(n,r.to),t.splice(o,1)}else{if(r.from>=n)break;if(r.to>n){t[o]=new u(n,r.to,r.author);break}t.splice(o,1)}t.splice(o,0,new u(e,n,i))}class m{constructor(t){this.blameMap=t}applyTransform(t){var e;const n=null!==(e=t.getMeta("clientID"))&&void 0!==e?e:t.steps.map((t=>"self")),i=function(t,e,n){const i=[],r=e.mapping;for(let e=0;e{g(i,o.map(a,1),o.map(s,-1),n[t])}))}return i}(this.blameMap,t,n);return new m(i)}}s.hj.create({name:"users",addOptions:()=>({clientID:0,color:t=>"#"+Math.floor(Math.abs(16777215*Math.sin(t))%16777215).toString(16)+"aa",name:t=>"Unknown user "+t}),addProseMirrorPlugins(){let t=null;return[new l.Sy({clientID:this.options.clientID,color:this.options.color,name:this.options.name,view:e=>(t=e,{}),state:{init:(t,e)=>({tracked:new m([new u(0,e.doc.content.size,null)],[],[],[]),deco:p.EH.empty}),apply(e,n,i,r){let{tracked:o,decos:a}=n,s=this.getState(i).tracked;return e.docChanged&&(e.getMeta("clientID")||e.setMeta("clientID",e.steps.map((t=>this.spec.clientID))),t.composing||(o=o.applyTransform(e),s=o)),a=s.blameMap.map((t=>{const e=t.author;return p.p.inline(t.from,t.to,{class:"author-annotation",style:"background-color: "+this.spec.color(e)+"66;",title:this.spec.name(e)})})).filter((t=>null!==t)),{tracked:o,deco:p.EH.create(r.doc,a)}}},props:{decorations(t){return this.getState(t).deco}}})]}});var b=i(73073),C=i(52701);const f=s.NB.create({name:"doc",content:"block",addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.insertContent("\t")}}}),v=s.hj.create({name:"PlainText",addExtensions:()=>[f,C.Z]});var _=i(64233),y=i(78825),x=i(99734);const w=i(30561).ZP.extend({parseHTML(){return this.parent().map((t=>Object.assign(t,{preserveWhitespace:!0})))},addAttributes(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),bullet:{default:"-",rendered:!1,isRequired:!0,parseHTML:t=>t.getAttribute("data-bullet")}}},addInputRules(){return[(t=/^\s*([-+*])\s([^\s[]+)$/,e=this.type,new s.VK({find:t,handler:i=>{let{state:r,range:o,match:a}=i;(0,s.S0)({find:t,type:e,getAttributes:n}).handler({state:r,range:o,match:a}),a.length>=3&&r.tr.insertText(a[2])}}))];var t,e,n}});var k=i(79835),E=i(30744),j=i(32318);const M={info:j.kI,success:j.Ho,error:j.b0,warn:j.uU},S={name:"Callout",components:{NodeViewWrapper:k.T5,NodeViewContent:k.ms},props:{node:{type:Object,required:!0}},computed:{icon(){return M[this.type]||j.kI},type(){var t;return(null===(t=this.node)||void 0===t||null===(t=t.attrs)||void 0===t?void 0:t.type)||"info"}}};var N=i(93379),I=i.n(N),B=i(7795),T=i.n(B),D=i(90569),P=i.n(D),O=i(3565),R=i.n(O),L=i(19216),Z=i.n(L),$=i(44589),z=i.n($),F=i(79898),U={};U.styleTagTransform=z(),U.setAttributes=R(),U.insert=P().bind(null,"head"),U.domAPI=T(),U.insertStyleElement=Z();I()(F.Z,U);F.Z&&F.Z.locals&&F.Z.locals;var H=i(51900);const G=(0,H.Z)(S,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{staticClass:"callout",class:"callout--".concat(t.type),attrs:{"data-text-el":"callout",as:"div"}},[e(t.icon,{tag:"component",staticClass:"callout__icon"}),t._v(" "),e("NodeViewContent",{staticClass:"callout__content"})],1)}),[],!1,null,"4387ae9f",null).exports,W=s.NB.create({name:"callout",content:"paragraph+",group:"block",defining:!0,addOptions:()=>({types:E.F,HTMLAttributes:{class:"callout"}}),addAttributes:()=>({type:{default:"info",rendered:!1,parseHTML:t=>t.getAttribute("data-callout")||E.F.find((e=>t.classList.contains(e)))||t.classList.contains("warning")&&"warn",renderHTML:t=>({"data-callout":t.type,class:"callout-".concat(t.type)})}}),parseHTML:()=>[{tag:"div.callout"},{tag:"p.callout",priority:1001}],renderHTML(t){let{node:e,HTMLAttributes:n}=t;const{class:i}=this.options.HTMLAttributes,r={...this.options.HTMLAttributes,"data-callout":e.attrs.type,class:"".concat(i," ").concat(i,"-").concat(e.attrs.type)};return["div",(0,s.P1)(r,n),0]},toMarkdown:(t,e)=>{t.write("::: "+(e.attrs.type||"info")+"\n"),t.renderContent(e),t.ensureNewLine(),t.write(":::"),t.closeBlock(e)},addNodeView:()=>(0,k.uf)(G),addCommands(){return{setCallout:t=>e=>{let{commands:n}=e;return n.wrapIn(this.name,t)},toggleCallout:t=>e=>{let{commands:n,state:i}=e;return(0,s.Ig)(i,this.name)?(0,s.Ig)(i,this.name,t)?n.unsetCallout():n.updateAttributes(this.name,t):n.setCallout(t)},unsetCallout:()=>t=>{let{commands:e}=t;return e.lift(this.name)}}}});var q=i(88776),K=i(57355),V=i(22608),Y=i(55963);const Q=V.Z.extend({parseHTML:()=>[{tag:"pre",preserveWhitespace:"full",getContent:(t,e)=>{const n=t.textContent.replace(/\n$/,""),i=n?[e.text(n)]:[];return e.nodes.codeBlock.create(null,i)}}],toMarkdown:(t,e,n,i)=>(e.attrs.params=e.attrs.language,Y.Dm.nodes.code_block(t,e,n,i))});var X=i(20336),J=i(79829),tt=i(15961),et=i(28374),nt=i(31352);const it={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:nt.Iu,onKeyDown(t){let{event:e}=t;return!(e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)&&("ArrowUp"===e.key?(this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.itemInsideScrollView||(this.$el.scrollTop=this.selectedIndex*this.itemHeight),!0):"ArrowDown"===e.key?(this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.itemInsideScrollView||(this.$el.scrollTop=(this.selectedIndex+1)*this.itemHeight-this.$el.clientHeight),!0):("Enter"===e.key||"Tab"===e.key)&&(this.selectItem(this.selectedIndex),!0))},selectItem(t){const e=this.items[t];e&&(this.command(e),(0,tt.Ry)(e))}}};var rt=i(82038),ot={};ot.styleTagTransform=z(),ot.setAttributes=R(),ot.insert=P().bind(null,"head"),ot.domAPI=T(),ot.insertStyleElement=Z();I()(rt.Z,ot);rt.Z&&rt.Z.locals&&rt.Z.locals;const at=(0,H.Z)(it,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"emoji-list"},[t.hasResults?t._l(t.items,(function(n,i){return e("div",{key:i,staticClass:"emoji-list__item",class:{"is-selected":i===t.selectedIndex},on:{click:function(e){return t.selectItem(i)}}},[e("span",{staticClass:"emoji-list__item__emoji"},[t._v("\n\t\t\t\t"+t._s(n.native)+"\n\t\t\t")]),t._v("\n\t\t\t:"+t._s(n.short_name)+"\n\t\t")])})):e("div",{staticClass:"emoji-list__item is-empty"},[t._v("\n\t\t"+t._s(t.t("text","No emoji found"))+"\n\t")])],2)}),[],!1,null,"74f9a54a",null).exports;const st=i(83416).ZP.extend({name:"frontMatter",draggable:!1,renderHTML(e){let{node:n,HTMLAttributes:i}=e;return this.parent({node:n,HTMLAttributes:(0,s.P1)(i,{"data-title":t("text","Front matter"),class:"frontmatter"})})},parseHTML:()=>[{tag:"pre#frontmatter",preserveWhitespace:"full",priority:9001,attrs:{language:"yaml"}}],toMarkdown:(t,e)=>{if(!t.out.match(/^\s*/))throw Error("FrontMatter must be the first node of the document!");const n=e.textContent,i=n.match(/-{3,}/gm),r=i?i.sort().slice(-1)[0]+"-":"---";t.write(""),t.out="",t.write("".concat(r,"\n")),t.text(n,!1),t.ensureNewLine(),t.write(r),t.closeBlock(e)},addInputRules(){return[{find:/^---$/g,handler:t=>{let{state:e,range:n,chain:i}=t;return 1===n.from&&(e.doc.resolve(1).parent.type.name!==this.name&&(i().deleteRange(n).insertContentAt(0,{type:this.name}),!0))}}]},addCommands:()=>({}),addPasteRules:()=>[],addProseMirrorPlugins:()=>[]});var lt=i(26022),ct=i(77958),dt=i(86680),ht=i(20296),At=i.n(ht);const pt={name:"ParagraphView",components:{NodeViewWrapper:k.T5,NodeViewContent:k.ms,NcReferenceList:dt.NcReferenceList},props:k.Un,data:()=>({text:null,isLoggedIn:(0,ct.ts)()}),watch:{node:{handler(t){null!=t&&t.textContent?this.debouncedUpdateText(t):this.text=""}}},beforeCreate(){this.debouncedUpdateText=At()((t=>{this.text=this.getTextReference(this.node)}),500)},created(){this.text=this.getTextReference(this.node)},beforeUnmount(){var t;null===(t=this.debouncedUpdateText)||void 0===t||t.cancel()},methods:{getTextReference(t){var e,n;if(null==t||!t.childCount)return null;let i;for(let e=0;e"link"===t.type.name)),o=null==r||null===(n=r.attrs)||void 0===n?void 0:n.href;return new RegExp(/(^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)($)/gi).test(o)?o:null}}};var ut=i(99119),gt={};gt.styleTagTransform=z(),gt.setAttributes=R(),gt.insert=P().bind(null,"head"),gt.domAPI=T(),gt.insertStyleElement=Z();I()(ut.Z,gt);ut.Z&&ut.Z.locals&&ut.Z.locals;const mt=(0,H.Z)(pt,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{staticClass:"vue-component",attrs:{as:"p"}},[e("NodeViewContent",{staticClass:"paragraph-content"}),t._v(" "),t.isLoggedIn&&t.text?e("NcReferenceList",{attrs:{text:t.text,limit:1,contenteditable:"false"}}):t._e()],1)}),[],!1,null,"b95f24a4",null).exports,bt=lt.Z.extend({addNodeView:()=>(0,k.uf)(mt),parseHTML(){return this.parent().map((t=>Object.assign(t,{preserveWhitespace:"full"})))},addKeyboardShortcuts(){return{Backspace:()=>{const t=this.editor.state.selection;if(0!==t.$from.parentOffset)return!1;const e=t.$from.parent,n=t.$from.index(t.$from.depth-1);if(0===n)return!1;const i=t.$from.node(t.$from.depth-1).child(n-1);return e.type.name===this.name&&i.type.name===this.name&&this.editor.chain().joinBackward().setHardBreak().run()}}}});const Ct=i(35525).Z.extend({addAttributes:()=>({syntax:{default:" ",rendered:!1,keepOnSplit:!0,parseHTML:t=>t.getAttribute("data-syntax")||" "}}),addCommands(){return{...null==this?void 0:this.parent(),setHardBreak:()=>t=>{for(let e=t.state.selection.$from.depth;e>=0;e--)if("heading"===t.state.selection.$from.node(e).type.name)return!1;return this.parent().setHardBreak()(t)}}},toMarkdown(t,e,n,i){for(let o=i+1;o");return}}});var ft=i(7490),vt=i(25030),_t=i(63811),yt=i.n(_t),xt=i(28721);const wt=t=>{const e=new Map,n=[],i=t.state.tr;var r;t.state.doc.descendants(((t,r)=>{if("heading"===t.type.name){var o;const a=t.textContent,s=(t=>{const n=yt()(t);if(e.has(n)){const t=e.get(n);return e.set(n,t+1),"h-".concat(n,"--").concat(t)}return e.set(n,1),"h-"+n})(a),l=null!==(o=t.attrs.uuid)&&void 0!==o?o:(0,xt.Z)();if(t.attrs.id!==s||!t.attrs.uuid){const e={...t.attrs,uuid:l,id:s};i.setNodeMarkup(r,void 0,e)}n.push(Object.freeze({level:t.attrs.level,position:r,text:a,id:s,uuid:l}))}})),i.setMeta("addToHistory",!1),i.setMeta("preventUpdate",!0),t.view.dispatch(i),r=n,vt.Z.dispatch("text/setHeadings",r)};var kt=i(20144),Et=i(31728);const jt=kt.default.extend({name:"HeadingView",components:{NodeViewWrapper:k.T5,NodeViewContent:k.ms},mixins:[Et.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 t=this.extension.options.levels.includes(this.node.attrs.level)?this.node.attrs.level:this.extension.options.levels[0];return"h".concat(t)},linkSymbol(){return this.extension.options.linkSymbol},t:()=>window.t},methods:{click(){this.$refs.container.$el.scrollIntoView(),window.location.hash=this.href}}});var Mt=i(86698),St={};St.styleTagTransform=z(),St.setAttributes=R(),St.insert=P().bind(null,"head"),St.domAPI=T(),St.insertStyleElement=Z();I()(Mt.Z,St);Mt.Z&&Mt.Z.locals&&Mt.Z.locals;const Nt=(0,H.Z)(jt,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("NodeViewWrapper",{ref:"container",attrs:{id:t.node.attrs.id,as:t.domElement}},[e("a",{staticClass:"heading-anchor",attrs:{"aria-hidden":"true",href:t.href,title:t.t("text","Link to this section"),contenteditable:!1},on:{click:function(e){return e.stopPropagation(),t.click.apply(null,arguments)}}},[t._v(t._s(t.linkSymbol))]),t._v(" "),e("NodeViewContent",{attrs:{as:"span"}})],1)}),[],!1,null,null,null).exports,It=ft.Z.extend({addAttributes(){return{...this.parent(),id:{default:void 0,rendered:!0},uuid:{default:void 0,rendered:!1}}},addOptions(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),linkSymbol:"#"}},addKeyboardShortcuts(){return this.options.levels.reduce(((t,e)=>({...t,["Mod-Shift-".concat(e)]:()=>this.editor.commands.toggleHeading({level:e})})),{})},addNodeView(){return(0,k.uf)(Nt,{update:t=>{let{oldNode:e,newNode:n,updateProps:i}=t;return n.type.name===this.name&&(n.attrs===e.attrs&&(i(),!0))}})},onCreate(){wt(this.editor),this.parent&&this.parent()},onUpdate:At()((t=>{let{editor:e}=t;e.view&&e.state&&!e.isDestroyed&&wt(e)}),900)});var Bt=i(25748),Tt=i(26761),Dt=i(88911),Pt=i(2649),Ot=i.n(Pt);const Rt={name:"ShowImageModal",components:{NcModal:tt.Jc},props:{images:{type:Array,default:()=>[],validator:t=>0===t.length||t.every((t=>t.basename&&t.source))},startIndex:{type:Number,default:0},show:{type:Boolean,default:!1}},data:()=>({currentImageIndex:0}),computed:{currentImage(){return this.images[this.currentImageIndex]}},watch:{startIndex(t){this.currentImageIndex=t}},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 Lt=i(15628),Zt={};Zt.styleTagTransform=z(),Zt.setAttributes=R(),Zt.insert=P().bind(null,"head"),Zt.domAPI=T(),Zt.insertStyleElement=Z();I()(Lt.Z,Zt);Lt.Z&&Lt.Z.locals&&Lt.Z.locals;const $t=(0,H.Z)(Rt,(function(){var t=this,e=t._self._c;return t.show?e("NcModal",{attrs:{size:"large",name:t.currentImage.basename,"out-transition":!0,"has-next":!0,"has-previous":!0,"close-button-contained":!1,dark:!0},on:{next:t.showNextImage,previous:t.showPreviousImage,close:function(e){return t.$emit("close")}}},[e("div",{staticClass:"modal__content"},[e("img",{attrs:{src:t.currentImage.source}})])]):t._e()}),[],!1,null,"313fc12e",null).exports;var zt=i(13815),Ft=i(74411),Ut=i(69183),Ht=i(79753),Gt=i(52029);class Wt extends Error{constructor(e,n){super((null==e?void 0:e.message)||t("text","Failed to load")),this.reason=e,this.imageUrl=n}}const qt={name:"ImageView",components:{ImageIcon:j.Ee,DeleteIcon:j.HG,NcButton:tt.P2,ShowImageModal:$t,NodeViewWrapper:k.T5},directives:{ClickOutside:Ot()},mixins:[zt.Z,Et.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((t,e)=>{const n=t.split("?")[1];if(void 0===n)return;const i=n.split(/[&#]/);if(void 0!==i)for(let t=0;t(t,e)=>window.t(t,e),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 t=await this.$attachmentResolver.resolve(this.src);return this.load(t)},async load(t){const[e,...n]=t;return this.loadImage(e.url,e.type,e.name,e.metadata).catch((t=>n.length>0?this.load(n):Promise.reject(t)))},async loadImage(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return new Promise(((r,o)=>{const a=new Image;a.onload=async()=>{this.imageUrl=t,this.imageLoaded=!0,this.loaded=!0,this.attachmentType=e,e===this.$attachmentResolver.ATTACHMENT_TYPE_MEDIA&&i?this.attachmentMetadata=i:e===this.$attachmentResolver.ATTACHMENT_TYPE_MEDIA&&await this.loadMediaMetadata(n),r(t)},a.onerror=e=>{o(new Wt(e,t))},a.src=t}))},loadMediaMetadata(t){const e=this.$attachmentResolver.getMediaMetadataUrl(t);return Dt.Z.get(e).then((t=>{this.attachmentMetadata=t.data})).catch((t=>{Gt.k.error("Failed to load media metadata",{error:t})}))},onImageLoadFailure(t){this.failed=!0,this.imageLoaded=!1,this.loaded=!0,this.errorMessage=t.message,t instanceof Wt&&(this.errorMessage="".concat(this.errorMessage," ").concat(this.src)),this.$emit("error",{error:t,src:this.src})},updateAlt(t){this.updateAttributes({alt:t.target.value})},onLoaded(){this.loaded=!0},async handleImageClick(t){const e=Array.from(document.querySelectorAll('figure[data-component="image-view"].image-view'));let n,i;for(const t of e){i=t.getAttribute("data-src"),n=i.split("/").slice(-1).join();const e=await this.$attachmentResolver.resolve(i,!0),{url:r}=e.shift();this.embeddedImagesList.push({source:r,basename:n,relativePath:i})}this.imageIndex=this.embeddedImagesList.findIndex((e=>e.relativePath===t)),this.showImageModal=!0},onDelete(){(0,Ut.j8)("text:image-node:delete",this.imageUrl),this.deleteNode()}}};var Kt=i(70235),Vt={};Vt.styleTagTransform=z(),Vt.setAttributes=R(),Vt.insert=P().bind(null,"head"),Vt.domAPI=T(),Vt.insertStyleElement=Z();I()(Kt.Z,Vt);Kt.Z&&Kt.Z.locals&&Kt.Z.locals;const Yt=(0,H.Z)(qt,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",[e("figure",{staticClass:"image image-view",class:{"icon-loading":!t.loaded,"image-view--failed":t.failed},attrs:{"data-component":"image-view","data-src":t.src}},[t.canDisplayImage?e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:()=>t.showIcons=!1,expression:"() => showIcons = false"}],staticClass:"image__view",on:{mouseover:function(e){t.showIcons=!0},mouseleave:function(e){t.showIcons=!1}}},[e("transition",{attrs:{name:"fade"}},[t.failed?[e("ImageIcon",{staticClass:"image__main image__main--broken-icon",attrs:{size:100}})]:[t.isMediaAttachment?e("div",{staticClass:"media",on:{click:function(e){return t.handleImageClick(t.src)}}},[e("div",{staticClass:"media__wrapper"},[e("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],staticClass:"image__main",attrs:{src:t.imageUrl},on:{load:t.onLoaded}}),t._v(" "),e("div",{staticClass:"metadata"},[e("span",{staticClass:"name"},[t._v(t._s(t.alt))]),t._v(" "),e("span",{staticClass:"size"},[t._v(t._s(t.attachmentMetadata.size))])])]),t._v(" "),t.showDeleteIcon?e("div",{staticClass:"buttons"},[e("NcButton",{attrs:{"aria-label":t.t("text","Delete this attachment"),title:t.t("text","Delete this attachment")},on:{click:t.onDelete},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DeleteIcon")]},proxy:!0}],null,!1,3930079857)})],1):t._e()]):e("div",[e("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],staticClass:"image__main",attrs:{src:t.imageUrl},on:{click:function(e){return t.handleImageClick(t.src)},load:t.onLoaded}})])]],2),t._v(" "),e("transition",{attrs:{name:"fade"}},[t.isMediaAttachment?t._e():e("div",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],staticClass:"image__caption",attrs:{title:t.alt}},[t.editable?e("div",{staticClass:"image__caption__wrapper"},[e("input",{directives:[{name:"show",rawName:"v-show",value:!t.isMediaAttachment,expression:"!isMediaAttachment"}],ref:"altInput",staticClass:"image__caption__input",attrs:{type:"text"},domProps:{value:t.alt},on:{blur:t.updateAlt,keyup:t.updateAlt}}),t._v(" "),t.showImageDeleteIcon?e("div",{staticClass:"image__caption__delete"},[e("NcButton",{attrs:{"aria-label":t.t("text","Delete this image"),title:t.t("text","Delete this image")},on:{click:t.onDelete},scopedSlots:t._u([{key:"icon",fn:function(){return[e("DeleteIcon")]},proxy:!0}],null,!1,3930079857)})],1):t._e()]):e("figcaption",[t._v("\n\t\t\t\t\t\t"+t._s(t.alt)+"\n\t\t\t\t\t")])])]),t._v(" "),e("div",{staticClass:"image__modal"},[e("ShowImageModal",{attrs:{images:t.embeddedImagesList,"start-index":t.imageIndex,show:t.showImageModal},on:{close:function(e){t.showImageModal=!1}}})],1)],1):e("div",{staticClass:"image-view__cant_display"},[e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}]},[e("a",{attrs:{href:t.internalLinkOrImage,target:"_blank"}},[t.isSupportedImage?t._e():e("span",[t._v(t._s(t.alt))])])])]),t._v(" "),t.isSupportedImage?e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],staticClass:"image__caption"},[e("input",{ref:"altInput",attrs:{type:"text",disabled:!t.editable},domProps:{value:t.alt},on:{blur:t.updateAlt,keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.updateAlt.apply(null,arguments)}}})])]):t._e()],1),t._v(" "),t.errorMessage?e("small",{staticClass:"image__error-message"},[t._v("\n\t\t\t"+t._s(t.errorMessage)+"\n\t\t")]):t._e()])])}),[],!1,null,"4febfd28",null).exports,Qt=Tt.ZP.extend({selectable:!1,parseHTML(){return[{tag:this.options.allowBase64?"figure img[src]":'figure img[src]:not([src^="data:"])'}]},renderHTML:()=>["img"],addOptions(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this)}},addNodeView:()=>(0,k.uf)(Yt),addProseMirrorPlugins:()=>[new l.Sy({props:{handleDrop:(t,e,n)=>{if(e.dataTransfer.files&&e.dataTransfer.files.length>0){const n=t.posAtCoords({left:e.clientX,top:e.clientY}),i=new CustomEvent("file-drop",{bubbles:!0,detail:{files:e.dataTransfer.files,position:n.pos}});return e.target.dispatchEvent(i),!0}},handlePaste:(t,e,n)=>{if(e.clipboardData.files&&e.clipboardData.files.length>0){const t=new CustomEvent("image-paste",{bubbles:!0,detail:{files:e.clipboardData.files}});return e.target.dispatchEvent(t),!0}}}})],toMarkdown(t,e,n,i){e.attrs.alt=e.attrs.alt.toString(),Y.Dm.nodes.image(t,e,n,i),t.closeBlock(e)}}),Xt=Tt.ZP.extend({name:"image-inline",priority:99,selectable:!1,parseHTML(){return[{tag:this.options.allowBase64?"img[src]":'img[src]:not([src^="data:"])'}]},addOptions(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),inline:!0}},addCommands:()=>({}),addInputRules:()=>[],addNodeView:()=>(0,k.uf)(Yt),toMarkdown:(t,e,n,i)=>Y.Dm.nodes.image(t,e,n,i)}),Jt=s.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 t=this.editor.state.tr;this.editor.state.doc.descendants(((e,n,i,r)=>{-1!==e.marks.findIndex((t=>t.type.name===this.name))&&("text"===e.type.name&&1===e.text.length||t.removeMark(n,n+e.nodeSize,this.type))})),t.docChanged&&(t.setMeta("addToHistory",!1),t.setMeta("preventUpdate",!0),this.editor.view.dispatch(t))}});var te=i(34565),ee=i(14068);const ne={name:"Mention",components:{NcUserBubble:tt.uq,NodeViewWrapper:k.T5},props:{updateAttributes:{type:Function,required:!0},node:{type:Object,required:!0}},data(){return{username:this.node.attrs.label}},computed:{isCurrentUser(){var t;return this.node.attrs.id===(null===(t=(0,ct.ts)())||void 0===t?void 0:t.uid)}}};var ie=i(35460),re={};re.styleTagTransform=z(),re.setAttributes=R(),re.insert=P().bind(null,"head"),re.domAPI=T(),re.insertStyleElement=Z();I()(ie.Z,re);ie.Z&&ie.Z.locals&&ie.Z.locals;const oe=(0,H.Z)(ne,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{staticClass:"mention",attrs:{as:"span",contenteditable:"false"}},[e("NcUserBubble",{staticClass:"mention-user-bubble",attrs:{user:t.node.attrs.id,"display-name":t.username,primary:t.isCurrentUser}},[t._v("\n\t\t@"+t._s(t.username)+"\n\t")])],1)}),[],!1,null,"297bb5fa",null).exports,ae=ee.ZP.extend({parseHTML:()=>[{tag:'span[data-type="user"]',getAttrs:t=>({id:decodeURIComponent(t.getAttribute("data-id")),label:t.innerText||t.textContent||t.getAttribute("data-label")}),priority:100}],renderHTML(t){let{node:e,HTMLAttributes:n}=t;return["span",(0,s.P1)({"data-type":"user",class:"mention"},this.options.HTMLAttributes,n),this.options.renderLabel({options:this.options,node:e})]},addNodeView:()=>(0,k.uf)(oe),toMarkdown(t,e){t.write(" "),t.write("@[".concat(e.attrs.label,"](mention://user/").concat(encodeURIComponent(e.attrs.id),")")),t.write(" ")}});const se={components:{SuggestionListWrapper:i(81586).Z},props:{items:{type:Array,required:!0},command:{type:Function,required:!0}},methods:{onKeyDown(t){var e;let{event:n}=t;return null===(e=this.$refs.suggestionList)||void 0===e?void 0:e.onKeyDown({event:n})}}};var le=i(59724),ce={};ce.styleTagTransform=z(),ce.setAttributes=R(),ce.insert=P().bind(null,"head"),ce.domAPI=T(),ce.insertStyleElement=Z();I()(le.Z,ce);le.Z&&le.Z.locals&&le.Z.locals;const de=(0,H.Z)(se,(function(){var t=this,e=t._self._c;return e("SuggestionListWrapper",{ref:"suggestionList",attrs:{command:t.command,items:t.items},on:{select:e=>t.$emit("select",e)},scopedSlots:t._u([{key:"default",fn:function(n){let{item:i}=n;return[e("div",{staticClass:"link-picker__item"},[e("img",{attrs:{src:i.icon}}),t._v(" "),e("div",[t._v(t._s(i.label))])])]}},{key:"empty",fn:function(){return[t._v("\n\t\t"+t._s(t.t("text","No command found"))+"\n\t")]},proxy:!0}])})}),[],!1,null,"0ea7b674",null).exports,he=new l.H$("linkPicker"),Ae=s.hj.create({name:"linkPicker",addOptions:()=>({suggestion:{char:"/",allowedPrefixes:[" "],pluginKey:he,...(0,et.Z)({listComponent:de,command:t=>{let{editor:e,range:n,props:i}=t;(0,dt.getLinkWithPicker)(i.providerId,!0).then((t=>{e.chain().focus().insertContentAt(n,t+" ").run()})).catch((t=>{console.error("Smart picker promise rejected",t)}))},items:t=>{let{query:e}=t;return(0,dt.searchProvider)(e).map((t=>({label:t.title,icon:t.icon_url,providerId:t.id})))}})}}),addProseMirrorPlugins(){return[(0,c.q$)({editor:this.editor,...this.options.suggestion})]}});var pe=i(51575),ue=i(93237),ge=i(22773);const me=s.NB.create({name:"tableCaption",content:"inline*",addAttributes:()=>({}),renderHTML:()=>["caption"],toMarkdown(t,e){},parseHTML:()=>[{tag:"table caption",priority:90}]});var be=i(658),Ce=i(87823);const fe=be.p.extend({content:"inline*",toMarkdown(t,e){var n;t.write(" ");const i=null===(n=t.options)||void 0===n?void 0:n.escapeExtraCharacters;t.options.escapeExtraCharacters=/\|/,t.renderInline(e),t.options.escapeExtraCharacters=i,t.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 t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),textAlign:{rendered:!1,parseHTML:t=>t.style.textAlign||null}}},addProseMirrorPlugins(){return[new l.Sy({props:{handlePaste:(t,e,n)=>{if(!this.editor.isActive(this.type.name))return!1;const{state:i}=t,r=[];let o=!1;n.content.descendants(((t,e)=>{t.isText?(r.push(i.schema.text(t.textContent,t.marks)),o=!1):o||(r.push(i.schema.text("\n")),o=!0)}));const a=i.schema.node("paragraph",[],r);n.content=Ce.HY.empty.addToStart(a)}}})]}});const ve=i(43626).x.extend({content:"inline*",toMarkdown(t,e){t.write(" "),t.renderInline(e),t.write(" |")},parseHTML:()=>[{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 t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),textAlign:{rendered:!1,parseHTML:t=>t.style.textAlign||null}}}});const _e=i(33991).S.extend({content:"tableCell*",toMarkdown(t,e){t.write("|"),t.renderInline(e),t.ensureNewLine()},parseHTML:()=>[{tag:"tr",priority:70}]}),ye=_e.extend({name:"tableHeadRow",content:"tableHeader*",toMarkdown(t,e){t.write("|"),t.renderInline(e),t.ensureNewLine(),t.write("|"),e.forEach((e=>{var n;let i=t.repeat("-",e.textContent.length+2);const r=null===(n=e.attrs)||void 0===n?void 0:n.textAlign;"center"!==r&&"left"!==r||(i=":"+i.slice(1)),"center"!==r&&"right"!==r||(i=i.slice(0,-1)+":"),t.write(i),t.write("|")})),t.ensureNewLine()},parseHTML:()=>[{tag:"tr:first-of-type",priority:80}]});var xe=i(97245);const we=ge.iA.extend({content:"tableCaption? tableHeadRow tableRow*",addExtensions:()=>[me,fe,ve,ye,_e],addCommands(){return{...this.parent(),addRowAfter:()=>t=>{let{chain:e,dispatch:n}=t;return e().command((t=>{let{state:e}=t;return(0,xe.dl)(e,n)})).command((t=>{let{state:e,tr:i}=t;const{tableStart:r,table:o,bottom:a}=(0,xe.zN)(e);if(n){const t=o.child(a-1),e=o.child(a);let n=r+1;for(let t=0;tt=>{let{chain:e,dispatch:n}=t;return e().command((t=>{let{state:e}=t;return(0,xe.z2)(e,n)})).command((t=>{let{state:e,tr:i}=t;const{tableStart:r,table:o,top:a}=(0,xe.zN)(e);if(n){const t=o.child(a),e=o.child(a-1);let n=r+1;for(let t=0;tt=>{let{tr:e,dispatch:n,editor:i}=t;if((0,xe.Lw)(e))return!1;const r=function(t,e,n,i){const r=[],o=[];for(let e=0;et=>{let{tr:e,dispatch:n,editor:i}=t;if(!(0,xe.Lw)(e))return!1;const{$head:r,empty:o}=e.selection;if(!o)return!1;const a=r.depth<3?1:r.depth-2;if(n){const t=e.doc.resolve(r.after(a)+1),i=l.Bs.near(t);n(e.setSelection(i).scrollIntoView())}return!0},goToNextRow:()=>t=>{let{tr:e,dispatch:n,editor:i}=t;if(!(0,xe.Lw)(e))return!1;const r=function(t){if(t.index(-1)===t.node(-1).childCount-1)return null;let e=t.after();const n=t.node(-1);for(let i=t.indexAfter(-1);i=t.index()){for(let n=0;nthis.editor.commands.goToNextCell()||this.editor.commands.leaveTable(),Enter:t=>{var e;let{editor:n}=t;const{selection:i}=n.state;return!!i.$from.parent.type.name.startsWith("table")&&("hardBreak"===(null===(e=i.$from.nodeBefore)||void 0===e?void 0:e.type.name)?!(!n.can().goToNextRow()&&!n.can().addRowAfter())&&(n.chain().setTextSelection({from:i.from-1,to:i.from}).deleteSelection().run(),!!n.commands.goToNextRow()||n.chain().addRowAfter().goToNextRow().run()):n.chain().insertContent('
').focus().run())}}}}),ke=we;const Ee={name:"TableView",components:{NcActionButton:tt.Js,NcActions:tt.O3,NodeViewWrapper:k.T5,NodeViewContent:k.ms,TableSettings:j._2,Delete:j.HG},props:{editor:{type:Object,required:!0},deleteNode:{type:Function,required:!0}},computed:{t:()=>window.t}};var je=i(44314),Me={};Me.styleTagTransform=z(),Me.setAttributes=R(),Me.insert=P().bind(null,"head"),Me.domAPI=T(),Me.insertStyleElement=Z();I()(je.Z,Me);je.Z&&je.Z.locals&&je.Z.locals;const Se=(0,H.Z)(Ee,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{staticClass:"table-wrapper",attrs:{"data-text-el":"table-view"}},[t.editor.isEditable?e("NcActions",{staticClass:"table-settings",attrs:{"force-menu":"","data-text-table-actions":"settings"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("TableSettings")]},proxy:!0}],null,!1,1699550424)},[t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"delete","close-after-click":""},on:{click:t.deleteNode},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete")]},proxy:!0}],null,!1,3429380666)},[t._v("\n\t\t\t"+t._s(t.t("text","Delete this table"))+"\n\t\t")])],1):t._e(),t._v(" "),e("NodeViewContent",{staticClass:"content",attrs:{as:"table"}}),t._v(" "),e("div",{staticClass:"clearfix"})],1)}),[],!1,null,"261cbb42",null).exports;const Ne={name:"TableCellView",components:{NcActionButton:tt.Js,NcActions:tt.O3,NodeViewWrapper:k.T5,NodeViewContent:k.ms,TableAddRowBefore:j.pn,TableAddRowAfter:j.F5,Delete:j.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 Ie=i(72546),Be={};Be.styleTagTransform=z(),Be.setAttributes=R(),Be.insert=P().bind(null,"head"),Be.domAPI=T(),Be.insertStyleElement=Z();I()(Ie.Z,Be);Ie.Z&&Ie.Z.locals&&Ie.Z.locals;const Te=(0,H.Z)(Ne,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{style:t.textAlign,attrs:{"data-text-el":"table-cell",as:"td"}},[e("div",{staticClass:"container"},[e("NodeViewContent",{staticClass:"content"}),t._v(" "),t.editor.isEditable?e("NcActions",{attrs:{"data-text-table-actions":"row"}},[e("NcActionButton",{attrs:{"data-text-table-action":"add-row-before","close-after-click":""},on:{click:t.addRowBefore},scopedSlots:t._u([{key:"icon",fn:function(){return[e("TableAddRowBefore")]},proxy:!0}],null,!1,1805502767)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Add row before"))+"\n\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"add-row-after","close-after-click":""},on:{click:t.addRowAfter},scopedSlots:t._u([{key:"icon",fn:function(){return[e("TableAddRowAfter")]},proxy:!0}],null,!1,3179199218)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Add row after"))+"\n\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"remove-row","close-after-click":""},on:{click:t.deleteRow},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete")]},proxy:!0}],null,!1,3429380666)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Delete this row"))+"\n\t\t\t")])],1):t._e()],1)])}),[],!1,null,"3543004d",null).exports;const De=(0,kt.defineComponent)({name:"InlineActionsContainer"});var Pe=i(38304),Oe={};Oe.styleTagTransform=z(),Oe.setAttributes=R(),Oe.insert=P().bind(null,"head"),Oe.domAPI=T(),Oe.insertStyleElement=Z();I()(Pe.Z,Oe);Pe.Z&&Pe.Z.locals&&Pe.Z.locals;const Re=(0,H.Z)(De,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("li",{staticClass:"inline-container-base"},[e("ul",{staticClass:"inline-container-content"},[t._t("default")],2)])}),[],!1,null,null,null).exports,Le={name:"TableHeaderView",components:{AlignHorizontalCenter:j.QK,AlignHorizontalLeft:j.L9,AlignHorizontalRight:j.gr,Delete:j.HG,InlineActionsContainer:Re,NcActionButton:tt.Js,NcActions:tt.O3,NodeViewWrapper:k.T5,NodeViewContent:k.ms,TableAddColumnBefore:j.IY,TableAddColumnAfter:j.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(t){for(this.editor.chain().focus().setTextSelection(this.getPos()).setCellAttribute("textAlign",t).run();this.editor.commands.goToNextRow();)this.editor.commands.setCellAttribute("textAlign",t);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 Ze=i(42422),$e={};$e.styleTagTransform=z(),$e.setAttributes=R(),$e.insert=P().bind(null,"head"),$e.domAPI=T(),$e.insertStyleElement=Z();I()(Ze.Z,$e);Ze.Z&&Ze.Z.locals&&Ze.Z.locals;const ze=(0,H.Z)(Le,(function(){var t=this,e=t._self._c;return e("NodeViewWrapper",{style:t.textAlign,attrs:{"data-text-el":"table-header",as:"th"}},[e("div",[e("NodeViewContent",{staticClass:"content"}),t._v(" "),t.editor.isEditable?e("NcActions",{ref:"menu",attrs:{"data-text-table-actions":"header"}},[e("InlineActionsContainer",[e("NcActionButton",{attrs:{"data-text-table-action":"align-column-left","aria-label":t.t("text","Left align column")},on:{click:t.alignLeft},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlignHorizontalLeft")]},proxy:!0}],null,!1,2968467243)}),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"align-column-center","aria-label":t.t("text","Center align column")},on:{click:t.alignCenter},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlignHorizontalCenter")]},proxy:!0}],null,!1,536750267)}),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"align-column-right","aria-label":t.t("text","Right align column")},on:{click:t.alignRight},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlignHorizontalRight")]},proxy:!0}],null,!1,3861151024)})],1),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"add-column-before","close-after-click":""},on:{click:t.addColumnBefore},scopedSlots:t._u([{key:"icon",fn:function(){return[e("TableAddColumnBefore")]},proxy:!0}],null,!1,3782681875)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Add column before"))+"\n\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"add-column-after","close-after-click":""},on:{click:t.addColumnAfter},scopedSlots:t._u([{key:"icon",fn:function(){return[e("TableAddColumnAfter")]},proxy:!0}],null,!1,1608287598)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Add column after"))+"\n\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"data-text-table-action":"remove-column","close-after-click":""},on:{click:t.deleteColumn},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete")]},proxy:!0}],null,!1,3429380666)},[t._v("\n\t\t\t\t"+t._s(t.t("text","Delete this column"))+"\n\t\t\t")])],1):t._e()],1)])}),[],!1,null,"25a85f13",null).exports;function Fe(t,e){return t.extend({addNodeView:()=>(0,k.uf)(e)})}const Ue=we.extend({addNodeView:()=>(0,k.uf)(Se),addExtensions:()=>[me,Fe(fe,Te),Fe(ve,ze),ye,_e]});var He=i(87605);const Ge=He.ZP.extend({addOptions:()=>({nested:!0,HTMLAttributes:{}}),draggable:!1,content:"paragraph block*",addAttributes(){const t={...this.parent()};return t.checked.parseHTML=t=>{var e;return null===(e=t.querySelector("input[type=checkbox]"))||void 0===e?void 0:e.checked},t},parseHTML:[{priority:101,tag:"li",getAttrs:t=>t.querySelector("input[type=checkbox]"),context:"taskList/"}],renderHTML(t){let{node:e,HTMLAttributes:n}=t;const i={class:"checkbox-item"},r={type:"checkbox",class:"",contenteditable:!1};return e.attrs.checked&&(r.checked=!0,i.class+=" checked"),["li",(0,s.P1)(n,i),["input",r],["label",0]]},addNodeView:!1,toMarkdown:(t,e)=>{t.write("[".concat(e.attrs.checked?"x":" ","] ")),t.renderContent(e)},addInputRules(){return[...this.parent(),(0,s.S0)({find:/^\s*([-+*])\s(\[(x|X|\s)?\])\s$/,type:this.type,getAttributes:t=>({checked:"xX".includes(t[t.length-1])})})]},addProseMirrorPlugins:()=>[new l.Sy({props:{handleClick:(t,e,n)=>{const i=t.state,r=i.schema,o=t.posAtCoords({left:n.clientX,top:n.clientY}),a=((t,e)=>{for(let n=t.depth;n>0;n--){const i=t.node(n);if(e(i))return{pos:n>0?t.before(n):0,start:t.start(n),depth:n,node:i}}})(i.doc.resolve(o.pos),(function(t){return t.type===r.nodes.taskItem||t.type===r.nodes.listItem}));if(!("li"===n.target.tagName.toLowerCase())||!a||a.node.type!==r.nodes.taskItem||!t.editable)return;const s=i.tr;s.setNodeMarkup(a.pos,r.nodes.taskItem,{checked:!a.node.attrs.checked}),t.dispatch(s)}}})]});const We=i(63354).Z.extend({parseHTML:[{priority:100,tag:"ul.contains-task-list"}],addAttributes(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),bullet:{default:"-",rendered:!1,isRequired:!0,parseHTML:t=>t.getAttribute("data-bullet")}}},toMarkdown:(t,e)=>{t.renderList(e," ",(()=>"".concat(e.attrs.bullet," ")))}});function qe(t){let{types:e,node:n}=t;return Array.isArray(e)&&e.includes(n.type)||n.type===e}const Ke=s.hj.create({name:"trailingNode",addOptions:()=>({node:"paragraph",notAfter:["paragraph"]}),addProseMirrorPlugins(){const t=new l.H$(this.name),e=Object.entries(this.editor.schema.nodes).map((t=>{let[,e]=t;return e})).filter((t=>this.options.notAfter.includes(t.name)));return[new l.Sy({key:t,appendTransaction:(e,n,i)=>{const{doc:r,tr:o,schema:a}=i,s=t.getState(i),l=r.content.size,c=a.nodes[this.options.node];if(s)return o.insert(l,c.create())},state:{init:(t,n)=>!qe({node:n.tr.doc.lastChild,types:e}),apply:(t,n)=>{if(!t.docChanged)return n;return!qe({node:t.doc.lastChild,types:e})}}})]}});var Ve=i(73816),Ye=i(49924),Qe=i(40187);const Xe=function(t){const e=t.lastIndexOf("/");return e>0?t.slice(0,e):t.slice(0,e+1)},Je=function(t,e){const n=t.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 i=n.match(/^([^?]*)\?fileId=(\d+)/);if(i){var r;const[,t,n]=i,o=function(t,e){if(!e)return t;if("/"===e[0])return e;for(t=t.split("/"),e=e.split("/");".."===e[0]||"."===e[0];)".."===e[0]&&t.pop(),e.shift();return t.concat(e).join("/")}(Xe(e||(null===(r=OCA.Viewer)||void 0===r?void 0:r.file)||"/"),Xe(t));return t.length>1&&t.endsWith("/")?(0,Ht.generateUrl)("/apps/files/?dir=".concat(o,"&fileId=").concat(n)):(0,Ht.generateUrl)("/apps/files/?dir=".concat(o,"&openfile=").concat(n,"#relPath=").concat(t))}return n},tn=function(t){const e=t.getAttribute("href");if(!e)return e;const n=e.match(/\?dir=([^&]*)&openfile=([^&]*)#relPath=([^&]*)/);if(n){const[,,t,e]=n;return"".concat(e,"?fileId=").concat(t)}return e},en=function(t,e){const n=t.target.closest("a").href,i=OC.parseQueryString(n),r=n.split("#").pop(),o=OC.parseQueryString(r);if(null!=i&&i.dir&&null!=o&&o.relPath){const t=o.relPath.split("/").pop(),e="".concat(i.dir,"/").concat(t);return document.title="".concat(t," - ").concat(OC.theme.title),window.location.pathname.match(/apps\/files\/$/),void OCA.Viewer.open({path:e})}if(!n.match(/apps\/files\//)||null==i||!i.fileId){if(!Qe.Z.validateLink(n))return Gt.k.error("Invalid link",{htmlHref:n}),!1;if(r){const t=document.getElementById(r);if(t)return t.scrollIntoView(),void(window.location.hash=r)}return window.open(n),!0}window.open((0,Ht.generateUrl)("/f/".concat(i.fileId)),"_self")},nn=t=>{let{editor:e,type:n,onClick:i}=t;return new l.Sy({props:{key:new l.H$("textLink"),handleClick:(t,e,r)=>{const o=t.state.doc.resolve(e).marks().find((t=>t.type.name===n.name));return!!o&&(o.attrs.href?0!==r.button||r.ctrlKey?void 0:(r.stopPropagation(),null==i?void 0:i(r,o.attrs)):(Gt.k.warn("Could not determine href of link."),Gt.k.debug("Link",{link:o}),!1))}}})},rn=Ye.Z.extend({addOptions(){var t;return{...null===(t=this.parent)||void 0===t?void 0:t.call(this),onClick:en,relativePath:null}},addAttributes:()=>({href:{default:null},title:{default:null}}),inclusive:!1,parseHTML:[{tag:"a[href]",getAttrs:t=>({href:tn(t),title:t.getAttribute("title")})}],renderHTML(t){const{mark:e}=t;return["a",{...e.attrs,href:Je(e,this.options.relativePath),rel:"noopener noreferrer nofollow"},0]},addProseMirrorPlugins(){const t=this.parent().filter((t=>{let{key:e}=t;return!e.startsWith("handleClickLink")}));return this.options.openOnClick?[...t,nn({editor:this.editor,type:this.type,onClick:this.options.onClick}),new l.Sy({props:{key:new l.H$("textAvoidLinkClick"),handleDOMEvents:{click:(t,e)=>{if(!t.editable)return e.preventDefault(),!1}}}})]:t}}),on=rn;const an=i(4281).ZP.extend({parseHTML:()=>[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",getAttrs:t=>"line-through"===t}],renderHTML:()=>["s",0],toMarkdown:{open:"~~",close:"~~",mixable:!0,expelEnclosingWhitespace:!0}});var sn=i(67937);const ln=sn.d8.extend({name:"strong",addInputRules(){return[(0,s.Cf)({find:sn.bP,type:this.type})]},addPasteRules(){return[(0,s.K9)({find:sn.lN,type:this.type})]}});const cn=i(48510).Z.extend({parseHTML:()=>[{tag:"u"},{style:"text-decoration",getAttrs:t=>"underline"===t}],renderHTML:()=>["u",0],toMarkdown:{open:"__",close:"__",mixable:!0,expelEnclosingWhitespace:!0},addInputRules(){return[(0,s.Cf)({find:sn.fJ,type:this.type})]},addPasteRules(){return[(0,s.K9)({find:sn.lD,type:this.type})]}}),dn=Ve.ZP.extend({name:"em"}),hn=s.hj.create({name:"RichText",addOptions:()=>({editing:!0,link:{},extensions:[],component:null,relativePath:null}),addExtensions(){const t=[this.options.editing?b.Z:null,X.Z,C.Z,bt,Ct,It,ln,dn,an,x.ZP,q.Z,K.ZP,Q.configure({lowlight:_.$}),w,Bt.Z,pe.ZP,te.Z,this.options.editing?Ue:ke,We,Ge,W,cn,Qt,Xt,J.Z,Jt,st,ae,y.Z,h.configure({suggestion:(0,et.Z)({listComponent:at,items:t=>{let{query:e}=t;return(0,tt.Kn)(e)},command:t=>{let{editor:e,range:n,props:i}=t;e.chain().focus().insertContentAt(n,i.native+" ").run()}})}),Ae,this.options.editing?ue.Z.configure({emptyNodeClass:"is-empty",placeholder:(0,nt.Iu)("text","Add notes, lists or links …"),showOnlyWhenEditable:!0}):null,Ke];!1!==this.options.link&&t.push(on.configure({...this.options.link,openOnClick:!0,validate:t=>/^https?:\/\//.test(t),relativePath:this.options.relativePath}));const e=this.options.extensions.map((t=>t.name));return[...t.filter((t=>t&&!e.includes(t.name))),...this.options.extensions]}})},43573:(e,n,i)=>{"use strict";i.d(n,{h0:()=>P,Lz:()=>I,YZ:()=>T,tH:()=>B});var r=i(43554),o=i(69183),a=i(74411);if(/^(files|public)$/.test(i.j))var s=i(42397);var l=i(88911),c=i(79753),d=i(6842);const h=!!document.getElementById("isPublic"),A=(0,c.generateOcsUrl)("apps/text"+(h?"/public":"")+"/workspace",2),p={name:"RichWorkspace",components:{SkeletonLoading:d.Z,Editor:()=>Promise.all([i.e("vendors"),i.e("editor")]).then(i.bind(i,23904))},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 t;return null===(t=document.getElementById("sharingToken"))||void 0===t?void 0:t.value},canCreate(){return!!(this.folder&&this.folder.permissions&OC.PERMISSION_CREATE)}},watch:{path(){this.getFileInfo()},focus(t){t||document.querySelector("#rich-workspace .text-editor__main").scrollTo(0,0)}},mounted(){this.enabled&&this.getFileInfo(),(0,o.Ld)("Text::showRichWorkspace",this.showRichWorkspace),(0,o.Ld)("Text::hideRichWorkspace",this.hideRichWorkspace),this.listenKeydownEvents()},beforeDestroy(){(0,o.r1)("Text::showRichWorkspace",this.showRichWorkspace),(0,o.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(t){this.loaded=!1,this.autofocus=!1,this.ready=!1;const e={path:this.path};return h&&(e.shareToken=this.shareToken),l.Z.get(A,{params:e}).then((e=>{const n=e.data.ocs.data;return this.folder=n.folder||null,this.file=n.file,this.editing=!0,this.loaded=!0,this.autofocus=t||!1,!0})).catch((t=>(t.response.data.ocs&&t.response.data.ocs.data.folder?this.folder=t.response.data.ocs.data.folder:this.folder=null,this.file=null,this.loaded=!0,this.ready=!0,this.creating=!1,!1)))},showRichWorkspace(t){this.enabled=!0,this.getFileInfo((null==t?void 0:t.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(t){"Tab"===t.key&&(clearInterval(this.$_timeoutAutohide),this.autohide=!1,this.$_timeoutAutohide=setTimeout(this.onTimeoutAutohide,7e3))}}};var u=i(93379),g=i.n(u),m=i(7795),b=i.n(m),C=i(90569),f=i.n(C),v=i(3565),_=i.n(v),y=i(19216),x=i.n(y),w=i(44589),k=i.n(w),E=i(28120),j={};j.styleTagTransform=k(),j.setAttributes=_(),j.insert=f().bind(null,"head"),j.domAPI=b(),j.insertStyleElement=x();g()(E.Z,j);E.Z&&E.Z.locals&&E.Z.locals;const M=(0,i(51900).Z)(p,(function(){var t=this,e=t._self._c;return t.enabled?e("div",{class:{focus:t.focus,dark:t.darkTheme,creatable:t.canCreate},attrs:{id:"rich-workspace"}},[t.loaded&&t.ready?t._e():e("SkeletonLoading"),t._v(" "),t.file?e("Editor",{directives:[{name:"show",rawName:"v-show",value:t.ready,expression:"ready"}],key:t.file.path,attrs:{"file-id":t.file.id,"relative-path":t.file.path,"share-token":t.shareToken,mime:t.file.mimetype,autofocus:t.autofocus,autohide:t.autohide,active:"","rich-workspace":""},on:{ready:function(e){t.ready=!0},focus:t.onFocus,blur:t.onBlur,error:t.reset}}):t._e()],1):t._e()}),[],!1,null,"5f66ab70",null).exports;var S=i(25030);const N="Edit with text app",I=function(t,e){const n=t.split("/"),i=e.split("/");for(n.pop();n[0]===i[0];)if(n.shift(),i.shift(),0===n.length&&0===i.length)return".";const r=n.fill("..").concat(i),o=e.split("/");return r.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,r.j)("text","default_file_extension"),iconClass:"icon-filetype-text",fileType:"file",actionLabel:t("text","Create new text file"),actionHandler(t){n.createFile(t).then((function(t,e){const i=new OCA.Files.FileInfoModel(e);void 0!==OCA.Viewer?OCA.Files.fileActions.triggerAction("view",i,n):void 0===OCA.Viewer&&OCA.Files.fileActions.triggerAction(N,i,n)}))}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)},T=()=>{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 r=r=>OCA.Files.fileActions.register(r,N,OC.PERMISSION_UPDATE|OC.PERMISSION_READ,(0,c.imagePath)("core","actions/rename"),(t=>{const r=window.FileList.findFile(t);Promise.all([Promise.resolve().then(i.bind(i,20144)),Promise.all([i.e("vendors"),i.e("files-modal")]).then(i.bind(i,49142))]).then((i=>{const o=window.FileList.getCurrentDirectory()+"/"+t,a=i[0].default;a.prototype.t=window.t,a.prototype.n=window.n,a.prototype.OCA=window.OCA;const s=i[1].default;new a({render:function(t){const n=this;return t(s,{props:{fileId:r?r.id:null,active:!0,shareToken:e,relativePath:o,mimeType:r.mimetype},on:{close:function(){n.$destroy()}}})}}).$mount(n)}))}),t("text","Edit"));for(let t=0;twindow.FileList.createFile(i,{scrollTo:!1,animate:!1}).then((()=>(0,o.j8)("Text::showRichWorkspace",{autofocus:!0}))),shouldShow:()=>!n.findFile(i)})}},P={el:null,attach(t){"files"!==t.id&&"files.public"!==t.id||(this.el=document.createElement("div"),t.registerHeader({id:"workspace",el:this.el,render:this.render.bind(this),priority:10}))},render(t){"files"!==t.id&&"files.public"!==t.id||(OC.Plugins.register("OCA.Files.NewFileMenu",D),Promise.resolve().then(i.bind(i,20144)).then((e=>{const n=e.default;this.el.id="files-workspace-wrapper",n.prototype.t=window.t,n.prototype.n=window.n,n.prototype.OCA=window.OCA;const i=new(n.extend(M))({propsData:{path:t.getCurrentDirectory()},store:S.Z}).$mount(this.el);(0,o.Ld)("files:navigation:changed",(()=>{i.active=OCA.Files.App.getCurrentFileList()===t})),t.$el.on("urlChanged",(t=>{i.path=t.dir.toString()})),t.$el.on("changeDirectory",(t=>{i.path=t.dir.toString()}))})))}}},52029:(t,e,n)=>{"use strict";n.d(e,{k:()=>i});const i=(0,n(17499).IY)().setApp("text").detectUser().build()},74411:(t,e,n)=>{"use strict";var i,r;n.d(e,{$Z:()=>o,SP:()=>l,lF:()=>a,w_:()=>s});const o=["image/png","image/jpeg","image/jpg","image/gif","image/x-xbitmap","image/x-ms-bmp","image/bmp","image/svg+xml","image/webp"],a=["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!==(i=OC.appswebroots)&&void 0!==i&&i.richdocuments||null!==(r=OC.appswebroots)&&void 0!==r&&r.onlyoffice||s.push("text/csv");const l=[...a,...s]},42397:(t,e,n)=>{"use strict";n.d(e,{a:()=>i});const i=()=>document.getElementById("sharingToken")?document.getElementById("sharingToken").value:null},30744:(t,e,n)=>{"use strict";n.d(e,{F:()=>o,Z:()=>s});var i=n(40591),r=n.n(i);const o=["info","warn","error","success"],a=t=>(e,n,i,r,o)=>{const a=e[n];return 1===a.nesting&&(a.attrSet("data-callout",t),a.attrJoin("class","callout callout-".concat(t))),o.renderToken(e,n,i,r,o)},s=t=>(o.forEach((e=>{t.use(r(),e,{render:a(e)})})),t)},40187:(t,e,n)=>{"use strict";n.d(e,{Z:()=>_});var i=n(9980),r=n.n(i),o=n(28087),a=n(17251),s=n.n(a);function l(t,e){var n;return(null===(n=t.attrGet("class"))||void 0===n?void 0:n.split(" ").includes(e))||!1}function c(t,e,n){const i=new n("bullet_list_close","ul",-1);i.block=!0;const r=new n("bullet_list_open","ul",1);r.attrSet("class","contains-task-list"),r.block=!0,r.markup=t[e].markup,t.splice(e,0,i,r)}function d(t,e,n){const i=t[e].level+1;for(let r=e+1;r{})).use((function(t){t.core.ruler.after("task-lists","split-mixed-task-lists",(t=>{const e=t.tokens;for(let n=0;n1===t.nesting&&l(t,"task-list-item")!==r));o>n&&c(e,o,t.Token)}return!1}))})).use((function(t){t.inline.ruler2.after("emphasis","underline",(t=>{const e=t.tokens;for(let t=e.length-1;t>0;t--){const n=e[t];"__"===n.markup&&("strong_open"===n.type&&(e[t].tag="u",e[t].type="u_open"),"strong_close"===n.type&&(e[t].tag="u",e[t].type="u_close"))}return!1}))})).use((function(t){t.inline.ruler.at("newline",((t,e)=>{const n=p()(t,e);return n&&t.tokens.length&&"hardbreak"===t.tokens[t.tokens.length-1].type&&t.tokens[t.tokens.length-1].attrSet("syntax"," "),n})),t.inline.ruler.at("escape",((t,e)=>{const n=g()(t,e);return n&&t.tokens.length&&"hardbreak"===t.tokens[t.tokens.length-1].type&&t.tokens[t.tokens.length-1].attrSet("syntax","\\"),n})),t.inline.ruler.after("html_inline","html_breaks",(t=>{const e=t.src.slice(t.pos).match(/^\s*/);if(e){return t.push("hardbreak","br",0).attrPush(["syntax","html"]),t.pos+=e[0].length,!0}return!1})),t.renderer.rules.hardbreak=(t,e,n)=>'
")})).use(h.Z).use((function(t){const e=/(\n(?[#\-*+>])|(?[`*\\~[\]]+))/;t.core.ruler.before("text_join","tag-markdown-syntax",(t=>{const n=new t.Token("keep_md_open","span",1);n.attrSet("class","keep-md");const i=new t.Token("keep_md_close","span",-1);for(let o=0;o'
'.concat((0,f.escapeHtml)(t[e].meta),"
"),v.renderer.rules.bullet_list_open=(t,e,n)=>(t[e].attrs=[...t[e].attrs||[],["data-bullet",t[e].markup]],v.renderer.renderToken(t,e,n));const _=v},13815:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(25030);const r={data:()=>({$store:i.Z}),beforeMount(){void 0===this.$store?this.$store=i.Z:this.$store.hasModule("text")||this.$store.registerModule("text",i.D)}}},86536:(t,e,n)=>{"use strict";n.d(e,{r2:()=>Q,jA:()=>Y,QS:()=>X,TY:()=>V,_U:()=>tt});var i=n(59391),r=n(20296),o=n.n(r),a=n(52029),s=n(88911),l=n(79753);function c(t,e){h(t,e),e.add(t)}function d(t,e,n){h(t,e),e.set(t,n)}function h(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}function A(t,e){return function(t,e){if(e.get)return e.get.call(t);return e.value}(t,g(t,e,"get"))}function p(t,e,n){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return n}function u(t,e,n){return function(t,e,n){if(e.set)e.set.call(t,n);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=n}}(t,g(t,e,"set"),n),n}function g(t,e,n){if(!e.has(t))throw new TypeError("attempted to "+n+" private field on non-instance");return e.get(t)}var m=new WeakMap,b=new WeakSet;function C(t){return I(t,!!A(this,m).shareToken)}var f=new WeakMap,v=new WeakMap,_=new WeakMap,y=new WeakMap,x=new WeakMap,w=new WeakMap,k=new WeakMap,E=new WeakMap,j=new WeakSet;class M{constructor(t,e){c(this,j),d(this,E,{get:S,set:void 0}),d(this,f,{writable:!0,value:void 0}),d(this,v,{writable:!0,value:void 0}),d(this,_,{writable:!0,value:void 0}),d(this,y,{writable:!0,value:void 0}),d(this,x,{writable:!0,value:void 0}),d(this,w,{writable:!0,value:void 0}),d(this,k,{writable:!0,value:void 0});const{document:n,session:i,lock:r,readOnly:o,content:a,documentState:s}=t.data;u(this,_,n),u(this,y,i),u(this,x,r),u(this,w,o),u(this,f,a),u(this,v,s),u(this,k,e)}get session(){return A(this,y)}get document(){return A(this,_)}get docStateVersion(){return A(this,v)?A(this,_).lastSavedVersion:0}get state(){return{document:{...A(this,_),readOnly:A(this,w)},session:A(this,y),documentSource:A(this,f)||"",documentState:A(this,v)}}sync(t){let{version:e}=t;return s.Z.post(p(this,j,N).call(this,"session/sync"),{...A(this,E),filePath:A(this,k).filePath,version:e})}save(t){let{version:e,autosaveContent:n,documentState:i,force:r,manualSave:o}=t;return s.Z.post(p(this,j,N).call(this,"session/save"),{...A(this,E),filePath:A(this,k).filePath,version:e,autosaveContent:n,documentState:i,force:r,manualSave:o})}push(t){let{steps:e,version:n,awareness:i}=t;return s.Z.post(p(this,j,N).call(this,"session/push"),{...A(this,E),filePath:A(this,k).filePath,steps:e,version:n,awareness:i})}update(t){return s.Z.post(p(this,j,N).call(this,"session"),{...A(this,E),guestName:t}).then((t=>{let{data:e}=t;u(this,y,e)}))}uploadAttachment(t){const e=new FormData;e.append("file",t);const n=I("attachment/upload")+"?documentId="+encodeURIComponent(A(this,_).id)+"&sessionId="+encodeURIComponent(A(this,y).id)+"&sessionToken="+encodeURIComponent(A(this,y).token)+"&shareToken="+encodeURIComponent(A(this,k).shareToken||"");return s.Z.post(n,e,{headers:{"Content-Type":"multipart/form-data"}})}insertAttachmentFile(t){return s.Z.post(I("attachment/filepath"),{documentId:A(this,_).id,sessionId:A(this,y).id,sessionToken:A(this,y).token,filePath:t})}close(){return s.Z.post(p(this,j,N).call(this,"session/close"),A(this,E))}}function S(){return{documentId:A(this,_).id,sessionId:A(this,y).id,sessionToken:A(this,y).token,token:A(this,k).shareToken}}function N(t){return I(t,!!A(this,E).token)}function I(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=(0,l.generateUrl)("/apps/text");return e?"".concat(n,"/public/").concat(t):"".concat(n,"/").concat(t)}const B=class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,b),d(this,m,{writable:!0,value:void 0}),u(this,m,t)}open(t){let{fileId:e}=t;return s.Z.put(p(this,b,C).call(this,"session/create"),{fileId:e,filePath:A(this,m).filePath,token:A(this,m).shareToken,guestName:A(this,m).guestName,forceRecreate:A(this,m).forceRecreate}).then((t=>new M(t,A(this,m))))}};function T(t,e,n){!function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}(t,e),e.set(t,n)}function D(t,e){return function(t,e){if(e.get)return e.get.call(t);return e.value}(t,O(t,e,"get"))}function P(t,e,n){return function(t,e,n){if(e.set)e.set.call(t,n);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=n}}(t,O(t,e,"set"),n),n}function O(t,e,n){if(!e.has(t))throw new TypeError("attempted to "+n+" private field on non-instance");return e.get(t)}var R=new WeakMap,L=new WeakMap,Z=new WeakMap,$=new WeakMap,z=new WeakMap,F=new WeakMap,U=new WeakMap;const H=class{constructor(t,e){T(this,R,{writable:!0,value:void 0}),T(this,L,{writable:!0,value:void 0}),T(this,Z,{writable:!0,value:void 0}),T(this,$,{writable:!0,value:void 0}),T(this,z,{writable:!0,value:void 0}),T(this,F,{writable:!0,value:void 0}),T(this,U,{writable:!0,value:void 0}),P(this,R,t),P(this,L,e),P(this,$,300),P(this,z,0),P(this,Z,0)}connect(){this.fetcher>0?console.error("Trying to connect, but already connected"):(P(this,U,!1),this.fetcher=setInterval(this._fetchSteps.bind(this),50),document.addEventListener("visibilitychange",this.visibilitychange.bind(this)))}async _fetchSteps(){if(D(this,F))return;const t=Date.now();D(this,Z)>t-D(this,$)||(this.fetcher?(P(this,F,!0),a.k.debug("[PollingBackend] Fetching steps",D(this,R).version),await D(this,L).sync({version:D(this,R).version}).then(this._handleResponse.bind(this),this._handleError.bind(this)),P(this,Z,Date.now()),P(this,F,!1)):console.error("No inverval but triggered"))}_handleResponse(t){let{data:e}=t;const{document:n,sessions:i}=e;if(P(this,z,0),D(this,R).emit("change",{document:n,sessions:i}),D(this,R)._receiveSteps(e),0===e.steps.length){if(D(this,U)||P(this,U,!0),D(this,R).checkIdle())return;const t=Date.now()-9e4;return i.filter((e=>1e3*e.lastContact>t)).length<2?this.maximumRefetchTimer():this.increaseRefetchTimer(),void D(this,R).emit("stateChange",{initialLoading:!0})}D(this,U)&&this.resetRefetchTimer()}_handleError(t){var e,n;t.response&&"ECONNABORTED"!==t.code?409===t.response.status?(this._handleResponse(t.response),a.k.error("Conflict during file save, please resolve"),D(this,R).emit("error",{type:X.SAVE_COLLISSION,data:{outsideChange:t.response.data.outsideChange}})):403===t.response.status||404===t.response.status?(D(this,R).emit("error",{type:X.SOURCE_NOT_FOUND,data:{}}),this.disconnect()):503===t.response.status?(this.increaseRefetchTimer(),D(this,R).emit("error",{type:X.CONNECTION_FAILED,data:{}}),a.k.error("Failed to fetch steps due to unavailable service",{error:t})):(this.disconnect(),D(this,R).emit("error",{type:X.CONNECTION_FAILED,data:{}}),a.k.error("Failed to fetch steps due to other reason",{error:t})):(P(this,z,(e=D(this,z),n=e++,e)),n>=5?(a.k.error("[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED"),D(this,R).emit("error",{type:X.CONNECTION_FAILED,data:{}})):a.k.error("[PollingBackend:fetchSteps] Network error when fetching steps, retry ".concat(D(this,z))))}disconnect(){clearInterval(this.fetcher),this.fetcher=0,document.removeEventListener("visibilitychange",this.visibilitychange.bind(this))}resetRefetchTimer(){P(this,$,300)}increaseRefetchTimer(){P(this,$,Math.min(2*D(this,$),5e3))}maximumRefetchTimer(){P(this,$,5e3)}visibilitychange(){"hidden"===document.visibilityState?P(this,$,6e4):this.resetRefetchTimer()}};function G(t,e,n){!function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}(t,e),e.set(t,n)}function W(t,e){return function(t,e){if(e.get)return e.get.call(t);return e.value}(t,K(t,e,"get"))}function q(t,e,n){return function(t,e,n){if(e.set)e.set.call(t,n);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=n}}(t,K(t,e,"set"),n),n}function K(t,e,n){if(!e.has(t))throw new TypeError("attempted to "+n+" private field on non-instance");return e.get(t)}const V=1440,Y=60,Q=90,X={SAVE_COLLISSION:0,PUSH_FAILURE:1,LOAD_ERROR:2,CONNECTION_FAILED:3,SOURCE_NOT_FOUND:4};var J=new WeakMap;class tt{constructor(t){let{serialize:e,getDocumentState:n,...r}=t;return G(this,J,{writable:!0,value:void 0}),this._bus=(0,i.Z)(),this.serialize=e,this.getDocumentState=n,this._api=new B(r),this.connection=null,this.sessions=[],this.steps=[],this.stepClientIDs=[],this.lastStepPush=Date.now(),this.version=null,this.sending=!1,q(this,J,null),this.autosave=o()(this._autosave.bind(this),3e4),this}async open(t){let{fileId:e,initialSession:n}=t;const i=t=>{let{sessions:e}=t;this.sessions=e};this.on("change",i);const r=n?Promise.resolve(new M({data:n},{})):this._api.open({fileId:e}).catch((t=>this._emitError(t)));this.connection=await r,this.connection?(this.backend=new H(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",i)}startSync(){this.backend.connect()}syncUp(){this.backend.resetRefetchTimer()}_emitError(t){t.response&&"ECONNABORTED"!==t.code?this.emit("error",{type:X.LOAD_ERROR,data:t.response}):this.emit("error",{type:X.CONNECTION_FAILED,data:{}})}updateSession(t){if(this.connection.isPublic)return this.connection.update(t).catch((t=>(a.k.error("Failed to update the session",{error:t}),Promise.reject(t))))}sendSteps(t){if(!W(this,J))return new Promise(((e,n)=>{q(this,J,setInterval((()=>{this.connection&&!this.sending&&(clearInterval(W(this,J)),q(this,J,null),this._sendSteps(t).then(e).catch(n))}),200))}))}_sendSteps(t){this.sending=!0;const e=t();return e.steps.length>0&&this.emit("stateChange",{dirty:!0}),this.connection.push(e).then((t=>{this.sending=!1,this.emit("sync",{steps:[],document:this.connection.document,version:this.version})})).catch((t=>{const{response:n,code:i}=t;var r;(this.sending=!1,n&&"ECONNABORTED"!==i||this.emit("error",{type:X.CONNECTION_FAILED,data:{}}),403===(null==n?void 0:n.status))&&(e.document||a.k.error("failed to write to document - not allowed"),(null===(r=n.data.document)||void 0===r?void 0:r.currentVersion)===this.version&&(this.emit("error",{type:X.PUSH_FAILURE,data:{}}),OC.Notification.showTemporary("Changes could not be sent yet")));throw new Error("Failed to apply steps. Retry!",{cause:t})}))}_receiveSteps(t){let{steps:e,document:n,sessions:i}=t;const r=i.filter((t=>t.lastContact>Math.floor(Date.now()/1e3)-Q)).filter((t=>t.lastAwarenessMessage)).map((t=>({step:t.lastAwarenessMessage,clientId:t.clientId}))),o=[...r];this.steps=[...this.steps,...r.map((t=>t.step))];for(let t=0;t{this.steps.push(n),o.push({step:n,clientID:e[t].sessionId})})):a.k.error("Invalid step data, skipping step",{step:e[t]})}this.lastStepPush=Date.now(),this.emit("sync",{steps:o,document:this.connection.document,version:this.version})}checkIdle(){return(Date.now()-this.lastStepPush)/1e3/60>V&&(a.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:t=!1,manualSave:e=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a.k.debug("[SyncService] saving",arguments[0]);try{const n=await this.connection.save({version:this.version,autosaveContent:this._getContent(),documentState:this.getDocumentState(),force:t,manualSave:e});this.emit("stateChange",{dirty:!1}),this.connection.document.lastSavedVersionTime=Date.now()/1e3,a.k.debug("[SyncService] saved",n);const{document:i,sessions:r}=n.data;this.emit("save",{document:i,sessions:r}),this.autosave.clear()}catch(t){a.k.error("Failed to save document.",{error:t})}}forceSave(){return this.save({force:!0})}_autosave(){return this.save({manualSave:!1})}async close(){var t;return this.autosave.clear(),null===(t=this.backend)||void 0===t||t.disconnect(),this._close()}_close(){return null===this.connection?Promise.resolve():(this.backend.disconnect(),this.connection.close())}uploadAttachment(t){return this.connection.uploadAttachment(t)}insertAttachmentFile(t){return this.connection.insertAttachmentFile(t)}on(t,e){return this._bus.on(t,e),this}off(t,e){return this._bus.off(t,e),this}emit(t,e){this._bus.emit(t,e)}}},25030:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m,D:()=>g});var i=n(20144),r=n(20629),o=n(62556);const a="SET_VIEW_WIDTH",s="SET_SHOW_AUTHOR_ANNOTATIONS",l="SET_CURRENT_SESSION",c="SET_HEADINGS";var d=n(20296),h=n.n(d);const A=()=>document.documentElement.clientWidth,p=t=>{let{commit:e}=t;const n=h()((()=>{e("text/".concat(a),A())}),100);window.addEventListener("resize",n)},u=(0,o.getBuilder)("text").persist().build();i.default.use(r.ZP);const g={state:{showAuthorAnnotations:"true"===u.getItem("showAuthorAnnotations"),currentSession:u.getItem("currentSession"),viewWidth:A(),headings:Object.freeze([])},mutations:{[a](t,e){t.viewWidth=e},[s](t,e){t.showAuthorAnnotations=e,u.setItem("showAuthorAnnotations",""+e)},[l](t,e){t.currentSession=e,u.setItem("currentSession",e)},[c](t,e){if(t.headings.length!==e.length)return void(t.headings=Object.freeze(e));const n=t.headings,i=e.map(((t,e)=>{const i=n[e].level;return Object.freeze({...t,previous:i})}));t.headings=Object.freeze(i)}},actions:{setShowAuthorAnnotations(t,e){let{commit:n}=t;n(s,e)},setCurrentSession(t,e){let{commit:n}=t;n(l,e)},setHeadings(t,e){let{commit:n}=t;n(c,e)}}},m=new r.yh({plugins:[p],modules:{text:{namespaced:!0,...g}}})},97646:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},12866:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},75326:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},68222:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".modal-container .text-editor[data-v-db9ed85e]{top:0;height:calc(100vh - var(--header-height))}.text-editor[data-v-db9ed85e]{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-db9ed85e]{height:calc(100% - 50px)}#body-public[data-v-db9ed85e]{height:auto}#files-public-content .text-editor[data-v-db9ed85e]{top:0;width:100%}#files-public-content .text-editor .text-editor__main[data-v-db9ed85e]{overflow:auto;z-index:20}#files-public-content .text-editor .has-conflicts .text-editor__main[data-v-db9ed85e]{padding-top:0}.menubar-placeholder[data-v-db9ed85e],.text-editor--readonly-bar[data-v-db9ed85e]{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-db9ed85e],.menubar-placeholder--with-slot[data-v-db9ed85e]{opacity:unset;visibility:unset;z-index:50;max-width:var(--text-editor-max-width);margin:auto;width:100%;background-color:var(--color-main-background)}","",{version:3,sources:["webpack://./src/components/Editor.vue"],names:[],mappings:"AACA,+CACC,KAAA,CACA,yCAAA,CAGD,8BACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CACA,MAAA,CACA,aAAA,CACA,iBAAA,CACA,6CAAA,CAGD,kEACC,wBAAA,CAGD,8BACC,WAAA,CAIA,oDACC,KAAA,CACA,UAAA,CAEA,uEACC,aAAA,CACA,UAAA,CAED,sFACC,aAAA,CAKH,kFAEC,cAAA,CACA,uBAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CAGD,6FAEC,aAAA,CACA,gBAAA,CAEA,UAAA,CACA,sCAAA,CACA,WAAA,CACA,UAAA,CACA,6CAAA",sourcesContent:["\n.modal-container .text-editor {\n\ttop: 0;\n\theight: calc(100vh - var(--header-height));\n}\n\n.text-editor {\n\tdisplay: block;\n\twidth: 100%;\n\tmax-width: 100%;\n\theight: 100%;\n\tleft: 0;\n\tmargin: 0 auto;\n\tposition: relative;\n\tbackground-color: var(--color-main-background);\n}\n\n.text-editor .text-editor__wrapper.has-conflicts {\n\theight: calc(100% - 50px);\n}\n\n#body-public {\n\theight: auto;\n}\n\n#files-public-content {\n\t.text-editor {\n\t\ttop: 0;\n\t\twidth: 100%;\n\n\t\t.text-editor__main {\n\t\t\toverflow: auto;\n\t\t\tz-index: 20;\n\t\t}\n\t\t.has-conflicts .text-editor__main {\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n}\n\n.menubar-placeholder,\n.text-editor--readonly-bar {\n\tposition: fixed;\n\tposition: -webkit-sticky;\n\tposition: sticky;\n\ttop: 0;\n\topacity: 0;\n\tvisibility: hidden;\n\theight: 44px; // important for mobile so that the buttons are always inside the container\n\tpadding-top:3px;\n\tpadding-bottom: 3px;\n}\n\n.text-editor--readonly-bar,\n.menubar-placeholder--with-slot {\n\topacity: unset;\n\tvisibility: unset;\n\n\tz-index: 50;\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\twidth: 100%;\n\tbackground-color: var(--color-main-background);\n}\n"],sourceRoot:""}]);const s=a},70449:(t,e,n)=>{"use strict";n.d(e,{Z:()=>A});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=a()(r()),h=l()(c);d.push([t.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 ul[data-type=taskList]{margin-left:1px}.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;left:9px}.text-editor__wrapper div.ProseMirror .checkbox-item.checked:before{background-image:url('+h+');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);margin-left:9px}.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 .paragraph-content{margin-bottom:.5em}.text-editor__wrapper div.ProseMirror ul,.text-editor__wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}.text-editor__wrapper div.ProseMirror ul>li{list-style-type:disc}.text-editor__wrapper div.ProseMirror li ul>li{list-style-type:circle}.text-editor__wrapper div.ProseMirror li li ul>li{list-style-type:square}.text-editor__wrapper div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}.text-editor__wrapper div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}.text-editor__wrapper div.ProseMirror table+*{margin-top:1em}.text-editor__wrapper div.ProseMirror table td,.text-editor__wrapper div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}.text-editor__wrapper div.ProseMirror table td:first-child,.text-editor__wrapper div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}.text-editor__wrapper div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}.text-editor__wrapper div.ProseMirror table th>div{display:flex}.text-editor__wrapper div.ProseMirror table tr{background-color:var(--table-color-background)}.text-editor__wrapper div.ProseMirror table tr:hover,.text-editor__wrapper div.ProseMirror table tr:active,.text-editor__wrapper div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}.text-editor__wrapper div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.text-editor__wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}.text-editor__wrapper .editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.text-editor__wrapper .editor__content{tab-size:4}.text-editor__wrapper .ProseMirror pre{background-color:var(--color-main-background)}.text-editor__wrapper .ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}.text-editor__wrapper .ProseMirror pre code .hljs-comment,.text-editor__wrapper .ProseMirror pre code .hljs-quote{color:#999}.text-editor__wrapper .ProseMirror pre code .hljs-variable,.text-editor__wrapper .ProseMirror pre code .hljs-template-variable,.text-editor__wrapper .ProseMirror pre code .hljs-attribute,.text-editor__wrapper .ProseMirror pre code .hljs-tag,.text-editor__wrapper .ProseMirror pre code .hljs-name,.text-editor__wrapper .ProseMirror pre code .hljs-regexp,.text-editor__wrapper .ProseMirror pre code .hljs-link,.text-editor__wrapper .ProseMirror pre code .hljs-selector-id,.text-editor__wrapper .ProseMirror pre code .hljs-selector-class{color:#f2777a}.text-editor__wrapper .ProseMirror pre code .hljs-number,.text-editor__wrapper .ProseMirror pre code .hljs-meta,.text-editor__wrapper .ProseMirror pre code .hljs-built_in,.text-editor__wrapper .ProseMirror pre code .hljs-builtin-name,.text-editor__wrapper .ProseMirror pre code .hljs-literal,.text-editor__wrapper .ProseMirror pre code .hljs-type,.text-editor__wrapper .ProseMirror pre code .hljs-params{color:#f99157}.text-editor__wrapper .ProseMirror pre code .hljs-string,.text-editor__wrapper .ProseMirror pre code .hljs-symbol,.text-editor__wrapper .ProseMirror pre code .hljs-bullet{color:#9c9}.text-editor__wrapper .ProseMirror pre code .hljs-title,.text-editor__wrapper .ProseMirror pre code .hljs-section{color:#fc6}.text-editor__wrapper .ProseMirror pre code .hljs-keyword,.text-editor__wrapper .ProseMirror pre code .hljs-selector-tag{color:#69c}.text-editor__wrapper .ProseMirror pre code .hljs-emphasis{font-style:italic}.text-editor__wrapper .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}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid #0d0d0d;border-right:1px solid #0d0d0d;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-style:normal;font-weight:600;line-height:normal;user-select:none;color:#0d0d0d;padding:.1rem .3rem;border-radius:3px 3px 3px 0;white-space:nowrap;opacity:0}.collaboration-cursor__label.collaboration-cursor__label__active{opacity:1}.collaboration-cursor__label:not(.collaboration-cursor__label__active){transition:opacity .2s 5s}',"",{version:3,sources:["webpack://./src/css/style.scss","webpack://./src/css/print.scss","webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,8CAEC,sBAAA,CAGD,oPAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,4XACC,sBAAA,CAGD,wjBACC,0BAAA,CAIF,6DACC,eAAA,CAGD,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,CACA,QAAA,CAGA,oEACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,mEACC,mCAAA,CACA,4BAAA,CAGF,2DACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,8DACC,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,8CACC,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,CC9SC,uCACC,6CAAA,CAEA,+CACC,2BAAA,CACA,wBAAA,CACA,aAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAGA,kHAEC,UAAA,CAED,uhBASC,aAAA,CAED,oZAOC,aAAA,CAED,2KAGC,UAAA,CAED,kHAEC,UAAA,CAED,yHAEC,UAAA,CAED,2DACC,iBAAA,CAED,yDACC,eAAA,CAQH,qDACC,mDAAA,CAED,uEACC,iBAAA,CAKH,4CACC,SAAA,CAGD,qDACC,SAAA,CACA,uEACC,eAAA,CACA,gBAAA,CACA,gBAAA,CAIF,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,CACA,SAAA,CAEA,iEACC,SAAA,CAGD,uEACC,yBAAA",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\tul[data-type=taskList] {\n\t\tmargin-left: 1px;\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\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\tleft: 9px;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\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\tmargin-left: 9px;\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 .paragraph-content {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t&+ * {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n","\n@import './../css/style';\n@import './../css/print';\n\n.text-editor__wrapper {\n\t@import './../css/prosemirror';\n\n\t.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@keyframes spin {\n\t0% { transform: rotate(0deg); }\n\t100% { transform: rotate(360deg); }\n}\n\n/* Give a remote user a caret */\n.collaboration-cursor__caret {\n\tposition: relative;\n\tmargin-left: -1px;\n\tmargin-right: -1px;\n\tborder-left: 1px solid #0D0D0D;\n\tborder-right: 1px solid #0D0D0D;\n\tword-break: normal;\n\tpointer-events: none;\n}\n\n/* Render the username above the caret */\n.collaboration-cursor__label {\n\tposition: absolute;\n\ttop: -1.4em;\n\tleft: -1px;\n\tfont-size: 12px;\n\tfont-style: normal;\n\tfont-weight: 600;\n\tline-height: normal;\n\tuser-select: none;\n\tcolor: #0D0D0D;\n\tpadding: 0.1rem 0.3rem;\n\tborder-radius: 3px 3px 3px 0;\n\twhite-space: nowrap;\n\topacity: 0;\n\n\t&.collaboration-cursor__label__active {\n\t\topacity: 1;\n\t}\n\n\t&:not(.collaboration-cursor__label__active) {\n\t\ttransition: opacity 0.2s 5s;\n\t}\n}\n"],sourceRoot:""}]);const A=d},50706:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".editor__content[data-v-9114a8c6]{max-width:min(var(--text-editor-max-width),100vw - 16px);margin:auto;position:relative;width:100%}.ie .editor__content[data-v-9114a8c6] .ProseMirror{padding-top:50px}.text-editor__content-wrapper[data-v-9114a8c6]{--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-9114a8c6]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-9114a8c6],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-9114a8c6]{height:100%;position:relative}.is-rich-workspace .text-editor__content-wrapper[data-v-9114a8c6]{--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-9114a8c6],.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-9114a8c6]{display:none}","",{version:3,sources:["webpack://./src/components/Editor/ContentContainer.vue"],names:[],mappings:"AACA,kCACC,wDAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAIA,mDACC,gBAAA,CAIF,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA,CAKD,kEACC,0CAAA,CACA,4CAAA,CACA,6MAEC,YAAA",sourcesContent:["\n.editor__content {\n\tmax-width: min(var(--text-editor-max-width), calc(100vw - 16px));\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.ie {\n\t.editor__content:deep(.ProseMirror) {\n\t\tpadding-top: 50px;\n\t}\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n}\n\n.is-rich-workspace {\n\t.text-editor__content-wrapper {\n\t\t--side-width: var(--text-editor-max-width);\n\t\tgrid-template-columns: var(--side-width) auto;\n\t\t.text-editor__content-wrapper__left,\n\t\t.text-editor__content-wrapper__right {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=a},25706:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".document-status[data-v-d078272a]{position:sticky;top:0;z-index:10000;max-height:50px;background-color:var(--color-main-background)}.document-status .msg[data-v-d078272a]{padding:12px;background-position:8px center;color:var(--color-text-maxcontrast)}.document-status .msg.icon-error[data-v-d078272a]{padding-left:30px}.document-status .msg .button[data-v-d078272a]{margin-left:8px}.document-status .msg.msg-locked .lock-icon[data-v-d078272a]{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=a},30764:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},16104:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},94746:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".text-editor__session-list[data-v-6a99e70d]{display:flex}.text-editor__session-list input[data-v-6a99e70d],.text-editor__session-list div[data-v-6a99e70d]{vertical-align:middle;margin-left:3px}.save-status[data-v-6a99e70d]{border-radius:50%;color:var(--color-text-lighter);display:inline-flex;justify-content:center;padding:0;height:44px;width:44px}.save-status[data-v-6a99e70d]:hover{background-color:var(--color-background-hover)}.last-saved[data-v-6a99e70d]{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=a},94794:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},68395:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".text-editor__wrapper[data-v-55273a24]{display:flex;width:100%;height:100%}.text-editor__wrapper.show-color-annotations[data-v-55273a24] .author-annotation{padding-top:2px;padding-bottom:2px}.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .author-annotation,.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .image{background-color:rgba(0,0,0,0) !important}.text-editor__wrapper .ProseMirror[data-v-55273a24]{margin-top:0 !important}","",{version:3,sources:["webpack://./src/components/Editor/Wrapper.vue"],names:[],mappings:"AAEA,uCACC,YAAA,CACA,UAAA,CACA,WAAA,CAEA,iFACC,eAAA,CACA,kBAAA,CAGD,kKAEC,yCAAA,CAGD,oDACC,uBAAA",sourcesContent:["\n\n.text-editor__wrapper {\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\n\t&.show-color-annotations:deep(.author-annotation) {\n\t\tpadding-top: 2px;\n\t\tpadding-bottom: 2px;\n\t}\n\n\t&:not(.show-color-annotations):deep(.author-annotation),\n\t&:not(.show-color-annotations):deep(.image) {\n\t\tbackground-color: transparent !important;\n\t}\n\n\t.ProseMirror {\n\t\tmargin-top: 0 !important;\n\t}\n}\n\n"],sourceRoot:""}]);const s=a},6509:(t,e,n)=>{"use strict";n.d(e,{Z:()=>A});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=a()(r()),h=l()(c);d.push([t.id,'[data-v-d89e53d0] .modal-wrapper .modal-container{width:max-content;padding:30px 40px 20px;user-select:text}@media only screen and (max-width: 512px){[data-v-d89e53d0] .modal-wrapper .modal-container{width:inherit;padding:10px 0}}table[data-v-d89e53d0]{margin-top:24px;border-collapse:collapse}table tbody tr[data-v-d89e53d0]:hover,table tbody tr[data-v-d89e53d0]:focus,table tbody tr[data-v-d89e53d0]:active{background-color:rgba(0,0,0,0) !important}table thead tr[data-v-d89e53d0]{border:none}table th[data-v-d89e53d0]{font-weight:bold;padding:.75rem 1rem .75rem 0;border-bottom:2px solid var(--color-background-darker)}table td[data-v-d89e53d0]{padding:.75rem 1rem .75rem 0;border-top:1px solid var(--color-background-dark);border-bottom:unset}table td.noborder[data-v-d89e53d0]{border-top:unset}table td.ellipsis_top[data-v-d89e53d0]{padding-bottom:0}table td.ellipsis[data-v-d89e53d0]{padding-top:0;padding-bottom:0}table td.ellipsis_bottom[data-v-d89e53d0]{padding-top:0}table kbd[data-v-d89e53d0]{font-size:smaller}table code[data-v-d89e53d0]{padding:.2em .4em;font-size:90%;background-color:var(--color-background-dark);border-radius:6px}div.ProseMirror[data-v-d89e53d0]{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-d89e53d0] :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true][data-v-d89e53d0],div.ProseMirror[contenteditable=false][data-v-d89e53d0],div.ProseMirror [contenteditable=true][data-v-d89e53d0],div.ProseMirror [contenteditable=false][data-v-d89e53d0]{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-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false][data-v-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true][data-v-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false][data-v-d89e53d0]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true][data-v-d89e53d0]:focus,div.ProseMirror[contenteditable=true][data-v-d89e53d0]:focus-visible,div.ProseMirror[contenteditable=false][data-v-d89e53d0]:focus,div.ProseMirror[contenteditable=false][data-v-d89e53d0]:focus-visible,div.ProseMirror [contenteditable=true][data-v-d89e53d0]:focus,div.ProseMirror [contenteditable=true][data-v-d89e53d0]:focus-visible,div.ProseMirror [contenteditable=false][data-v-d89e53d0]:focus,div.ProseMirror [contenteditable=false][data-v-d89e53d0]:focus-visible{box-shadow:none !important}div.ProseMirror ul[data-type=taskList][data-v-d89e53d0]{margin-left:1px}div.ProseMirror .checkbox-item[data-v-d89e53d0]{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox][data-v-d89e53d0]{display:none}div.ProseMirror .checkbox-item[data-v-d89e53d0]: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;left:9px}div.ProseMirror .checkbox-item.checked[data-v-d89e53d0]:before{background-image:url('+h+');background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label[data-v-d89e53d0]{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label[data-v-d89e53d0]{display:block;flex-grow:1;max-width:calc(100% - 28px);margin-left:9px}div.ProseMirror>*[data-v-d89e53d0]:first-child{margin-top:10px}div.ProseMirror>h1[data-v-d89e53d0]:first-child,div.ProseMirror h2[data-v-d89e53d0]:first-child,div.ProseMirror h3[data-v-d89e53d0]:first-child,div.ProseMirror h4[data-v-d89e53d0]:first-child,div.ProseMirror h5[data-v-d89e53d0]:first-child,div.ProseMirror h6[data-v-d89e53d0]:first-child{margin-top:0}div.ProseMirror a[data-v-d89e53d0]{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content[data-v-d89e53d0]{margin-bottom:1em;line-height:150%}div.ProseMirror em[data-v-d89e53d0]{font-style:italic}div.ProseMirror h1[data-v-d89e53d0],div.ProseMirror h2[data-v-d89e53d0],div.ProseMirror h3[data-v-d89e53d0],div.ProseMirror h4[data-v-d89e53d0],div.ProseMirror h5[data-v-d89e53d0],div.ProseMirror h6[data-v-d89e53d0]{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1[data-v-d89e53d0]{font-size:36px}div.ProseMirror h2[data-v-d89e53d0]{font-size:30px}div.ProseMirror h3[data-v-d89e53d0]{font-size:24px}div.ProseMirror h4[data-v-d89e53d0]{font-size:21px}div.ProseMirror h5[data-v-d89e53d0]{font-size:17px}div.ProseMirror h6[data-v-d89e53d0]{font-size:14px}div.ProseMirror img[data-v-d89e53d0]{cursor:default;max-width:100%}div.ProseMirror hr[data-v-d89e53d0]{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr[data-v-d89e53d0]:after{content:"";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre[data-v-d89e53d0]{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-d89e53d0]{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter[data-v-d89e53d0]::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code[data-v-d89e53d0]{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li[data-v-d89e53d0]{position:relative;padding-left:3px}div.ProseMirror li p .paragraph-content[data-v-d89e53d0]{margin-bottom:.5em}div.ProseMirror ul[data-v-d89e53d0],div.ProseMirror ol[data-v-d89e53d0]{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li[data-v-d89e53d0]{list-style-type:disc}div.ProseMirror li ul>li[data-v-d89e53d0]{list-style-type:circle}div.ProseMirror li li ul>li[data-v-d89e53d0]{list-style-type:square}div.ProseMirror blockquote[data-v-d89e53d0]{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-d89e53d0]{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*[data-v-d89e53d0]{margin-top:1em}div.ProseMirror table td[data-v-d89e53d0],div.ProseMirror table th[data-v-d89e53d0]{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td[data-v-d89e53d0]:first-child,div.ProseMirror table th[data-v-d89e53d0]:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td[data-v-d89e53d0]{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th[data-v-d89e53d0]{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-d89e53d0]{display:flex}div.ProseMirror table tr[data-v-d89e53d0]{background-color:var(--table-color-background)}div.ProseMirror table tr[data-v-d89e53d0]:hover,div.ProseMirror table tr[data-v-d89e53d0]:active,div.ProseMirror table tr[data-v-d89e53d0]:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th[data-v-d89e53d0]:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th[data-v-d89e53d0]:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-d89e53d0]:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-d89e53d0]:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor[data-v-d89e53d0]{display:block}.editor__content p.is-empty[data-v-d89e53d0]:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content[data-v-d89e53d0]{tab-size:4}div.ProseMirror[data-v-d89e53d0]{display:inline;margin-top:unset;position:unset;padding:unset;line-height:unset}div.ProseMirror h1[data-v-d89e53d0],div.ProseMirror h6[data-v-d89e53d0]{display:inline;padding:0;margin:0}',"",{version:3,sources:["webpack://./src/components/HelpModal.vue","webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,yCAEC,sBAAA,CAGD,gOAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,wWACC,sBAAA,CAGD,ghBACC,0BAAA,CAIF,wDACC,eAAA,CAGD,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,CACA,QAAA,CAGA,+DACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,8DACC,mCAAA,CACA,4BAAA,CAGF,sDACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,yDACC,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,yCACC,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,CD5OD,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\tul[data-type=taskList] {\n\t\tmargin-left: 1px;\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\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\tleft: 9px;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\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\tmargin-left: 9px;\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 .paragraph-content {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t&+ * {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n"],sourceRoot:""}]);const A=d},15628:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".modal__content[data-v-313fc12e]{height:80vh;padding:0 50px;display:flex;justify-content:center}.modal__content img[data-v-313fc12e]{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=a},38304:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},33122:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".text-menubar[data-v-65defacb]{--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-65defacb]:not(.text-menubar--autohide){visibility:visible;animation-name:fadeInDown;animation-duration:.3s}.text-menubar.text-menubar--autohide[data-v-65defacb]{opacity:0;transition:visibility .2s .4s,opacity .2s .4s}.text-menubar.text-menubar--autohide.text-menubar--show[data-v-65defacb]{visibility:visible;opacity:1}.text-menubar .text-menubar__entries[data-v-65defacb]{display:flex;flex-grow:1;margin-left:max(0px,(100% - var(--text-editor-max-width))/2)}.text-menubar .text-menubar__slot[data-v-65defacb]{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-65defacb]{margin-left:0}@media(max-width: 660px){.text-menubar .text-menubar__entries[data-v-65defacb]{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=a},38061:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".translate-dialog[data-v-1b752fba]{margin:24px}.translate-dialog .wrapper[data-v-1b752fba]{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:16px;margin-top:calc(var(--default-grid-baseline)*6)}.translate-dialog .wrapper .language-selector[data-v-1b752fba]{font-weight:bold;flex-wrap:wrap;gap:var(--default-grid-baseline)}.translate-dialog .wrapper .col[data-v-1b752fba]{grid-row:1/2}textarea[data-v-1b752fba]{display:block;width:100%;margin-bottom:12px;height:auto;resize:none;box-sizing:border-box;overflow-y:auto;max-height:58vh}@media(max-width: 670px){.translate-dialog .wrapper[data-v-1b752fba]{display:block}.translate-dialog .language-selector .select[data-v-1b752fba]{width:100%}textarea[data-v-1b752fba]{max-height:20vh}label[for=fromLanguage][data-v-1b752fba],label[for=toLanguage][data-v-1b752fba]{display:none}}.language-selector[data-v-1b752fba]{display:flex;align-items:center;margin-bottom:12px}.language-selector label[data-v-1b752fba]{flex-grow:1}.translate-actions[data-v-1b752fba]{display:flex;justify-content:flex-end}.translate-actions button[data-v-1b752fba]{margin-left:12px}","",{version:3,sources:["webpack://./src/components/Modal/Translate.vue"],names:[],mappings:"AACA,mCACC,WAAA,CAEA,4CACC,YAAA,CACA,2DAAA,CACA,oBAAA,CACA,+CAAA,CAEA,+DACC,gBAAA,CACA,cAAA,CACA,gCAAA,CAGD,iDACC,YAAA,CAKH,0BACC,aAAA,CACA,UAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CAGD,yBAEE,4CACC,aAAA,CAIA,8DACC,UAAA,CAKH,0BACC,eAAA,CAIA,gFAEC,YAAA,CAAA,CAKH,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,0CACC,WAAA,CAIF,oCACC,YAAA,CACA,wBAAA,CAEA,2CACC,gBAAA",sourcesContent:['\n.translate-dialog {\n\tmargin: 24px;\n\n\t.wrapper {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n\t\tgrid-column-gap: 16px;\n\t\tmargin-top: calc(var(--default-grid-baseline) * 6);\n\n\t\t.language-selector {\n\t\t\tfont-weight: bold;\n\t\t\tflex-wrap: wrap;\n\t\t\tgap: var(--default-grid-baseline);\n\t\t}\n\n\t\t.col {\n\t\t\tgrid-row: 1/2;\n\t\t}\n\t}\n}\n\ntextarea {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-bottom: 12px;\n\theight: auto;\n\tresize: none;\n\tbox-sizing: border-box;\n\toverflow-y: auto;\n\tmax-height: 58vh;\n}\n\n@media (max-width: 670px) {\n\t.translate-dialog {\n\t\t.wrapper {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.language-selector {\n\t\t\t.select {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\ttextarea {\n\t\tmax-height: 20vh;\n\t}\n\n\tlabel {\n\t\t&[for="fromLanguage"],\n\t\t&[for="toLanguage"] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.language-selector {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: 12px;\n\n\tlabel {\n\t\tflex-grow: 1;\n\t}\n}\n\n.translate-actions {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\n\tbutton {\n\t\tmargin-left: 12px;\n\t}\n}\n'],sourceRoot:""}]);const s=a},655:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},44773:(t,e,n)=>{"use strict";n.d(e,{Z:()=>A});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o),s=n(61667),l=n.n(s),c=new URL(n(64989),n.b),d=a()(r()),h=l()(c);d.push([t.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 ul[data-type=taskList]{margin-left:1px}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;left:9px}div.ProseMirror .checkbox-item.checked:before{background-image:url('+h+');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);margin-left:9px}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 .paragraph-content{margin-bottom:.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li{list-style-type:disc}div.ProseMirror li ul>li{list-style-type:circle}div.ProseMirror li li ul>li{list-style-type:square}div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*{margin-top:1em}div.ProseMirror table td,div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td:first-child,div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div{display:flex}div.ProseMirror table tr{background-color:var(--table-color-background)}div.ProseMirror table tr:hover,div.ProseMirror table tr:active,div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content{tab-size:4}@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://./src/css/prosemirror.scss","webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,wBAEC,sBAAA,CAGD,4JAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,oSACC,sBAAA,CAGD,wYACC,0BAAA,CAIF,uCACC,eAAA,CAGD,+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,CACA,QAAA,CAGA,8CACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,6CACC,mCAAA,CACA,4BAAA,CAGF,qCACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,wCACC,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,wBACC,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,CCtTD,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\tul[data-type=taskList] {\n\t\tmargin-left: 1px;\n\t}\n\n\t.checkbox-item {\n\t\tdisplay: flex;\n\t\talign-items: start;\n\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\tleft: 9px;\n\t\t}\n\t\t&.checked{\n\t\t\t&:before {\n\t\t\t\tbackground-image: url('../../img/checkbox-mark.svg');\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t\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\tmargin-left: 9px;\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 .paragraph-content {\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul > li {\n\t\tlist-style-type: disc;\n\t}\n\n\t// Second-level list entries\n\tli ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\t// Third-level and further down list entries\n\tli li ul > li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t// table variables\n\t--table-color-border: var(--color-border);\n\t--table-color-heading: var(--color-text-maxcontrast);\n\t--table-color-heading-border: var(--color-border-dark);\n\t--table-color-background: var(--color-main-background);\n\t--table-color-background-hover: var(--color-primary-element-light);\n\t--table-border-radius: var(--border-radius);\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\twidth: calc(100% - 50px);\n\t\ttable-layout: auto;\n\t\twhite-space: normal; // force text to wrapping\n\t\tmargin-bottom: 1em;\n\t\t&+ * {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\n\t\ttd, th {\n\t\t\tborder: 1px solid var(--table-color-border);\n\t\t\tborder-left: 0;\n\t\t\tvertical-align: top;\n\t\t\tmax-width: 100%;\n\t\t\t&:first-child {\n\t\t\t\tborder-left: 1px solid var(--table-color-border);\n\t\t\t}\n\t\t}\n\t\ttd {\n\t\t\tpadding: 0.5em 0.75em;\n\t\t\tborder-top: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t\tth {\n\t\t\tpadding: 0 0 0 0.75em;\n\t\t\tfont-weight: normal;\n\t\t\tborder-bottom-color: var(--table-color-heading-border);\n\t\t\tcolor: var(--table-color-heading);\n\n\t\t\t& > div {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\t\ttr {\n\t\t\tbackground-color: var(--table-color-background);\n\t\t\t&:hover, &:active, &:focus {\n\t\t\t\tbackground-color: var(--table-color-background-hover);\n\t\t\t}\n\t\t}\n\n\t\ttr:first-child {\n\t\t\tth:first-child { border-top-left-radius: var(--table-border-radius); }\n\t\t\tth:last-child { border-top-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t\ttr:last-child {\n\t\t\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\n\t\t\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\n\t\t}\n\n\t}\n\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n\tdisplay: block;\n}\n\n.editor__content p.is-empty:first-child::before {\n\tcontent: attr(data-placeholder);\n\tfloat: left;\n\tcolor: var(--color-text-maxcontrast);\n\tpointer-events: none;\n\theight: 0;\n}\n\n.editor__content {\n\ttab-size: 4;\n}\n","@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 A=d},38506:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".placeholder-main[data-v-5a5c7130]{max-width:670px;position:relative;margin-bottom:auto;z-index:1}.placeholder-main-text[data-v-5a5c7130]{margin:50px auto 0;width:100%}#rich-workspace .placeholder-main-text[data-v-5a5c7130]{margin:40px 0 0}.placeholder-list[data-v-5a5c7130]{position:absolute;transform:translateZ(0)}.placeholder-list-regular[data-v-5a5c7130]{animation:pulse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-list-reverse[data-v-5a5c7130]{animation:pulse-reverse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-gradient[data-v-5a5c7130]{position:fixed;height:0;width:0;z-index:-1}.text-placeholder[data-v-5a5c7130]{width:min(670px,100vw);height:6em;margin:8px auto;padding:4px 8px 0 14px;display:block}.text-placeholder-line-one[data-v-5a5c7130],.text-placeholder-line-two[data-v-5a5c7130],.text-placeholder-line-three[data-v-5a5c7130],.text-placeholder-line-four[data-v-5a5c7130]{width:670px;height:1em}.text-placeholder-line-one[data-v-5a5c7130]{y:.33em;width:175px}.text-placeholder-line-two[data-v-5a5c7130]{y:1.66em}.text-placeholder-line-three[data-v-5a5c7130]{y:3em}.text-placeholder-line-four[data-v-5a5c7130]{y:4.33em}@keyframes pulse-5a5c7130{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@keyframes pulse-reverse-5a5c7130{0%{opacity:0}50%{opacity:1}100%{opacity:0}}","",{version:3,sources:["webpack://./src/components/SkeletonLoading.vue"],names:[],mappings:"AAIA,mCACC,eAHyB,CAIzB,iBAAA,CACA,kBAAA,CACA,SAAA,CAEA,wCACC,kBAAA,CACA,UAAA,CAIF,wDACC,eAAA,CAGD,mCACC,iBAAA,CACA,uBAAA,CAGD,2CACC,2BAAA,CACA,kCAAA,CACA,gCAAA,CAGD,2CACC,mCAAA,CACA,kCAAA,CACA,gCAAA,CAGD,uCACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,mCACC,sBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,aAAA,CAEA,mLAIC,WAAA,CACA,UAAA,CAGD,4CACC,OAAA,CACA,WAAA,CAGD,4CACC,QAAA,CAGD,8CACC,KAAA,CAGD,6CACC,QAAA,CAIF,0BACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA,CAIF,kCACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA",sourcesContent:["\n$margin: 8px;\n$messages-list-max-width: 670px;\n\n.placeholder-main {\n\tmax-width: $messages-list-max-width;\n\tposition: relative;\n\tmargin-bottom: auto;\n\tz-index: 1;\n\n\t&-text {\n\t\tmargin: 50px auto 0;\n\t\twidth: 100%;\n\t}\n}\n\n#rich-workspace .placeholder-main-text {\n\tmargin: 40px 0 0;\n}\n\n.placeholder-list {\n\tposition: absolute;\n\ttransform: translateZ(0);\n}\n\n.placeholder-list-regular {\n\tanimation: pulse 2s;\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n}\n\n.placeholder-list-reverse {\n\tanimation: pulse-reverse 2s;\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n}\n\n.placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.text-placeholder {\n\twidth: min($messages-list-max-width, 100vw);\n\theight: 6em;\n\tmargin: $margin auto;\n\tpadding: 4px 8px 0 14px;\n\tdisplay: block;\n\n\t&-line-one,\n\t&-line-two,\n\t&-line-three,\n\t&-line-four {\n\t\twidth: 670px;\n\t\theight: 1em;\n\t}\n\n\t&-line-one {\n\t\ty: 0.33em;\n\t\twidth: 175px;\n\t}\n\n\t&-line-two {\n\t\ty: 1.66em;\n\t}\n\n\t&-line-three {\n\t\ty: 3em;\n\t}\n\n\t&-line-four {\n\t\ty: 4.33em;\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes pulse-reverse {\n\t0% {\n\t\topacity: 0;\n\t}\n\t50% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n}\n\n"],sourceRoot:""}]);const s=a},82038:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},59724:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},56315:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o),s=n(61667),l=n.n(s),c=new URL(n(63423),n.b),d=new URL(n(32605),n.b),h=new URL(n(87127),n.b),A=a()(r()),p=l()(c),u=l()(d),g=l()(h);A.push([t.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("+p+")}.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 m=A},56057:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},23782:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},79898:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".callout[data-v-4387ae9f]{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-4387ae9f]{margin-top:.5em}.callout .callout__content[data-v-4387ae9f]{margin-left:1em}.callout .callout__content[data-v-4387ae9f] p:last-child{margin-bottom:0}.callout .callout__icon[data-v-4387ae9f],.callout .callout__icon[data-v-4387ae9f] svg{color:var(--callout-border)}.callout[data-v-4387ae9f],.callout--info[data-v-4387ae9f]{--callout-border: var(--color-info, #006aa3)}.callout--warn[data-v-4387ae9f]{--callout-border: var(--color-warning)}.callout--error[data-v-4387ae9f]{--callout-border: var(--color-error)}.callout--success[data-v-4387ae9f]{--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,4BACC,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=a},86698:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},70235:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},99119:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"[data-v-b95f24a4] div.widgets--list a.widget-default{color:var(--color-main-text);padding:0;text-decoration:none;max-width:calc(100vw - 56px)}[data-v-b95f24a4] .widget-default--details{overflow:hidden}[data-v-b95f24a4] .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,CACA,4BAAA,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\tmax-width: calc(100vw - 56px);\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=a},72546:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},42422:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},44314:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.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=a},29350:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"body{position:fixed;background-color:var(--color-main-background)}#content[class=app-public]{margin:0;margin-top:0}","",{version:3,sources:["webpack://./src/views/DirectEditing.vue"],names:[],mappings:"AACA,KACC,cAAA,CACA,6CAAA,CAGD,2BACC,QAAA,CACA,YAAA",sourcesContent:["\nbody {\n\tposition: fixed;\n\tbackground-color: var(--color-main-background);\n}\n\n#content[class=app-public] {\n\tmargin: 0;\n\tmargin-top: 0;\n}\n"],sourceRoot:""}]);const s="text"==n.j?a:null},8338:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"#direct-editor[data-v-d43914dc]{width:100%;height:100%;position:fixed;overflow:auto}#direct-editor[data-v-d43914dc] .text-editor{height:100%;top:0}#direct-editor[data-v-d43914dc] .text-editor__wrapper div.ProseMirror{margin-top:0}pre[data-v-d43914dc]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-d43914dc]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:rgba(0,0,0,0);opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus,button[data-v-d43914dc]:active{background-color:var(--color-background-dark)}button.is-active[data-v-d43914dc],button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus{opacity:1}","",{version:3,sources:["webpack://./src/views/DirectEditing.vue"],names:[],mappings:"AACA,gCACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CAEA,6CACC,WAAA,CACA,KAAA,CAED,sEACC,YAAA,CAIF,qBACC,UAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CAGD,wBACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,oBAAA,CACA,QAAA,CACA,8BAAA,CACA,UAAA,CACA,4BAAA,CACA,iCAAA,CACA,kBAAA,CACA,2FACC,6CAAA,CAED,8FAGC,SAAA",sourcesContent:["\n#direct-editor {\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\toverflow: auto;\n\n\t&:deep(.text-editor) {\n\t\theight: 100%;\n\t\ttop: 0;\n\t}\n\t&:deep(.text-editor__wrapper div.ProseMirror) {\n\t\tmargin-top: 0;\n\t}\n}\n\npre {\n\twidth: 100%;\n\tmax-width: 700px;\n\tmargin: auto;\n\tbackground-color: var(--color-background-dark);\n}\n\nbutton {\n\twidth: 44px;\n\theight: 44px;\n\tmargin: 0;\n\tbackground-size: 16px;\n\tborder: 0;\n\tbackground-color: transparent;\n\topacity: .5;\n\tcolor: var(--color-main-text);\n\tbackground-position: center center;\n\tvertical-align: top;\n\t&:hover, &:focus, &:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\t&.is-active,\n\t&:hover,\n\t&:focus {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const s="text"==n.j?a:null},28120:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,'#rich-workspace[data-v-5f66ab70]{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-5f66ab70]{min-height:100px}#rich-workspace[data-v-5f66ab70]:only-child{margin-bottom:0}.empty-workspace[data-v-5f66ab70]{cursor:pointer;display:block;padding-top:43px;color:var(--color-text-maxcontrast)}#rich-workspace[data-v-5f66ab70] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-5f66ab70] .text-editor{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-5f66ab70] .text-editor__wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-5f66ab70] .text-editor__main{overflow:visible !important}#rich-workspace[data-v-5f66ab70] .content-wrapper{overflow:scroll !important;max-height:calc(40vh - 50px);padding-left:10px;padding-bottom:10px}#rich-workspace[data-v-5f66ab70] .text-editor__wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-5f66ab70] .editor__content{margin:0}#rich-workspace.focus[data-v-5f66ab70]{max-height:50vh}#rich-workspace[data-v-5f66ab70]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-5f66ab70]:not(.focus):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-5f66ab70]:not(.focus):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-5f66ab70]: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,+DACC,UAAA,CACA,iBAAA,CACA,SAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,iGAAA,CACA,UAAA,CACA,UAAA,CAGD,wDACC,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(.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):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=a},23069:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"\n.action[data-v-b01cbf5e] {\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,\"name\":_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:{\"name\":_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=494a223c&\"\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,\"name\":_vm.actionEntry.label},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.icon,{tag:\"component\",attrs:{\"name\":_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=b01cbf5e&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=b01cbf5e&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=b01cbf5e&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=b01cbf5e&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 \"b01cbf5e\",\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","import { CollaborationCursor as TiptapCollaborationCursor } from '@tiptap/extension-collaboration-cursor'\n\n/**\n * Show cursor for client ID\n * Wait 50ms for cases where the cursor gets re-rendered\n *\n * @param {number} clientId The Yjs client ID\n */\nfunction showCursorLabel(clientId) {\n\tsetTimeout(() => {\n\t\tconst el = document.getElementById(`collaboration-cursor__label__${clientId}`)\n\t\tif (!el) {\n\t\t\treturn\n\t\t}\n\n\t\tel.classList.add('collaboration-cursor__label__active')\n\t\tsetTimeout(() => {\n\t\t\tel?.classList.remove('collaboration-cursor__label__active')\n\t\t}, 50)\n\t}, 50)\n}\n\n/**\n * Unix timestamp in seconds.\n */\nfunction getTimestamp() {\n\treturn Math.floor(Date.now() / 1000)\n}\n\nconst CollaborationCursor = TiptapCollaborationCursor.extend({\n\taddOptions() {\n\t\treturn {\n\t\t\tprovider: null,\n\t\t\tuser: {\n\t\t\t\tname: null,\n\t\t\t\tclientId: null,\n\t\t\t\tcolor: null,\n\t\t\t\tlastUpdate: getTimestamp(),\n\t\t\t},\n\t\t\trender: user => {\n\t\t\t\tconst cursor = document.createElement('span')\n\n\t\t\t\tcursor.classList.add('collaboration-cursor__caret')\n\t\t\t\tcursor.setAttribute('style', `border-color: ${user.color}`)\n\n\t\t\t\tconst label = document.createElement('div')\n\n\t\t\t\tlabel.classList.add('collaboration-cursor__label')\n\t\t\t\tlabel.id = `collaboration-cursor__label__${user.clientId}`\n\t\t\t\tlabel.setAttribute('style', `background-color: ${user.color}`)\n\t\t\t\tlabel.insertBefore(document.createTextNode(user.name), null)\n\t\t\t\tcursor.insertBefore(label, null)\n\n\t\t\t\treturn cursor\n\t\t\t},\n\t\t}\n\t},\n\n\tonCreate() {\n\t\tthis.options.provider.awareness.on('change', ({ added, removed, updated }, origin) => {\n\t\t\tif (origin !== 'local') {\n\t\t\t\tfor (const clientId of [...added, ...updated]) {\n\t\t\t\t\tif (clientId !== this.options.user.clientId) {\n\t\t\t\t\t\tshowCursorLabel(clientId)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\t// Flag own cursor as active on undoable changes to the document state\n\tonTransaction({ transaction }) {\n\t\tconst { updated, meta } = transaction\n\t\tif (updated && (meta.addToHistory ?? true) && !meta.pointer) {\n\t\t\tthis.options.user.lastUpdate = getTimestamp()\n\t\t\tthis.options.provider.awareness.setLocalStateField('user', this.options.user)\n\t\t}\n\t},\n})\n\nexport default CollaborationCursor\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=4387ae9f&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=4387ae9f&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=4387ae9f&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=4387ae9f&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 \"4387ae9f\",\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 TiptapCodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\nimport { defaultMarkdownSerializer } from '@tiptap/pm/markdown'\n\nconst CodeBlock = TiptapCodeBlockLowlight.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=b95f24a4&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=b95f24a4&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=b95f24a4&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=b95f24a4&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 \"b95f24a4\",\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=313fc12e&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=313fc12e&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=313fc12e&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=313fc12e&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 \"313fc12e\",\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\",\"name\":_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: decodeURIComponent(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/${encodeURIComponent(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// Only paste (marked) text into table cells to prevent jumping out of cell\n\t\t\t\t\thandlePaste: (view, event, slice) => {\n\t\t\t\t\t\tif (!this.editor.isActive(this.type.name)) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { state } = view\n\t\t\t\t\t\tconst childNodes = []\n\t\t\t\t\t\tlet newLineAdded = false\n\t\t\t\t\t\tslice.content.descendants((node, pos) => {\n\t\t\t\t\t\t\tif (node.isText) {\n\t\t\t\t\t\t\t\tchildNodes.push(state.schema.text(node.textContent, node.marks))\n\t\t\t\t\t\t\t\tnewLineAdded = false\n\t\t\t\t\t\t\t} else if (!newLineAdded) {\n\t\t\t\t\t\t\t\tchildNodes.push(state.schema.text('\\n'))\n\t\t\t\t\t\t\t\tnewLineAdded = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tconst newNode = state.schema.node('paragraph', [], childNodes)\n\t\t\t\t\t\tslice.content = Fragment.empty.addToStart(newNode)\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'\nimport { lowlight } from 'lowlight'\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.configure({\n\t\t\t\tlowlight,\n\t\t\t}),\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:{'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate },attrs:{\"id\":\"rich-workspace\"}},[(!_vm.loaded || !_vm.ready)?_c('SkeletonLoading'):_vm._e(),_vm._v(\" \"),(_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=5f66ab70&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=5f66ab70&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=5f66ab70&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=5f66ab70&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 \"5f66ab70\",\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 (!OC.appswebroots?.richdocuments && !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 }) {\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})\n\t}\n\n\tsave({ version, autosaveContent, documentState, force, manualSave }) {\n\t\treturn axios.post(this.#url('session/save'), {\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}).then(this._handleResponse.bind(this), this._handleError.bind(this))\n\t\tthis.#lastPoll = Date.now()\n\t\tthis.#pollActive = false\n\t}\n\n\t_handleResponse({ data }) {\n\t\tconst { document, sessions } = data\n\t\tthis.#fetchRetryCounter = 0\n\n\t\tthis.#syncService.emit('change', { document, sessions })\n\t\tthis.#syncService._receiveSteps(data)\n\n\t\tif (data.steps.length === 0) {\n\t\t\tif (!this.#initialLoadingFinished) {\n\t\t\t\tthis.#initialLoadingFinished = true\n\t\t\t}\n\t\t\tif (this.#syncService.checkIdle()) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst disconnect = Date.now() - COLLABORATOR_DISCONNECT_TIME\n\t\t\tconst alive = sessions.filter((s) => s.lastContact * 1000 > disconnect)\n\t\t\tif (alive.length < 2) {\n\t\t\t\tthis.maximumRefetchTimer()\n\t\t\t} else {\n\t\t\t\tthis.increaseRefetchTimer()\n\t\t\t}\n\t\t\tthis.#syncService.emit('stateChange', { initialLoading: true })\n\t\t\treturn\n\t\t}\n\n\t\tif (this.#initialLoadingFinished) {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n\t_handleError(e) {\n\t\tif (!e.response || e.code === 'ECONNABORTED') {\n\t\t\tif (this.#fetchRetryCounter++ >= MAX_RETRY_FETCH_COUNT) {\n\t\t\t\tlogger.error('[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED')\n\t\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\n\t\t\t} else {\n\t\t\t\tlogger.error(`[PollingBackend:fetchSteps] Network error when fetching steps, retry ${this.#fetchRetryCounter}`)\n\t\t\t}\n\t\t} else if (e.response.status === 409) {\n\t\t\t// Still apply the steps to update our version of the document\n\t\t\tthis._handleResponse(e.response)\n\t\t\tlogger.error('Conflict during file save, please resolve')\n\t\t\tthis.#syncService.emit('error', {\n\t\t\t\ttype: ERROR_TYPE.SAVE_COLLISSION,\n\t\t\t\tdata: {\n\t\t\t\t\toutsideChange: e.response.data.outsideChange,\n\t\t\t\t},\n\t\t\t})\n\t\t} else if (e.response.status === 403) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 404) {\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.SOURCE_NOT_FOUND, data: {} })\n\t\t\tthis.disconnect()\n\t\t} else if (e.response.status === 503) {\n\t\t\tthis.increaseRefetchTimer()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\tlogger.error('Failed to fetch steps due to unavailable service', { error: e })\n\t\t} else {\n\t\t\tthis.disconnect()\n\t\t\tthis.#syncService.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\tlogger.error('Failed to fetch steps due to other reason', { error: e })\n\t\t}\n\n\t}\n\n\tdisconnect() {\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = 0\n\t\tdocument.removeEventListener('visibilitychange', this.visibilitychange.bind(this))\n\t}\n\n\tresetRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL\n\n\t}\n\n\tincreaseRefetchTimer() {\n\t\tthis.#fetchInterval = Math.min(this.#fetchInterval * 2, FETCH_INTERVAL_MAX)\n\t}\n\n\tmaximumRefetchTimer() {\n\t\tthis.#fetchInterval = FETCH_INTERVAL_SINGLE_EDITOR\n\t}\n\n\tvisibilitychange() {\n\t\tif (document.visibilityState === 'hidden') {\n\t\t\tthis.#fetchInterval = FETCH_INTERVAL_INVISIBLE\n\t\t} else {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n}\n\nexport default PollingBackend\n","/* eslint-disable jsdoc/valid-types */\n/**\n * @copyright Copyright (c) 2019 Julius Härtl \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\t#sendIntervalId\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\t\tthis.#sendIntervalId = null\n\n\t\tthis.autosave = debounce(this._autosave.bind(this), AUTOSAVE_INTERVAL)\n\n\t\treturn this\n\t}\n\n\tasync open({ fileId, initialSession }) {\n\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\t// If already waiting to send, do nothing.\n\t\tif (this.#sendIntervalId) {\n\t\t\treturn\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.#sendIntervalId = setInterval(() => {\n\t\t\t\tif (this.connection && !this.sending) {\n\t\t\t\t\tclearInterval(this.#sendIntervalId)\n\t\t\t\t\tthis.#sendIntervalId = null\n\t\t\t\t\tthis._sendSteps(getSendable).then(resolve).catch(reject)\n\t\t\t\t}\n\t\t\t}, 200)\n\t\t})\n\t}\n\n\t_sendSteps(getSendable) {\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\tthis.emit('sync', {\n\t\t\t\t\tsteps: [],\n\t\t\t\t\tdocument: this.connection.document,\n\t\t\t\t\tversion: this.version,\n\t\t\t\t})\n\t\t\t}).catch(err => {\n\t\t\t\tconst { response, code } = err\n\t\t\t\tthis.sending = false\n\t\t\t\tif (!response || code === 'ECONNABORTED') {\n\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.CONNECTION_FAILED, data: {} })\n\t\t\t\t}\n\t\t\t\tif (response?.status === 403) {\n\t\t\t\t\tif (!data.document) {\n\t\t\t\t\t\t// either the session is invalid or the document is read only.\n\t\t\t\t\t\tlogger.error('failed to write to document - not allowed')\n\t\t\t\t\t}\n\t\t\t\t\t// Only emit conflict event if we have synced until the latest version\n\t\t\t\t\tif (response.data.document?.currentVersion === this.version) {\n\t\t\t\t\t\tthis.emit('error', { type: ERROR_TYPE.PUSH_FAILURE, data: {} })\n\t\t\t\t\t\tOC.Notification.showTemporary('Changes could not be sent yet')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new Error('Failed to apply steps. Retry!', { cause: err })\n\t\t\t})\n\t}\n\n\t_receiveSteps({ steps, document, sessions }) {\n\t\tconst awareness = sessions\n\t\t\t.filter(s => s.lastContact > (Math.floor(Date.now() / 1000) - COLLABORATOR_DISCONNECT_TIME))\n\t\t\t.filter(s => s.lastAwarenessMessage)\n\t\t\t.map(s => {\n\t\t\t\treturn { step: s.lastAwarenessMessage, clientId: s.clientId }\n\t\t\t})\n\t\tconst newSteps = [...awareness]\n\t\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.save({\n\t\t\t\tversion: this.version,\n\t\t\t\tautosaveContent: this._getContent(),\n\t\t\t\tdocumentState: this.getDocumentState(),\n\t\t\t\tforce,\n\t\t\t\tmanualSave,\n\t\t\t})\n\t\t\tthis.emit('stateChange', { dirty: false })\n\t\t\tthis.connection.document.lastSavedVersionTime = Date.now() / 1000\n\t\t\tlogger.debug('[SyncService] saved', response)\n\t\t\tconst { document, sessions } = response.data\n\t\t\tthis.emit('save', { document, sessions })\n\t\t\tthis.autosave.clear()\n\t\t} catch (e) {\n\t\t\tlogger.error('Failed to save document.', { error: e })\n\t\t}\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\t// Make sure to leave no pending requests behind.\n\t\tthis.autosave.clear()\n\t\tthis.backend?.disconnect()\n\t\treturn this._close()\n\t}\n\n\t_close() {\n\t\tif (this.connection === null) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tthis.backend.disconnect()\n\t\treturn this.connection.close()\n\t}\n\n\tuploadAttachment(file) {\n\t\treturn this.connection.uploadAttachment(file)\n\t}\n\n\tinsertAttachmentFile(filePath) {\n\t\treturn this.connection.insertAttachmentFile(filePath)\n\t}\n\n\ton(event, callback) {\n\t\tthis._bus.on(event, callback)\n\t\treturn this\n\t}\n\n\toff(event, callback) {\n\t\tthis._bus.off(event, callback)\n\t\treturn this\n\t}\n\n\temit(event, data) {\n\t\tthis._bus.emit(event, data)\n\t}\n\n}\n\nexport default SyncService\nexport { SyncService, ERROR_TYPE, IDLE_TIMEOUT, COLLABORATOR_IDLE_TIME, COLLABORATOR_DISCONNECT_TIME }\n","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-db9ed85e]{top:0;height:calc(100vh - var(--header-height))}.text-editor[data-v-db9ed85e]{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-db9ed85e]{height:calc(100% - 50px)}#body-public[data-v-db9ed85e]{height:auto}#files-public-content .text-editor[data-v-db9ed85e]{top:0;width:100%}#files-public-content .text-editor .text-editor__main[data-v-db9ed85e]{overflow:auto;z-index:20}#files-public-content .text-editor .has-conflicts .text-editor__main[data-v-db9ed85e]{padding-top:0}.menubar-placeholder[data-v-db9ed85e],.text-editor--readonly-bar[data-v-db9ed85e]{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-db9ed85e],.menubar-placeholder--with-slot[data-v-db9ed85e]{opacity:unset;visibility:unset;z-index:50;max-width:var(--text-editor-max-width);margin:auto;width:100%;background-color:var(--color-main-background)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,KAAA,CACA,yCAAA,CAGD,8BACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,WAAA,CACA,MAAA,CACA,aAAA,CACA,iBAAA,CACA,6CAAA,CAGD,kEACC,wBAAA,CAGD,8BACC,WAAA,CAIA,oDACC,KAAA,CACA,UAAA,CAEA,uEACC,aAAA,CACA,UAAA,CAED,sFACC,aAAA,CAKH,kFAEC,cAAA,CACA,uBAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CAGD,6FAEC,aAAA,CACA,gBAAA,CAEA,UAAA,CACA,sCAAA,CACA,WAAA,CACA,UAAA,CACA,6CAAA\",\"sourcesContent\":[\"\\n.modal-container .text-editor {\\n\\ttop: 0;\\n\\theight: calc(100vh - var(--header-height));\\n}\\n\\n.text-editor {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmax-width: 100%;\\n\\theight: 100%;\\n\\tleft: 0;\\n\\tmargin: 0 auto;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.text-editor .text-editor__wrapper.has-conflicts {\\n\\theight: calc(100% - 50px);\\n}\\n\\n#body-public {\\n\\theight: auto;\\n}\\n\\n#files-public-content {\\n\\t.text-editor {\\n\\t\\ttop: 0;\\n\\t\\twidth: 100%;\\n\\n\\t\\t.text-editor__main {\\n\\t\\t\\toverflow: auto;\\n\\t\\t\\tz-index: 20;\\n\\t\\t}\\n\\t\\t.has-conflicts .text-editor__main {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.menubar-placeholder,\\n.text-editor--readonly-bar {\\n\\tposition: fixed;\\n\\tposition: -webkit-sticky;\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\topacity: 0;\\n\\tvisibility: hidden;\\n\\theight: 44px; // important for mobile so that the buttons are always inside the container\\n\\tpadding-top:3px;\\n\\tpadding-bottom: 3px;\\n}\\n\\n.text-editor--readonly-bar,\\n.menubar-placeholder--with-slot {\\n\\topacity: unset;\\n\\tvisibility: unset;\\n\\n\\tz-index: 50;\\n\\tmax-width: var(--text-editor-max-width);\\n\\tmargin: auto;\\n\\twidth: 100%;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--text-editor-max-width: 670px }.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 ul[data-type=taskList]{margin-left:1px}.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;left:9px}.text-editor__wrapper div.ProseMirror .checkbox-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}.text-editor__wrapper div.ProseMirror .checkbox-item.checked label{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);margin-left:9px}.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 .paragraph-content{margin-bottom:.5em}.text-editor__wrapper div.ProseMirror ul,.text-editor__wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}.text-editor__wrapper div.ProseMirror ul>li{list-style-type:disc}.text-editor__wrapper div.ProseMirror li ul>li{list-style-type:circle}.text-editor__wrapper div.ProseMirror li li ul>li{list-style-type:square}.text-editor__wrapper div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}.text-editor__wrapper div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}.text-editor__wrapper div.ProseMirror table+*{margin-top:1em}.text-editor__wrapper div.ProseMirror table td,.text-editor__wrapper div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}.text-editor__wrapper div.ProseMirror table td:first-child,.text-editor__wrapper div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}.text-editor__wrapper div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}.text-editor__wrapper div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}.text-editor__wrapper div.ProseMirror table th>div{display:flex}.text-editor__wrapper div.ProseMirror table tr{background-color:var(--table-color-background)}.text-editor__wrapper div.ProseMirror table tr:hover,.text-editor__wrapper div.ProseMirror table tr:active,.text-editor__wrapper div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}.text-editor__wrapper div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}.text-editor__wrapper div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.text-editor__wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}.text-editor__wrapper .editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.text-editor__wrapper .editor__content{tab-size:4}.text-editor__wrapper .ProseMirror pre{background-color:var(--color-main-background)}.text-editor__wrapper .ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:.6rem}.text-editor__wrapper .ProseMirror pre code .hljs-comment,.text-editor__wrapper .ProseMirror pre code .hljs-quote{color:#999}.text-editor__wrapper .ProseMirror pre code .hljs-variable,.text-editor__wrapper .ProseMirror pre code .hljs-template-variable,.text-editor__wrapper .ProseMirror pre code .hljs-attribute,.text-editor__wrapper .ProseMirror pre code .hljs-tag,.text-editor__wrapper .ProseMirror pre code .hljs-name,.text-editor__wrapper .ProseMirror pre code .hljs-regexp,.text-editor__wrapper .ProseMirror pre code .hljs-link,.text-editor__wrapper .ProseMirror pre code .hljs-selector-id,.text-editor__wrapper .ProseMirror pre code .hljs-selector-class{color:#f2777a}.text-editor__wrapper .ProseMirror pre code .hljs-number,.text-editor__wrapper .ProseMirror pre code .hljs-meta,.text-editor__wrapper .ProseMirror pre code .hljs-built_in,.text-editor__wrapper .ProseMirror pre code .hljs-builtin-name,.text-editor__wrapper .ProseMirror pre code .hljs-literal,.text-editor__wrapper .ProseMirror pre code .hljs-type,.text-editor__wrapper .ProseMirror pre code .hljs-params{color:#f99157}.text-editor__wrapper .ProseMirror pre code .hljs-string,.text-editor__wrapper .ProseMirror pre code .hljs-symbol,.text-editor__wrapper .ProseMirror pre code .hljs-bullet{color:#9c9}.text-editor__wrapper .ProseMirror pre code .hljs-title,.text-editor__wrapper .ProseMirror pre code .hljs-section{color:#fc6}.text-editor__wrapper .ProseMirror pre code .hljs-keyword,.text-editor__wrapper .ProseMirror pre code .hljs-selector-tag{color:#69c}.text-editor__wrapper .ProseMirror pre code .hljs-emphasis{font-style:italic}.text-editor__wrapper .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}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid #0d0d0d;border-right:1px solid #0d0d0d;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-style:normal;font-weight:600;line-height:normal;user-select:none;color:#0d0d0d;padding:.1rem .3rem;border-radius:3px 3px 3px 0;white-space:nowrap;opacity:0}.collaboration-cursor__label.collaboration-cursor__label__active{opacity:1}.collaboration-cursor__label:not(.collaboration-cursor__label__active){transition:opacity .2s 5s}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/css/style.scss\",\"webpack://./src/css/print.scss\",\"webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,8CAEC,sBAAA,CAGD,oPAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,4XACC,sBAAA,CAGD,wjBACC,0BAAA,CAIF,6DACC,eAAA,CAGD,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,CACA,QAAA,CAGA,oEACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,mEACC,mCAAA,CACA,4BAAA,CAGF,2DACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,8DACC,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,8CACC,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,CC9SC,uCACC,6CAAA,CAEA,+CACC,2BAAA,CACA,wBAAA,CACA,aAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAGA,kHAEC,UAAA,CAED,uhBASC,aAAA,CAED,oZAOC,aAAA,CAED,2KAGC,UAAA,CAED,kHAEC,UAAA,CAED,yHAEC,UAAA,CAED,2DACC,iBAAA,CAED,yDACC,eAAA,CAQH,qDACC,mDAAA,CAED,uEACC,iBAAA,CAKH,4CACC,SAAA,CAGD,qDACC,SAAA,CACA,uEACC,eAAA,CACA,gBAAA,CACA,gBAAA,CAIF,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,CACA,SAAA,CAEA,iEACC,SAAA,CAGD,uEACC,yBAAA\",\"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\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\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\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\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\\tmargin-left: 9px;\\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 .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\",\"\\n@import './../css/style';\\n@import './../css/print';\\n\\n.text-editor__wrapper {\\n\\t@import './../css/prosemirror';\\n\\n\\t.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@keyframes spin {\\n\\t0% { transform: rotate(0deg); }\\n\\t100% { transform: rotate(360deg); }\\n}\\n\\n/* Give a remote user a caret */\\n.collaboration-cursor__caret {\\n\\tposition: relative;\\n\\tmargin-left: -1px;\\n\\tmargin-right: -1px;\\n\\tborder-left: 1px solid #0D0D0D;\\n\\tborder-right: 1px solid #0D0D0D;\\n\\tword-break: normal;\\n\\tpointer-events: none;\\n}\\n\\n/* Render the username above the caret */\\n.collaboration-cursor__label {\\n\\tposition: absolute;\\n\\ttop: -1.4em;\\n\\tleft: -1px;\\n\\tfont-size: 12px;\\n\\tfont-style: normal;\\n\\tfont-weight: 600;\\n\\tline-height: normal;\\n\\tuser-select: none;\\n\\tcolor: #0D0D0D;\\n\\tpadding: 0.1rem 0.3rem;\\n\\tborder-radius: 3px 3px 3px 0;\\n\\twhite-space: nowrap;\\n\\topacity: 0;\\n\\n\\t&.collaboration-cursor__label__active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&:not(.collaboration-cursor__label__active) {\\n\\t\\ttransition: opacity 0.2s 5s;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".editor__content[data-v-9114a8c6]{max-width:min(var(--text-editor-max-width),100vw - 16px);margin:auto;position:relative;width:100%}.ie .editor__content[data-v-9114a8c6] .ProseMirror{padding-top:50px}.text-editor__content-wrapper[data-v-9114a8c6]{--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-9114a8c6]{grid-template-columns:var(--side-width) auto var(--side-width)}.text-editor__content-wrapper .text-editor__content-wrapper__left[data-v-9114a8c6],.text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-9114a8c6]{height:100%;position:relative}.is-rich-workspace .text-editor__content-wrapper[data-v-9114a8c6]{--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-9114a8c6],.is-rich-workspace .text-editor__content-wrapper .text-editor__content-wrapper__right[data-v-9114a8c6]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/ContentContainer.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,wDAAA,CACA,WAAA,CACA,iBAAA,CACA,UAAA,CAIA,mDACC,gBAAA,CAIF,+CACC,6DAAA,CACA,YAAA,CACA,8BAAA,CACA,8DACC,8DAAA,CAED,uKAEC,WAAA,CACA,iBAAA,CAKD,kEACC,0CAAA,CACA,4CAAA,CACA,6MAEC,YAAA\",\"sourcesContent\":[\"\\n.editor__content {\\n\\tmax-width: min(var(--text-editor-max-width), calc(100vw - 16px));\\n\\tmargin: auto;\\n\\tposition: relative;\\n\\twidth: 100%;\\n}\\n\\n.ie {\\n\\t.editor__content:deep(.ProseMirror) {\\n\\t\\tpadding-top: 50px;\\n\\t}\\n}\\n\\n.text-editor__content-wrapper {\\n\\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\\n\\tdisplay: grid;\\n\\tgrid-template-columns: 1fr auto;\\n\\t&.--show-outline {\\n\\t\\tgrid-template-columns: var(--side-width) auto var(--side-width);\\n\\t}\\n\\t.text-editor__content-wrapper__left,\\n\\t.text-editor__content-wrapper__right {\\n\\t\\theight: 100%;\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\\n.is-rich-workspace {\\n\\t.text-editor__content-wrapper {\\n\\t\\t--side-width: var(--text-editor-max-width);\\n\\t\\tgrid-template-columns: var(--side-width) auto;\\n\\t\\t.text-editor__content-wrapper__left,\\n\\t\\t.text-editor__content-wrapper__right {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".document-status[data-v-d078272a]{position:sticky;top:0;z-index:10000;max-height:50px;background-color:var(--color-main-background)}.document-status .msg[data-v-d078272a]{padding:12px;background-position:8px center;color:var(--color-text-maxcontrast)}.document-status .msg.icon-error[data-v-d078272a]{padding-left:30px}.document-status .msg .button[data-v-d078272a]{margin-left:8px}.document-status .msg.msg-locked .lock-icon[data-v-d078272a]{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-6a99e70d]{display:flex}.text-editor__session-list input[data-v-6a99e70d],.text-editor__session-list div[data-v-6a99e70d]{vertical-align:middle;margin-left:3px}.save-status[data-v-6a99e70d]{border-radius:50%;color:var(--color-text-lighter);display:inline-flex;justify-content:center;padding:0;height:44px;width:44px}.save-status[data-v-6a99e70d]:hover{background-color:var(--color-background-hover)}.last-saved[data-v-6a99e70d]{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-55273a24]{display:flex;width:100%;height:100%}.text-editor__wrapper.show-color-annotations[data-v-55273a24] .author-annotation{padding-top:2px;padding-bottom:2px}.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .author-annotation,.text-editor__wrapper[data-v-55273a24]:not(.show-color-annotations) .image{background-color:rgba(0,0,0,0) !important}.text-editor__wrapper .ProseMirror[data-v-55273a24]{margin-top:0 !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor/Wrapper.vue\"],\"names\":[],\"mappings\":\"AAEA,uCACC,YAAA,CACA,UAAA,CACA,WAAA,CAEA,iFACC,eAAA,CACA,kBAAA,CAGD,kKAEC,yCAAA,CAGD,oDACC,uBAAA\",\"sourcesContent\":[\"\\n\\n.text-editor__wrapper {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t&.show-color-annotations:deep(.author-annotation) {\\n\\t\\tpadding-top: 2px;\\n\\t\\tpadding-bottom: 2px;\\n\\t}\\n\\n\\t&:not(.show-color-annotations):deep(.author-annotation),\\n\\t&:not(.show-color-annotations):deep(.image) {\\n\\t\\tbackground-color: transparent !important;\\n\\t}\\n\\n\\t.ProseMirror {\\n\\t\\tmargin-top: 0 !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-d89e53d0] .modal-wrapper .modal-container{width:max-content;padding:30px 40px 20px;user-select:text}@media only screen and (max-width: 512px){[data-v-d89e53d0] .modal-wrapper .modal-container{width:inherit;padding:10px 0}}table[data-v-d89e53d0]{margin-top:24px;border-collapse:collapse}table tbody tr[data-v-d89e53d0]:hover,table tbody tr[data-v-d89e53d0]:focus,table tbody tr[data-v-d89e53d0]:active{background-color:rgba(0,0,0,0) !important}table thead tr[data-v-d89e53d0]{border:none}table th[data-v-d89e53d0]{font-weight:bold;padding:.75rem 1rem .75rem 0;border-bottom:2px solid var(--color-background-darker)}table td[data-v-d89e53d0]{padding:.75rem 1rem .75rem 0;border-top:1px solid var(--color-background-dark);border-bottom:unset}table td.noborder[data-v-d89e53d0]{border-top:unset}table td.ellipsis_top[data-v-d89e53d0]{padding-bottom:0}table td.ellipsis[data-v-d89e53d0]{padding-top:0;padding-bottom:0}table td.ellipsis_bottom[data-v-d89e53d0]{padding-top:0}table kbd[data-v-d89e53d0]{font-size:smaller}table code[data-v-d89e53d0]{padding:.2em .4em;font-size:90%;background-color:var(--color-background-dark);border-radius:6px}div.ProseMirror[data-v-d89e53d0]{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-d89e53d0] :target{scroll-margin-top:50px}div.ProseMirror[contenteditable=true][data-v-d89e53d0],div.ProseMirror[contenteditable=false][data-v-d89e53d0],div.ProseMirror [contenteditable=true][data-v-d89e53d0],div.ProseMirror [contenteditable=false][data-v-d89e53d0]{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-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror[contenteditable=false][data-v-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=true][data-v-d89e53d0]:not(.collaboration-cursor__caret),div.ProseMirror [contenteditable=false][data-v-d89e53d0]:not(.collaboration-cursor__caret){border:none !important}div.ProseMirror[contenteditable=true][data-v-d89e53d0]:focus,div.ProseMirror[contenteditable=true][data-v-d89e53d0]:focus-visible,div.ProseMirror[contenteditable=false][data-v-d89e53d0]:focus,div.ProseMirror[contenteditable=false][data-v-d89e53d0]:focus-visible,div.ProseMirror [contenteditable=true][data-v-d89e53d0]:focus,div.ProseMirror [contenteditable=true][data-v-d89e53d0]:focus-visible,div.ProseMirror [contenteditable=false][data-v-d89e53d0]:focus,div.ProseMirror [contenteditable=false][data-v-d89e53d0]:focus-visible{box-shadow:none !important}div.ProseMirror ul[data-type=taskList][data-v-d89e53d0]{margin-left:1px}div.ProseMirror .checkbox-item[data-v-d89e53d0]{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox][data-v-d89e53d0]{display:none}div.ProseMirror .checkbox-item[data-v-d89e53d0]: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;left:9px}div.ProseMirror .checkbox-item.checked[data-v-d89e53d0]: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-d89e53d0]{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label[data-v-d89e53d0]{display:block;flex-grow:1;max-width:calc(100% - 28px);margin-left:9px}div.ProseMirror>*[data-v-d89e53d0]:first-child{margin-top:10px}div.ProseMirror>h1[data-v-d89e53d0]:first-child,div.ProseMirror h2[data-v-d89e53d0]:first-child,div.ProseMirror h3[data-v-d89e53d0]:first-child,div.ProseMirror h4[data-v-d89e53d0]:first-child,div.ProseMirror h5[data-v-d89e53d0]:first-child,div.ProseMirror h6[data-v-d89e53d0]:first-child{margin-top:0}div.ProseMirror a[data-v-d89e53d0]{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p .paragraph-content[data-v-d89e53d0]{margin-bottom:1em;line-height:150%}div.ProseMirror em[data-v-d89e53d0]{font-style:italic}div.ProseMirror h1[data-v-d89e53d0],div.ProseMirror h2[data-v-d89e53d0],div.ProseMirror h3[data-v-d89e53d0],div.ProseMirror h4[data-v-d89e53d0],div.ProseMirror h5[data-v-d89e53d0],div.ProseMirror h6[data-v-d89e53d0]{font-weight:600;line-height:1.1em;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1[data-v-d89e53d0]{font-size:36px}div.ProseMirror h2[data-v-d89e53d0]{font-size:30px}div.ProseMirror h3[data-v-d89e53d0]{font-size:24px}div.ProseMirror h4[data-v-d89e53d0]{font-size:21px}div.ProseMirror h5[data-v-d89e53d0]{font-size:17px}div.ProseMirror h6[data-v-d89e53d0]{font-size:14px}div.ProseMirror img[data-v-d89e53d0]{cursor:default;max-width:100%}div.ProseMirror hr[data-v-d89e53d0]{padding:2px 0;border:none;margin:2em 0;width:100%}div.ProseMirror hr[data-v-d89e53d0]:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}div.ProseMirror pre[data-v-d89e53d0]{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-d89e53d0]{margin-bottom:2em;border-left:4px solid var(--color-primary-element)}div.ProseMirror pre.frontmatter[data-v-d89e53d0]::before{display:block;content:attr(data-title);color:var(--color-text-maxcontrast);padding-bottom:.5em}div.ProseMirror p code[data-v-d89e53d0]{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li[data-v-d89e53d0]{position:relative;padding-left:3px}div.ProseMirror li p .paragraph-content[data-v-d89e53d0]{margin-bottom:.5em}div.ProseMirror ul[data-v-d89e53d0],div.ProseMirror ol[data-v-d89e53d0]{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li[data-v-d89e53d0]{list-style-type:disc}div.ProseMirror li ul>li[data-v-d89e53d0]{list-style-type:circle}div.ProseMirror li li ul>li[data-v-d89e53d0]{list-style-type:square}div.ProseMirror blockquote[data-v-d89e53d0]{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-d89e53d0]{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*[data-v-d89e53d0]{margin-top:1em}div.ProseMirror table td[data-v-d89e53d0],div.ProseMirror table th[data-v-d89e53d0]{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td[data-v-d89e53d0]:first-child,div.ProseMirror table th[data-v-d89e53d0]:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td[data-v-d89e53d0]{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th[data-v-d89e53d0]{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-d89e53d0]{display:flex}div.ProseMirror table tr[data-v-d89e53d0]{background-color:var(--table-color-background)}div.ProseMirror table tr[data-v-d89e53d0]:hover,div.ProseMirror table tr[data-v-d89e53d0]:active,div.ProseMirror table tr[data-v-d89e53d0]:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th[data-v-d89e53d0]:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th[data-v-d89e53d0]:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-d89e53d0]:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td[data-v-d89e53d0]:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor[data-v-d89e53d0]{display:block}.editor__content p.is-empty[data-v-d89e53d0]:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content[data-v-d89e53d0]{tab-size:4}div.ProseMirror[data-v-d89e53d0]{display:inline;margin-top:unset;position:unset;padding:unset;line-height:unset}div.ProseMirror h1[data-v-d89e53d0],div.ProseMirror h6[data-v-d89e53d0]{display:inline;padding:0;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/HelpModal.vue\",\"webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,yCAEC,sBAAA,CAGD,gOAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,wWACC,sBAAA,CAGD,ghBACC,0BAAA,CAIF,wDACC,eAAA,CAGD,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,CACA,QAAA,CAGA,+DACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,8DACC,mCAAA,CACA,4BAAA,CAGF,sDACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,yDACC,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,yCACC,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,CD5OD,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\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\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\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\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\\tmargin-left: 9px;\\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 .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\"],\"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-313fc12e]{height:80vh;padding:0 50px;display:flex;justify-content:center}.modal__content img[data-v-313fc12e]{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-65defacb]{--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-65defacb]:not(.text-menubar--autohide){visibility:visible;animation-name:fadeInDown;animation-duration:.3s}.text-menubar.text-menubar--autohide[data-v-65defacb]{opacity:0;transition:visibility .2s .4s,opacity .2s .4s}.text-menubar.text-menubar--autohide.text-menubar--show[data-v-65defacb]{visibility:visible;opacity:1}.text-menubar .text-menubar__entries[data-v-65defacb]{display:flex;flex-grow:1;margin-left:max(0px,(100% - var(--text-editor-max-width))/2)}.text-menubar .text-menubar__slot[data-v-65defacb]{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-65defacb]{margin-left:0}@media(max-width: 660px){.text-menubar .text-menubar__entries[data-v-65defacb]{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-1b752fba]{margin:24px}.translate-dialog .wrapper[data-v-1b752fba]{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:16px;margin-top:calc(var(--default-grid-baseline)*6)}.translate-dialog .wrapper .language-selector[data-v-1b752fba]{font-weight:bold;flex-wrap:wrap;gap:var(--default-grid-baseline)}.translate-dialog .wrapper .col[data-v-1b752fba]{grid-row:1/2}textarea[data-v-1b752fba]{display:block;width:100%;margin-bottom:12px;height:auto;resize:none;box-sizing:border-box;overflow-y:auto;max-height:58vh}@media(max-width: 670px){.translate-dialog .wrapper[data-v-1b752fba]{display:block}.translate-dialog .language-selector .select[data-v-1b752fba]{width:100%}textarea[data-v-1b752fba]{max-height:20vh}label[for=fromLanguage][data-v-1b752fba],label[for=toLanguage][data-v-1b752fba]{display:none}}.language-selector[data-v-1b752fba]{display:flex;align-items:center;margin-bottom:12px}.language-selector label[data-v-1b752fba]{flex-grow:1}.translate-actions[data-v-1b752fba]{display:flex;justify-content:flex-end}.translate-actions button[data-v-1b752fba]{margin-left:12px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Modal/Translate.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,WAAA,CAEA,4CACC,YAAA,CACA,2DAAA,CACA,oBAAA,CACA,+CAAA,CAEA,+DACC,gBAAA,CACA,cAAA,CACA,gCAAA,CAGD,iDACC,YAAA,CAKH,0BACC,aAAA,CACA,UAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CAGD,yBAEE,4CACC,aAAA,CAIA,8DACC,UAAA,CAKH,0BACC,eAAA,CAIA,gFAEC,YAAA,CAAA,CAKH,oCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,0CACC,WAAA,CAIF,oCACC,YAAA,CACA,wBAAA,CAEA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.translate-dialog {\\n\\tmargin: 24px;\\n\\n\\t.wrapper {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\\n\\t\\tgrid-column-gap: 16px;\\n\\t\\tmargin-top: calc(var(--default-grid-baseline) * 6);\\n\\n\\t\\t.language-selector {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t}\\n\\n\\t\\t.col {\\n\\t\\t\\tgrid-row: 1/2;\\n\\t\\t}\\n\\t}\\n}\\n\\ntextarea {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin-bottom: 12px;\\n\\theight: auto;\\n\\tresize: none;\\n\\tbox-sizing: border-box;\\n\\toverflow-y: auto;\\n\\tmax-height: 58vh;\\n}\\n\\n@media (max-width: 670px) {\\n\\t.translate-dialog {\\n\\t\\t.wrapper {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t.language-selector {\\n\\t\\t\\t.select {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\ttextarea {\\n\\t\\tmax-height: 20vh;\\n\\t}\\n\\n\\tlabel {\\n\\t\\t&[for=\\\"fromLanguage\\\"],\\n\\t\\t&[for=\\\"toLanguage\\\"] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.language-selector {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmargin-bottom: 12px;\\n\\n\\tlabel {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\\n.translate-actions {\\n\\tdisplay: flex;\\n\\tjustify-content: flex-end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#read-only-editor{overflow:scroll}.thumbnailContainer #read-only-editor{width:100%}.thumbnailContainer #read-only-editor .ProseMirror{height:auto;margin:0 0 0 0;padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Reader.vue\"],\"names\":[],\"mappings\":\"AAEA,kBACC,eAAA,CAGD,sCACC,UAAA,CAEA,mDACC,WAAA,CACA,cAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n\\n#read-only-editor {\\n\\toverflow: scroll;\\n}\\n\\n.thumbnailContainer #read-only-editor {\\n\\twidth: 100%;\\n\\n\\t.ProseMirror {\\n\\t\\theight: auto;\\n\\t\\tmargin: 0 0 0 0;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../img/checkbox-mark.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"div.ProseMirror{height:100%;position:relative;word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;padding:4px 8px 200px 14px;line-height:150%;font-size: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 ul[data-type=taskList]{margin-left:1px}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;left:9px}div.ProseMirror .checkbox-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item.checked label{color:var(--color-text-maxcontrast);text-decoration:line-through}div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px);margin-left:9px}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 .paragraph-content{margin-bottom:.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px;margin-bottom:1em}div.ProseMirror ul>li{list-style-type:disc}div.ProseMirror li ul>li{list-style-type:circle}div.ProseMirror li li ul>li{list-style-type:square}div.ProseMirror blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}div.ProseMirror table{border-spacing:0;width:calc(100% - 50px);table-layout:auto;white-space:normal;margin-bottom:1em}div.ProseMirror table+*{margin-top:1em}div.ProseMirror table td,div.ProseMirror table th{border:1px solid var(--table-color-border);border-left:0;vertical-align:top;max-width:100%}div.ProseMirror table td:first-child,div.ProseMirror table th:first-child{border-left:1px solid var(--table-color-border)}div.ProseMirror table td{padding:.5em .75em;border-top:0;color:var(--color-main-text)}div.ProseMirror table th{padding:0 0 0 .75em;font-weight:normal;border-bottom-color:var(--table-color-heading-border);color:var(--table-color-heading)}div.ProseMirror table th>div{display:flex}div.ProseMirror table tr{background-color:var(--table-color-background)}div.ProseMirror table tr:hover,div.ProseMirror table tr:active,div.ProseMirror table tr:focus{background-color:var(--table-color-background-hover)}div.ProseMirror table tr:first-child th:first-child{border-top-left-radius:var(--table-border-radius)}div.ProseMirror table tr:first-child th:last-child{border-top-right-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:var(--table-border-radius)}div.ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:var(--table-border-radius)}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-placeholder);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.editor__content{tab-size:4}@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://./src/css/prosemirror.scss\",\"webpack://./src/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,CA6NA,yCAAA,CACA,oDAAA,CACA,sDAAA,CACA,sDAAA,CACA,kEAAA,CACA,2CAAA,CAhOA,wBAEC,sBAAA,CAGD,4JAIC,UAAA,CACA,8BAAA,CACA,4BAAA,CACA,SAAA,CACA,wBAAA,CACA,gBAAA,CACA,cAAA,CAEA,oSACC,sBAAA,CAGD,wYACC,0BAAA,CAIF,uCACC,eAAA,CAGD,+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,CACA,QAAA,CAGA,8CACC,wDAAA,CACA,6CAAA,CACA,yCAAA,CAED,6CACC,mCAAA,CACA,4BAAA,CAGF,qCACC,aAAA,CACA,WAAA,CACA,2BAAA,CACA,eAAA,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,wCACC,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,wBACC,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,CCtTD,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\\tul[data-type=taskList] {\\n\\t\\tmargin-left: 1px;\\n\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\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\\tleft: 9px;\\n\\t\\t}\\n\\t\\t&.checked{\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t\\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\\tmargin-left: 9px;\\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 .paragraph-content {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tul > li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tli ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tli li ul > li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-left: 1em;\\n\\t\\tborder-left: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t// table variables\\n\\t--table-color-border: var(--color-border);\\n\\t--table-color-heading: var(--color-text-maxcontrast);\\n\\t--table-color-heading-border: var(--color-border-dark);\\n\\t--table-color-background: var(--color-main-background);\\n\\t--table-color-background-hover: var(--color-primary-element-light);\\n\\t--table-border-radius: var(--border-radius);\\n\\n\\ttable {\\n\\t\\tborder-spacing: 0;\\n\\t\\twidth: calc(100% - 50px);\\n\\t\\ttable-layout: auto;\\n\\t\\twhite-space: normal; // force text to wrapping\\n\\t\\tmargin-bottom: 1em;\\n\\t\\t&+ * {\\n\\t\\t\\tmargin-top: 1em;\\n\\t\\t}\\n\\n\\n\\t\\ttd, th {\\n\\t\\t\\tborder: 1px solid var(--table-color-border);\\n\\t\\t\\tborder-left: 0;\\n\\t\\t\\tvertical-align: top;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t&:first-child {\\n\\t\\t\\t\\tborder-left: 1px solid var(--table-color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttd {\\n\\t\\t\\tpadding: 0.5em 0.75em;\\n\\t\\t\\tborder-top: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t\\tth {\\n\\t\\t\\tpadding: 0 0 0 0.75em;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tborder-bottom-color: var(--table-color-heading-border);\\n\\t\\t\\tcolor: var(--table-color-heading);\\n\\n\\t\\t\\t& > div {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\ttr {\\n\\t\\t\\tbackground-color: var(--table-color-background);\\n\\t\\t\\t&:hover, &:active, &:focus {\\n\\t\\t\\t\\tbackground-color: var(--table-color-background-hover);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ttr:first-child {\\n\\t\\t\\tth:first-child { border-top-left-radius: var(--table-border-radius); }\\n\\t\\t\\tth:last-child { border-top-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t\\ttr:last-child {\\n\\t\\t\\ttd:first-child { border-bottom-left-radius: var(--table-border-radius); }\\n\\t\\t\\ttd:last-child { border-bottom-right-radius: var(--table-border-radius); }\\n\\t\\t}\\n\\n\\t}\\n\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-placeholder);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\\n.editor__content {\\n\\ttab-size: 4;\\n}\\n\",\"@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, \".placeholder-main[data-v-5a5c7130]{max-width:670px;position:relative;margin-bottom:auto;z-index:1}.placeholder-main-text[data-v-5a5c7130]{margin:50px auto 0;width:100%}#rich-workspace .placeholder-main-text[data-v-5a5c7130]{margin:40px 0 0}.placeholder-list[data-v-5a5c7130]{position:absolute;transform:translateZ(0)}.placeholder-list-regular[data-v-5a5c7130]{animation:pulse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-list-reverse[data-v-5a5c7130]{animation:pulse-reverse-5a5c7130 2s;animation-iteration-count:infinite;animation-timing-function:linear}.placeholder-gradient[data-v-5a5c7130]{position:fixed;height:0;width:0;z-index:-1}.text-placeholder[data-v-5a5c7130]{width:min(670px,100vw);height:6em;margin:8px auto;padding:4px 8px 0 14px;display:block}.text-placeholder-line-one[data-v-5a5c7130],.text-placeholder-line-two[data-v-5a5c7130],.text-placeholder-line-three[data-v-5a5c7130],.text-placeholder-line-four[data-v-5a5c7130]{width:670px;height:1em}.text-placeholder-line-one[data-v-5a5c7130]{y:.33em;width:175px}.text-placeholder-line-two[data-v-5a5c7130]{y:1.66em}.text-placeholder-line-three[data-v-5a5c7130]{y:3em}.text-placeholder-line-four[data-v-5a5c7130]{y:4.33em}@keyframes pulse-5a5c7130{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@keyframes pulse-reverse-5a5c7130{0%{opacity:0}50%{opacity:1}100%{opacity:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/SkeletonLoading.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,eAHyB,CAIzB,iBAAA,CACA,kBAAA,CACA,SAAA,CAEA,wCACC,kBAAA,CACA,UAAA,CAIF,wDACC,eAAA,CAGD,mCACC,iBAAA,CACA,uBAAA,CAGD,2CACC,2BAAA,CACA,kCAAA,CACA,gCAAA,CAGD,2CACC,mCAAA,CACA,kCAAA,CACA,gCAAA,CAGD,uCACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,mCACC,sBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,aAAA,CAEA,mLAIC,WAAA,CACA,UAAA,CAGD,4CACC,OAAA,CACA,WAAA,CAGD,4CACC,QAAA,CAGD,8CACC,KAAA,CAGD,6CACC,QAAA,CAIF,0BACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA,CAIF,kCACC,GACC,SAAA,CAED,IACC,SAAA,CAED,KACC,SAAA,CAAA\",\"sourcesContent\":[\"\\n$margin: 8px;\\n$messages-list-max-width: 670px;\\n\\n.placeholder-main {\\n\\tmax-width: $messages-list-max-width;\\n\\tposition: relative;\\n\\tmargin-bottom: auto;\\n\\tz-index: 1;\\n\\n\\t&-text {\\n\\t\\tmargin: 50px auto 0;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n#rich-workspace .placeholder-main-text {\\n\\tmargin: 40px 0 0;\\n}\\n\\n.placeholder-list {\\n\\tposition: absolute;\\n\\ttransform: translateZ(0);\\n}\\n\\n.placeholder-list-regular {\\n\\tanimation: pulse 2s;\\n\\tanimation-iteration-count: infinite;\\n\\tanimation-timing-function: linear;\\n}\\n\\n.placeholder-list-reverse {\\n\\tanimation: pulse-reverse 2s;\\n\\tanimation-iteration-count: infinite;\\n\\tanimation-timing-function: linear;\\n}\\n\\n.placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.text-placeholder {\\n\\twidth: min($messages-list-max-width, 100vw);\\n\\theight: 6em;\\n\\tmargin: $margin auto;\\n\\tpadding: 4px 8px 0 14px;\\n\\tdisplay: block;\\n\\n\\t&-line-one,\\n\\t&-line-two,\\n\\t&-line-three,\\n\\t&-line-four {\\n\\t\\twidth: 670px;\\n\\t\\theight: 1em;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 0.33em;\\n\\t\\twidth: 175px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 1.66em;\\n\\t}\\n\\n\\t&-line-three {\\n\\t\\ty: 3em;\\n\\t}\\n\\n\\t&-line-four {\\n\\t\\ty: 4.33em;\\n\\t}\\n}\\n\\n@keyframes pulse {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n@keyframes pulse-reverse {\\n\\t0% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 0;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\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-4387ae9f]{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-4387ae9f]{margin-top:.5em}.callout .callout__content[data-v-4387ae9f]{margin-left:1em}.callout .callout__content[data-v-4387ae9f] p:last-child{margin-bottom:0}.callout .callout__icon[data-v-4387ae9f],.callout .callout__icon[data-v-4387ae9f] svg{color:var(--callout-border)}.callout[data-v-4387ae9f],.callout--info[data-v-4387ae9f]{--callout-border: var(--color-info, #006aa3)}.callout--warn[data-v-4387ae9f]{--callout-border: var(--color-warning)}.callout--error[data-v-4387ae9f]{--callout-border: var(--color-error)}.callout--success[data-v-4387ae9f]{--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,4BACC,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-b95f24a4] div.widgets--list a.widget-default{color:var(--color-main-text);padding:0;text-decoration:none;max-width:calc(100vw - 56px)}[data-v-b95f24a4] .widget-default--details{overflow:hidden}[data-v-b95f24a4] .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,CACA,4BAAA,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\\tmax-width: calc(100vw - 56px);\\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,CAGD,2BACC,QAAA,CACA,YAAA\",\"sourcesContent\":[\"\\nbody {\\n\\tposition: fixed;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n#content[class=app-public] {\\n\\tmargin: 0;\\n\\tmargin-top: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#direct-editor[data-v-d43914dc]{width:100%;height:100%;position:fixed;overflow:auto}#direct-editor[data-v-d43914dc] .text-editor{height:100%;top:0}#direct-editor[data-v-d43914dc] .text-editor__wrapper div.ProseMirror{margin-top:0}pre[data-v-d43914dc]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-d43914dc]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:rgba(0,0,0,0);opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus,button[data-v-d43914dc]:active{background-color:var(--color-background-dark)}button.is-active[data-v-d43914dc],button[data-v-d43914dc]:hover,button[data-v-d43914dc]:focus{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CAEA,6CACC,WAAA,CACA,KAAA,CAED,sEACC,YAAA,CAIF,qBACC,UAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CAGD,wBACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,oBAAA,CACA,QAAA,CACA,8BAAA,CACA,UAAA,CACA,4BAAA,CACA,iCAAA,CACA,kBAAA,CACA,2FACC,6CAAA,CAED,8FAGC,SAAA\",\"sourcesContent\":[\"\\n#direct-editor {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\n\\t&:deep(.text-editor) {\\n\\t\\theight: 100%;\\n\\t\\ttop: 0;\\n\\t}\\n\\t&:deep(.text-editor__wrapper div.ProseMirror) {\\n\\t\\tmargin-top: 0;\\n\\t}\\n}\\n\\npre {\\n\\twidth: 100%;\\n\\tmax-width: 700px;\\n\\tmargin: auto;\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\\nbutton {\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\tmargin: 0;\\n\\tbackground-size: 16px;\\n\\tborder: 0;\\n\\tbackground-color: transparent;\\n\\topacity: .5;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-position: center center;\\n\\tvertical-align: top;\\n\\t&:hover, &:focus, &:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\t&.is-active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#rich-workspace[data-v-5f66ab70]{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-5f66ab70]{min-height:100px}#rich-workspace[data-v-5f66ab70]:only-child{margin-bottom:0}.empty-workspace[data-v-5f66ab70]{cursor:pointer;display:block;padding-top:43px;color:var(--color-text-maxcontrast)}#rich-workspace[data-v-5f66ab70] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-5f66ab70] .text-editor{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-5f66ab70] .text-editor__wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-5f66ab70] .text-editor__main{overflow:visible !important}#rich-workspace[data-v-5f66ab70] .content-wrapper{overflow:scroll !important;max-height:calc(40vh - 50px);padding-left:10px;padding-bottom:10px}#rich-workspace[data-v-5f66ab70] .text-editor__wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-5f66ab70] .editor__content{margin:0}#rich-workspace.focus[data-v-5f66ab70]{max-height:50vh}#rich-workspace[data-v-5f66ab70]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-5f66ab70]:not(.focus):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-5f66ab70]:not(.focus):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-5f66ab70]: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,+DACC,UAAA,CACA,iBAAA,CACA,SAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,iGAAA,CACA,UAAA,CACA,UAAA,CAGD,wDACC,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(.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):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-b01cbf5e] {\\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\t\"highlight/1c\"\n\t],\n\t\"./1c.js\": [\n\t\t30908,\n\t\t\"highlight/1c\"\n\t],\n\t\"./1c.js.js\": [\n\t\t9856,\n\t\t\"highlight/1c\",\n\t\t\"highlight/1c-js-js\"\n\t],\n\t\"./abnf\": [\n\t\t62853,\n\t\t\"highlight/abnf\"\n\t],\n\t\"./abnf.js\": [\n\t\t62853,\n\t\t\"highlight/abnf\"\n\t],\n\t\"./abnf.js.js\": [\n\t\t5116,\n\t\t\"highlight/abnf-js-js\"\n\t],\n\t\"./accesslog\": [\n\t\t35976,\n\t\t\"highlight/accesslog\"\n\t],\n\t\"./accesslog.js\": [\n\t\t35976,\n\t\t\"highlight/accesslog\"\n\t],\n\t\"./accesslog.js.js\": [\n\t\t36461,\n\t\t\"highlight/accesslog-js-js\"\n\t],\n\t\"./actionscript\": [\n\t\t55505,\n\t\t\"highlight/actionscript\"\n\t],\n\t\"./actionscript.js\": [\n\t\t55505,\n\t\t\"highlight/actionscript\"\n\t],\n\t\"./actionscript.js.js\": [\n\t\t78197,\n\t\t\"highlight/actionscript-js-js\"\n\t],\n\t\"./ada\": [\n\t\t40059,\n\t\t\"highlight/ada\"\n\t],\n\t\"./ada.js\": [\n\t\t40059,\n\t\t\"highlight/ada\"\n\t],\n\t\"./ada.js.js\": [\n\t\t16880,\n\t\t\"highlight/ada-js-js\"\n\t],\n\t\"./angelscript\": [\n\t\t72921,\n\t\t\"highlight/angelscript\"\n\t],\n\t\"./angelscript.js\": [\n\t\t72921,\n\t\t\"highlight/angelscript\"\n\t],\n\t\"./angelscript.js.js\": [\n\t\t62053,\n\t\t\"highlight/angelscript-js-js\"\n\t],\n\t\"./apache\": [\n\t\t4998,\n\t\t\"highlight/apache\"\n\t],\n\t\"./apache.js\": [\n\t\t4998,\n\t\t\"highlight/apache\"\n\t],\n\t\"./apache.js.js\": [\n\t\t69773,\n\t\t\"highlight/apache-js-js\"\n\t],\n\t\"./applescript\": [\n\t\t99733,\n\t\t\"highlight/applescript\"\n\t],\n\t\"./applescript.js\": [\n\t\t99733,\n\t\t\"highlight/applescript\"\n\t],\n\t\"./applescript.js.js\": [\n\t\t56323,\n\t\t\"highlight/applescript-js-js\"\n\t],\n\t\"./arcade\": [\n\t\t70149,\n\t\t\"highlight/arcade\"\n\t],\n\t\"./arcade.js\": [\n\t\t70149,\n\t\t\"highlight/arcade\"\n\t],\n\t\"./arcade.js.js\": [\n\t\t99434,\n\t\t\"highlight/arcade-js-js\"\n\t],\n\t\"./arduino\": [\n\t\t89860,\n\t\t\"highlight/arduino\"\n\t],\n\t\"./arduino.js\": [\n\t\t89860,\n\t\t\"highlight/arduino\"\n\t],\n\t\"./arduino.js.js\": [\n\t\t1345,\n\t\t\"highlight/arduino-js-js\"\n\t],\n\t\"./armasm\": [\n\t\t93138,\n\t\t\"highlight/armasm\"\n\t],\n\t\"./armasm.js\": [\n\t\t93138,\n\t\t\"highlight/armasm\"\n\t],\n\t\"./armasm.js.js\": [\n\t\t96358,\n\t\t\"highlight/armasm-js-js\"\n\t],\n\t\"./asciidoc\": [\n\t\t88699,\n\t\t\"highlight/asciidoc\"\n\t],\n\t\"./asciidoc.js\": [\n\t\t88699,\n\t\t\"highlight/asciidoc\"\n\t],\n\t\"./asciidoc.js.js\": [\n\t\t5301,\n\t\t\"highlight/asciidoc-js-js\"\n\t],\n\t\"./aspectj\": [\n\t\t59950,\n\t\t\"highlight/aspectj\"\n\t],\n\t\"./aspectj.js\": [\n\t\t59950,\n\t\t\"highlight/aspectj\"\n\t],\n\t\"./aspectj.js.js\": [\n\t\t79219,\n\t\t\"highlight/aspectj-js-js\"\n\t],\n\t\"./autohotkey\": [\n\t\t31599,\n\t\t\"highlight/autohotkey\"\n\t],\n\t\"./autohotkey.js\": [\n\t\t31599,\n\t\t\"highlight/autohotkey\"\n\t],\n\t\"./autohotkey.js.js\": [\n\t\t54598,\n\t\t\"highlight/autohotkey-js-js\"\n\t],\n\t\"./autoit\": [\n\t\t1892,\n\t\t\"highlight/autoit\"\n\t],\n\t\"./autoit.js\": [\n\t\t1892,\n\t\t\"highlight/autoit\"\n\t],\n\t\"./autoit.js.js\": [\n\t\t81923,\n\t\t\"highlight/autoit-js-js\"\n\t],\n\t\"./avrasm\": [\n\t\t53105,\n\t\t\"highlight/avrasm\"\n\t],\n\t\"./avrasm.js\": [\n\t\t53105,\n\t\t\"highlight/avrasm\"\n\t],\n\t\"./avrasm.js.js\": [\n\t\t66522,\n\t\t\"highlight/avrasm-js-js\"\n\t],\n\t\"./awk\": [\n\t\t44868,\n\t\t\"highlight/awk\"\n\t],\n\t\"./awk.js\": [\n\t\t44868,\n\t\t\"highlight/awk\"\n\t],\n\t\"./awk.js.js\": [\n\t\t36775,\n\t\t\"highlight/awk-js-js\"\n\t],\n\t\"./axapta\": [\n\t\t52059,\n\t\t\"highlight/axapta\"\n\t],\n\t\"./axapta.js\": [\n\t\t52059,\n\t\t\"highlight/axapta\"\n\t],\n\t\"./axapta.js.js\": [\n\t\t5432,\n\t\t\"highlight/axapta-js-js\"\n\t],\n\t\"./bash\": [\n\t\t98780,\n\t\t\"highlight/bash\"\n\t],\n\t\"./bash.js\": [\n\t\t98780,\n\t\t\"highlight/bash\"\n\t],\n\t\"./bash.js.js\": [\n\t\t13574,\n\t\t\"highlight/bash-js-js\"\n\t],\n\t\"./basic\": [\n\t\t80995,\n\t\t\"highlight/basic\"\n\t],\n\t\"./basic.js\": [\n\t\t80995,\n\t\t\"highlight/basic\"\n\t],\n\t\"./basic.js.js\": [\n\t\t18080,\n\t\t\"highlight/basic-js-js\"\n\t],\n\t\"./bnf\": [\n\t\t87061,\n\t\t\"highlight/bnf\"\n\t],\n\t\"./bnf.js\": [\n\t\t87061,\n\t\t\"highlight/bnf\"\n\t],\n\t\"./bnf.js.js\": [\n\t\t14060,\n\t\t\"highlight/bnf-js-js\"\n\t],\n\t\"./brainfuck\": [\n\t\t16380,\n\t\t\"highlight/brainfuck\"\n\t],\n\t\"./brainfuck.js\": [\n\t\t16380,\n\t\t\"highlight/brainfuck\"\n\t],\n\t\"./brainfuck.js.js\": [\n\t\t37195,\n\t\t\"highlight/brainfuck-js-js\"\n\t],\n\t\"./c\": [\n\t\t68528,\n\t\t\"highlight/c\"\n\t],\n\t\"./c.js\": [\n\t\t68528,\n\t\t\"highlight/c\"\n\t],\n\t\"./c.js.js\": [\n\t\t96991,\n\t\t\"highlight/c-js-js\"\n\t],\n\t\"./cal\": [\n\t\t15762,\n\t\t\"highlight/cal\"\n\t],\n\t\"./cal.js\": [\n\t\t15762,\n\t\t\"highlight/cal\"\n\t],\n\t\"./cal.js.js\": [\n\t\t65197,\n\t\t\"highlight/cal-js-js\"\n\t],\n\t\"./capnproto\": [\n\t\t90614,\n\t\t\"highlight/capnproto\"\n\t],\n\t\"./capnproto.js\": [\n\t\t90614,\n\t\t\"highlight/capnproto\"\n\t],\n\t\"./capnproto.js.js\": [\n\t\t79955,\n\t\t\"highlight/capnproto-js-js\"\n\t],\n\t\"./ceylon\": [\n\t\t33796,\n\t\t\"highlight/ceylon\"\n\t],\n\t\"./ceylon.js\": [\n\t\t33796,\n\t\t\"highlight/ceylon\"\n\t],\n\t\"./ceylon.js.js\": [\n\t\t1263,\n\t\t\"highlight/ceylon-js-js\"\n\t],\n\t\"./clean\": [\n\t\t52222,\n\t\t\"highlight/clean\"\n\t],\n\t\"./clean.js\": [\n\t\t52222,\n\t\t\"highlight/clean\"\n\t],\n\t\"./clean.js.js\": [\n\t\t45443,\n\t\t\"highlight/clean-js-js\"\n\t],\n\t\"./clojure\": [\n\t\t92177,\n\t\t\"highlight/clojure\"\n\t],\n\t\"./clojure-repl\": [\n\t\t42012,\n\t\t\"highlight/clojure-repl\"\n\t],\n\t\"./clojure-repl.js\": [\n\t\t42012,\n\t\t\"highlight/clojure-repl\"\n\t],\n\t\"./clojure-repl.js.js\": [\n\t\t21487,\n\t\t\"highlight/clojure-repl-js-js\"\n\t],\n\t\"./clojure.js\": [\n\t\t92177,\n\t\t\"highlight/clojure\"\n\t],\n\t\"./clojure.js.js\": [\n\t\t73864,\n\t\t\"highlight/clojure-js-js\"\n\t],\n\t\"./cmake\": [\n\t\t35849,\n\t\t\"highlight/cmake\"\n\t],\n\t\"./cmake.js\": [\n\t\t35849,\n\t\t\"highlight/cmake\"\n\t],\n\t\"./cmake.js.js\": [\n\t\t30520,\n\t\t\"highlight/cmake-js-js\"\n\t],\n\t\"./coffeescript\": [\n\t\t1857,\n\t\t\"highlight/coffeescript\"\n\t],\n\t\"./coffeescript.js\": [\n\t\t1857,\n\t\t\"highlight/coffeescript\"\n\t],\n\t\"./coffeescript.js.js\": [\n\t\t1493,\n\t\t\"highlight/coffeescript-js-js\"\n\t],\n\t\"./coq\": [\n\t\t99087,\n\t\t\"highlight/coq\"\n\t],\n\t\"./coq.js\": [\n\t\t99087,\n\t\t\"highlight/coq\"\n\t],\n\t\"./coq.js.js\": [\n\t\t36768,\n\t\t\"highlight/coq-js-js\"\n\t],\n\t\"./cos\": [\n\t\t72569,\n\t\t\"highlight/cos\"\n\t],\n\t\"./cos.js\": [\n\t\t72569,\n\t\t\"highlight/cos\"\n\t],\n\t\"./cos.js.js\": [\n\t\t2210,\n\t\t\"highlight/cos-js-js\"\n\t],\n\t\"./cpp\": [\n\t\t6248,\n\t\t\"highlight/cpp\"\n\t],\n\t\"./cpp.js\": [\n\t\t6248,\n\t\t\"highlight/cpp\"\n\t],\n\t\"./cpp.js.js\": [\n\t\t16365,\n\t\t\"highlight/cpp-js-js\"\n\t],\n\t\"./crmsh\": [\n\t\t77740,\n\t\t\"highlight/crmsh\"\n\t],\n\t\"./crmsh.js\": [\n\t\t77740,\n\t\t\"highlight/crmsh\"\n\t],\n\t\"./crmsh.js.js\": [\n\t\t31965,\n\t\t\"highlight/crmsh-js-js\"\n\t],\n\t\"./crystal\": [\n\t\t83147,\n\t\t\"highlight/crystal\"\n\t],\n\t\"./crystal.js\": [\n\t\t83147,\n\t\t\"highlight/crystal\"\n\t],\n\t\"./crystal.js.js\": [\n\t\t63882,\n\t\t\"highlight/crystal-js-js\"\n\t],\n\t\"./csharp\": [\n\t\t63707,\n\t\t\"highlight/csharp\"\n\t],\n\t\"./csharp.js\": [\n\t\t63707,\n\t\t\"highlight/csharp\"\n\t],\n\t\"./csharp.js.js\": [\n\t\t29676,\n\t\t\"highlight/csharp-js-js\"\n\t],\n\t\"./csp\": [\n\t\t89534,\n\t\t\"highlight/csp\"\n\t],\n\t\"./csp.js\": [\n\t\t89534,\n\t\t\"highlight/csp\"\n\t],\n\t\"./csp.js.js\": [\n\t\t82162,\n\t\t\"highlight/csp-js-js\"\n\t],\n\t\"./css\": [\n\t\t15064,\n\t\t\"highlight/css\"\n\t],\n\t\"./css.js\": [\n\t\t15064,\n\t\t\"highlight/css\"\n\t],\n\t\"./css.js.js\": [\n\t\t45429,\n\t\t\"highlight/css-js-js\"\n\t],\n\t\"./d\": [\n\t\t118,\n\t\t\"highlight/d\"\n\t],\n\t\"./d.js\": [\n\t\t118,\n\t\t\"highlight/d\"\n\t],\n\t\"./d.js.js\": [\n\t\t51484,\n\t\t\"highlight/d-js-js\"\n\t],\n\t\"./dart\": [\n\t\t26642,\n\t\t\"highlight/dart\"\n\t],\n\t\"./dart.js\": [\n\t\t26642,\n\t\t\"highlight/dart\"\n\t],\n\t\"./dart.js.js\": [\n\t\t86573,\n\t\t\"highlight/dart-js-js\"\n\t],\n\t\"./delphi\": [\n\t\t7762,\n\t\t\"highlight/delphi\"\n\t],\n\t\"./delphi.js\": [\n\t\t7762,\n\t\t\"highlight/delphi\"\n\t],\n\t\"./delphi.js.js\": [\n\t\t71839,\n\t\t\"highlight/delphi-js-js\"\n\t],\n\t\"./diff\": [\n\t\t87731,\n\t\t\"highlight/diff\"\n\t],\n\t\"./diff.js\": [\n\t\t87731,\n\t\t\"highlight/diff\"\n\t],\n\t\"./diff.js.js\": [\n\t\t11612,\n\t\t\"highlight/diff-js-js\"\n\t],\n\t\"./django\": [\n\t\t33189,\n\t\t\"highlight/django\"\n\t],\n\t\"./django.js\": [\n\t\t33189,\n\t\t\"highlight/django\"\n\t],\n\t\"./django.js.js\": [\n\t\t94723,\n\t\t\"highlight/django-js-js\"\n\t],\n\t\"./dns\": [\n\t\t31344,\n\t\t\"highlight/dns\"\n\t],\n\t\"./dns.js\": [\n\t\t31344,\n\t\t\"highlight/dns\"\n\t],\n\t\"./dns.js.js\": [\n\t\t37854,\n\t\t\"highlight/dns-js-js\"\n\t],\n\t\"./dockerfile\": [\n\t\t57360,\n\t\t\"highlight/dockerfile\"\n\t],\n\t\"./dockerfile.js\": [\n\t\t57360,\n\t\t\"highlight/dockerfile\"\n\t],\n\t\"./dockerfile.js.js\": [\n\t\t33866,\n\t\t\"highlight/dockerfile-js-js\"\n\t],\n\t\"./dos\": [\n\t\t20605,\n\t\t\"highlight/dos\"\n\t],\n\t\"./dos.js\": [\n\t\t20605,\n\t\t\"highlight/dos\"\n\t],\n\t\"./dos.js.js\": [\n\t\t5378,\n\t\t\"highlight/dos-js-js\"\n\t],\n\t\"./dsconfig\": [\n\t\t7522,\n\t\t\"highlight/dsconfig\"\n\t],\n\t\"./dsconfig.js\": [\n\t\t7522,\n\t\t\"highlight/dsconfig\"\n\t],\n\t\"./dsconfig.js.js\": [\n\t\t63264,\n\t\t\"highlight/dsconfig-js-js\"\n\t],\n\t\"./dts\": [\n\t\t11729,\n\t\t\"highlight/dts\"\n\t],\n\t\"./dts.js\": [\n\t\t11729,\n\t\t\"highlight/dts\"\n\t],\n\t\"./dts.js.js\": [\n\t\t24232,\n\t\t\"highlight/dts-js-js\"\n\t],\n\t\"./dust\": [\n\t\t1450,\n\t\t\"highlight/dust\"\n\t],\n\t\"./dust.js\": [\n\t\t1450,\n\t\t\"highlight/dust\"\n\t],\n\t\"./dust.js.js\": [\n\t\t26229,\n\t\t\"highlight/dust-js-js\"\n\t],\n\t\"./ebnf\": [\n\t\t13039,\n\t\t\"highlight/ebnf\"\n\t],\n\t\"./ebnf.js\": [\n\t\t13039,\n\t\t\"highlight/ebnf\"\n\t],\n\t\"./ebnf.js.js\": [\n\t\t82808,\n\t\t\"highlight/ebnf-js-js\"\n\t],\n\t\"./elixir\": [\n\t\t62543,\n\t\t\"highlight/elixir\"\n\t],\n\t\"./elixir.js\": [\n\t\t62543,\n\t\t\"highlight/elixir\"\n\t],\n\t\"./elixir.js.js\": [\n\t\t40785,\n\t\t\"highlight/elixir-js-js\"\n\t],\n\t\"./elm\": [\n\t\t25658,\n\t\t\"highlight/elm\"\n\t],\n\t\"./elm.js\": [\n\t\t25658,\n\t\t\"highlight/elm\"\n\t],\n\t\"./elm.js.js\": [\n\t\t7977,\n\t\t\"highlight/elm-js-js\"\n\t],\n\t\"./erb\": [\n\t\t32151,\n\t\t\"highlight/erb\"\n\t],\n\t\"./erb.js\": [\n\t\t32151,\n\t\t\"highlight/erb\"\n\t],\n\t\"./erb.js.js\": [\n\t\t9214,\n\t\t\"highlight/erb-js-js\"\n\t],\n\t\"./erlang\": [\n\t\t57569,\n\t\t\"highlight/erlang\"\n\t],\n\t\"./erlang-repl\": [\n\t\t12282,\n\t\t\"highlight/erlang-repl\"\n\t],\n\t\"./erlang-repl.js\": [\n\t\t12282,\n\t\t\"highlight/erlang-repl\"\n\t],\n\t\"./erlang-repl.js.js\": [\n\t\t78191,\n\t\t\"highlight/erlang-repl-js-js\"\n\t],\n\t\"./erlang.js\": [\n\t\t57569,\n\t\t\"highlight/erlang\"\n\t],\n\t\"./erlang.js.js\": [\n\t\t84485,\n\t\t\"highlight/erlang-js-js\"\n\t],\n\t\"./excel\": [\n\t\t5817,\n\t\t\"highlight/excel\"\n\t],\n\t\"./excel.js\": [\n\t\t5817,\n\t\t\"highlight/excel\"\n\t],\n\t\"./excel.js.js\": [\n\t\t72276,\n\t\t\"highlight/excel-js-js\"\n\t],\n\t\"./fix\": [\n\t\t13146,\n\t\t\"highlight/fix\"\n\t],\n\t\"./fix.js\": [\n\t\t13146,\n\t\t\"highlight/fix\"\n\t],\n\t\"./fix.js.js\": [\n\t\t29274,\n\t\t\"highlight/fix-js-js\"\n\t],\n\t\"./flix\": [\n\t\t93090,\n\t\t\"highlight/flix\"\n\t],\n\t\"./flix.js\": [\n\t\t93090,\n\t\t\"highlight/flix\"\n\t],\n\t\"./flix.js.js\": [\n\t\t2556,\n\t\t\"highlight/flix-js-js\"\n\t],\n\t\"./fortran\": [\n\t\t13532,\n\t\t\"highlight/fortran\"\n\t],\n\t\"./fortran.js\": [\n\t\t13532,\n\t\t\"highlight/fortran\"\n\t],\n\t\"./fortran.js.js\": [\n\t\t33800,\n\t\t\"highlight/fortran-js-js\"\n\t],\n\t\"./fsharp\": [\n\t\t36652,\n\t\t\"highlight/fsharp\"\n\t],\n\t\"./fsharp.js\": [\n\t\t36652,\n\t\t\"highlight/fsharp\"\n\t],\n\t\"./fsharp.js.js\": [\n\t\t11770,\n\t\t\"highlight/fsharp-js-js\"\n\t],\n\t\"./gams\": [\n\t\t47903,\n\t\t\"highlight/gams\"\n\t],\n\t\"./gams.js\": [\n\t\t47903,\n\t\t\"highlight/gams\"\n\t],\n\t\"./gams.js.js\": [\n\t\t3060,\n\t\t\"highlight/gams-js-js\"\n\t],\n\t\"./gauss\": [\n\t\t45004,\n\t\t\"highlight/gauss\"\n\t],\n\t\"./gauss.js\": [\n\t\t45004,\n\t\t\"highlight/gauss\"\n\t],\n\t\"./gauss.js.js\": [\n\t\t51715,\n\t\t\"highlight/gauss-js-js\"\n\t],\n\t\"./gcode\": [\n\t\t11871,\n\t\t\"highlight/gcode\"\n\t],\n\t\"./gcode.js\": [\n\t\t11871,\n\t\t\"highlight/gcode\"\n\t],\n\t\"./gcode.js.js\": [\n\t\t84025,\n\t\t\"highlight/gcode-js-js\"\n\t],\n\t\"./gherkin\": [\n\t\t16499,\n\t\t\"highlight/gherkin\"\n\t],\n\t\"./gherkin.js\": [\n\t\t16499,\n\t\t\"highlight/gherkin\"\n\t],\n\t\"./gherkin.js.js\": [\n\t\t21442,\n\t\t\"highlight/gherkin-js-js\"\n\t],\n\t\"./glsl\": [\n\t\t21942,\n\t\t\"highlight/glsl\"\n\t],\n\t\"./glsl.js\": [\n\t\t21942,\n\t\t\"highlight/glsl\"\n\t],\n\t\"./glsl.js.js\": [\n\t\t79958,\n\t\t\"highlight/glsl-js-js\"\n\t],\n\t\"./gml\": [\n\t\t81921,\n\t\t\"highlight/gml\"\n\t],\n\t\"./gml.js\": [\n\t\t81921,\n\t\t\"highlight/gml\"\n\t],\n\t\"./gml.js.js\": [\n\t\t98186,\n\t\t\"highlight/gml\",\n\t\t\"highlight/gml-js-js\"\n\t],\n\t\"./go\": [\n\t\t92399,\n\t\t\"highlight/go\"\n\t],\n\t\"./go.js\": [\n\t\t92399,\n\t\t\"highlight/go\"\n\t],\n\t\"./go.js.js\": [\n\t\t64368,\n\t\t\"highlight/go-js-js\"\n\t],\n\t\"./golo\": [\n\t\t9574,\n\t\t\"highlight/golo\"\n\t],\n\t\"./golo.js\": [\n\t\t9574,\n\t\t\"highlight/golo\"\n\t],\n\t\"./golo.js.js\": [\n\t\t361,\n\t\t\"highlight/golo-js-js\"\n\t],\n\t\"./gradle\": [\n\t\t89878,\n\t\t\"highlight/gradle\"\n\t],\n\t\"./gradle.js\": [\n\t\t89878,\n\t\t\"highlight/gradle\"\n\t],\n\t\"./gradle.js.js\": [\n\t\t57741,\n\t\t\"highlight/gradle-js-js\"\n\t],\n\t\"./graphql\": [\n\t\t21738,\n\t\t\"highlight/graphql\"\n\t],\n\t\"./graphql.js\": [\n\t\t21738,\n\t\t\"highlight/graphql\"\n\t],\n\t\"./graphql.js.js\": [\n\t\t94840,\n\t\t\"highlight/graphql-js-js\"\n\t],\n\t\"./groovy\": [\n\t\t54658,\n\t\t\"highlight/groovy\"\n\t],\n\t\"./groovy.js\": [\n\t\t54658,\n\t\t\"highlight/groovy\"\n\t],\n\t\"./groovy.js.js\": [\n\t\t56464,\n\t\t\"highlight/groovy-js-js\"\n\t],\n\t\"./haml\": [\n\t\t21950,\n\t\t\"highlight/haml\"\n\t],\n\t\"./haml.js\": [\n\t\t21950,\n\t\t\"highlight/haml\"\n\t],\n\t\"./haml.js.js\": [\n\t\t31061,\n\t\t\"highlight/haml-js-js\"\n\t],\n\t\"./handlebars\": [\n\t\t71407,\n\t\t\"highlight/handlebars\"\n\t],\n\t\"./handlebars.js\": [\n\t\t71407,\n\t\t\"highlight/handlebars\"\n\t],\n\t\"./handlebars.js.js\": [\n\t\t74313,\n\t\t\"highlight/handlebars-js-js\"\n\t],\n\t\"./haskell\": [\n\t\t67077,\n\t\t\"highlight/haskell\"\n\t],\n\t\"./haskell.js\": [\n\t\t67077,\n\t\t\"highlight/haskell\"\n\t],\n\t\"./haskell.js.js\": [\n\t\t98107,\n\t\t\"highlight/haskell-js-js\"\n\t],\n\t\"./haxe\": [\n\t\t42720,\n\t\t\"highlight/haxe\"\n\t],\n\t\"./haxe.js\": [\n\t\t42720,\n\t\t\"highlight/haxe\"\n\t],\n\t\"./haxe.js.js\": [\n\t\t43127,\n\t\t\"highlight/haxe-js-js\"\n\t],\n\t\"./hsp\": [\n\t\t69662,\n\t\t\"highlight/hsp\"\n\t],\n\t\"./hsp.js\": [\n\t\t69662,\n\t\t\"highlight/hsp\"\n\t],\n\t\"./hsp.js.js\": [\n\t\t67423,\n\t\t\"highlight/hsp-js-js\"\n\t],\n\t\"./http\": [\n\t\t78937,\n\t\t\"highlight/http\"\n\t],\n\t\"./http.js\": [\n\t\t78937,\n\t\t\"highlight/http\"\n\t],\n\t\"./http.js.js\": [\n\t\t49706,\n\t\t\"highlight/http-js-js\"\n\t],\n\t\"./hy\": [\n\t\t99358,\n\t\t\"highlight/hy\"\n\t],\n\t\"./hy.js\": [\n\t\t99358,\n\t\t\"highlight/hy\"\n\t],\n\t\"./hy.js.js\": [\n\t\t85952,\n\t\t\"highlight/hy-js-js\"\n\t],\n\t\"./inform7\": [\n\t\t84458,\n\t\t\"highlight/inform7\"\n\t],\n\t\"./inform7.js\": [\n\t\t84458,\n\t\t\"highlight/inform7\"\n\t],\n\t\"./inform7.js.js\": [\n\t\t96955,\n\t\t\"highlight/inform7-js-js\"\n\t],\n\t\"./ini\": [\n\t\t94762,\n\t\t\"highlight/ini\"\n\t],\n\t\"./ini.js\": [\n\t\t94762,\n\t\t\"highlight/ini\"\n\t],\n\t\"./ini.js.js\": [\n\t\t38305,\n\t\t\"highlight/ini-js-js\"\n\t],\n\t\"./irpf90\": [\n\t\t60320,\n\t\t\"highlight/irpf90\"\n\t],\n\t\"./irpf90.js\": [\n\t\t60320,\n\t\t\"highlight/irpf90\"\n\t],\n\t\"./irpf90.js.js\": [\n\t\t78463,\n\t\t\"highlight/irpf90-js-js\"\n\t],\n\t\"./isbl\": [\n\t\t14664,\n\t\t\"highlight/isbl\"\n\t],\n\t\"./isbl.js\": [\n\t\t14664,\n\t\t\"highlight/isbl\"\n\t],\n\t\"./isbl.js.js\": [\n\t\t77648,\n\t\t\"highlight/isbl\",\n\t\t\"highlight/isbl-js-js\"\n\t],\n\t\"./java\": [\n\t\t28257,\n\t\t\"highlight/java\"\n\t],\n\t\"./java.js\": [\n\t\t28257,\n\t\t\"highlight/java\"\n\t],\n\t\"./java.js.js\": [\n\t\t53664,\n\t\t\"highlight/java-js-js\"\n\t],\n\t\"./javascript\": [\n\t\t40978,\n\t\t\"highlight/javascript\"\n\t],\n\t\"./javascript.js\": [\n\t\t40978,\n\t\t\"highlight/javascript\"\n\t],\n\t\"./javascript.js.js\": [\n\t\t14204,\n\t\t\"highlight/javascript-js-js\"\n\t],\n\t\"./jboss-cli\": [\n\t\t84111,\n\t\t\"highlight/jboss-cli\"\n\t],\n\t\"./jboss-cli.js\": [\n\t\t84111,\n\t\t\"highlight/jboss-cli\"\n\t],\n\t\"./jboss-cli.js.js\": [\n\t\t28948,\n\t\t\"highlight/jboss-cli-js-js\"\n\t],\n\t\"./json\": [\n\t\t40014,\n\t\t\"highlight/json\"\n\t],\n\t\"./json.js\": [\n\t\t40014,\n\t\t\"highlight/json\"\n\t],\n\t\"./json.js.js\": [\n\t\t14547,\n\t\t\"highlight/json-js-js\"\n\t],\n\t\"./julia\": [\n\t\t24629,\n\t\t\"highlight/julia\"\n\t],\n\t\"./julia-repl\": [\n\t\t25850,\n\t\t\"highlight/julia-repl\"\n\t],\n\t\"./julia-repl.js\": [\n\t\t25850,\n\t\t\"highlight/julia-repl\"\n\t],\n\t\"./julia-repl.js.js\": [\n\t\t40996,\n\t\t\"highlight/julia-repl-js-js\"\n\t],\n\t\"./julia.js\": [\n\t\t24629,\n\t\t\"highlight/julia\"\n\t],\n\t\"./julia.js.js\": [\n\t\t34380,\n\t\t\"highlight/julia-js-js\"\n\t],\n\t\"./kotlin\": [\n\t\t65812,\n\t\t\"highlight/kotlin\"\n\t],\n\t\"./kotlin.js\": [\n\t\t65812,\n\t\t\"highlight/kotlin\"\n\t],\n\t\"./kotlin.js.js\": [\n\t\t15847,\n\t\t\"highlight/kotlin-js-js\"\n\t],\n\t\"./lasso\": [\n\t\t73530,\n\t\t\"highlight/lasso\"\n\t],\n\t\"./lasso.js\": [\n\t\t73530,\n\t\t\"highlight/lasso\"\n\t],\n\t\"./lasso.js.js\": [\n\t\t88178,\n\t\t\"highlight/lasso-js-js\"\n\t],\n\t\"./latex\": [\n\t\t47408,\n\t\t\"highlight/latex\"\n\t],\n\t\"./latex.js\": [\n\t\t47408,\n\t\t\"highlight/latex\"\n\t],\n\t\"./latex.js.js\": [\n\t\t32429,\n\t\t\"highlight/latex-js-js\"\n\t],\n\t\"./ldif\": [\n\t\t57604,\n\t\t\"highlight/ldif\"\n\t],\n\t\"./ldif.js\": [\n\t\t57604,\n\t\t\"highlight/ldif\"\n\t],\n\t\"./ldif.js.js\": [\n\t\t57137,\n\t\t\"highlight/ldif-js-js\"\n\t],\n\t\"./leaf\": [\n\t\t23961,\n\t\t\"highlight/leaf\"\n\t],\n\t\"./leaf.js\": [\n\t\t23961,\n\t\t\"highlight/leaf\"\n\t],\n\t\"./leaf.js.js\": [\n\t\t10822,\n\t\t\"highlight/leaf-js-js\"\n\t],\n\t\"./less\": [\n\t\t44210,\n\t\t\"highlight/less\"\n\t],\n\t\"./less.js\": [\n\t\t44210,\n\t\t\"highlight/less\"\n\t],\n\t\"./less.js.js\": [\n\t\t63224,\n\t\t\"highlight/less-js-js\"\n\t],\n\t\"./lisp\": [\n\t\t91943,\n\t\t\"highlight/lisp\"\n\t],\n\t\"./lisp.js\": [\n\t\t91943,\n\t\t\"highlight/lisp\"\n\t],\n\t\"./lisp.js.js\": [\n\t\t94091,\n\t\t\"highlight/lisp-js-js\"\n\t],\n\t\"./livecodeserver\": [\n\t\t82299,\n\t\t\"highlight/livecodeserver\"\n\t],\n\t\"./livecodeserver.js\": [\n\t\t82299,\n\t\t\"highlight/livecodeserver\"\n\t],\n\t\"./livecodeserver.js.js\": [\n\t\t99261,\n\t\t\"highlight/livecodeserver-js-js\"\n\t],\n\t\"./livescript\": [\n\t\t69735,\n\t\t\"highlight/livescript\"\n\t],\n\t\"./livescript.js\": [\n\t\t69735,\n\t\t\"highlight/livescript\"\n\t],\n\t\"./livescript.js.js\": [\n\t\t72714,\n\t\t\"highlight/livescript-js-js\"\n\t],\n\t\"./llvm\": [\n\t\t14972,\n\t\t\"highlight/llvm\"\n\t],\n\t\"./llvm.js\": [\n\t\t14972,\n\t\t\"highlight/llvm\"\n\t],\n\t\"./llvm.js.js\": [\n\t\t43195,\n\t\t\"highlight/llvm-js-js\"\n\t],\n\t\"./lsl\": [\n\t\t37034,\n\t\t\"highlight/lsl\"\n\t],\n\t\"./lsl.js\": [\n\t\t37034,\n\t\t\"highlight/lsl\"\n\t],\n\t\"./lsl.js.js\": [\n\t\t64675,\n\t\t\"highlight/lsl-js-js\"\n\t],\n\t\"./lua\": [\n\t\t4981,\n\t\t\"highlight/lua\"\n\t],\n\t\"./lua.js\": [\n\t\t4981,\n\t\t\"highlight/lua\"\n\t],\n\t\"./lua.js.js\": [\n\t\t58353,\n\t\t\"highlight/lua-js-js\"\n\t],\n\t\"./makefile\": [\n\t\t97903,\n\t\t\"highlight/makefile\"\n\t],\n\t\"./makefile.js\": [\n\t\t97903,\n\t\t\"highlight/makefile\"\n\t],\n\t\"./makefile.js.js\": [\n\t\t49591,\n\t\t\"highlight/makefile-js-js\"\n\t],\n\t\"./markdown\": [\n\t\t52003,\n\t\t\"highlight/markdown\"\n\t],\n\t\"./markdown.js\": [\n\t\t52003,\n\t\t\"highlight/markdown\"\n\t],\n\t\"./markdown.js.js\": [\n\t\t11855,\n\t\t\"highlight/markdown-js-js\"\n\t],\n\t\"./mathematica\": [\n\t\t8601,\n\t\t\"highlight/mathematica\"\n\t],\n\t\"./mathematica.js\": [\n\t\t8601,\n\t\t\"highlight/mathematica\"\n\t],\n\t\"./mathematica.js.js\": [\n\t\t68752,\n\t\t\"highlight/mathematica\",\n\t\t\"highlight/mathematica-js-js\"\n\t],\n\t\"./matlab\": [\n\t\t48009,\n\t\t\"highlight/matlab\"\n\t],\n\t\"./matlab.js\": [\n\t\t48009,\n\t\t\"highlight/matlab\"\n\t],\n\t\"./matlab.js.js\": [\n\t\t53959,\n\t\t\"highlight/matlab-js-js\"\n\t],\n\t\"./maxima\": [\n\t\t27020,\n\t\t\"highlight/maxima\"\n\t],\n\t\"./maxima.js\": [\n\t\t27020,\n\t\t\"highlight/maxima\"\n\t],\n\t\"./maxima.js.js\": [\n\t\t11307,\n\t\t\"highlight/maxima-js-js\"\n\t],\n\t\"./mel\": [\n\t\t67739,\n\t\t\"highlight/mel\"\n\t],\n\t\"./mel.js\": [\n\t\t67739,\n\t\t\"highlight/mel\"\n\t],\n\t\"./mel.js.js\": [\n\t\t85316,\n\t\t\"highlight/mel-js-js\"\n\t],\n\t\"./mercury\": [\n\t\t44261,\n\t\t\"highlight/mercury\"\n\t],\n\t\"./mercury.js\": [\n\t\t44261,\n\t\t\"highlight/mercury\"\n\t],\n\t\"./mercury.js.js\": [\n\t\t64896,\n\t\t\"highlight/mercury-js-js\"\n\t],\n\t\"./mipsasm\": [\n\t\t74807,\n\t\t\"highlight/mipsasm\"\n\t],\n\t\"./mipsasm.js\": [\n\t\t74807,\n\t\t\"highlight/mipsasm\"\n\t],\n\t\"./mipsasm.js.js\": [\n\t\t61511,\n\t\t\"highlight/mipsasm-js-js\"\n\t],\n\t\"./mizar\": [\n\t\t49291,\n\t\t\"highlight/mizar\"\n\t],\n\t\"./mizar.js\": [\n\t\t49291,\n\t\t\"highlight/mizar\"\n\t],\n\t\"./mizar.js.js\": [\n\t\t59718,\n\t\t\"highlight/mizar-js-js\"\n\t],\n\t\"./mojolicious\": [\n\t\t8895,\n\t\t\"highlight/mojolicious\"\n\t],\n\t\"./mojolicious.js\": [\n\t\t8895,\n\t\t\"highlight/mojolicious\"\n\t],\n\t\"./mojolicious.js.js\": [\n\t\t54368,\n\t\t\"highlight/mojolicious-js-js\"\n\t],\n\t\"./monkey\": [\n\t\t9676,\n\t\t\"highlight/monkey\"\n\t],\n\t\"./monkey.js\": [\n\t\t9676,\n\t\t\"highlight/monkey\"\n\t],\n\t\"./monkey.js.js\": [\n\t\t9724,\n\t\t\"highlight/monkey-js-js\"\n\t],\n\t\"./moonscript\": [\n\t\t56486,\n\t\t\"highlight/moonscript\"\n\t],\n\t\"./moonscript.js\": [\n\t\t56486,\n\t\t\"highlight/moonscript\"\n\t],\n\t\"./moonscript.js.js\": [\n\t\t94766,\n\t\t\"highlight/moonscript-js-js\"\n\t],\n\t\"./n1ql\": [\n\t\t71414,\n\t\t\"highlight/n1ql\"\n\t],\n\t\"./n1ql.js\": [\n\t\t71414,\n\t\t\"highlight/n1ql\"\n\t],\n\t\"./n1ql.js.js\": [\n\t\t85334,\n\t\t\"highlight/n1ql-js-js\"\n\t],\n\t\"./nestedtext\": [\n\t\t5384,\n\t\t\"highlight/nestedtext\"\n\t],\n\t\"./nestedtext.js\": [\n\t\t5384,\n\t\t\"highlight/nestedtext\"\n\t],\n\t\"./nestedtext.js.js\": [\n\t\t82574,\n\t\t\"highlight/nestedtext-js-js\"\n\t],\n\t\"./nginx\": [\n\t\t94028,\n\t\t\"highlight/nginx\"\n\t],\n\t\"./nginx.js\": [\n\t\t94028,\n\t\t\"highlight/nginx\"\n\t],\n\t\"./nginx.js.js\": [\n\t\t68815,\n\t\t\"highlight/nginx-js-js\"\n\t],\n\t\"./nim\": [\n\t\t45968,\n\t\t\"highlight/nim\"\n\t],\n\t\"./nim.js\": [\n\t\t45968,\n\t\t\"highlight/nim\"\n\t],\n\t\"./nim.js.js\": [\n\t\t51698,\n\t\t\"highlight/nim-js-js\"\n\t],\n\t\"./nix\": [\n\t\t84802,\n\t\t\"highlight/nix\"\n\t],\n\t\"./nix.js\": [\n\t\t84802,\n\t\t\"highlight/nix\"\n\t],\n\t\"./nix.js.js\": [\n\t\t54831,\n\t\t\"highlight/nix-js-js\"\n\t],\n\t\"./node-repl\": [\n\t\t69609,\n\t\t\"highlight/node-repl\"\n\t],\n\t\"./node-repl.js\": [\n\t\t69609,\n\t\t\"highlight/node-repl\"\n\t],\n\t\"./node-repl.js.js\": [\n\t\t75233,\n\t\t\"highlight/node-repl-js-js\"\n\t],\n\t\"./nsis\": [\n\t\t9968,\n\t\t\"highlight/nsis\"\n\t],\n\t\"./nsis.js\": [\n\t\t9968,\n\t\t\"highlight/nsis\"\n\t],\n\t\"./nsis.js.js\": [\n\t\t49113,\n\t\t\"highlight/nsis-js-js\"\n\t],\n\t\"./objectivec\": [\n\t\t2446,\n\t\t\"highlight/objectivec\"\n\t],\n\t\"./objectivec.js\": [\n\t\t2446,\n\t\t\"highlight/objectivec\"\n\t],\n\t\"./objectivec.js.js\": [\n\t\t3707,\n\t\t\"highlight/objectivec-js-js\"\n\t],\n\t\"./ocaml\": [\n\t\t57552,\n\t\t\"highlight/ocaml\"\n\t],\n\t\"./ocaml.js\": [\n\t\t57552,\n\t\t\"highlight/ocaml\"\n\t],\n\t\"./ocaml.js.js\": [\n\t\t63808,\n\t\t\"highlight/ocaml-js-js\"\n\t],\n\t\"./openscad\": [\n\t\t6277,\n\t\t\"highlight/openscad\"\n\t],\n\t\"./openscad.js\": [\n\t\t6277,\n\t\t\"highlight/openscad\"\n\t],\n\t\"./openscad.js.js\": [\n\t\t11393,\n\t\t\"highlight/openscad-js-js\"\n\t],\n\t\"./oxygene\": [\n\t\t80136,\n\t\t\"highlight/oxygene\"\n\t],\n\t\"./oxygene.js\": [\n\t\t80136,\n\t\t\"highlight/oxygene\"\n\t],\n\t\"./oxygene.js.js\": [\n\t\t93871,\n\t\t\"highlight/oxygene-js-js\"\n\t],\n\t\"./parser3\": [\n\t\t43412,\n\t\t\"highlight/parser3\"\n\t],\n\t\"./parser3.js\": [\n\t\t43412,\n\t\t\"highlight/parser3\"\n\t],\n\t\"./parser3.js.js\": [\n\t\t93773,\n\t\t\"highlight/parser3-js-js\"\n\t],\n\t\"./perl\": [\n\t\t12482,\n\t\t\"highlight/perl\"\n\t],\n\t\"./perl.js\": [\n\t\t12482,\n\t\t\"highlight/perl\"\n\t],\n\t\"./perl.js.js\": [\n\t\t35740,\n\t\t\"highlight/perl-js-js\"\n\t],\n\t\"./pf\": [\n\t\t4485,\n\t\t\"highlight/pf\"\n\t],\n\t\"./pf.js\": [\n\t\t4485,\n\t\t\"highlight/pf\"\n\t],\n\t\"./pf.js.js\": [\n\t\t85243,\n\t\t\"highlight/pf-js-js\"\n\t],\n\t\"./pgsql\": [\n\t\t89814,\n\t\t\"highlight/pgsql\"\n\t],\n\t\"./pgsql.js\": [\n\t\t89814,\n\t\t\"highlight/pgsql\"\n\t],\n\t\"./pgsql.js.js\": [\n\t\t64460,\n\t\t\"highlight/pgsql-js-js\"\n\t],\n\t\"./php\": [\n\t\t92656,\n\t\t\"highlight/php\"\n\t],\n\t\"./php-template\": [\n\t\t35112,\n\t\t\"highlight/php-template\"\n\t],\n\t\"./php-template.js\": [\n\t\t35112,\n\t\t\"highlight/php-template\"\n\t],\n\t\"./php-template.js.js\": [\n\t\t6511,\n\t\t\"highlight/php-template-js-js\"\n\t],\n\t\"./php.js\": [\n\t\t92656,\n\t\t\"highlight/php\"\n\t],\n\t\"./php.js.js\": [\n\t\t70693,\n\t\t\"highlight/php-js-js\"\n\t],\n\t\"./plaintext\": [\n\t\t62437,\n\t\t\"highlight/plaintext\"\n\t],\n\t\"./plaintext.js\": [\n\t\t62437,\n\t\t\"highlight/plaintext\"\n\t],\n\t\"./plaintext.js.js\": [\n\t\t13651,\n\t\t\"highlight/plaintext-js-js\"\n\t],\n\t\"./pony\": [\n\t\t46874,\n\t\t\"highlight/pony\"\n\t],\n\t\"./pony.js\": [\n\t\t46874,\n\t\t\"highlight/pony\"\n\t],\n\t\"./pony.js.js\": [\n\t\t50864,\n\t\t\"highlight/pony-js-js\"\n\t],\n\t\"./powershell\": [\n\t\t85040,\n\t\t\"highlight/powershell\"\n\t],\n\t\"./powershell.js\": [\n\t\t85040,\n\t\t\"highlight/powershell\"\n\t],\n\t\"./powershell.js.js\": [\n\t\t23003,\n\t\t\"highlight/powershell-js-js\"\n\t],\n\t\"./processing\": [\n\t\t25371,\n\t\t\"highlight/processing\"\n\t],\n\t\"./processing.js\": [\n\t\t25371,\n\t\t\"highlight/processing\"\n\t],\n\t\"./processing.js.js\": [\n\t\t81414,\n\t\t\"highlight/processing-js-js\"\n\t],\n\t\"./profile\": [\n\t\t73476,\n\t\t\"highlight/profile\"\n\t],\n\t\"./profile.js\": [\n\t\t73476,\n\t\t\"highlight/profile\"\n\t],\n\t\"./profile.js.js\": [\n\t\t13445,\n\t\t\"highlight/profile-js-js\"\n\t],\n\t\"./prolog\": [\n\t\t63944,\n\t\t\"highlight/prolog\"\n\t],\n\t\"./prolog.js\": [\n\t\t63944,\n\t\t\"highlight/prolog\"\n\t],\n\t\"./prolog.js.js\": [\n\t\t45640,\n\t\t\"highlight/prolog-js-js\"\n\t],\n\t\"./properties\": [\n\t\t17546,\n\t\t\"highlight/properties\"\n\t],\n\t\"./properties.js\": [\n\t\t17546,\n\t\t\"highlight/properties\"\n\t],\n\t\"./properties.js.js\": [\n\t\t19862,\n\t\t\"highlight/properties-js-js\"\n\t],\n\t\"./protobuf\": [\n\t\t15559,\n\t\t\"highlight/protobuf\"\n\t],\n\t\"./protobuf.js\": [\n\t\t15559,\n\t\t\"highlight/protobuf\"\n\t],\n\t\"./protobuf.js.js\": [\n\t\t88241,\n\t\t\"highlight/protobuf-js-js\"\n\t],\n\t\"./puppet\": [\n\t\t93867,\n\t\t\"highlight/puppet\"\n\t],\n\t\"./puppet.js\": [\n\t\t93867,\n\t\t\"highlight/puppet\"\n\t],\n\t\"./puppet.js.js\": [\n\t\t973,\n\t\t\"highlight/puppet-js-js\"\n\t],\n\t\"./purebasic\": [\n\t\t92938,\n\t\t\"highlight/purebasic\"\n\t],\n\t\"./purebasic.js\": [\n\t\t92938,\n\t\t\"highlight/purebasic\"\n\t],\n\t\"./purebasic.js.js\": [\n\t\t53893,\n\t\t\"highlight/purebasic-js-js\"\n\t],\n\t\"./python\": [\n\t\t38245,\n\t\t\"highlight/python\"\n\t],\n\t\"./python-repl\": [\n\t\t3722,\n\t\t\"highlight/python-repl\"\n\t],\n\t\"./python-repl.js\": [\n\t\t3722,\n\t\t\"highlight/python-repl\"\n\t],\n\t\"./python-repl.js.js\": [\n\t\t53693,\n\t\t\"highlight/python-repl-js-js\"\n\t],\n\t\"./python.js\": [\n\t\t38245,\n\t\t\"highlight/python\"\n\t],\n\t\"./python.js.js\": [\n\t\t43720,\n\t\t\"highlight/python-js-js\"\n\t],\n\t\"./q\": [\n\t\t82623,\n\t\t\"highlight/q\"\n\t],\n\t\"./q.js\": [\n\t\t82623,\n\t\t\"highlight/q\"\n\t],\n\t\"./q.js.js\": [\n\t\t90999,\n\t\t\"highlight/q-js-js\"\n\t],\n\t\"./qml\": [\n\t\t23797,\n\t\t\"highlight/qml\"\n\t],\n\t\"./qml.js\": [\n\t\t23797,\n\t\t\"highlight/qml\"\n\t],\n\t\"./qml.js.js\": [\n\t\t96012,\n\t\t\"highlight/qml-js-js\"\n\t],\n\t\"./r\": [\n\t\t54730,\n\t\t\"highlight/r\"\n\t],\n\t\"./r.js\": [\n\t\t54730,\n\t\t\"highlight/r\"\n\t],\n\t\"./r.js.js\": [\n\t\t26930,\n\t\t\"highlight/r-js-js\"\n\t],\n\t\"./reasonml\": [\n\t\t2318,\n\t\t\"highlight/reasonml\"\n\t],\n\t\"./reasonml.js\": [\n\t\t2318,\n\t\t\"highlight/reasonml\"\n\t],\n\t\"./reasonml.js.js\": [\n\t\t39057,\n\t\t\"highlight/reasonml-js-js\"\n\t],\n\t\"./rib\": [\n\t\t94820,\n\t\t\"highlight/rib\"\n\t],\n\t\"./rib.js\": [\n\t\t94820,\n\t\t\"highlight/rib\"\n\t],\n\t\"./rib.js.js\": [\n\t\t50363,\n\t\t\"highlight/rib-js-js\"\n\t],\n\t\"./roboconf\": [\n\t\t41874,\n\t\t\"highlight/roboconf\"\n\t],\n\t\"./roboconf.js\": [\n\t\t41874,\n\t\t\"highlight/roboconf\"\n\t],\n\t\"./roboconf.js.js\": [\n\t\t25875,\n\t\t\"highlight/roboconf-js-js\"\n\t],\n\t\"./routeros\": [\n\t\t74005,\n\t\t\"highlight/routeros\"\n\t],\n\t\"./routeros.js\": [\n\t\t74005,\n\t\t\"highlight/routeros\"\n\t],\n\t\"./routeros.js.js\": [\n\t\t95873,\n\t\t\"highlight/routeros-js-js\"\n\t],\n\t\"./rsl\": [\n\t\t92852,\n\t\t\"highlight/rsl\"\n\t],\n\t\"./rsl.js\": [\n\t\t92852,\n\t\t\"highlight/rsl\"\n\t],\n\t\"./rsl.js.js\": [\n\t\t25978,\n\t\t\"highlight/rsl-js-js\"\n\t],\n\t\"./ruby\": [\n\t\t67905,\n\t\t\"highlight/ruby\"\n\t],\n\t\"./ruby.js\": [\n\t\t67905,\n\t\t\"highlight/ruby\"\n\t],\n\t\"./ruby.js.js\": [\n\t\t7453,\n\t\t\"highlight/ruby-js-js\"\n\t],\n\t\"./ruleslanguage\": [\n\t\t32192,\n\t\t\"highlight/ruleslanguage\"\n\t],\n\t\"./ruleslanguage.js\": [\n\t\t32192,\n\t\t\"highlight/ruleslanguage\"\n\t],\n\t\"./ruleslanguage.js.js\": [\n\t\t51506,\n\t\t\"highlight/ruleslanguage-js-js\"\n\t],\n\t\"./rust\": [\n\t\t9880,\n\t\t\"highlight/rust\"\n\t],\n\t\"./rust.js\": [\n\t\t9880,\n\t\t\"highlight/rust\"\n\t],\n\t\"./rust.js.js\": [\n\t\t75391,\n\t\t\"highlight/rust-js-js\"\n\t],\n\t\"./sas\": [\n\t\t93129,\n\t\t\"highlight/sas\"\n\t],\n\t\"./sas.js\": [\n\t\t93129,\n\t\t\"highlight/sas\"\n\t],\n\t\"./sas.js.js\": [\n\t\t56262,\n\t\t\"highlight/sas-js-js\"\n\t],\n\t\"./scala\": [\n\t\t30729,\n\t\t\"highlight/scala\"\n\t],\n\t\"./scala.js\": [\n\t\t30729,\n\t\t\"highlight/scala\"\n\t],\n\t\"./scala.js.js\": [\n\t\t76940,\n\t\t\"highlight/scala-js-js\"\n\t],\n\t\"./scheme\": [\n\t\t82254,\n\t\t\"highlight/scheme\"\n\t],\n\t\"./scheme.js\": [\n\t\t82254,\n\t\t\"highlight/scheme\"\n\t],\n\t\"./scheme.js.js\": [\n\t\t76613,\n\t\t\"highlight/scheme-js-js\"\n\t],\n\t\"./scilab\": [\n\t\t85149,\n\t\t\"highlight/scilab\"\n\t],\n\t\"./scilab.js\": [\n\t\t85149,\n\t\t\"highlight/scilab\"\n\t],\n\t\"./scilab.js.js\": [\n\t\t47731,\n\t\t\"highlight/scilab-js-js\"\n\t],\n\t\"./scss\": [\n\t\t71062,\n\t\t\"highlight/scss\"\n\t],\n\t\"./scss.js\": [\n\t\t71062,\n\t\t\"highlight/scss\"\n\t],\n\t\"./scss.js.js\": [\n\t\t61258,\n\t\t\"highlight/scss-js-js\"\n\t],\n\t\"./shell\": [\n\t\t7874,\n\t\t\"highlight/shell\"\n\t],\n\t\"./shell.js\": [\n\t\t7874,\n\t\t\"highlight/shell\"\n\t],\n\t\"./shell.js.js\": [\n\t\t16605,\n\t\t\"highlight/shell-js-js\"\n\t],\n\t\"./smali\": [\n\t\t10943,\n\t\t\"highlight/smali\"\n\t],\n\t\"./smali.js\": [\n\t\t10943,\n\t\t\"highlight/smali\"\n\t],\n\t\"./smali.js.js\": [\n\t\t21216,\n\t\t\"highlight/smali-js-js\"\n\t],\n\t\"./smalltalk\": [\n\t\t17659,\n\t\t\"highlight/smalltalk\"\n\t],\n\t\"./smalltalk.js\": [\n\t\t17659,\n\t\t\"highlight/smalltalk\"\n\t],\n\t\"./smalltalk.js.js\": [\n\t\t5229,\n\t\t\"highlight/smalltalk-js-js\"\n\t],\n\t\"./sml\": [\n\t\t45935,\n\t\t\"highlight/sml\"\n\t],\n\t\"./sml.js\": [\n\t\t45935,\n\t\t\"highlight/sml\"\n\t],\n\t\"./sml.js.js\": [\n\t\t26301,\n\t\t\"highlight/sml-js-js\"\n\t],\n\t\"./sqf\": [\n\t\t3677,\n\t\t\"highlight/sqf\"\n\t],\n\t\"./sqf.js\": [\n\t\t3677,\n\t\t\"highlight/sqf\"\n\t],\n\t\"./sqf.js.js\": [\n\t\t27351,\n\t\t\"highlight/sqf\",\n\t\t\"highlight/sqf-js-js\"\n\t],\n\t\"./sql\": [\n\t\t98935,\n\t\t\"highlight/sql\"\n\t],\n\t\"./sql.js\": [\n\t\t98935,\n\t\t\"highlight/sql\"\n\t],\n\t\"./sql.js.js\": [\n\t\t43066,\n\t\t\"highlight/sql-js-js\"\n\t],\n\t\"./stan\": [\n\t\t50052,\n\t\t\"highlight/stan\"\n\t],\n\t\"./stan.js\": [\n\t\t50052,\n\t\t\"highlight/stan\"\n\t],\n\t\"./stan.js.js\": [\n\t\t41047,\n\t\t\"highlight/stan-js-js\"\n\t],\n\t\"./stata\": [\n\t\t60454,\n\t\t\"highlight/stata\"\n\t],\n\t\"./stata.js\": [\n\t\t60454,\n\t\t\"highlight/stata\"\n\t],\n\t\"./stata.js.js\": [\n\t\t78525,\n\t\t\"highlight/stata-js-js\"\n\t],\n\t\"./step21\": [\n\t\t37022,\n\t\t\"highlight/step21\"\n\t],\n\t\"./step21.js\": [\n\t\t37022,\n\t\t\"highlight/step21\"\n\t],\n\t\"./step21.js.js\": [\n\t\t85098,\n\t\t\"highlight/step21-js-js\"\n\t],\n\t\"./stylus\": [\n\t\t88688,\n\t\t\"highlight/stylus\"\n\t],\n\t\"./stylus.js\": [\n\t\t88688,\n\t\t\"highlight/stylus\"\n\t],\n\t\"./stylus.js.js\": [\n\t\t91613,\n\t\t\"highlight/stylus-js-js\"\n\t],\n\t\"./subunit\": [\n\t\t40726,\n\t\t\"highlight/subunit\"\n\t],\n\t\"./subunit.js\": [\n\t\t40726,\n\t\t\"highlight/subunit\"\n\t],\n\t\"./subunit.js.js\": [\n\t\t93299,\n\t\t\"highlight/subunit-js-js\"\n\t],\n\t\"./swift\": [\n\t\t77690,\n\t\t\"highlight/swift\"\n\t],\n\t\"./swift.js\": [\n\t\t77690,\n\t\t\"highlight/swift\"\n\t],\n\t\"./swift.js.js\": [\n\t\t82974,\n\t\t\"highlight/swift-js-js\"\n\t],\n\t\"./taggerscript\": [\n\t\t15460,\n\t\t\"highlight/taggerscript\"\n\t],\n\t\"./taggerscript.js\": [\n\t\t15460,\n\t\t\"highlight/taggerscript\"\n\t],\n\t\"./taggerscript.js.js\": [\n\t\t43700,\n\t\t\"highlight/taggerscript-js-js\"\n\t],\n\t\"./tap\": [\n\t\t30422,\n\t\t\"highlight/tap\"\n\t],\n\t\"./tap.js\": [\n\t\t30422,\n\t\t\"highlight/tap\"\n\t],\n\t\"./tap.js.js\": [\n\t\t17532,\n\t\t\"highlight/tap-js-js\"\n\t],\n\t\"./tcl\": [\n\t\t78158,\n\t\t\"highlight/tcl\"\n\t],\n\t\"./tcl.js\": [\n\t\t78158,\n\t\t\"highlight/tcl\"\n\t],\n\t\"./tcl.js.js\": [\n\t\t16925,\n\t\t\"highlight/tcl-js-js\"\n\t],\n\t\"./thrift\": [\n\t\t30906,\n\t\t\"highlight/thrift\"\n\t],\n\t\"./thrift.js\": [\n\t\t30906,\n\t\t\"highlight/thrift\"\n\t],\n\t\"./thrift.js.js\": [\n\t\t9377,\n\t\t\"highlight/thrift-js-js\"\n\t],\n\t\"./tp\": [\n\t\t6123,\n\t\t\"highlight/tp\"\n\t],\n\t\"./tp.js\": [\n\t\t6123,\n\t\t\"highlight/tp\"\n\t],\n\t\"./tp.js.js\": [\n\t\t12686,\n\t\t\"highlight/tp-js-js\"\n\t],\n\t\"./twig\": [\n\t\t71973,\n\t\t\"highlight/twig\"\n\t],\n\t\"./twig.js\": [\n\t\t71973,\n\t\t\"highlight/twig\"\n\t],\n\t\"./twig.js.js\": [\n\t\t73660,\n\t\t\"highlight/twig-js-js\"\n\t],\n\t\"./typescript\": [\n\t\t28987,\n\t\t\"highlight/typescript\"\n\t],\n\t\"./typescript.js\": [\n\t\t28987,\n\t\t\"highlight/typescript\"\n\t],\n\t\"./typescript.js.js\": [\n\t\t92373,\n\t\t\"highlight/typescript-js-js\"\n\t],\n\t\"./vala\": [\n\t\t41462,\n\t\t\"highlight/vala\"\n\t],\n\t\"./vala.js\": [\n\t\t41462,\n\t\t\"highlight/vala\"\n\t],\n\t\"./vala.js.js\": [\n\t\t2239,\n\t\t\"highlight/vala-js-js\"\n\t],\n\t\"./vbnet\": [\n\t\t27531,\n\t\t\"highlight/vbnet\"\n\t],\n\t\"./vbnet.js\": [\n\t\t27531,\n\t\t\"highlight/vbnet\"\n\t],\n\t\"./vbnet.js.js\": [\n\t\t48701,\n\t\t\"highlight/vbnet-js-js\"\n\t],\n\t\"./vbscript\": [\n\t\t4703,\n\t\t\"highlight/vbscript\"\n\t],\n\t\"./vbscript-html\": [\n\t\t48704,\n\t\t\"highlight/vbscript-html\"\n\t],\n\t\"./vbscript-html.js\": [\n\t\t48704,\n\t\t\"highlight/vbscript-html\"\n\t],\n\t\"./vbscript-html.js.js\": [\n\t\t43992,\n\t\t\"highlight/vbscript-html-js-js\"\n\t],\n\t\"./vbscript.js\": [\n\t\t4703,\n\t\t\"highlight/vbscript\"\n\t],\n\t\"./vbscript.js.js\": [\n\t\t55872,\n\t\t\"highlight/vbscript-js-js\"\n\t],\n\t\"./verilog\": [\n\t\t54494,\n\t\t\"highlight/verilog\"\n\t],\n\t\"./verilog.js\": [\n\t\t54494,\n\t\t\"highlight/verilog\"\n\t],\n\t\"./verilog.js.js\": [\n\t\t44118,\n\t\t\"highlight/verilog-js-js\"\n\t],\n\t\"./vhdl\": [\n\t\t48110,\n\t\t\"highlight/vhdl\"\n\t],\n\t\"./vhdl.js\": [\n\t\t48110,\n\t\t\"highlight/vhdl\"\n\t],\n\t\"./vhdl.js.js\": [\n\t\t63461,\n\t\t\"highlight/vhdl-js-js\"\n\t],\n\t\"./vim\": [\n\t\t53638,\n\t\t\"highlight/vim\"\n\t],\n\t\"./vim.js\": [\n\t\t53638,\n\t\t\"highlight/vim\"\n\t],\n\t\"./vim.js.js\": [\n\t\t54971,\n\t\t\"highlight/vim-js-js\"\n\t],\n\t\"./wasm\": [\n\t\t81533,\n\t\t\"highlight/wasm\"\n\t],\n\t\"./wasm.js\": [\n\t\t81533,\n\t\t\"highlight/wasm\"\n\t],\n\t\"./wasm.js.js\": [\n\t\t7809,\n\t\t\"highlight/wasm-js-js\"\n\t],\n\t\"./wren\": [\n\t\t68563,\n\t\t\"highlight/wren\"\n\t],\n\t\"./wren.js\": [\n\t\t68563,\n\t\t\"highlight/wren\"\n\t],\n\t\"./wren.js.js\": [\n\t\t87106,\n\t\t\"highlight/wren-js-js\"\n\t],\n\t\"./x86asm\": [\n\t\t19947,\n\t\t\"highlight/x86asm\"\n\t],\n\t\"./x86asm.js\": [\n\t\t19947,\n\t\t\"highlight/x86asm\"\n\t],\n\t\"./x86asm.js.js\": [\n\t\t50923,\n\t\t\"highlight/x86asm-js-js\"\n\t],\n\t\"./xl\": [\n\t\t49338,\n\t\t\"highlight/xl\"\n\t],\n\t\"./xl.js\": [\n\t\t49338,\n\t\t\"highlight/xl\"\n\t],\n\t\"./xl.js.js\": [\n\t\t66778,\n\t\t\"highlight/xl-js-js\"\n\t],\n\t\"./xml\": [\n\t\t4610,\n\t\t\"highlight/xml\"\n\t],\n\t\"./xml.js\": [\n\t\t4610,\n\t\t\"highlight/xml\"\n\t],\n\t\"./xml.js.js\": [\n\t\t20722,\n\t\t\"highlight/xml-js-js\"\n\t],\n\t\"./xquery\": [\n\t\t5595,\n\t\t\"highlight/xquery\"\n\t],\n\t\"./xquery.js\": [\n\t\t5595,\n\t\t\"highlight/xquery\"\n\t],\n\t\"./xquery.js.js\": [\n\t\t8001,\n\t\t\"highlight/xquery-js-js\"\n\t],\n\t\"./yaml\": [\n\t\t71392,\n\t\t\"highlight/yaml\"\n\t],\n\t\"./yaml.js\": [\n\t\t71392,\n\t\t\"highlight/yaml\"\n\t],\n\t\"./yaml.js.js\": [\n\t\t8564,\n\t\t\"highlight/yaml-js-js\"\n\t],\n\t\"./zephir\": [\n\t\t42222,\n\t\t\"highlight/zephir\"\n\t],\n\t\"./zephir.js\": [\n\t\t42222,\n\t\t\"highlight/zephir\"\n\t],\n\t\"./zephir.js.js\": [\n\t\t64181,\n\t\t\"highlight/zephir-js-js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 63497;\nmodule.exports = webpackAsyncContext;","var 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\": 37524,\n\t\"./fr-ca.js\": 37524,\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){$event.stopPropagation();return _vm.onKeyDown.apply(null, arguments)}}},[(_vm.displayedStatus)?_c('DocumentStatus',{attrs:{\"idle\":_vm.idle,\"lock\":_vm.lock,\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue},on:{\"reconnect\":_vm.reconnect}}):_vm._e(),_vm._v(\" \"),(!_vm.contentLoaded)?_c('SkeletonLoading'):_vm._e(),_vm._v(\" \"),(_vm.displayed)?_c('Wrapper',{attrs:{\"sync-error\":_vm.syncError,\"has-connection-issue\":_vm.hasConnectionIssue,\"content-loaded\":_vm.contentLoaded,\"show-author-annotations\":_vm.showAuthorAnnotations,\"show-outline-outside\":_vm.showOutlineOutside},on:{\"outline-toggled\":_vm.outlineToggled}},[(_vm.hasEditor)?_c('MainContainer',[(_vm.readOnly)?_c('div',{staticClass:\"text-editor--readonly-bar\"},[_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) 2023 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 { Extension } from '@tiptap/core'\n\nexport default Extension.create({\n\taddOptions() {\n\t\treturn {\n\t\t\tfileId: null,\n\t\t}\n\t},\n\taddStorage() {\n\t\treturn {\n\t\t\tstarted: false,\n\t\t}\n\t},\n\tonCreate() {\n\t\tif (this.options.fileId === null) {\n\t\t\tthrow new Error('fileId needs to be provided')\n\t\t}\n\t\tthis.storage.started = true\n\t},\n\tonSelectionUpdate({ editor }) {\n\t\tif (!this.storage.started) {\n\t\t\treturn\n\t\t}\n\n\t\tconst pos = editor.state.selection.$anchor.pos\n\t\tsessionStorage.setItem('text-lastPos-' + this.options.fileId, pos)\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tautofocus: () => ({ commands, editor }) => {\n\t\t\t\tconst pos = sessionStorage.getItem('text-lastPos-' + this.options.fileId)\n\t\t\t\tif (pos) {\n\t\t\t\t\treturn commands.focus(pos)\n\t\t\t\t}\n\n\t\t\t\treturn commands.focus('start')\n\t\t\t},\n\t\t}\n\t},\n})\n","/*\n * @copyright Copyright (c) 2022 Max \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 { 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\tthis.#queue.push(...data)\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(err => {\n\t\t\t\tlogger.error(err)\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 = this.#filePath(src).split('/').map(encodeURIComponent).join('/')\n\t\t\treturn generateRemoteUrl(`dav/files/${uid}${encoded}`)\n\t\t}\n\n\t\tconst path = this.#filePath(src).split('/')\n\t\tconst basename = path.pop()\n\t\tconst dirname = path.join('/')\n\n\t\treturn generateUrl('/s/{token}/download?path={dirname}&files={basename}', {\n\t\t\ttoken: this.#shareToken,\n\t\t\tbasename,\n\t\t\tdirname,\n\t\t})\n\t}\n\n\t/**\n\t * Return the relativePath to a file specified in the url\n\t *\n\t * @param {string} src - url to extract path from\n\t */\n\t#relativePath(src) {\n\t\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","/**\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/lib/core'\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=d078272a&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=d078272a&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=d078272a&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=d078272a&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 \"d078272a\",\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:{\"name\":_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=6a99e70d&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=6a99e70d&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=6a99e70d&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=6a99e70d&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 \"6a99e70d\",\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\",\"aria-label\":_vm.t('text', 'Save document')},on:{\"click\":_vm.onClickSave},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcSavingIndicatorIcon',{attrs:{\"saving\":_vm.saveStatusClass === 'saving',\"error\":_vm.saveStatusClass === 'error'}})]},proxy:true}])})],1),_vm._v(\" \"),_c('SessionList',{attrs:{\"sessions\":_vm.sessions}},[_c('p',{staticClass:\"last-saved\",attrs:{\"slot\":\"lastSaved\"},slot:\"lastSaved\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Last saved'))+\": \"+_vm._s(_vm.lastSavedString)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.$isPublic && !_vm.currentSession.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 * @param {object} origin - initiator object e.g. WebsocketProvider\n */\nexport function applyDocumentState(ydoc, documentState, origin) {\n\tconst update = decodeArrayBuffer(documentState)\n\tapplyUpdate(ydoc, update, origin)\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 * @param {boolean} options.disableBc - disable broadcast channel synchronization (default: disabled in debug mode, enabled otherwise)\n */\nexport default function createSyncServiceProvider({ ydoc, syncService, fileId, initialSession, disableBc }) {\n\tif (!fileId) {\n\t\t// We need a file id as a unique identifier for y.js as otherwise state might leak between different files\n\t\tthrow new Error('fileId is required')\n\t}\n\tconst WebSocketPolyfill = initWebSocketPolyfill(syncService, fileId, initialSession)\n\tdisableBc = disableBc ?? !!window?._oc_debug\n\tconst websocketProvider = new WebsocketProvider(\n\t\t'ws://localhost:1234',\n\t\t'file:' + fileId,\n\t\tydoc,\n\t\t{ WebSocketPolyfill, disableBc },\n\t)\n\twebsocketProvider.on('status', event => logger.debug('status', event))\n\treturn websocketProvider\n}\n","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=db9ed85e&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=db9ed85e&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=db9ed85e&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=db9ed85e&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=db9ed85e&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=db9ed85e&prod&scoped=true&lang=scss&\"\nimport style1 from \"./Editor.vue?vue&type=style&index=1&id=db9ed85e&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 \"db9ed85e\",\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=9114a8c6&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=9114a8c6&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=9114a8c6&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=9114a8c6&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 \"9114a8c6\",\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=08fe4240&\"\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'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=55273a24&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Wrapper.vue?vue&type=template&id=55273a24&scoped=true&\"\nimport script from \"./Wrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./Wrapper.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Wrapper.vue?vue&type=style&index=0&id=55273a24&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55273a24\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',_vm._b({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,\"name\":_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=597e4290&\"\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=d89e53d0&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=d89e53d0&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=d89e53d0&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=d89e53d0&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 \"d89e53d0\",\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\",\"name\":_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',{attrs:{\"size\":\"large\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"translate-dialog\"},[_c('h2',[_vm._v(_vm._s(_vm.t('text', 'Translate')))]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('text', 'To translate individual parts of the text, select it before using the translate function.')))]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"fromLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'Translate from')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"fromLanguage\",\"placeholder\":_vm.t('text', 'Select language'),\"options\":_vm.fromLanguages,\"disabled\":_vm.disableFromLanguageSelect,\"append-to-body\":false},model:{value:(_vm.fromLanguage),callback:function ($$v) {_vm.fromLanguage=$$v},expression:\"fromLanguage\"}})],1),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.input),expression:\"input\"}],ref:\"input\",attrs:{\"autofocus\":\"\"},domProps:{\"value\":(_vm.input)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.input=$event.target.value},_vm.autosize],\"focus\":_vm.onInputFocus}})]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"language-selector\"},[_c('label',{attrs:{\"for\":\"toLanguage\"}},[_vm._v(_vm._s(_vm.t('text', 'to')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"toLanguage\",\"placeholder\":_vm.t('text', 'Select language'),\"options\":_vm.toLanguages,\"disabled\":!_vm.fromLanguage,\"append-to-body\":false},model:{value:(_vm.toLanguage),callback:function ($$v) {_vm.toLanguage=$$v},expression:\"toLanguage\"}})],1),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.result),expression:\"result\"}],ref:\"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