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

editor.js.map « js - github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f102267f2a4da1e45c7c01e99955ef49473c1fb0 (plain)
1
{"version":3,"sources":["webpack:///./src/components/EditorWrapper.vue","webpack:///./src/helpers/index.js","webpack:///./src/views/DirectEditing.vue","webpack:///./src/views/DirectEditing.vue?009f","webpack:///src/views/DirectEditing.vue","webpack:///./src/components/EditorWrapper.vue?a7cb","webpack:///src/components/EditorWrapper.vue","webpack:///./src/EditorFactory.js","webpack:///./src/nodes/ImageView.vue?549b","webpack:///src/nodes/ImageView.vue","webpack:///./img/checkbox-mark.svg","webpack:///./src/components/ReadOnlyEditor.vue?fe8f","webpack:///src/components/ReadOnlyEditor.vue","webpack:///./src/components/CollisionResolveDialog.vue?9e50","webpack:///src/components/CollisionResolveDialog.vue","webpack:///./src/services/SyncService.js","webpack:///./src/extensions/tracking/models.js","webpack:///./src/mixins/store.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/services/PollingBackend.js","webpack:///./src/helpers/mappings.js","webpack:///./src/marks/index.js","webpack:///./src/helpers/links.js","webpack:///./src/nodes/index.js","webpack:///./src/nodes/Image.js","webpack:///./src/nodes/ImageView.vue","webpack:///./src/nodes/ImageView.vue?973b","webpack:///./src/nodes/PlainTextDocument.js","webpack:///./src/nodes/ListItem.js","webpack:///./src/nodes/BulletList.js","webpack:///./node_modules/highlight.js/lib/languages lazy ^\\.\\/.*$ namespace object","webpack:///./src/extensions/index.js","webpack:///./src/extensions/Keymap.js","webpack:///./src/extensions/UserColor.js","webpack:///./src/extensions/tracking/TrackState.js","webpack:///./src/mixins/isMobile.js","webpack:///./src/components/EditorWrapper.vue?c343","webpack:///./src/components/EditorWrapper.vue?65ff","webpack:///./src/views/DirectEditing.vue?401a","webpack:///./src/store.js","webpack:///./src/components/ReadOnlyEditor.vue","webpack:///./src/components/ReadOnlyEditor.vue?31a0","webpack:///./src/components/ReadOnlyEditor.vue?d976","webpack:///./src/components/CollisionResolveDialog.vue","webpack:///./src/components/CollisionResolveDialog.vue?d109","webpack:///./src/views/DirectEditing.vue?47d3","webpack:///./src/components/EditorWrapper.vue?013a","webpack:///./src/components/EditorWrapper.vue?0a24","webpack:///./src/components/EditorWrapper.vue?d7d3","webpack:///./src/views/DirectEditing.vue?5aef","webpack:///./src/components/ReadOnlyEditor.vue?936d","webpack:///./src/components/ReadOnlyEditor.vue?c497","webpack:///./src/components/ReadOnlyEditor.vue?5c72","webpack:///./src/components/CollisionResolveDialog.vue?3a26","webpack:///./src/components/CollisionResolveDialog.vue?b764","webpack:///./src/nodes/ImageView.vue?71aa","webpack:///./src/nodes/ImageView.vue?4189"],"names":["component","callback","document","attachEvent","readyState","setTimeout","addEventListener","_baseUrl","generateUrl","endpoint","isPublic","randomGuestNames","Math","floor","random","length","window","loadSyntaxHighlight","language","languages","modules","i","lang","default","undefined","Object","keys","constructor","createEditor","content","onInit","onUpdate","extensions","enableRichEditing","richEditingExtensions","Heading","Code","Strong","Italic","Strike","HardBreak","HorizontalRule","BulletList","OrderedList","Blockquote","CodeBlock","ListItem","Link","openOnClick","Image","Placeholder","emptyNodeClass","emptyNodeText","showOnlyWhenEditable","PlainTextDocument","Text","CodeBlockHighlight","Editor","History","concat","useBuiltInExtensions","markdownit","html","breaks","enable","use","taskLists","labelAfter","SerializeException","message","this","_nodes","_marks","nodes","entries","filter","toMarkdown","reduce","items","name","marks","serializer","MarkdownSerializer","defaultMarkdownSerializer","serialize","options","tightLists","split","join","tiptap","doc","getJSON","type","codeBlock","text","defaultOptions","shareToken","forceRecreate","ERROR_TYPE","SAVE_COLLISSION","PUSH_FAILURE","LOAD_ERROR","CONNECTION_FAILED","SOURCE_NOT_FOUND","SyncService","eventHandlers","opened","loaded","fetched","sync","stateChange","error","change","save","idle","backend","PollingBackend","assign","session","sessions","steps","stepClientIDs","lastStepPush","Date","now","fileId","filePath","initialSession","connectionData","_openDocument","response","data","code","emit","status","readOnly","_fetchDocument","then","documentSource","connect","axios","put","endpointUrl","token","guestName","post","documentId","id","sessionId","sessionToken","transformResponse","catch","console","Promise","reject","_sendable","sendable","sendableSteps","state","sendSteps","version","slice","clientIDs","newSteps","singleSteps","Array","isArray","forEach","step","push","clientID","debug","_getVersion","IDLE_TIMEOUT","getVersion","_getDocument","forceSave","closed","resolve","on","_close","disconnect","event","_this","bind","additionalData","from","to","author","$store","store","beforeMount","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","module","exports","authority","_authority","fetchInterval","retryTime","lock","fetchRetryCounter","initialLoadingFinished","fetcher","setInterval","_fetchSteps","visibilitychange","_forcedSave","fetchSteps","_manualSave","autosaveContent","lastSavedVersion","_getContent","_isPublic","force","manualSave","checkIdle","lastContact","FETCH_INTERVAL_INVISIBLE","maximumRefetchTimer","increaseRefetchTimer","dirty","initialLoading","_receiveSteps","resetRefetchTimer","currentVersion","outsideChange","retry","s","toJSON","carefulRetryReset","OC","Notification","showTemporary","carefulRetry","clearInterval","removeEventListener","min","visibilityState","newRetry","extensionHighlight","py","gyp","wsgi","htm","xhtml","erl","jsp","pl","rss","atom","xsl","plist","rb","builder","gemspec","podspec","thor","diff","hs","icl","php3","php4","php5","php6","sh","zsh","st","as","apacheconf","osacript","b","bf","clj","coffee","cson","iced","c","h","hh","jinja","bat","cmd","fs","hbs","sublime_metrics","sublime_session","mk","mak","md","mkdown","mkd","nginxconf","m","mm","ml","rs","sci","vb","vbs","Bold","TipTapItalic","parseDOM","tag","style","getAttrs","value","toDOM","open","close","mixable","expelEnclosingWhitespace","TipTapStrike","attrs","href","inclusive","dom","parseHref","node","domHref","title","rel","Plugin","props","handleClick","view","pos","schema","getMarkAttrs","link","isLink","target","HTMLAnchorElement","parentElement","linkElement","stopPropagation","htmlHref","button","ctrlKey","startsWith","location","origin","query","parseQueryString","fragment","pop","dir","relPath","filename","path","theme","pathname","match","OCA","Viewer","validateLink","TipTapLink","basedir","file","end","lastIndexOf","ref","base","shift","absolutePath","getAttribute","ImageView","selectable","TiptapImage","___CSS_LOADER_EXPORT___","Tab","insertText","editor","dispatch","Node","TYPES","getParentList","selection","findParentNode","list_item","bullet_list_item","toggleList","bullet_list","todo_item","$from","$to","range","blockRange","tr","parentList","_transaction","setNodeMarkup","scrollIntoView","wrappingInputRule","done","nested","draggable","listAttributes","class","checkboxAttributes","contenteditable","checked","priority","el","checkbox","querySelector","write","renderContent","coordinates","posAtCoords","left","clientX","top","clientY","position","findParentNodeClosestToPos","isListClicked","tagName","toLowerCase","TiptapListItem","TiptapBulletList","webpackAsyncContext","ids","t","Keymap","handleKeyDown","key","keyCode","metaKey","shiftKey","dispatchEvent","Extension","UserColor","color","abs","sin","toString","init","_","instance","tracked","TrackState","Span","size","deco","DecorationSet","empty","apply","oldState","decos","tState","getState","docChanged","getMeta","setMeta","spec","applyTransform","blameMap","span","Decoration","inline","dec","create","decorations","updateBlameMap","transform","result","mapping","maps","after","_s","_e","start","next","splice","max","insertIntoBlameMap","item","isMobile","_isMobile","_onResize","beforeDestroy","methods","documentElement","clientWidth","___CSS_LOADER_URL_REPLACEMENT_0___","persistentStorage","getBuilder","persist","build","Vue","Vuex","Store","showAuthorAnnotations","getItem","mutations","SET_SHOW_AUTHOR_ANNOTATIONS","setItem","actions","setShowAuthorAnnotations","commit","render","_vm","_h","$createElement","_c","_self","saving","initial","mimetype","scopedSlots","_u","fn","staticClass","share","_v","proxy","staticRenderFns","currentSession","active","timeout","reconnect","hasSyncCollission","hasConnectionIssue","isRichEditor","syncError","relativePath","autohide","directives","rawName","expression","lastSavedStatusClass","lastSavedStatus","filteredSessions","syncService","_t","resolveUseThisVersion","resolveUseServerVersion","locals","$event","$emit","src","imageLoaded","isSupportedImage","imageUrl","onLoaded","domProps","alt","indexOf","_k","updateAlt","internalLinkOrImage"],"mappings":"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A,GAXA,wD,kLAaA,sBAdA,WAeA,gBACA,uFAGA,YAnBA,WAmBA,WACA,+BAIA,2FACA,oCACA,2BACA,2BACA,YACA,iCACA,sBACA,uBACA,2EAEA,qCAIA,sDACA,mBACA,aACA,sBACA,2DAEA,uDACA,iFAIA,4BACA,aAEA,iBACA,6CAPA,+BASA,gDACA,yBACA,wIACA,6BACA,gFACA,iCACA,sBACA,2BAEA,mCACA,uBAEA,YACA,qBAGA,kCACA,6BAEA,SAnOA,IAoOA,kCACA,eACA,2BAGA,wDACA,8BAEA,6BAIA,+BACA,EACA,uDACA,yCAEA,8DACA,kBAGA,iBACA,6BACA,kBACA,0DACA,+BAEA,iBACA,0DACA,gEAGA,cACA,mBAEA,OADA,sBACA,MAIA,iCACA,cAEA,gCACA,oBAEA,+BACA,mBAEA,yCAGA,kDACA,wBACA,IACA,kDACA,yBACA,QACA,kBAEA,mCACA,0BACA,SACA,kEAGA,gBAEA,0BACA,mCACA,iGACA,oBACA,aACA,OACA,SAGA,2DACA,wBAEA,kEACA,aACA,qCAGA,oCACA,yBAEA,oBAEA,8BACA,sCACA,oBACA,aACA,wBAEA,iBACA,6BAEA,kDACA,oBAGA,sBACA,sBACA,UACA,cACA,+CAEA,2BACA,uBACA,mBACA,6BACA,mBACA,2BAGA,uBACA,qCACA,mBACA,2BAGA,2BAhLA,sDAmLA,sBAxMA,WAyMA,6BACA,mDAGA,wBA7MA,WA8MA,sBACA,kBAGA,UAlNA,WAkNA,WACA,uBACA,2BACA,iBACA,0CACA,mBACA,mBACA,mBACA,wBAIA,sBACA,sBACA,oBAEA,cAGA,eArOA,SAqOA,cACA,0EAIA,2EACA,uCAEA,wDACA,qDAEA,qCACA,4DAEA,eACA,6CAEA,4BACA,uBACA,8BACA,yBAEA,oDACA,oEAGA,yCAEA,+BACA,2D,kNCjeA,aACA,SAYA,SACA,SACA,YACA,YACA,SAEA,OAEA,a,opEAEA,IAAMW,EAAmB,e,EAAA,G,EAAA,yBAAG,WAAMC,GAAN,4FACrBC,EAAY,CAACD,GACbE,EAAU,GACPC,EAAI,EAHc,YAGXA,EAAIF,EA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,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,a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e,CACd,IACA,IAED,aAAc,CACb,IACA,IAED,gBAAiB,CAChB,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,iBAAkB,CACjB,IACA,IAED,MAAO,CACN,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,iBAAkB,CACjB,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,YAAa,CACZ,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,eAAgB,CACf,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,MAAO,CACN,IACA,IAED,SAAU,CACT,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,aAAc,CACb,IACA,IAED,gBAAiB,CAChB,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,WAAY,CACX,IACA,IAED,gBAAiB,CAChB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,cAAe,CACd,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,OAAQ,CACP,IACA,IAED,UAAW,CACV,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,aAAc,CACb,IACA,IAED,gBAAiB,CAChB,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,OAAQ,CACP,IACA,IAED,UAAW,CACV,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,QAAS,CACR,IACA,IAED,WAAY,CACX,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,cAAe,CACd,IACA,IAED,iBAAkB,CACjB,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,UAAW,CACV,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,aAAc,CACb,IACA,IAED,WAAY,CACX,IACA,IAED,cAAe,CACd,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,UAAW,CACV,IACA,IAED,aAAc,CACb,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,SAAU,CACT,IACA,IAED,YAAa,CACZ,IACA,IAED,mBAAoB,CACnB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,eAAgB,CACf,IACA,IAED,kBAAmB,CAClB,IACA,IAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,iBAAkB,CACjB,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,OAAQ,CACP,IACA,KAED,UAAW,CACV,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,QAAS,CACR,IACA,KAED,iBAAkB,CACjB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,iBAAkB,CACjB,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,cAAe,CACd,IACA,KAED,iBAAkB,CACjB,IACA,KAED,WAAY,CACX,IACA,KAED,gBAAiB,CAChB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,cAAe,CACd,IACA,KAED,MAAO,CACN,IACA,KAED,SAAU,CACT,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,MAAO,CACN,IACA,KAED,SAAU,CACT,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,aAAc,CACb,IACA,KAED,gBAAiB,CAChB,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,kBAAmB,CAClB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,cAAe,CACd,IACA,KAED,iBAAkB,CACjB,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,iBAAkB,CACjB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,OAAQ,CACP,IACA,KAED,UAAW,CACV,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,kBAAmB,CAClB,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,UAAW,CACV,IACA,KAED,aAAc,CACb,IACA,KAED,aAAc,CACb,IACA,KAED,kBAAmB,CAClB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,YAAa,CACZ,IACA,KAED,eAAgB,CACf,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,OAAQ,CACP,IACA,KAED,UAAW,CACV,IACA,KAED,QAAS,CACR,IACA,KAED,WAAY,CACX,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,KAED,SAAU,CACT,IACA,KAED,YAAa,CACZ,IACA,KAED,WAAY,CACX,IACA,KAED,cAAe,CACd,IACA,MAGF,SAAS2O,EAAoBzO,GAC5B,IAAIE,EAAoBC,EAAEL,EAAKE,GAC9B,OAAOzC,QAAQyB,UAAUzC,MAAK,WAC7B,IAAI6D,EAAI,IAAIC,MAAM,uBAAyBL,EAAM,KAEjD,MADAI,EAAElE,KAAO,mBACHkE,KAIR,IAAIsO,EAAM5O,EAAIE,GAAM/C,EAAKyR,EAAI,GAC7B,OAAOxO,EAAoBE,EAAEsO,EAAI,IAAInS,MAAK,WACzC,OAAO2D,EAAoByO,EAAE1R,EAAI,MAGnCwR,EAAoBjZ,KAAO,WAC1B,OAAOD,OAAOC,KAAKsK,IAEpB2O,EAAoBxR,GAAK,IACzBqD,EAAOC,QAAUkO,G,2PC9+CjB,gBACA,Y,6XCDA,a,2kCAEqBG,E,yWAOnB,OADgB,EAAVjG,OACCvQ,KAAKe,U,2BAJZ,MAAO,iB,8BAQP,MAAO,CAAC,IAAImP,SAAO,CAClBC,MAAO,CACNsG,cADM,SACQpG,EAAMrJ,GACnB,IAAM0P,EAAM1P,EAAM0P,KAAO1P,EAAM2P,QAC/B,IAAK3P,EAAMkK,SAAWlK,EAAM4P,WAAa5P,EAAM6P,WAAqB,MAARH,GAAuB,KAARA,GAK1E,OAFA1P,EAAM+J,kBACNrU,OAAOoa,cAAc9P,IACd,Y,8BApBuB+P,a,qVCFpC,I,EAAA,SACA,SACA,G,EAAA,S,2BACA,S,2kCAEqBC,E,sWAGnB,MAAO,U,qCAIP,MAAO,CACN5Q,SAAU,EACV6Q,MAAO,SAAC7Q,GACP,MAAO,IAAM9J,KAAKC,MAAOD,KAAK4a,IAAyB,SAArB5a,KAAK6a,IAAI/Q,IAAyB,UAAUgR,SAAS,IAAM,MAE9F3W,KAAM,SAAC2F,GACN,MAAO,gBAAkBA,M,8BAM3B,MAAO,CACN,IAAI8J,SAAO,CACV9J,SAAUpG,KAAKe,QAAQqF,SACvB6Q,MAAOjX,KAAKe,QAAQkW,MACpBxW,KAAMT,KAAKe,QAAQN,KACnB+E,MAAO,CACN6R,KADM,SACDC,EAAGC,GACP,MAAO,CACNC,QAAS,IAAIC,UAAW,CAAC,IAAIC,OAAK,EAAGH,EAASnW,IAAI7D,QAAQoa,KAAM,OAAQ,GAAI,GAAI,IAChFC,KAAMC,gBAAcC,QAGtBC,MAPM,SAOA3D,EAAImD,EAAUS,EAAUxS,GAAO,WAC9BgS,EAAmBD,EAAnBC,QAASS,EAAUV,EAAVU,MACXC,EAASlY,KAAKmY,SAASH,GAAUR,QAkBrC,OAjBIpD,EAAGgE,aACDhE,EAAGiE,QAAQ,aAEfjE,EAAGkE,QAAQ,WAAYlE,EAAGlR,MAAMwE,KAAI,SAAA3K,GAAC,OAAI,EAAKwb,KAAKnS,aAGpD8R,EADAV,EAAUA,EAAQgB,eAAepE,IAGlC6D,EAAQC,EAAOO,SACb/Q,KAAI,SAAAgR,GACJ,IAAMtS,EAAWsS,EAAKpR,OACtB,OAAOqR,aAAWC,OAAOF,EAAKtR,KAAMsR,EAAKrR,GAAI,CAC5CyN,MAAO,oBACP9F,MAAO,qBAAuB,EAAKuJ,KAAKtB,MAAM7Q,GAAY,MAC1D4J,MAAO,EAAKuI,KAAK9X,KAAK2F,QAErB/F,QAAO,SAAAwY,GAAG,OAAY,OAARA,KACX,CAAErB,UAASI,KAAMC,gBAAciB,OAAOtT,EAAMpE,IAAK6W,MAG1D9H,MAAO,CACN4I,YADM,SACMvT,GACX,OAAOxF,KAAKmY,SAAS3S,GAAOoS,e,8BAxDKb,a,gHCLvC,a,sKAOA,SAASiC,EAAetR,EAAKuR,EAAWrT,GAGvC,IAFA,IAAMsT,EAAS,GACTC,EAAUF,EAAUE,QACjBpc,EAAI,EAAGA,EAAI2K,EAAIjL,OAAQM,IAAK,CACpC,IAAM2b,EAAOhR,EAAI3K,GACXqK,EAAO+R,EAAQzR,IAAIgR,EAAKtR,KAAM,GAC9BC,EAAK8R,EAAQzR,IAAIgR,EAAKrR,IAAK,GAC7BD,EAAOC,GAAI6R,EAAO/S,KAAK,IAAIuR,OAAKtQ,EAAMC,EAAIqR,EAAKpR,SAGpD,IAVkD,eAUzCvK,GACR,IAAM2K,EAAMyR,EAAQC,KAAKrc,GAAUsc,EAAQF,EAAQxT,MAAM5I,EAAI,GAC7D2K,EAAIzB,SAAQ,SAACqT,EAAIC,EAAIC,EAAOjH,IAQ9B,SAA4B7K,EAAKN,EAAMC,EAAIC,GAC1C,GAAIF,GAAQC,EACX,OAID,IAFA,IACIoS,EADAnJ,EAAM,EAEHA,EAAM5I,EAAIjL,OAAQ6T,IAExB,IADAmJ,EAAO/R,EAAI4I,IACFhJ,SAAWA,GACnB,GAAImS,EAAKpS,IAAMD,EAAM,WACf,GAAIqS,EAAKpS,GAAKD,EAAM,CAC1B,GAAIqS,EAAKrS,KAAOA,EAAM,CACrB,IAAMsO,EAAO,IAAIgC,OAAK+B,EAAKrS,KAAMA,EAAMqS,EAAKnS,QACxCmS,EAAKpS,GAAKA,EAAIK,EAAIgS,OAAOpJ,IAAO,EAAGoF,GAClChO,EAAI4I,KAASoF,EAEnB,MAKF,KAAQ+D,EAAO/R,EAAI4I,IAClB,GAAImJ,EAAKnS,SAAWA,EAAQ,CAC3B,GAAImS,EAAKrS,KAAOC,EAAI,MACpBD,EAAO9K,KAAKuO,IAAIzD,EAAMqS,EAAKrS,MAC3BC,EAAK/K,KAAKqd,IAAItS,EAAIoS,EAAKpS,IACvBK,EAAIgS,OAAOpJ,EAAK,OACV,CACN,GAAImJ,EAAKrS,MAAQC,EAAI,MACrB,GAAIoS,EAAKpS,GAAKA,EAAI,CACjBK,EAAI4I,GAAO,IAAIoH,OAAKrQ,EAAIoS,EAAKpS,GAAIoS,EAAKnS,QACtC,MAEAI,EAAIgS,OAAOpJ,EAAK,GAKnB5I,EAAIgS,OAAOpJ,EAAK,EAAG,IAAIoH,OAAKtQ,EAAMC,EAAIC,IA7CpCsS,CAAmBV,EAAQG,EAAM3R,IAAI8R,EAAO,GAAIH,EAAM3R,IAAI6K,GAAM,GAAI3M,EAAU7I,QAHvEA,EAAI,EAAGA,EAAIoc,EAAQC,KAAK3c,OAAQM,IAAK,EAArCA,GAOT,OAAOmc,E,IA4CazB,E,WAEpB,WAAYgB,I,4FAAU,SAKrBzY,KAAKyY,SAAWA,E,8DAIFQ,GAAW,MACnB7S,EAAQ,UAAG6S,EAAUZ,QAAQ,mBAArB,QAAoCY,EAAU/V,MAAMwE,KAAI,SAAAmS,GAAI,MAAI,UAI9E,OAAO,IAAIpC,EAHMuB,EAAehZ,KAAKyY,SAAUQ,EAAW7S,S;;;;;;;;;;;;;;;;;;;;;;MCjF7C,CACdvC,KADc,WAEb,MAAO,CACNiW,SAAU9Z,KAAK+Z,cAGjBtS,YANc,WAOb/K,OAAOV,iBAAiB,SAAUgE,KAAKga,YAExCC,cATc,WAUbvd,OAAOkO,oBAAoB,SAAU5K,KAAKga,YAE3CE,QAAS,CACRF,UADQ,WAGPha,KAAK8Z,SAAW9Z,KAAK+Z,aAEtBA,UALQ,WAOP,OAAOne,SAASue,gBAAgBC,YAAc,O,8CCzCjD,6BAGInH,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,ogFAAqgF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gDAAgD,MAAQ,GAAG,SAAW,65BAA65B,eAAiB,CAAC,qmHAAqmH,WAAa,MAEjqO,O,iCCPf,iEAKIkW,EAA0B,IAA4B,KACtDoH,EAAqC,IAAgC,KAEzEpH,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,gqEAAoqEsd,EAAqC,2xJAA8xJ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6BAA6B,+CAA+C,oCAAoC,MAAQ,GAAG,SAAW,uoEAAuoE,eAAiB,CAAC,kuCAAsuC,y5FAAy5F,guHAAguH,WAAa,MAEvqiB,O,iCCVf,6BAGIpH,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,24BAA44B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2CAA2C,MAAQ,GAAG,SAAW,+UAA+U,eAAiB,CAAC,klCAAklC,WAAa,MAEl8E,O,kGCef,eACA,Y;;;;;;;;;;;;;;;;;;;;;GAGA,IAAMud,GAAoB,EAF1B,MAE0BC,YAAW,QAAQC,UAAUC,QAEvDC,UAAI/a,IAAIgb,WAER,IAAMnT,EAAQ,IAAImT,UAAKC,MAAM,CAC5BpV,MAAO,CACNqV,sBAA8E,SAAvDP,EAAkBQ,QAAQ,0BAElDC,UAAW,CACVC,4BADU,SACkBxV,EAAO0J,GAClC1J,EAAMqV,sBAAwB3L,EAC9BoL,EAAkBW,QAAQ,wBAAyB,GAAK/L,KAG1DgM,QAAS,CACRC,yBADQ,WAC6BjM,GAAO,EAAjBkM,OAC1B5T,EAAM4T,OAAO,8BAA+BlM,O,EAKhC1H,E,8CC/Cf,mJASI9L,EAAY,YACd,UACA,IACA,KACA,EACA,KACA,KACA,MAIa,UAAAA,E,0CCpBf,iEAKIuX,EAA0B,IAA4B,KACtDoH,EAAqC,IAAgC,KAEzEpH,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,kvCAAovCsd,EAAqC,4uFAA+uF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gDAAgD,oCAAoC,MAAQ,GAAG,SAAW,q+CAAq+C,eAAiB,CAAC,0WAA0W,guHAAguH,WAAa,MAErvT,O,iCCVf,iEAKIpH,EAA0B,IAA4B,KACtDoH,EAAqC,IAAgC,KAEzEpH,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,8iCAAgjCsd,EAAqC,miEAAsiE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oCAAoC,MAAQ,GAAG,SAAW,m6CAAm6C,eAAiB,CAAC,guHAAguH,WAAa,MAE54Q,O,iCCVf,4IAQI3e,EAAY,YACd,UACA,IACA,KACA,EACA,KACA,WACA,MAIa,UAAAA,E,0CCnBf,6BAGIuX,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwB9M,KAAK,CAAC+B,EAAOnL,EAAI,sPAAuP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,wHAAwH,eAAiB,CAAC,wVAAwV,WAAa,MAE12B,O,qGCPf,IAAIse,EAAS,WAAa,IAAIC,EAAItb,KAASub,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC3G,MAAM,CAAC,eAAgBwG,EAAIK,QAAQlM,MAAM,CAAC,GAAK,kBAAkB,CAACgM,EAAG,gBAAgB,CAAChJ,IAAI,SAAShD,MAAM,CAAC,kBAAkB6L,EAAI7X,eAAe,QAAS,EAAK,KAAO6X,EAAIM,QAAQC,SAAS,qBAAoB,GAAMhV,GAAG,CAAC,MAAQyU,EAAIjZ,QAAQyZ,YAAYR,EAAIS,GAAG,CAAC,CAACrF,IAAI,SAASsF,GAAG,WAAW,MAAO,CAACP,EAAG,SAAS,CAACQ,YAAY,aAAapV,GAAG,CAAC,MAAQyU,EAAIY,SAASZ,EAAIa,GAAG,KAAKV,EAAG,SAAS,CAACQ,YAAY,aAAapV,GAAG,CAAC,MAAQyU,EAAIjM,WAAW+M,OAAM,QAAW,IACtiBC,EAAkB,I,qGCDtB,IAAIhB,EAAS,WAAa,IAAIC,EAAItb,KAASub,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAChM,MAAM,CAAC,GAAK,qBAAqB,CAAE6L,EAAIgB,gBAAkBhB,EAAIiB,OAAQd,EAAG,MAAM,CAACQ,YAAY,mBAAmB,CAAEX,EAAQ,KAAEG,EAAG,IAAI,CAACQ,YAAY,iBAAiB,CAACX,EAAIa,GAAG,WAAWb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,iEAAkE,CAAEiG,QAASlB,EAAI/U,gBAAiB,KAAKkV,EAAG,IAAI,CAACQ,YAAY,iBAAiBpV,GAAG,CAAC,MAAQyU,EAAImB,YAAY,CAACnB,EAAIa,GAAGb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,mBAAoB+E,EAAqB,kBAAEG,EAAG,IAAI,CAACQ,YAAY,kBAAkB,CAACX,EAAIa,GAAG,WAAWb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,wFAAwF,YAAa+E,EAAsB,mBAAEG,EAAG,IAAI,CAACQ,YAAY,iBAAiB,CAACX,EAAIa,GAAG,WAAWb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,qEAAqE,KAAKkF,EAAG,IAAI,CAACQ,YAAY,iBAAiBpV,GAAG,CAAC,MAAQyU,EAAImB,YAAY,CAACnB,EAAIa,GAAGb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,mBAAmB+E,EAAI/B,OAAO+B,EAAI/B,KAAK+B,EAAIa,GAAG,KAAMb,EAAIgB,gBAAkBhB,EAAIiB,OAAQd,EAAG,MAAM,CAAC3G,MAAM,CAAC,gBAAiBwG,EAAIoB,kBAAmB,gBAAiBpB,EAAIxR,iBAAmBwR,EAAIqB,mBAAoB,WAAcrB,EAAIsB,aAAc,yBAA0BtB,EAAIT,uBAAuBpL,MAAM,CAAC,GAAK,mBAAmB,CAACgM,EAAG,MAAM,CAAChM,MAAM,CAAC,GAAK,WAAW,CAAG6L,EAAIuB,WAAcvB,EAAIrX,SAA2vBqX,EAAI/B,KAArvBkC,EAAG,UAAU,CAAChJ,IAAI,UAAUhD,MAAM,CAAC,OAAS6L,EAAIna,OAAO,YAAYma,EAAIwB,aAAa,iBAAiBxB,EAAIsB,aAAa,YAAYtB,EAAIlf,SAAS,SAAWkf,EAAIyB,WAAW,CAAEzB,EAAIgB,gBAAkBhB,EAAIiB,OAAQd,EAAG,MAAM,CAAChM,MAAM,CAAC,GAAK,wBAAwB,CAACgM,EAAG,MAAM,CAACuB,WAAW,CAAC,CAACvc,KAAK,UAAUwc,QAAQ,YAAY/N,MAAOoM,EAA0B,uBAAE4B,WAAW,2BAA2BjB,YAAY,cAAcnH,MAAMwG,EAAI6B,sBAAsB,CAAC7B,EAAIa,GAAG,iBAAiBb,EAAIhC,GAAGgC,EAAI8B,iBAAiB,kBAAkB9B,EAAIa,GAAG,KAAKV,EAAG,cAAc,CAAChM,MAAM,CAAC,SAAW6L,EAAI+B,mBAAmB,CAAE/B,EAAIlf,UAAYkf,EAAIgB,eAAe5X,UAAW+W,EAAG,kBAAkB,CAAChM,MAAM,CAAC,eAAe6L,EAAIgC,eAAehC,EAAI/B,MAAM,IAAI,GAAG+B,EAAI/B,KAAK+B,EAAIa,GAAG,KAAKb,EAAIiC,GAAG,WAAW,GAAYjC,EAAIa,GAAG,KAAKV,EAAG,MAAM,EAAGH,EAAIrX,UAAYqX,EAAIsB,aAAcnB,EAAG,aAAa,CAAChM,MAAM,CAAC,OAAS6L,EAAIna,OAAO,YAAYma,EAAIwB,gBAAgBxB,EAAI/B,KAAK+B,EAAIa,GAAG,KAAKV,EAAG,gBAAgB,CAACuB,WAAW,CAAC,CAACvc,KAAK,OAAOwc,QAAQ,SAAS/N,MAAOoM,EAAkB,eAAE4B,WAAW,mBAAmBjB,YAAY,kBAAkBxM,MAAM,CAAC,OAAS6L,EAAIna,WAAW,IAAI,GAAGma,EAAIa,GAAG,KAAMb,EAAqB,kBAAEG,EAAG,iBAAiB,CAAChM,MAAM,CAAC,QAAU6L,EAAIuB,UAAUhZ,KAAKqG,cAAc,iBAAiBoR,EAAIsB,gBAAgBtB,EAAI/B,MAAM,GAAG+B,EAAI/B,KAAK+B,EAAIa,GAAG,KAAMb,EAAIoB,oBAAsBpB,EAAIrX,SAAUwX,EAAG,yBAAyB,CAAC5U,GAAG,CAAC,sBAAwByU,EAAIkC,sBAAsB,wBAA0BlC,EAAImC,2BAA2BnC,EAAI/B,MAAM,IACtyF8C,EAAkB,I,+DCElBtb,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,+DCTnB3c,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,+DCTnB3c,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,qGCZvB,IAAIrC,EAAS,WAAa,IAAiBE,EAATvb,KAAgBwb,eAAmBC,EAAnCzb,KAA0C0b,MAAMD,IAAIF,EAAG,OAAvDvb,KAAyE,OAAEyb,EAAG,gBAAgB,CAAChM,MAAM,CAAC,GAAK,mBAAmB,OAA9HzP,KAA2IoT,UAA3IpT,KAAyJuZ,MACvL8C,EAAkB,I,+DCElBtb,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,+DCTnB3c,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,qGCZvB,IAAIrC,EAAS,WAAa,IAAIC,EAAItb,KAASub,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,YAAY,2BAA2BxM,MAAM,CAAC,GAAK,sBAAsB,CAACgM,EAAG,SAAS,CAAC5U,GAAG,CAAC,MAAQ,SAAS8W,GAAQ,OAAOrC,EAAIsC,MAAM,4BAA4B,CAACtC,EAAIa,GAAG,SAASb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,wBAAwB,UAAU+E,EAAIa,GAAG,KAAKV,EAAG,SAAS,CAAC5U,GAAG,CAAC,MAAQ,SAAS8W,GAAQ,OAAOrC,EAAIsC,MAAM,8BAA8B,CAACtC,EAAIa,GAAG,SAASb,EAAIhC,GAAGgC,EAAI/E,EAAE,OAAQ,0BAA0B,aACpf8F,EAAkB,I,+DCElBtb,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c,Q,qGCZvB,IAAIrC,EAAS,WAAa,IAAIC,EAAItb,KAASub,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,YAAY,QAAQnH,MAAM,CAAC,gBAAiBwG,EAAIjZ,QAAQoN,MAAM,CAAC,WAAW6L,EAAIuC,MAAM,CAAEvC,EAAIwC,aAAexC,EAAIyC,iBAAkBtC,EAAG,MAAM,CAACQ,YAAY,eAAe,CAACR,EAAG,aAAa,CAAChM,MAAM,CAAC,KAAO,SAAS,CAACgM,EAAG,MAAM,CAACuB,WAAW,CAAC,CAACvc,KAAK,OAAOwc,QAAQ,SAAS/N,MAAOoM,EAAU,OAAE4B,WAAW,WAAWjB,YAAY,cAAcxM,MAAM,CAAC,IAAM6L,EAAI0C,UAAUnX,GAAG,CAAC,KAAOyU,EAAI2C,cAAc3C,EAAIa,GAAG,KAAKV,EAAG,aAAa,CAAChM,MAAM,CAAC,KAAO,SAAS,CAACgM,EAAG,MAAM,CAACuB,WAAW,CAAC,CAACvc,KAAK,OAAOwc,QAAQ,SAAS/N,MAAOoM,EAAU,OAAE4B,WAAW,WAAWjB,YAAY,kBAAkB,CAACR,EAAG,QAAQ,CAAChJ,IAAI,WAAWhD,MAAM,CAAC,KAAO,QAAQyO,SAAS,CAAC,MAAQ5C,EAAI6C,KAAKtX,GAAG,CAAC,MAAQ,SAAS8W,GAAQ,OAAIA,EAAOrc,KAAK8c,QAAQ,QAAQ9C,EAAI+C,GAAGV,EAAOhH,QAAQ,QAAQ,GAAGgH,EAAOjH,IAAI,SAAkB,KAAc4E,EAAIgD,qBAAqB,GAAG7C,EAAG,MAAM,CAACQ,YAAY,sBAAsB,CAACR,EAAG,aAAa,CAAChM,MAAM,CAAC,KAAO,SAAS,CAACgM,EAAG,MAAM,CAACuB,WAAW,CAAC,CAACvc,KAAK,OAAOwc,QAAQ,SAAS/N,MAAOoM,EAAU,OAAE4B,WAAW,WAAWjB,YAAY,eAAe,CAACR,EAAG,IAAI,CAAChM,MAAM,CAAC,KAAO6L,EAAIiD,oBAAoB,OAAS,WAAW,CAAC9C,EAAG,MAAM,CAACQ,YAAY,aAAajN,MAAOsM,EAAY,WAAIA,EAAIa,GAAG,KAAOb,EAAIyC,iBAAoDzC,EAAI/B,KAAtCkC,EAAG,IAAI,CAACH,EAAIa,GAAGb,EAAIhC,GAAGgC,EAAI6C,cAAuB1C,EAAG,aAAa,CAAChM,MAAM,CAAC,KAAO,SAAS,CAACgM,EAAG,MAAM,CAACuB,WAAW,CAAC,CAACvc,KAAK,OAAOwc,QAAQ,SAAS/N,MAAOoM,EAAU,OAAE4B,WAAW,WAAWjB,YAAY,kBAAkB,CAACR,EAAG,QAAQ,CAAChJ,IAAI,WAAWhD,MAAM,CAAC,KAAO,QAAQyO,SAAS,CAAC,MAAQ5C,EAAI6C,KAAKtX,GAAG,CAAC,MAAQ,SAAS8W,GAAQ,OAAIA,EAAOrc,KAAK8c,QAAQ,QAAQ9C,EAAI+C,GAAGV,EAAOhH,QAAQ,QAAQ,GAAGgH,EAAOjH,IAAI,SAAkB,KAAc4E,EAAIgD,qBAAqB,MACzrDjC,EAAkB,I,+DCElBtb,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ2c","file":"editor.js?v=3295e9946fe455d31390","sourcesContent":["import { render, staticRenderFns } from \"./EditorWrapper.vue?vue&type=template&id=681dd80c&scoped=true&\"\nimport script from \"./EditorWrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorWrapper.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditorWrapper.vue?vue&type=style&index=0&id=681dd80c&scoped=true&lang=scss&\"\nimport style1 from \"./EditorWrapper.vue?vue&type=style&index=1&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  \"681dd80c\",\n  null\n  \n)\n\nexport default component.exports","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Callback that should be executed after the document is ready\n * @param callback\n */\nimport { generateUrl } from '@nextcloud/router'\n\nconst documentReady = function(callback) {\n\tconst fn = () => setTimeout(callback, 0)\n\tif (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading') {\n\t\tfn()\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', callback)\n\t}\n}\n\nconst _baseUrl = generateUrl('/apps/text')\nconst endpointUrl = (endpoint, isPublic = false) => {\n\tif (isPublic) {\n\t\treturn `${_baseUrl}/public/${endpoint}`\n\t}\n\treturn `${_baseUrl}/${endpoint}`\n}\n\nconst randomGuestNames = ['Artichoke', 'Arugula', 'Asparagus', 'Avocado', 'Bamboo Shoot', 'Bean Sprout', 'Bean', 'Beet', 'Belgian Endive', 'Bell Pepper', 'Bitter Melon', 'Bitter Gourd', 'Bok Choy', 'Broccoli', 'Brussels Sprout', 'Burdock Root', 'Cabbage', 'Calabash', 'Caper', 'Carrot', 'Cassava', 'Cauliflower', 'Celery', 'Celery Root', 'Celtuce', 'Chayote', 'Chinese Broccoli', 'Corn', 'Baby Corn', 'Cucumber', 'English Cucumber', 'Gherkin', 'Pickling Cucumber', 'Daikon Radish', 'Edamame', 'Eggplant', 'Elephant Garlic', 'Endive', 'Curly', 'Escarole', 'Fennel', 'Fiddlehead', 'Galangal', 'Garlic', 'Ginger', 'Grape Leave', 'Green Bean', 'Wax Bean', 'Green', 'Amaranth Leave', 'Beet Green', 'Collard Green', 'Dandelion Green', 'Kale', 'Kohlrabi Green', 'Mustard Green', 'Rapini', 'Spinach', 'Swiss Chard', 'Turnip Green', 'Hearts of Palm', 'Horseradish', 'Jerusalem Artichoke', 'Jícama', 'Kale', 'Curly', 'Lacinato', 'Ornamental', 'Kohlrabi', 'Leeks', 'Lemongrass', 'Lettuce', 'Butterhead', 'Iceberg', 'Leaf', 'Romaine', 'Lotus Root', 'Lotus Seed', 'Mushroom', 'Napa Cabbage', 'Nopales', 'Okra', 'Olive', 'Onion', 'Green Onion', 'Parsley', 'Parsley Root', 'Parsnip', 'Pepper', 'Plantain', 'Potato', 'Pumpkin', 'Purslane', 'Radicchio', 'Radish', 'Rutabaga', 'Shallots', 'Spinach', 'Squash', 'Sweet Potato', 'Swiss Chard', 'Taro', 'Tomatillo', 'Tomato', 'Turnip', 'Water Chestnut', 'Water Spinach', 'Watercress', 'Winter Melon', 'Yams', 'Zucchini']\nconst getRandomGuestName = () => {\n\treturn randomGuestNames[Math.floor(Math.random() * randomGuestNames.length)]\n}\n\nexport {\n\tdocumentReady,\n\tendpointUrl,\n\tgetRandomGuestName,\n}\n","import { render, staticRenderFns } from \"./DirectEditing.vue?vue&type=template&id=3ea77884&scoped=true&\"\nimport script from \"./DirectEditing.vue?vue&type=script&lang=js&\"\nexport * from \"./DirectEditing.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DirectEditing.vue?vue&type=style&index=0&id=3ea77884&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  \"3ea77884\",\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!./DirectEditing.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<div id=\"direct-editor\" :class=\"{'icon-loading': saving}\">\n\t\t<EditorWrapper ref=\"editor\"\n\t\t\t:initial-session=\"initialSession\"\n\t\t\t:active=\"true\"\n\t\t\t:mime=\"initial.mimetype\"\n\t\t\t:is-direct-editing=\"true\"\n\t\t\t@ready=\"loaded\">\n\t\t\t<template #header>\n\t\t\t\t<button class=\"icon-share\" @click=\"share\" />\n\t\t\t\t<button class=\"icon-close\" @click=\"close\" />\n\t\t\t</template>\n\t\t</EditorWrapper>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport EditorWrapper from '../components/EditorWrapper'\n\nconst log = Vue.observable({\n\tmessages: [],\n\tmtime: 0,\n})\n\nconst callMobileMessage = (messageName, attributes) => {\n\tconsole.debug('callMobileMessage ' + messageName, attributes)\n\tlet message = messageName\n\tif (typeof attributes !== 'undefined') {\n\t\tmessage = {\n\t\t\tMessageName: messageName,\n\t\t\tValues: attributes,\n\t\t}\n\t}\n\tlet attributesString = null\n\ttry {\n\t\tattributesString = JSON.stringify(attributes)\n\t} catch (e) {\n\t\tattributesString = null\n\t}\n\n\t// Forward to mobile handler\n\tif (window.DirectEditingMobileInterface && typeof window.DirectEditingMobileInterface[messageName] === 'function') {\n\t\tif (attributesString === null || typeof attributesString === 'undefined') {\n\t\t\twindow.DirectEditingMobileInterface[messageName]()\n\t\t} else {\n\t\t\twindow.DirectEditingMobileInterface[messageName](attributesString)\n\t\t}\n\t}\n\n\t// iOS webkit fallback\n\tif (window.webkit\n\t\t&& window.webkit.messageHandlers\n\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface) {\n\t\twindow.webkit.messageHandlers.DirectEditingMobileInterface.postMessage(message)\n\t}\n\n\twindow.postMessage(message)\n}\n\nwindow.addEventListener('message', function(message) {\n\tlog.messages.push(message.data)\n\tconsole.debug('postMessage', message)\n})\n\nexport default {\n\tname: 'DirectEditing',\n\tcomponents: { EditorWrapper },\n\tdata() {\n\t\treturn {\n\t\t\tinitial: OCP.InitialState.loadState('text', 'file'),\n\t\t\tmessages: log.messages,\n\t\t\tlog,\n\t\t\tsaving: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tinitialSession() {\n\t\t\treturn JSON.parse(this.initial.session) || null\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tcallMobileMessage('loading')\n\t},\n\tmounted() {\n\t\tdocument.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0')\n\t},\n\tmethods: {\n\t\tasync close() {\n\t\t\tthis.saving = true\n\t\t\tsetTimeout(async() => {\n\t\t\t\tawait this.$refs.editor.close()\n\t\t\t\tcallMobileMessage('close')\n\t\t\t}, 0)\n\t\t},\n\t\tshare() {\n\t\t\tcallMobileMessage('share')\n\t\t},\n\t\tloaded() {\n\t\t\tcallMobileMessage('loaded')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\tbody {\n\t\tposition: fixed;\n\t}\n\n\t#direct-editor {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\toverflow: hidden;\n\n\t\t&::v-deep #editor-container {\n\t\t\theight: 100%;\n\t\t\ttop: 0;\n\t\t}\n\t\t&::v-deep #editor-wrapper div.ProseMirror {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\tpre {\n\t\twidth: 100%;\n\t\tmax-width: 700px;\n\t\tmargin: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\tbutton {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\topacity: .5;\n\t\tcolor: var(--color-main-text);\n\t\tbackground-position: center center;\n\t\tvertical-align: top;\n\t\t&:hover, &:focus, &:active {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t\t&.is-active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: 1;\n\t\t}\n\n\t\t&.icon-undo, &.icon-redo {\n\t\t\topacity: .4;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorWrapper.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!./EditorWrapper.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<div id=\"editor-container\">\n\t\t<div v-if=\"currentSession && active\" class=\"document-status\">\n\t\t\t<p v-if=\"idle\" class=\"msg icon-info\">\n\t\t\t\t{{ t('text', 'Document idle for {timeout} minutes, click to continue editing', { timeout: IDLE_TIMEOUT }) }} <a class=\"button primary\" @click=\"reconnect\">{{ t('text', 'Reconnect') }}</a>\n\t\t\t</p>\n\t\t\t<p v-else-if=\"hasSyncCollission\" class=\"msg icon-error\">\n\t\t\t\t{{ t('text', 'The document has been changed outside of the editor. The changes cannot be applied.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"hasConnectionIssue\" class=\"msg icon-info\">\n\t\t\t\t{{ t('text', 'File could not be loaded. Please check your internet connection.') }} <a class=\"button primary\" @click=\"reconnect\">{{ t('text', 'Reconnect') }}</a>\n\t\t\t</p>\n\t\t</div>\n\t\t<div v-if=\"currentSession && active\" id=\"editor-wrapper\" :class=\"{'has-conflicts': hasSyncCollission, 'icon-loading': !initialLoading && !hasConnectionIssue, 'richEditor': isRichEditor, 'show-color-annotations': showAuthorAnnotations}\">\n\t\t\t<div id=\"editor\">\n\t\t\t\t<MenuBar v-if=\"!syncError && !readOnly\"\n\t\t\t\t\tref=\"menubar\"\n\t\t\t\t\t:editor=\"tiptap\"\n\t\t\t\t\t:file-path=\"relativePath\"\n\t\t\t\t\t:is-rich-editor=\"isRichEditor\"\n\t\t\t\t\t:is-public=\"isPublic\"\n\t\t\t\t\t:autohide=\"autohide\">\n\t\t\t\t\t<div v-if=\"currentSession && active\" id=\"editor-session-list\">\n\t\t\t\t\t\t<div v-tooltip=\"lastSavedStatusTooltip\" class=\"save-status\" :class=\"lastSavedStatusClass\">\n\t\t\t\t\t\t\t{{ lastSavedStatus }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<SessionList :sessions=\"filteredSessions\">\n\t\t\t\t\t\t\t<GuestNameDialog v-if=\"isPublic && currentSession.guestName\" :sync-service=\"syncService\" />\n\t\t\t\t\t\t</SessionList>\n\t\t\t\t\t</div>\n\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t</MenuBar>\n\t\t\t\t<div>\n\t\t\t\t\t<MenuBubble v-if=\"!readOnly && isRichEditor\"\n\t\t\t\t\t\t:editor=\"tiptap\"\n\t\t\t\t\t\t:file-path=\"relativePath\" />\n\t\t\t\t\t<EditorContent v-show=\"initialLoading\"\n\t\t\t\t\t\tclass=\"editor__content\"\n\t\t\t\t\t\t:editor=\"tiptap\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<ReadOnlyEditor v-if=\"hasSyncCollission\"\n\t\t\t\t:content=\"syncError.data.outsideChange\"\n\t\t\t\t:is-rich-editor=\"isRichEditor\" />\n\t\t</div>\n\n\t\t<CollisionResolveDialog v-if=\"hasSyncCollission && !readOnly\" @resolveUseThisVersion=\"resolveUseThisVersion\" @resolveUseServerVersion=\"resolveUseServerVersion\" />\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport escapeHtml from 'escape-html'\nimport moment from '@nextcloud/moment'\n\nimport { SyncService, ERROR_TYPE, IDLE_TIMEOUT } from './../services/SyncService'\nimport { endpointUrl, getRandomGuestName } from './../helpers'\nimport { extensionHighlight } from '../helpers/mappings'\nimport { createEditor, markdownit, createMarkdownSerializer, serializePlainText, loadSyntaxHighlight } from './../EditorFactory'\n\nimport { EditorContent } from 'tiptap'\nimport { Collaboration } from 'tiptap-extensions'\nimport { Keymap, UserColor } from './../extensions'\nimport isMobile from './../mixins/isMobile'\nimport store from './../mixins/store'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { getVersion, receiveTransaction } from 'prosemirror-collab'\nimport { Step } from 'prosemirror-transform'\n\nconst EDITOR_PUSH_DEBOUNCE = 200\n\nexport default {\n\tname: 'EditorWrapper',\n\tcomponents: {\n\t\tEditorContent,\n\t\tMenuBar: () => import(/* webpackChunkName: \"editor-rich\" */'./MenuBar'),\n\t\tMenuBubble: () => import(/* webpackChunkName: \"editor-rich\" */'./MenuBubble'),\n\t\tReadOnlyEditor: () => import(/* webpackChunkName: \"editor\" */'./ReadOnlyEditor'),\n\t\tCollisionResolveDialog: () => import(/* webpackChunkName: \"editor\" */'./CollisionResolveDialog'),\n\t\tGuestNameDialog: () => import(/* webpackChunkName: \"editor-guest\" */'./GuestNameDialog'),\n\t\tSessionList: () => import(/* webpackChunkName: \"editor-collab\" */'./SessionList'),\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t\tstore,\n\t],\n\tprops: {\n\t\tinitialSession: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautofocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tautohide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisDirectEditing: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tIDLE_TIMEOUT,\n\n\t\t\ttiptap: null,\n\t\t\t/** @type SyncService */\n\t\t\tsyncService: null,\n\n\t\t\tdocument: null,\n\t\t\tsessions: [],\n\t\t\tcurrentSession: null,\n\n\t\t\tfilteredSessions: {},\n\n\t\t\tidle: false,\n\t\t\tdirty: false,\n\t\t\tinitialLoading: false,\n\t\t\tlastSavedString: '',\n\t\t\tsyncError: null,\n\t\t\thasConnectionIssue: false,\n\t\t\treadOnly: true,\n\t\t\tforceRecreate: false,\n\n\t\t\tsaveStatusPolling: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowAuthorAnnotations() {\n\t\t\treturn this.$store.state.showAuthorAnnotations\n\t\t},\n\t\tlastSavedStatus() {\n\t\t\treturn this.dirtyStateIndicator ? t('text', 'Saving …') : t('text', 'Saved')\n\t\t},\n\t\tlastSavedStatusClass() {\n\t\t\treturn this.syncError && this.lastSavedString !== '' ? 'error' : ''\n\t\t},\n\t\tdirtyStateIndicator() {\n\t\t\treturn this.hasUnpushedChanges || this.hasUnsavedChanges\n\t\t},\n\t\tlastSavedStatusTooltip() {\n\t\t\tlet message = t('text', 'Last saved {lastSaved}', { lastSaved: this.lastSavedString })\n\t\t\tif (this.hasSyncCollission) {\n\t\t\t\tmessage = t('text', 'The document has been changed outside of the editor. The changes cannot be applied.')\n\t\t\t}\n\t\t\tif (this.hasUnpushedChanges || this.hasUnsavedChanges) {\n\t\t\t\tmessage += ' - ' + t('text', 'Unsaved changes')\n\t\t\t}\n\t\t\treturn { content: message, placement: 'bottom' }\n\t\t},\n\t\thasSyncCollission() {\n\t\t\treturn this.syncError && this.syncError.type === ERROR_TYPE.SAVE_COLLISSION\n\t\t},\n\t\thasUnpushedChanges() {\n\t\t\treturn this.dirty\n\t\t},\n\t\thasUnsavedChanges() {\n\t\t\treturn this.document && this.document.lastSavedVersion < this.document.currentVersion\n\t\t},\n\t\tbackendUrl() {\n\t\t\treturn (endpoint) => {\n\t\t\t\treturn endpointUrl(endpoint, !!this.shareToken)\n\t\t\t}\n\t\t},\n\t\thasDocumentParameters() {\n\t\t\treturn this.fileId || this.shareToken || this.initialSession\n\t\t},\n\t\tisPublic() {\n\t\t\treturn this.isDirectEditing || (document.getElementById('isPublic') && document.getElementById('isPublic').value === '1')\n\t\t},\n\t\tisRichEditor() {\n\t\t\treturn this.mime === 'text/markdown'\n\t\t},\n\t\tfileExtension() {\n\t\t\treturn this.relativePath ? this.relativePath.split('/').pop().split('.').pop() : 'txt'\n\t\t},\n\t},\n\twatch: {\n\t\tlastSavedStatus() {\n\t\t\tthis.$refs.menubar && this.$refs.menubar.redrawMenuBar()\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.active && (this.hasDocumentParameters)) {\n\t\t\tthis.initSession()\n\t\t}\n\t\tthis.$parent.$emit('update:loaded', true)\n\t},\n\tcreated() {\n\t\tthis.saveStatusPolling = setInterval(() => {\n\t\t\tthis.updateLastSavedStatus()\n\t\t}, 2000)\n\t},\n\tbeforeDestroy() {\n\t\tthis.close()\n\t},\n\tmethods: {\n\t\tasync close() {\n\t\t\tclearInterval(this.saveStatusPolling)\n\t\t\tif (this.currentSession && this.syncService) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.syncService.close()\n\t\t\t\t\tthis.currentSession = null\n\t\t\t\t\tthis.syncService = null\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Ignore issues closing the session since those might happen due to network issues\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\tupdateLastSavedStatus() {\n\t\t\tif (this.document) {\n\t\t\t\tthis.lastSavedString = moment(this.document.lastSavedVersionTime * 1000).fromNow()\n\t\t\t}\n\t\t},\n\t\tinitSession() {\n\t\t\tif (!this.hasDocumentParameters) {\n\t\t\t\tthis.$parent.$emit('error', 'No valid file provided')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst guestName = localStorage.getItem('nick') ? localStorage.getItem('nick') : getRandomGuestName()\n\t\t\tthis.syncService = new SyncService({\n\t\t\t\tshareToken: this.shareToken,\n\t\t\t\tfilePath: this.relativePath,\n\t\t\t\tguestName,\n\t\t\t\tforceRecreate: this.forceRecreate,\n\t\t\t\tserialize: (document) => {\n\t\t\t\t\tif (this.isRichEditor) {\n\t\t\t\t\t\treturn (createMarkdownSerializer(this.tiptap.nodes, this.tiptap.marks)).serialize(document)\n\t\t\t\t\t}\n\t\t\t\t\treturn serializePlainText(this.tiptap)\n\n\t\t\t\t},\n\t\t\t})\n\t\t\t\t.on('opened', ({ document, session }) => {\n\t\t\t\t\tthis.currentSession = session\n\t\t\t\t\tthis.document = document\n\t\t\t\t\tthis.readOnly = document.readOnly\n\t\t\t\t\tlocalStorage.setItem('nick', this.currentSession.guestName)\n\t\t\t\t})\n\t\t\t\t.on('change', ({ document, sessions }) => {\n\t\t\t\t\tif (this.document.baseVersionEtag !== '' && document.baseVersionEtag !== this.document.baseVersionEtag) {\n\t\t\t\t\t\tthis.resolveUseServerVersion()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tthis.updateSessions.bind(this)(sessions)\n\t\t\t\t\tthis.document = document\n\n\t\t\t\t\tthis.syncError = null\n\t\t\t\t\tthis.tiptap.setOptions({ editable: !this.readOnly })\n\t\t\t\t})\n\t\t\t\t.on('loaded', ({ documentSource }) => {\n\t\t\t\t\tthis.hasConnectionIssue = false\n\t\t\t\t\tloadSyntaxHighlight(extensionHighlight[this.fileExtension] ? extensionHighlight[this.fileExtension] : this.fileExtension).then((languages) => {\n\t\t\t\t\t\tthis.tiptap = createEditor({\n\t\t\t\t\t\t\tcontent: this.isRichEditor ? markdownit.render(documentSource) : '<pre>' + escapeHtml(documentSource) + '</pre>',\n\t\t\t\t\t\t\tonInit: ({ state }) => {\n\t\t\t\t\t\t\t\tthis.syncService.state = state\n\t\t\t\t\t\t\t\tthis.syncService.startSync()\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonUpdate: ({ state }) => {\n\t\t\t\t\t\t\t\tthis.syncService.state = state\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\textensions: [\n\t\t\t\t\t\t\t\tnew Collaboration({\n\t\t\t\t\t\t\t\t// the initial version we start with\n\t\t\t\t\t\t\t\t// version is an integer which is incremented with every change\n\t\t\t\t\t\t\t\t\tversion: this.document.initialVersion,\n\t\t\t\t\t\t\t\t\tclientID: this.currentSession.id,\n\t\t\t\t\t\t\t\t\t// debounce changes so we can save some bandwidth\n\t\t\t\t\t\t\t\t\tdebounce: EDITOR_PUSH_DEBOUNCE,\n\t\t\t\t\t\t\t\t\tonSendable: ({ sendable }) => {\n\t\t\t\t\t\t\t\t\t\tif (this.syncService) {\n\t\t\t\t\t\t\t\t\t\t\tthis.syncService.sendSteps()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tupdate: ({ steps, version, editor }) => {\n\t\t\t\t\t\t\t\t\t\tconst { state, view, schema } = editor\n\n\t\t\t\t\t\t\t\t\t\tif (getVersion(state) > version) {\n\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst tr = receiveTransaction(\n\t\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\t\tsteps.map(item => Step.fromJSON(schema, item.step)),\n\t\t\t\t\t\t\t\t\t\t\tsteps.map(item => item.clientID),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\ttr.setMeta('clientID', steps.map(item => item.clientID))\n\t\t\t\t\t\t\t\t\t\tview.dispatch(tr)\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\tnew UserColor({\n\t\t\t\t\t\t\t\t\tclientID: this.currentSession.id,\n\t\t\t\t\t\t\t\t\tcolor: (clientID) => {\n\t\t\t\t\t\t\t\t\t\tconst session = this.sessions.find(item => '' + item.id === '' + clientID)\n\t\t\t\t\t\t\t\t\t\treturn session?.color\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tname: (clientID) => {\n\t\t\t\t\t\t\t\t\t\tconst session = this.sessions.find(item => '' + item.id === '' + clientID)\n\t\t\t\t\t\t\t\t\t\treturn session?.userId ? session.userId : session?.guestName\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\tnew Keymap({\n\t\t\t\t\t\t\t\t\t'Mod-s': () => {\n\t\t\t\t\t\t\t\t\t\tthis.syncService.save()\n\t\t\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tenableRichEditing: this.isRichEditor,\n\t\t\t\t\t\t\tlanguages,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.tiptap.on('focus', () => {\n\t\t\t\t\t\t\tthis.$emit('focus')\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.tiptap.on('blur', () => {\n\t\t\t\t\t\t\tthis.$emit('blur')\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.syncService.state = this.tiptap.state\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.on('sync', ({ steps, document }) => {\n\t\t\t\t\tthis.hasConnectionIssue = false\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.tiptap.extensions.options.collaboration.update({\n\t\t\t\t\t\t\tversion: document.currentVersion,\n\t\t\t\t\t\t\tsteps,\n\t\t\t\t\t\t\teditor: this.tiptap,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.syncService.state = this.tiptap.state\n\t\t\t\t\t\tthis.updateLastSavedStatus()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error('Failed to update steps in collaboration plugin', e)\n\t\t\t\t\t\t// TODO: we should recreate the editing session when this happens\n\t\t\t\t\t}\n\t\t\t\t\tthis.document = document\n\t\t\t\t})\n\t\t\t\t.on('error', (error, data) => {\n\t\t\t\t\tthis.tiptap.setOptions({ editable: false })\n\t\t\t\t\tif (error === ERROR_TYPE.SAVE_COLLISSION && (!this.syncError || this.syncError.type !== ERROR_TYPE.SAVE_COLLISSION)) {\n\t\t\t\t\t\tthis.initialLoading = true\n\t\t\t\t\t\tthis.syncError = {\n\t\t\t\t\t\t\ttype: error,\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (error === ERROR_TYPE.CONNECTION_FAILED && !this.hasConnectionIssue) {\n\t\t\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t\t\t\t// FIXME: ideally we just try to reconnect in the service, so we don't loose steps\n\t\t\t\t\t\tOC.Notification.showTemporary('Connection failed, reconnecting')\n\t\t\t\t\t\tif (data.retry !== false) {\n\t\t\t\t\t\t\tsetTimeout(this.reconnect.bind(this), 5000)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (error === ERROR_TYPE.SOURCE_NOT_FOUND) {\n\t\t\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('ready')\n\t\t\t\t})\n\t\t\t\t.on('stateChange', (state) => {\n\t\t\t\t\tif (state.initialLoading && !this.initialLoading) {\n\t\t\t\t\t\tthis.initialLoading = true\n\t\t\t\t\t\tif (this.autofocus) {\n\t\t\t\t\t\t\tthis.tiptap.focus('start')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.$emit('ready')\n\t\t\t\t\t\tthis.$parent.$emit('ready', true)\n\t\t\t\t\t}\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(state, 'dirty')) {\n\t\t\t\t\t\tthis.dirty = state.dirty\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('idle', () => {\n\t\t\t\t\tthis.syncService.close()\n\t\t\t\t\tthis.idle = true\n\t\t\t\t\tthis.readOnly = true\n\t\t\t\t\tthis.tiptap.setOptions({ editable: !this.readOnly })\n\t\t\t\t})\n\t\t\tif (this.initialSession === null) {\n\t\t\t\tthis.syncService.open({\n\t\t\t\t\tfileId: this.fileId,\n\t\t\t\t\tfilePath: this.relativePath,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.syncService.open({\n\t\t\t\t\tinitialSession: this.initialSession,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.hasConnectionIssue = true\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.forceRecreate = false\n\t\t},\n\n\t\tresolveUseThisVersion() {\n\t\t\tthis.syncService.forceSave()\n\t\t\tthis.tiptap.setOptions({ editable: !this.readOnly })\n\t\t},\n\n\t\tresolveUseServerVersion() {\n\t\t\tthis.forceRecreate = true\n\t\t\tthis.reconnect()\n\t\t},\n\n\t\treconnect() {\n\t\t\tthis.initialLoading = false\n\t\t\tthis.hasConnectionIssue = false\n\t\t\tif (this.syncService) {\n\t\t\t\tthis.syncService.close().then(() => {\n\t\t\t\t\tthis.syncService = null\n\t\t\t\t\tthis.tiptap.destroy()\n\t\t\t\t\tthis.initSession()\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\t// Ignore issues closing the session since those might happen due to network issues\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.syncService = null\n\t\t\t\tthis.tiptap.destroy()\n\t\t\t\tthis.initSession()\n\t\t\t}\n\t\t\tthis.idle = false\n\t\t},\n\n\t\tupdateSessions(sessions) {\n\t\t\tthis.sessions = sessions.sort((a, b) => b.lastContact - a.lastContact)\n\n\t\t\t// Make sure we get our own session updated\n\t\t\t// This should ideally be part of a global store where we can have that updated on the actual name change for guests\n\t\t\tconst currentUpdatedSession = this.sessions.find(session => session.id === this.currentSession.id)\n\t\t\tVue.set(this, 'currentSession', currentUpdatedSession)\n\n\t\t\tconst currentSessionIds = this.sessions.map((session) => session.userId)\n\t\t\tconst currentGuestIds = this.sessions.map((session) => session.guestId)\n\n\t\t\tconst removedSessions = Object.keys(this.filteredSessions)\n\t\t\t\t.filter(sessionId => !currentSessionIds.includes(sessionId) && !currentGuestIds.includes(sessionId))\n\n\t\t\tfor (const index in removedSessions) {\n\t\t\t\tVue.delete(this.filteredSessions, removedSessions[index])\n\t\t\t}\n\t\t\tfor (const index in this.sessions) {\n\t\t\t\tconst session = this.sessions[index]\n\t\t\t\tconst sessionKey = session.displayName ? session.userId : session.id\n\t\t\t\tif (this.filteredSessions[sessionKey]) {\n\t\t\t\t\t// update timestamp if relevant\n\t\t\t\t\tif (this.filteredSessions[sessionKey].lastContact < session.lastContact) {\n\t\t\t\t\t\tVue.set(this.filteredSessions[sessionKey], 'lastContact', session.lastContact)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tVue.set(this.filteredSessions, sessionKey, session)\n\t\t\t\t}\n\t\t\t\tif (session.id === this.currentSession.id) {\n\t\t\t\t\tVue.set(this.filteredSessions[sessionKey], 'isCurrent', true)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#editor-container {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t\theight: 100%;\n\t\tleft: 0;\n\t\ttop: 50px;\n\t\tmargin: 0 auto;\n\t\tposition: relative;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t#editor-wrapper {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\n\t\t&.show-color-annotations::v-deep .author-annotation {\n\t\t\tpadding-top: 2px;\n\t\t\tpadding-bottom: 2px;\n\t\t}\n\n\t\t&:not(.show-color-annotations)::v-deep .author-annotation {\n\t\t\tbackground-color: transparent !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t}\n\n\t\t.ProseMirror {\n\t\t\tmargin-top: 0 !important;\n\t\t}\n\t\t&.icon-loading {\n\t\t\t#editor {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t}\n\n\t#editor, .editor {\n\t\tbackground: var(--color-main-background);\n\t\tcolor: var(--color-main-text);\n\t\tbackground-clip: padding-box;\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tposition: relative;\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t\twidth: 100%;\n\t}\n\n\t.document-status {\n\t\tz-index: 1010;\n\t\tposition: relative;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t.document-status .msg {\n\t\tpadding: 12px;\n\t\tpadding-left: 30px;\n\t\tborder-bottom: 1px solid var(--color-border);\n\t\tbackground-position: 8px center;\n\t}\n\n\t.save-status {\n\t\tdisplay: inline-flex;\n\t\tpadding: 0;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-lighter);\n\t\tposition: relative;\n\t\ttop: 10px;\n\t\tmin-width: 85px;\n\n\t\t&.error {\n\t\t\tbackground-color: var(--color-error);\n\t\t\tcolor: var(--color-main-background);\n\t\t\tborder-radius: 3px;\n\t\t}\n\t}\n\n\t#editor-container #editor-wrapper.has-conflicts {\n\t\theight: calc(100% - 50px);\n\n\t\t#editor, #read-only-editor {\n\t\t\twidth: 50%;\n\t\t\theight: 100%;\n\t\t}\n\t}\n\n\t#editor-session-list {\n\t\tdisplay: flex;\n\n\t\tinput, div {\n\t\t\tvertical-align: middle;\n\t\t\tmargin-left: 3px;\n\t\t}\n\t}\n\n\t.editor__content {\n\t\tmax-width: 670px;\n\t\tmargin: auto;\n\t\tposition: relative;\n\t}\n\n\t#body-public {\n\t\theight: auto;\n\t}\n\n\t#files-public-content {\n\t\t#editor-container {\n\t\t\ttop: 0;\n\t\t\twidth: 100%;\n\n\t\t\t#editor::v-deep .menubar {\n\t\t\t\tposition: sticky;\n\t\t\t\ttop: 0px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t#editor {\n\t\t\t\toverflow: auto;\n\t\t\t\t// Fix for IE11 issue where the menubar sometimes was positioned under the text\n\t\t\t\tz-index: 1000;\n\t\t\t}\n\t\t\t.has-conflicts #editor {\n\t\t\t\tpadding-top: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t.ie {\n\t\t#editor::v-deep .menubar {\n\t\t\t// sticky position is not working as body is our scroll container\n\t\t\tposition: fixed;\n\t\t\ttop: 50px;\n\t\t\twidth: 100%;\n\t\t}\n\t\t.editor__content::v-deep .ProseMirror {\n\t\t\tpadding-top: 50px;\n\t\t}\n\t}\n\n</style>\n<style lang=\"scss\">\n\t@import './../../css/style';\n\n\t#editor-wrapper {\n\t\t@import './../../css/prosemirror';\n\n\t\t&:not(.richEditor) .ProseMirror {\n\t\t\tpre {\n\t\t\t\tbackground-color: var(--color-main-background);\n\n\t\t\t\t&::before {\n\t\t\t\t\tcontent: attr(data-language);\n\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\ttext-align: right;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\tfont-size: 0.6rem;\n\t\t\t\t}\n\t\t\t\tcode {\n\t\t\t\t\t.hljs-comment,\n\t\t\t\t\t.hljs-quote {\n\t\t\t\t\t\tcolor: #999999;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-variable,\n\t\t\t\t\t.hljs-template-variable,\n\t\t\t\t\t.hljs-attribute,\n\t\t\t\t\t.hljs-tag,\n\t\t\t\t\t.hljs-name,\n\t\t\t\t\t.hljs-regexp,\n\t\t\t\t\t.hljs-link,\n\t\t\t\t\t.hljs-selector-id,\n\t\t\t\t\t.hljs-selector-class {\n\t\t\t\t\t\tcolor: #f2777a;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-number,\n\t\t\t\t\t.hljs-meta,\n\t\t\t\t\t.hljs-built_in,\n\t\t\t\t\t.hljs-builtin-name,\n\t\t\t\t\t.hljs-literal,\n\t\t\t\t\t.hljs-type,\n\t\t\t\t\t.hljs-params {\n\t\t\t\t\t\tcolor: #f99157;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-string,\n\t\t\t\t\t.hljs-symbol,\n\t\t\t\t\t.hljs-bullet {\n\t\t\t\t\t\tcolor: #99cc99;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-title,\n\t\t\t\t\t.hljs-section {\n\t\t\t\t\t\tcolor: #ffcc66;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-keyword,\n\t\t\t\t\t.hljs-selector-tag {\n\t\t\t\t\t\tcolor: #6699cc;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-emphasis {\n\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t}\n\t\t\t\t\t.hljs-strong {\n\t\t\t\t\t\tfont-weight: 700;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Required in order to make the public pages behave the same if talk is enabled or not\n\t// as Talk overwrites the public page styles and changes the DOM layout for the sidebar injection\n\t#files-public-content {\n\t\theight: 100%;\n\t}\n</style>\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { Editor, Text } from 'tiptap'\nimport {\n\tHardBreak,\n\tHeading,\n\tCode,\n\tOrderedList,\n\tBlockquote,\n\tCodeBlock,\n\tCodeBlockHighlight,\n\tHorizontalRule,\n\tHistory,\n\tPlaceholder,\n} from 'tiptap-extensions'\nimport { Strong, Italic, Strike, Link } from './marks'\nimport { Image, PlainTextDocument, ListItem, BulletList } from './nodes'\nimport MarkdownIt from 'markdown-it'\nimport taskLists from 'markdown-it-task-lists'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport 'proxy-polyfill'\n\nimport { MarkdownSerializer, defaultMarkdownSerializer } from 'prosemirror-markdown'\n\nconst loadSyntaxHighlight = async(language) => {\n\tconst languages = [language]\n\tconst modules = {}\n\tfor (let i = 0; i < languages.length; i++) {\n\t\ttry {\n\t\t\tconst lang = await import(/* webpackChunkName: \"highlight/[request]\" */'highlight.js/lib/languages/' + languages[i])\n\t\t\tmodules[languages[i]] = lang.default\n\t\t} catch (e) {\n\t\t\t// No matching highlighing found, fallback to none\n\t\t\treturn undefined\n\t\t}\n\t}\n\tif (Object.keys(modules).length === 0 && modules.constructor === Object) {\n\t\treturn undefined\n\t}\n\treturn { languages: modules }\n}\n\nconst createEditor = ({ content, onInit, onUpdate, extensions, enableRichEditing, languages }) => {\n\tlet richEditingExtensions = []\n\tif (enableRichEditing) {\n\t\trichEditingExtensions = [\n\t\t\tnew Heading(),\n\t\t\tnew Code(),\n\t\t\tnew Strong(),\n\t\t\tnew Italic(),\n\t\t\tnew Strike(),\n\t\t\tnew HardBreak(),\n\t\t\tnew HorizontalRule(),\n\t\t\tnew BulletList(),\n\t\t\tnew OrderedList(),\n\t\t\tnew Blockquote(),\n\t\t\tnew CodeBlock(),\n\t\t\tnew ListItem(),\n\t\t\tnew Link({\n\t\t\t\topenOnClick: true,\n\t\t\t}),\n\t\t\tnew Image(),\n\t\t\tnew Placeholder({\n\t\t\t\temptyNodeClass: 'is-empty',\n\t\t\t\temptyNodeText: t('text', 'Add notes, lists or links …'),\n\t\t\t\tshowOnlyWhenEditable: true,\n\t\t\t}),\n\t\t]\n\t} else {\n\t\trichEditingExtensions = [\n\t\t\tnew PlainTextDocument(),\n\t\t\tnew Text(),\n\t\t\tnew CodeBlockHighlight({\n\t\t\t\t...languages,\n\t\t\t}),\n\t\t]\n\t}\n\textensions = extensions || []\n\treturn new Editor({\n\t\tcontent,\n\t\tonInit,\n\t\tonUpdate,\n\t\textensions: [\n\t\t\t...richEditingExtensions,\n\t\t\tnew History(),\n\t\t].concat(extensions),\n\t\tuseBuiltInExtensions: enableRichEditing,\n\t})\n}\n\nconst markdownit = MarkdownIt('commonmark', { html: false, breaks: false })\n\t.enable('strikethrough')\n\t.use(taskLists, { enable: true, labelAfter: true })\n\nconst SerializeException = function(message) {\n\tthis.message = message\n}\nconst createMarkdownSerializer = (_nodes, _marks) => {\n\tconst nodes = Object\n\t\t.entries(_nodes)\n\t\t.filter(([, node]) => node.toMarkdown)\n\t\t.reduce((items, [name, { toMarkdown }]) => ({\n\t\t\t...items,\n\t\t\t[name]: toMarkdown,\n\t\t}), {})\n\n\tconst marks = Object\n\t\t.entries(_marks)\n\t\t.filter(([, node]) => node.toMarkdown)\n\t\t.reduce((items, [name, { toMarkdown }]) => ({\n\t\t\t...items,\n\t\t\t[name]: toMarkdown,\n\t\t}), {})\n\treturn {\n\t\tserializer: new MarkdownSerializer(\n\t\t\t{ ...defaultMarkdownSerializer.nodes, ...nodes },\n\t\t\t{ ...defaultMarkdownSerializer.marks, ...marks }\n\t\t),\n\t\tserialize(content, options) {\n\t\t\treturn this.serializer.serialize(content, { ...options, tightLists: true })\n\t\t\t\t.split('\\\\[').join('[')\n\t\t\t\t.split('\\\\]').join(']')\n\t\t},\n\t}\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 === 'code_block' && 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 { markdownit, createEditor, createMarkdownSerializer, serializePlainText, loadSyntaxHighlight }\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  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<div class=\"image\" :class=\"{'icon-loading': !loaded}\" :data-src=\"src\">\n\t\t<div v-if=\"imageLoaded && isSupportedImage\" class=\"image__view\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<img v-show=\"loaded\"\n\t\t\t\t\t:src=\"imageUrl\"\n\t\t\t\t\tclass=\"image__main\"\n\t\t\t\t\t@load=\"onLoaded\">\n\t\t\t</transition>\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<div v-show=\"loaded\" class=\"image__caption\">\n\t\t\t\t\t<input ref=\"altInput\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t:value=\"alt\"\n\t\t\t\t\t\t@keyup.enter=\"updateAlt()\">\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else class=\"image__placeholder\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<div v-show=\"loaded\" class=\"image__main\">\n\t\t\t\t\t<a :href=\"internalLinkOrImage\" target=\"_blank\">\n\t\t\t\t\t\t<div class=\"icon-image\" :style=\"mimeIcon\" />\n\t\t\t\t\t\t<p v-if=\"!isSupportedImage\">{{ alt }}</p>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</transition><transition name=\"fade\">\n\t\t\t\t<div v-show=\"loaded\" class=\"image__caption\">\n\t\t\t\t\t<input ref=\"altInput\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t:value=\"alt\"\n\t\t\t\t\t\t@keyup.enter=\"updateAlt()\">\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport path from 'path'\nimport { generateUrl } from '@nextcloud/router'\n\nconst imageMimes = [\n\t'image/png',\n\t'image/jpeg',\n\t'image/gif',\n\t'image/x-xbitmap',\n\t'image/bmp',\n\t'image/svg+xml',\n]\n\nconst getQueryVariable = (src, variable) => {\n\tconst query = src.split('?')[1]\n\tif (typeof query === 'undefined') {\n\t\treturn\n\t}\n\tconst vars = query.split(/[&#]/)\n\tif (typeof vars === 'undefined') {\n\t\treturn\n\t}\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\nexport default {\n\tname: 'ImageView',\n\tprops: ['node', 'updateAttrs', 'view'], // eslint-disable-line\n\tdata() {\n\t\treturn {\n\t\t\timageLoaded: false,\n\t\t\tloaded: false,\n\t\t\tfailed: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\timageUrl() {\n\t\t\tif (this.src.startsWith('http://') || this.src.startsWith('https://')) {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t\tif (this.hasPreviewUrl) {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t\tif (this.fileId) {\n\t\t\t\treturn generateUrl('/core/preview') + `?fileId=${this.fileId}&x=1024&y=1024&a=true`\n\t\t\t}\n\t\t\tconst f = FileList.getCurrentDirectory() + '/' + this.src\n\t\t\tconst pathParam = encodeURIComponent(path.normalize(f))\n\t\t\treturn generateUrl('/core/preview.png') + `?file=${pathParam}&x=1024&y=1024&a=true`\n\t\t},\n\t\tfileId() {\n\t\t\treturn getQueryVariable(this.src, 'fileId')\n\t\t},\n\t\thasPreviewUrl() {\n\t\t\treturn this.src.match(/^(\\/index.php)?\\/core\\/preview/) || this.src.match(/^(\\/index.php)?\\/apps\\/files_sharing\\/publicpreview\\//)\n\t\t},\n\t\tmimeIcon() {\n\t\t\tconst mime = getQueryVariable(this.src, 'mimetype')\n\t\t\tif (mime) {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: 'url(' + window.OC.MimeType.getIconUrl(mime) + ')',\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {}\n\t\t},\n\t\tisSupportedImage() {\n\t\t\tconst mime = getQueryVariable(this.src, 'mimetype')\n\t\t\treturn typeof mime === 'undefined' || imageMimes.indexOf(mime) !== -1\n\t\t},\n\t\tinternalLinkOrImage() {\n\t\t\tconst fileId = getQueryVariable(this.src, 'fileId')\n\t\t\tif (fileId) {\n\t\t\t\treturn generateUrl('/f/' + fileId)\n\t\t\t}\n\t\t\treturn this.src\n\t\t},\n\t\tsrc: {\n\t\t\tget() {\n\t\t\t\treturn this.node.attrs.src\n\t\t\t},\n\t\t\tset(src) {\n\t\t\t\tthis.updateAttrs({\n\t\t\t\t\tsrc,\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\talt: {\n\t\t\tget() {\n\t\t\t\treturn this.node.attrs.alt ? this.node.attrs.alt : ''\n\t\t\t},\n\t\t\tset(alt) {\n\t\t\t\tthis.updateAttrs({\n\t\t\t\t\talt,\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\tt() {\n\t\t\treturn (a, s) => window.t(a, s)\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tif (!this.isSupportedImage) {\n\t\t\t// TODO check if hasPreview and render a file preview if available\n\t\t\tthis.failed = true\n\t\t\tthis.imageLoaded = false\n\t\t\tthis.loaded = true\n\t\t\treturn\n\t\t}\n\t\tconst img = new Image()\n\t\timg.src = this.imageUrl\n\t\timg.onload = () => {\n\t\t\tthis.imageLoaded = true\n\t\t}\n\t\timg.onerror = () => {\n\t\t\tthis.failed = true\n\t\t\tthis.imageLoaded = false\n\t\t\tthis.loaded = true\n\t\t}\n\t},\n\tmethods: {\n\t\tupdateAlt() {\n\t\t\tthis.alt = this.$refs.altInput.value\n\t\t},\n\t\tonLoaded() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.image {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.image__caption {\n\t\ttext-align: center;\n\t\tcolor: var(--color-text-lighter);\n\t\tinput[type='text'] {\n\t\t\twidth: 100%;\n\t\t\tborder: none;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n\n\t.icon-image {\n\t\tmargin-top: 10px;\n\t\theight: 32px;\n\t\tpadding: 20px;\n\t\tbackground-size: contain;\n\t}\n\n\t.image__loading {\n\t\theight: 100px;\n\t}\n\n\t.image__view {\n\t\ttext-align: center;\n\n\t\t.image__main {\n\t\t\tmax-height: 40vh;\n\t\t}\n\t}\n\n\t.image__placeholder {\n\t\ta {\n\t\t\tdisplay: flex;\n\t\t}\n\t\t.image__main {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\ttext-align: center;\n\t\t\tpadding: 5px;\n\t\t\tborder-radius: var(--border-radius);\n\n\t\t\t.icon-image {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tpadding: 10px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity .3s ease-in-out;\n\t}\n\n\t.fade-enter-to {\n\t\topacity: 1;\n\t}\n\n\t.fade-enter {\n\t\topacity: 0;\n\t}\n</style>\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld2JveD0iMCAwIDE2IDE2IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xMS45MjQgNC4wNjZsLTQuOTMyIDQuOTctMi44MjgtMi44M0wyLjc1IDcuNjE4bDQuMjQyIDQuMjQzIDYuMzY1LTYuMzY1LTEuNDMzLTEuNDMyeiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPgo=\"","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadOnlyEditor.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!./ReadOnlyEditor.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<EditorContent v-if=\"editor\" id=\"read-only-editor\" :editor=\"editor\" />\n</template>\n\n<script>\nimport { EditorContent } from 'tiptap'\nimport escapeHtml from 'escape-html'\nimport { createEditor, markdownit } from '../EditorFactory'\n\nexport default {\n\tname: 'ReadOnlyEditor',\n\tcomponents: { EditorContent },\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\teditor: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.editor = createEditor({\n\t\t\tcontent: this.isRichEditor ? markdownit.render(this.content) : '<pre>' + escapeHtml(this.content) + '</pre>',\n\t\t\tenableRichEditing: this.isRichEditor,\n\t\t})\n\t\tthis.editor.setOptions({ editable: false })\n\t},\n\tbeforeDestroy() {\n\t\tthis.editor.destroy()\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n\t#read-only-editor {\n\t\t@import './../../css/prosemirror';\n\t\toverflow: scroll;\n\t}\n\n\t.thumbnailContainer #read-only-editor  {\n\t\twidth: 100%;\n\n\t\t.ProseMirror {\n\t\t\theight: auto;\n\t\t\tmargin: 0 0 0 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n</style>\n<style lang=\"scss\">\n\t@import './../../css/prosemirror';\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollisionResolveDialog.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<div id=\"resolve-conflicts\" class=\"collision-resolve-dialog\">\n\t\t<button @click=\"$emit('resolveUseThisVersion')\">\n\t\t\t{{ t('text', 'Use current version') }}\n\t\t</button>\n\t\t<button @click=\"$emit('resolveUseServerVersion')\">\n\t\t\t{{ t('text', 'Use the saved version') }}\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'CollisionResolveDialog',\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#resolve-conflicts {\n\t\tdisplay: flex;\n\t\tposition: fixed;\n\t\tz-index: 10000;\n\t\tbottom: 0;\n\t\tmax-width: 900px;\n\t\twidth: 100vw;\n\t\tmargin: auto;\n\t\tpadding: 20px 0;\n\n\t\tbutton {\n\t\t\tmargin: auto;\n\t\t\tbox-shadow: 0 0 10px var(--color-box-shadow);\n\t\t}\n\t}\n</style>\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport axios from '@nextcloud/axios'\n\nimport PollingBackend from './PollingBackend'\nimport { endpointUrl } from './../helpers'\nimport { getVersion, sendableSteps } from 'prosemirror-collab'\n\nconst defaultOptions = {\n\tshareToken: null,\n\tforceRecreate: false,\n\tserialize: (document) => document,\n}\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 * @type {number}\n */\nconst IDLE_TIMEOUT = 30\n\nconst ERROR_TYPE = {\n\t/**\n\t * Failed to save collaborative document due to external change\n\t * collission needs to be resolved manually\n\t */\n\tSAVE_COLLISSION: 0,\n\t/**\n\t * Failed to push changes for MAX_REBASE_RETRY times\n\t */\n\tPUSH_FAILURE: 1,\n\n\tLOAD_ERROR: 2,\n\n\tCONNECTION_FAILED: 3,\n\n\tSOURCE_NOT_FOUND: 4,\n}\n\nclass SyncService {\n\n\tconstructor(options) {\n\t\tthis.eventHandlers = {\n\t\t\t/* Document state */\n\t\t\topened: [],\n\t\t\tloaded: [],\n\t\t\t/* All initial steps fetched */\n\t\t\tfetched: [],\n\t\t\t/* received new steps */\n\t\t\tsync: [],\n\t\t\t/* state changed (dirty) */\n\t\t\tstateChange: [],\n\t\t\t/* error */\n\t\t\terror: [],\n\t\t\t/* Events for session and document meta data */\n\t\t\tchange: [],\n\t\t\t/* Emitted after successful save */\n\t\t\tsave: [],\n\t\t\t/* Emitted once a document becomes idle */\n\t\t\tidle: [],\n\t\t}\n\n\t\tthis.backend = new PollingBackend(this)\n\n\t\tthis.options = Object.assign({}, defaultOptions, options)\n\n\t\tthis.document = null\n\t\tthis.session = null\n\t\tthis.sessions = []\n\n\t\tthis.steps = []\n\t\tthis.stepClientIDs = []\n\n\t\tthis.lastStepPush = Date.now()\n\n\t\treturn this\n\t}\n\n\tasync open({ fileId, filePath, initialSession }) {\n\t\tlet connectionData = null\n\t\tif (typeof initialSession === 'undefined') {\n\t\t\ttry {\n\t\t\t\tconst response = await this._openDocument({ fileId, filePath })\n\t\t\t\tconnectionData = response.data\n\t\t\t} catch (error) {\n\t\t\t\tif (!error.response || error.code === 'ECONNABORTED') {\n\t\t\t\t\tthis.emit('error', ERROR_TYPE.CONNECTION_FAILED, {})\n\t\t\t\t} else {\n\t\t\t\t\tthis.emit('error', ERROR_TYPE.LOAD_ERROR, error.response.status)\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t} else {\n\t\t\tconnectionData = initialSession\n\t\t}\n\n\t\tthis.document = connectionData.document\n\t\tthis.document.readOnly = connectionData.readOnly\n\t\tthis.session = connectionData.session\n\n\t\tthis.emit('opened', {\n\t\t\tdocument: this.document,\n\t\t\tsession: this.session,\n\t\t})\n\t\treturn this._fetchDocument().then(({ data }) => {\n\t\t\tthis.emit('loaded', {\n\t\t\t\tdocument: this.document,\n\t\t\t\tsession: this.session,\n\t\t\t\tdocumentSource: '' + data,\n\t\t\t})\n\t\t})\n\t}\n\n\tstartSync() {\n\t\tthis.backend.connect()\n\t}\n\n\t_openDocument({ fileId, filePath }) {\n\t\treturn axios.put(endpointUrl('session/create', !!this.options.shareToken), {\n\t\t\tfileId,\n\t\t\tfilePath,\n\t\t\ttoken: this.options.shareToken,\n\t\t\tguestName: this.options.guestName,\n\t\t\tforceRecreate: this.options.forceRecreate,\n\t\t})\n\t}\n\n\t_fetchDocument() {\n\t\treturn axios.post(\n\t\t\tendpointUrl('session/fetch', !!this.options.shareToken), {\n\t\t\t\tdocumentId: this.document.id,\n\t\t\t\tsessionId: this.session.id,\n\t\t\t\tsessionToken: this.session.token,\n\t\t\t\ttoken: this.options.shareToken,\n\t\t\t}, {\n\t\t\t\ttransformResponse: [(data) => data],\n\t\t\t}\n\t\t)\n\t}\n\n\tupdateSession(guestName) {\n\t\tif (!this.isPublic()) {\n\t\t\treturn\n\t\t}\n\t\treturn axios.post(\n\t\t\tendpointUrl('session', !!this.options.shareToken), {\n\t\t\t\tdocumentId: this.document.id,\n\t\t\t\tsessionId: this.session.id,\n\t\t\t\tsessionToken: this.session.token,\n\t\t\t\ttoken: this.options.shareToken,\n\t\t\t\tguestName,\n\t\t\t}\n\t\t).then(({ data }) => {\n\t\t\tthis.session = data\n\t\t\treturn data\n\t\t}).catch((error) => {\n\t\t\tconsole.error('Failed to update the session', error)\n\t\t\treturn Promise.reject(error)\n\t\t})\n\t}\n\n\tsendSteps(_sendable) {\n\t\tconst sendable = _sendable || sendableSteps(this.state)\n\t\tif (!sendable) {\n\t\t\treturn\n\t\t}\n\t\treturn this.backend.sendSteps(sendable)\n\t}\n\n\tstepsSince(version) {\n\t\treturn {\n\t\t\tsteps: this.steps.slice(version),\n\t\t\tclientIDs: this.stepClientIDs.slice(version),\n\t\t}\n\t}\n\n\t_receiveSteps({ steps, document }) {\n\t\tconst newSteps = []\n\t\tfor (let i = 0; i < steps.length; i++) {\n\t\t\tconst singleSteps = steps[i].data\n\t\t\tif (!Array.isArray(singleSteps)) {\n\t\t\t\tconsole.error('Invalid step data, skipping 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', { steps: newSteps, document })\n\t\tconsole.debug('receivedSteps', 'newVersion', this._getVersion())\n\t}\n\n\tcheckIdle() {\n\t\tconst lastPushMinutesAgo = (Date.now() - this.lastStepPush) / 1000 / 60\n\t\tif (lastPushMinutesAgo > IDLE_TIMEOUT) {\n\t\t\tconsole.debug(`[SyncService] Document is idle for ${this.IDLE_TIMEOUT} minutes, suspending connection`)\n\t\t\tthis.emit('idle')\n\t\t}\n\t}\n\n\t_getVersion() {\n\t\tif (this.state) {\n\t\t\treturn getVersion(this.state)\n\t\t}\n\t\treturn 0\n\t}\n\n\t_getDocument() {\n\t\tif (this.state) {\n\t\t\treturn this.state.doc\n\t\t}\n\t}\n\n\t_getContent() {\n\t\treturn this.options.serialize(this._getDocument())\n\t}\n\n\tsave() {\n\t\tif (this.backend.save) {\n\t\t\tthis.backend.save()\n\t\t}\n\t}\n\n\tforceSave() {\n\t\tif (this.backend.forceSave) {\n\t\t\tthis.backend.forceSave()\n\t\t}\n\t}\n\n\tclose() {\n\t\tlet closed = false\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.on('save', () => {\n\t\t\t\tthis._close().then(() => {\n\t\t\t\t\tclosed = true\n\t\t\t\t\tresolve()\n\t\t\t\t}).catch(() => resolve())\n\t\t\t})\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!closed) {\n\t\t\t\t\tthis._close().then(() => {\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}).catch(() => resolve())\n\t\t\t\t}\n\t\t\t}, 2000)\n\t\t\tthis.save()\n\t\t})\n\t}\n\n\t_close() {\n\t\tif (this.document === null || this.session === null) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tthis.backend.disconnect()\n\t\treturn axios.post(\n\t\t\tendpointUrl('session/close', !!this.options.shareToken), {\n\t\t\t\tdocumentId: this.document.id,\n\t\t\t\tsessionId: this.session.id,\n\t\t\t\tsessionToken: this.session.token,\n\t\t\t\ttoken: this.options.shareToken,\n\t\t\t})\n\t}\n\n\ton(event, callback, _this) {\n\t\tthis.eventHandlers[event].push(callback.bind(_this))\n\t\treturn this\n\t}\n\n\temit(event, data, additionalData) {\n\t\tif (typeof this.eventHandlers[event] !== 'undefined') {\n\t\t\tthis.eventHandlers[event].forEach(function(callback) {\n\t\t\t\tcallback(data, additionalData)\n\t\t\t})\n\t\t} else {\n\t\t\tconsole.error('Event not found', event)\n\t\t}\n\t}\n\n\tisPublic() {\n\t\treturn !!this.options.shareToken\n\t}\n\n}\n\nexport default SyncService\nexport { SyncService, ERROR_TYPE, IDLE_TIMEOUT }\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport 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 <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport store from '../store'\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\tthis.$store = store\n\t\t}\n\t},\n}\n","var map = {\n\t\"./af\": 257,\n\t\"./af.js\": 257,\n\t\"./ar\": 258,\n\t\"./ar-dz\": 259,\n\t\"./ar-dz.js\": 259,\n\t\"./ar-kw\": 260,\n\t\"./ar-kw.js\": 260,\n\t\"./ar-ly\": 261,\n\t\"./ar-ly.js\": 261,\n\t\"./ar-ma\": 262,\n\t\"./ar-ma.js\": 262,\n\t\"./ar-sa\": 263,\n\t\"./ar-sa.js\": 263,\n\t\"./ar-tn\": 264,\n\t\"./ar-tn.js\": 264,\n\t\"./ar.js\": 258,\n\t\"./az\": 265,\n\t\"./az.js\": 265,\n\t\"./be\": 266,\n\t\"./be.js\": 266,\n\t\"./bg\": 267,\n\t\"./bg.js\": 267,\n\t\"./bm\": 268,\n\t\"./bm.js\": 268,\n\t\"./bn\": 269,\n\t\"./bn.js\": 269,\n\t\"./bo\": 270,\n\t\"./bo.js\": 270,\n\t\"./br\": 271,\n\t\"./br.js\": 271,\n\t\"./bs\": 272,\n\t\"./bs.js\": 272,\n\t\"./ca\": 273,\n\t\"./ca.js\": 273,\n\t\"./cs\": 274,\n\t\"./cs.js\": 274,\n\t\"./cv\": 275,\n\t\"./cv.js\": 275,\n\t\"./cy\": 276,\n\t\"./cy.js\": 276,\n\t\"./da\": 277,\n\t\"./da.js\": 277,\n\t\"./de\": 278,\n\t\"./de-at\": 279,\n\t\"./de-at.js\": 279,\n\t\"./de-ch\": 280,\n\t\"./de-ch.js\": 280,\n\t\"./de.js\": 278,\n\t\"./dv\": 281,\n\t\"./dv.js\": 281,\n\t\"./el\": 282,\n\t\"./el.js\": 282,\n\t\"./en-SG\": 283,\n\t\"./en-SG.js\": 283,\n\t\"./en-au\": 284,\n\t\"./en-au.js\": 284,\n\t\"./en-ca\": 285,\n\t\"./en-ca.js\": 285,\n\t\"./en-gb\": 286,\n\t\"./en-gb.js\": 286,\n\t\"./en-ie\": 287,\n\t\"./en-ie.js\": 287,\n\t\"./en-il\": 288,\n\t\"./en-il.js\": 288,\n\t\"./en-nz\": 289,\n\t\"./en-nz.js\": 289,\n\t\"./eo\": 290,\n\t\"./eo.js\": 290,\n\t\"./es\": 291,\n\t\"./es-do\": 292,\n\t\"./es-do.js\": 292,\n\t\"./es-us\": 293,\n\t\"./es-us.js\": 293,\n\t\"./es.js\": 291,\n\t\"./et\": 294,\n\t\"./et.js\": 294,\n\t\"./eu\": 295,\n\t\"./eu.js\": 295,\n\t\"./fa\": 296,\n\t\"./fa.js\": 296,\n\t\"./fi\": 297,\n\t\"./fi.js\": 297,\n\t\"./fo\": 298,\n\t\"./fo.js\": 298,\n\t\"./fr\": 299,\n\t\"./fr-ca\": 300,\n\t\"./fr-ca.js\": 300,\n\t\"./fr-ch\": 301,\n\t\"./fr-ch.js\": 301,\n\t\"./fr.js\": 299,\n\t\"./fy\": 302,\n\t\"./fy.js\": 302,\n\t\"./ga\": 303,\n\t\"./ga.js\": 303,\n\t\"./gd\": 304,\n\t\"./gd.js\": 304,\n\t\"./gl\": 305,\n\t\"./gl.js\": 305,\n\t\"./gom-latn\": 306,\n\t\"./gom-latn.js\": 306,\n\t\"./gu\": 307,\n\t\"./gu.js\": 307,\n\t\"./he\": 308,\n\t\"./he.js\": 308,\n\t\"./hi\": 309,\n\t\"./hi.js\": 309,\n\t\"./hr\": 310,\n\t\"./hr.js\": 310,\n\t\"./hu\": 311,\n\t\"./hu.js\": 311,\n\t\"./hy-am\": 312,\n\t\"./hy-am.js\": 312,\n\t\"./id\": 313,\n\t\"./id.js\": 313,\n\t\"./is\": 314,\n\t\"./is.js\": 314,\n\t\"./it\": 315,\n\t\"./it-ch\": 316,\n\t\"./it-ch.js\": 316,\n\t\"./it.js\": 315,\n\t\"./ja\": 317,\n\t\"./ja.js\": 317,\n\t\"./jv\": 318,\n\t\"./jv.js\": 318,\n\t\"./ka\": 319,\n\t\"./ka.js\": 319,\n\t\"./kk\": 320,\n\t\"./kk.js\": 320,\n\t\"./km\": 321,\n\t\"./km.js\": 321,\n\t\"./kn\": 322,\n\t\"./kn.js\": 322,\n\t\"./ko\": 323,\n\t\"./ko.js\": 323,\n\t\"./ku\": 324,\n\t\"./ku.js\": 324,\n\t\"./ky\": 325,\n\t\"./ky.js\": 325,\n\t\"./lb\": 326,\n\t\"./lb.js\": 326,\n\t\"./lo\": 327,\n\t\"./lo.js\": 327,\n\t\"./lt\": 328,\n\t\"./lt.js\": 328,\n\t\"./lv\": 329,\n\t\"./lv.js\": 329,\n\t\"./me\": 330,\n\t\"./me.js\": 330,\n\t\"./mi\": 331,\n\t\"./mi.js\": 331,\n\t\"./mk\": 332,\n\t\"./mk.js\": 332,\n\t\"./ml\": 333,\n\t\"./ml.js\": 333,\n\t\"./mn\": 334,\n\t\"./mn.js\": 334,\n\t\"./mr\": 335,\n\t\"./mr.js\": 335,\n\t\"./ms\": 336,\n\t\"./ms-my\": 337,\n\t\"./ms-my.js\": 337,\n\t\"./ms.js\": 336,\n\t\"./mt\": 338,\n\t\"./mt.js\": 338,\n\t\"./my\": 339,\n\t\"./my.js\": 339,\n\t\"./nb\": 340,\n\t\"./nb.js\": 340,\n\t\"./ne\": 341,\n\t\"./ne.js\": 341,\n\t\"./nl\": 342,\n\t\"./nl-be\": 343,\n\t\"./nl-be.js\": 343,\n\t\"./nl.js\": 342,\n\t\"./nn\": 344,\n\t\"./nn.js\": 344,\n\t\"./pa-in\": 345,\n\t\"./pa-in.js\": 345,\n\t\"./pl\": 346,\n\t\"./pl.js\": 346,\n\t\"./pt\": 347,\n\t\"./pt-br\": 348,\n\t\"./pt-br.js\": 348,\n\t\"./pt.js\": 347,\n\t\"./ro\": 349,\n\t\"./ro.js\": 349,\n\t\"./ru\": 350,\n\t\"./ru.js\": 350,\n\t\"./sd\": 351,\n\t\"./sd.js\": 351,\n\t\"./se\": 352,\n\t\"./se.js\": 352,\n\t\"./si\": 353,\n\t\"./si.js\": 353,\n\t\"./sk\": 354,\n\t\"./sk.js\": 354,\n\t\"./sl\": 355,\n\t\"./sl.js\": 355,\n\t\"./sq\": 356,\n\t\"./sq.js\": 356,\n\t\"./sr\": 357,\n\t\"./sr-cyrl\": 358,\n\t\"./sr-cyrl.js\": 358,\n\t\"./sr.js\": 357,\n\t\"./ss\": 359,\n\t\"./ss.js\": 359,\n\t\"./sv\": 360,\n\t\"./sv.js\": 360,\n\t\"./sw\": 361,\n\t\"./sw.js\": 361,\n\t\"./ta\": 362,\n\t\"./ta.js\": 362,\n\t\"./te\": 363,\n\t\"./te.js\": 363,\n\t\"./tet\": 364,\n\t\"./tet.js\": 364,\n\t\"./tg\": 365,\n\t\"./tg.js\": 365,\n\t\"./th\": 366,\n\t\"./th.js\": 366,\n\t\"./tl-ph\": 367,\n\t\"./tl-ph.js\": 367,\n\t\"./tlh\": 368,\n\t\"./tlh.js\": 368,\n\t\"./tr\": 369,\n\t\"./tr.js\": 369,\n\t\"./tzl\": 370,\n\t\"./tzl.js\": 370,\n\t\"./tzm\": 371,\n\t\"./tzm-latn\": 372,\n\t\"./tzm-latn.js\": 372,\n\t\"./tzm.js\": 371,\n\t\"./ug-cn\": 373,\n\t\"./ug-cn.js\": 373,\n\t\"./uk\": 374,\n\t\"./uk.js\": 374,\n\t\"./ur\": 375,\n\t\"./ur.js\": 375,\n\t\"./uz\": 376,\n\t\"./uz-latn\": 377,\n\t\"./uz-latn.js\": 377,\n\t\"./uz.js\": 376,\n\t\"./vi\": 378,\n\t\"./vi.js\": 378,\n\t\"./x-pseudo\": 379,\n\t\"./x-pseudo.js\": 379,\n\t\"./yo\": 380,\n\t\"./yo.js\": 380,\n\t\"./zh-cn\": 381,\n\t\"./zh-cn.js\": 381,\n\t\"./zh-hk\": 382,\n\t\"./zh-hk.js\": 382,\n\t\"./zh-tw\": 383,\n\t\"./zh-tw.js\": 383\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 = 598;","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport axios from '@nextcloud/axios'\nimport { endpointUrl } from '../helpers'\nimport { ERROR_TYPE } from './SyncService'\nimport { sendableSteps } from 'prosemirror-collab'\n\n/**\n * Minimum inverval to refetch the document changes\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 * @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 * @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 * @type {number} time in ms\n */\nconst FETCH_INTERVAL_INVISIBLE = 60000\n\nconst MIN_PUSH_RETRY = 500\nconst MAX_PUSH_RETRY = 10000\n\n/* Timeout after that a PUSH_FAILURE error is emitted */\nconst WARNING_PUSH_RETRY = 5000\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\tconstructor(authority) {\n\t\t/** @type SyncService */\n\t\tthis._authority = authority\n\t\tthis.fetchInterval = FETCH_INTERVAL\n\t\tthis.retryTime = MIN_PUSH_RETRY\n\t\tthis.lock = false\n\t\tthis.fetchRetryCounter = 0\n\t}\n\n\tconnect() {\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_isPublic() {\n\t\treturn !!this._authority.options.shareToken\n\t}\n\n\tforceSave() {\n\t\tthis._forcedSave = true\n\t\tthis.fetchSteps()\n\t}\n\n\tsave() {\n\t\tthis._manualSave = true\n\t\tthis.fetchSteps()\n\t}\n\n\tfetchSteps() {\n\t\tthis._fetchSteps()\n\t}\n\n\t/**\n\t * This method is only called though the timer\n\t */\n\t_fetchSteps() {\n\t\tif (this.lock || !this.fetcher) {\n\t\t\treturn\n\t\t}\n\t\tthis.lock = true\n\t\tlet autosaveContent\n\t\tif (this._forcedSave || this._manualSave\n\t\t\t|| (!sendableSteps(this._authority.state)\n\t\t\t&& (this._authority._getVersion() !== this._authority.document.lastSavedVersion))\n\t\t) {\n\t\t\tautosaveContent = this._authority._getContent()\n\t\t}\n\t\taxios.post(endpointUrl('session/sync', this._isPublic()), {\n\t\t\tdocumentId: this._authority.document.id,\n\t\t\tsessionId: this._authority.session.id,\n\t\t\tsessionToken: this._authority.session.token,\n\t\t\tversion: this._authority._getVersion(),\n\t\t\tautosaveContent,\n\t\t\tforce: !!this._forcedSave,\n\t\t\tmanualSave: !!this._manualSave,\n\t\t\ttoken: this._authority.options.shareToken,\n\t\t\tfilePath: this._authority.options.filePath,\n\t\t}).then((response) => {\n\t\t\tthis.fetchRetryCounter = 0\n\n\t\t\tif (this._authority.document.lastSavedVersion < response.data.document.lastSavedVersion) {\n\t\t\t\tconsole.debug('Saved document', response.data.document)\n\t\t\t\tthis._authority.emit('save', { document: response.data.document, sessions: response.data.sessions })\n\t\t\t}\n\n\t\t\tthis._authority.emit('change', { document: response.data.document, sessions: response.data.sessions })\n\t\t\tthis._authority.document = response.data.document\n\t\t\tthis._authority.sessions = response.data.sessions\n\n\t\t\tif (response.data.steps.length === 0) {\n\t\t\t\tif (!this.initialLoadingFinished) {\n\t\t\t\t\tthis.initialLoadingFinished = true\n\t\t\t\t}\n\t\t\t\tif (this._authority.checkIdle()) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.lock = false\n\t\t\t\tif (response.data.sessions.filter((session) => session.lastContact > Date.now() / 1000 - COLLABORATOR_DISCONNECT_TIME).length < 2) {\n\t\t\t\t\tthis.maximumRefetchTimer()\n\t\t\t\t} else {\n\t\t\t\t\tthis.increaseRefetchTimer()\n\t\t\t\t}\n\t\t\t\tthis._authority.emit('stateChange', { dirty: false })\n\t\t\t\tthis._authority.emit('stateChange', { initialLoading: true })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis._authority._receiveSteps(response.data)\n\t\t\tthis.lock = false\n\t\t\tthis._forcedSave = false\n\t\t\tif (this.initialLoadingFinished) {\n\t\t\t\tthis.resetRefetchTimer()\n\t\t\t}\n\t\t}).catch((e) => {\n\t\t\tthis.lock = false\n\t\t\tif (!e.response || e.code === 'ECONNABORTED') {\n\t\t\t\tif (this.fetchRetryCounter++ >= MAX_RETRY_FETCH_COUNT) {\n\t\t\t\t\tconsole.error('[PollingBackend:fetchSteps] Network error when fetching steps, emitting CONNECTION_FAILED')\n\t\t\t\t\tthis._authority.emit('error', ERROR_TYPE.CONNECTION_FAILED, { retry: false })\n\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(`[PollingBackend:fetchSteps] Network error when fetching steps, retry ${this.fetchRetryCounter}`)\n\t\t\t\t}\n\t\t\t} else if (e.response.status === 409 && e.response.data.document.currentVersion === this._authority.document.currentVersion) {\n\t\t\t\t// Only emit conflict event if we have synced until the latest version\n\t\t\t\tconsole.error('Conflict during file save, please resolve')\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.SAVE_COLLISSION, {\n\t\t\t\t\toutsideChange: e.response.data.outsideChange,\n\t\t\t\t})\n\t\t\t} else if (e.response.status === 403) {\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.SOURCE_NOT_FOUND, {})\n\t\t\t\tthis.disconnect()\n\t\t\t} else if (e.response.status === 404) {\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.SOURCE_NOT_FOUND, {})\n\t\t\t\tthis.disconnect()\n\t\t\t} else if (e.response.status === 503) {\n\t\t\t\tthis.increaseRefetchTimer()\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.CONNECTION_FAILED, { retry: false })\n\t\t\t\tconsole.error('Failed to fetch steps due to unavailable service', e)\n\t\t\t} else {\n\t\t\t\tthis.disconnect()\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.CONNECTION_FAILED, { retry: false })\n\t\t\t\tconsole.error('Failed to fetch steps due to other reason', e)\n\t\t\t}\n\t\t})\n\t\tthis._manualSave = false\n\t\tthis._forcedSave = false\n\t}\n\n\tsendSteps(_sendable) {\n\t\tthis._authority.emit('stateChange', { dirty: true })\n\t\tif (this.lock) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._authority.sendSteps()\n\t\t\t}, 100)\n\t\t\treturn\n\t\t}\n\t\tthis.lock = true\n\t\tconst sendable = (typeof _sendable === 'function') ? _sendable() : _sendable\n\t\tconst steps = sendable.steps\n\t\taxios.post(endpointUrl('session/push', !!this._authority.options.shareToken), {\n\t\t\tdocumentId: this._authority.document.id,\n\t\t\tsessionId: this._authority.session.id,\n\t\t\tsessionToken: this._authority.session.token,\n\t\t\tsteps: steps.map(s => s.toJSON ? s.toJSON() : s) || [],\n\t\t\tversion: sendable.version,\n\t\t\ttoken: this._authority.options.shareToken,\n\t\t\tfilePath: this._authority.options.filePath,\n\t\t}).then((response) => {\n\t\t\tthis.carefulRetryReset()\n\t\t\tthis.lock = false\n\t\t\tthis.fetchSteps()\n\t\t}).catch((e) => {\n\t\t\tconsole.error('failed to apply steps due to collission, retrying')\n\t\t\tthis.lock = false\n\t\t\tif (!e.response || e.code === 'ECONNABORTED') {\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.CONNECTION_FAILED, {})\n\t\t\t\treturn\n\t\t\t} else if (e.response.status === 403 && e.response.data.document.currentVersion === this._authority.document.currentVersion) {\n\t\t\t\t// Only emit conflict event if we have synced until the latest version\n\t\t\t\tthis._authority.emit('error', ERROR_TYPE.PUSH_FAILURE, {})\n\t\t\t\tOC.Notification.showTemporary('Changes could not be sent yet')\n\t\t\t}\n\n\t\t\tthis.fetchSteps()\n\t\t\tthis.carefulRetry()\n\t\t})\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\tif (this.fetcher === 0) {\n\t\t\treturn\n\t\t}\n\t\tthis.fetchInterval = FETCH_INTERVAL\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), this.fetchInterval)\n\n\t}\n\n\tincreaseRefetchTimer() {\n\t\tif (this.fetcher === 0) {\n\t\t\treturn\n\t\t}\n\t\tthis.fetchInterval = Math.min(this.fetchInterval * 2, FETCH_INTERVAL_MAX)\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), this.fetchInterval)\n\t}\n\n\tmaximumRefetchTimer() {\n\t\tif (this.fetcher === 0) {\n\t\t\treturn\n\t\t}\n\t\tthis.fetchInterval = FETCH_INTERVAL_SINGLE_EDITOR\n\t\tclearInterval(this.fetcher)\n\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), this.fetchInterval)\n\t}\n\n\tvisibilitychange() {\n\t\tif (this.fetcher === 0) {\n\t\t\treturn\n\t\t}\n\t\tif (document.visibilityState === 'hidden') {\n\t\t\tthis.fetchInterval = FETCH_INTERVAL_INVISIBLE\n\t\t\tclearInterval(this.fetcher)\n\t\t\tthis.fetcher = setInterval(this._fetchSteps.bind(this), this.fetchInterval)\n\t\t} else {\n\t\t\tthis.resetRefetchTimer()\n\t\t}\n\t}\n\n\tcarefulRetry() {\n\t\tconst newRetry = this.retryTime ? Math.min(this.retryTime * 2, MAX_PUSH_RETRY) : MIN_PUSH_RETRY\n\t\tif (newRetry > WARNING_PUSH_RETRY && this.retryTime < WARNING_PUSH_RETRY) {\n\t\t\tOC.Notification.showTemporary('Changes could not be sent yet')\n\t\t\tthis._authority.emit('error', ERROR_TYPE.PUSH_FAILURE, {})\n\t\t}\n\t\tthis.retryTime = newRetry\n\t}\n\n\tcarefulRetryReset() {\n\t\tthis.retryTime = MIN_PUSH_RETRY\n\t}\n\n}\n\nexport default PollingBackend\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst extensionHighlight = {\n\tpy: 'python',\n\tgyp: 'python',\n\twsgi: 'python',\n\thtm: 'html',\n\txhtml: 'html',\n\terl: 'erlang',\n\tjsp: 'java',\n\tpl: 'perl',\n\trss: 'xml',\n\tatom: 'xml',\n\txsl: 'xml',\n\tplist: 'xml',\n\trb: 'ruby',\n\tbuilder: 'ruby',\n\tgemspec: 'ruby',\n\tpodspec: 'ruby',\n\tthor: 'ruby',\n\tdiff: 'patch',\n\ths: 'haskell',\n\ticl: 'haskell',\n\tphp3: 'php',\n\tphp4: 'php',\n\tphp5: 'php',\n\tphp6: 'php',\n\tsh: 'bash',\n\tzsh: 'bash',\n\tst: 'smalltalk',\n\tas: 'actionscript',\n\tapacheconf: 'apache',\n\tosacript: 'applescript',\n\tb: 'brainfuck',\n\tbf: 'brainfuck',\n\tclj: 'clojure',\n\t'cmake.in': 'cmake',\n\tcoffee: 'coffeescript',\n\tcson: 'coffescript',\n\ticed: 'coffescript',\n\tc: 'cpp',\n\th: 'cpp',\n\t'c++': 'cpp',\n\t'h++': 'cpp',\n\thh: 'cpp',\n\tjinja: 'django',\n\tbat: 'dos',\n\tcmd: 'dos',\n\tfs: 'fsharp',\n\thbs: 'handlebars',\n\t'html.hbs': 'handlebars',\n\t'html.handlebars': 'handlebars',\n\tsublime_metrics: 'json',\n\tsublime_session: 'json',\n\t'sublime-keymap': 'json',\n\t'sublime-mousemap': 'json',\n\t'sublime-project': 'json',\n\t'sublime-settings': 'json',\n\t'sublime-workspace': 'json',\n\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\tvb: 'vbnet',\n\tvbs: 'vbscript',\n}\n\nexport default extensionHighlight\nexport {\n\textensionHighlight,\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Bold, Italic as TipTapItalic, Strike as TipTapStrike, Link as TipTapLink } from 'tiptap-extensions'\nimport { Plugin } from 'tiptap'\nimport { getMarkAttrs } from 'tiptap-utils'\nimport { domHref, parseHref } from './../helpers/links'\nimport { markdownit } from './../EditorFactory'\n\n/**\n * This file maps prosemirror mark names to tiptap classes,\n * so we can reuse the prosemirror-markdown default parser for now\n */\n\nclass Strong extends Bold {\n\n\tget name() {\n\t\treturn 'strong'\n\t}\n\n}\n\nclass Italic extends TipTapItalic {\n\n\tget name() {\n\t\treturn 'em'\n\t}\n\n}\n\nclass Strike extends TipTapStrike {\n\n\tget schema() {\n\t\treturn {\n\t\t\tparseDOM: [\n\t\t\t\t{\n\t\t\t\t\ttag: 's',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'del',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'strike',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstyle: 'text-decoration',\n\t\t\t\t\tgetAttrs: value => value === 'line-through',\n\t\t\t\t},\n\t\t\t],\n\t\t\ttoDOM: () => ['s', 0],\n\t\t\ttoMarkdown: {\n\t\t\t\topen: '~~',\n\t\t\t\tclose: '~~',\n\t\t\t\tmixable: true,\n\t\t\t\texpelEnclosingWhitespace: true,\n\t\t\t},\n\t\t}\n\t}\n\n}\n\nclass Link extends TipTapLink {\n\n\tget schema() {\n\t\treturn {\n\t\t\tattrs: {\n\t\t\t\thref: {\n\t\t\t\t\tdefault: null,\n\t\t\t\t},\n\t\t\t},\n\t\t\tinclusive: false,\n\t\t\tparseDOM: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'a[href]',\n\t\t\t\t\tgetAttrs: dom => ({\n\t\t\t\t\t\thref: parseHref(dom),\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t\ttoDOM: node => ['a', {\n\t\t\t\t...node.attrs,\n\t\t\t\thref: domHref(node),\n\t\t\t\ttitle: node.attrs.href,\n\t\t\t\trel: 'noopener noreferrer nofollow',\n\t\t\t}, 0],\n\t\t}\n\t}\n\n\tget plugins() {\n\t\tif (!this.options.openOnClick) {\n\t\t\treturn []\n\t\t}\n\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 { schema } = view.state\n\t\t\t\t\t\tconst attrs = getMarkAttrs(view.state, schema.marks.link)\n\n\t\t\t\t\t\tconst isLink = event.target instanceof HTMLAnchorElement || event.target.parentElement instanceof HTMLAnchorElement\n\t\t\t\t\t\tif (attrs.href && isLink) {\n\t\t\t\t\t\t\tconst linkElement = event.target.parentElement instanceof HTMLAnchorElement ? event.target.parentElement : event.target\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\tconst htmlHref = linkElement.href\n\t\t\t\t\t\t\tif (event.button === 0 && !event.ctrlKey && htmlHref.startsWith(window.location.origin)) {\n\t\t\t\t\t\t\t\tconst query = OC.parseQueryString(htmlHref)\n\t\t\t\t\t\t\t\tconst fragment = OC.parseQueryString(htmlHref.split('#').pop())\n\t\t\t\t\t\t\t\tif (query.dir && fragment.relPath) {\n\t\t\t\t\t\t\t\t\tconst filename = fragment.relPath.split('/').pop()\n\t\t\t\t\t\t\t\t\tconst path = `${query.dir}/${filename}`\n\t\t\t\t\t\t\t\t\tdocument.title = `${filename} - ${OC.theme.title}`\n\t\t\t\t\t\t\t\t\tif (window.location.pathname.match(/apps\\/files\\/$/)) {\n\t\t\t\t\t\t\t\t\t\t// The files app still lacks a popState handler\n\t\t\t\t\t\t\t\t\t\t// to allow for using the back button\n\t\t\t\t\t\t\t\t\t\t// OC.Util.History.pushState('', htmlHref)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tOCA.Viewer.open({ path })\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!markdownit.validateLink(htmlHref)) {\n\t\t\t\t\t\t\t\tconsole.error('Invalid link', htmlHref)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\twindow.open(htmlHref)\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\n/** Strike is currently unsupported by prosemirror-markdown */\n\nexport {\n\tStrong,\n\tItalic,\n\tStrike,\n\tLink,\n}\n","/*\n * @copyright Copyright (c) 2020 Azul <azul@riseup.net>\n *\n * @author Azul <azul@riseup.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\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) {\n\tconst ref = node.attrs.href\n\tif (!ref) {\n\t\treturn ref\n\t}\n\tif (ref.match(/^[a-zA-Z]*:/)) {\n\t\treturn ref\n\t}\n\tconst match = ref.match(/^([^?]*)\\?fileId=(\\d+)/)\n\tif (match) {\n\t\tconst [, relPath, id] = match\n\t\tconst currentDir = basedir(OCA.Viewer.state.file)\n\t\tconst dir = absolutePath(currentDir, basedir(relPath))\n\t\treturn generateUrl(`/apps/files/?dir=${dir}&openfile=${id}#relPath=${relPath}`)\n\t}\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\nexport {\n\tdomHref,\n\tparseHref,\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Image from './Image'\nimport PlainTextDocument from './PlainTextDocument'\nimport ListItem from './ListItem'\nimport BulletList from './BulletList'\n\nexport {\n\tImage,\n\tPlainTextDocument,\n\tListItem,\n\tBulletList,\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Image as TiptapImage } from 'tiptap-extensions'\nimport ImageView from './ImageView'\n\nexport default class Image extends TiptapImage {\n\n\tget view() {\n\t\treturn ImageView\n\t}\n\n\tget schema() {\n\t\treturn {\n\t\t\t...super.schema,\n\t\t\tselectable: false,\n\t\t}\n\t}\n\n}\n","import { render, staticRenderFns } from \"./ImageView.vue?vue&type=template&id=efec1cb6&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=efec1cb6&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  \"efec1cb6\",\n  null\n  \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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-efec1cb6]{margin:0;padding:0}.image__caption[data-v-efec1cb6]{text-align:center;color:var(--color-text-lighter)}.image__caption input[type='text'][data-v-efec1cb6]{width:100%;border:none;text-align:center}.icon-image[data-v-efec1cb6]{margin-top:10px;height:32px;padding:20px;background-size:contain}.image__loading[data-v-efec1cb6]{height:100px}.image__view[data-v-efec1cb6]{text-align:center}.image__view .image__main[data-v-efec1cb6]{max-height:40vh}.image__placeholder a[data-v-efec1cb6]{display:flex}.image__placeholder .image__main[data-v-efec1cb6]{background-color:var(--color-background-dark);text-align:center;padding:5px;border-radius:var(--border-radius)}.image__placeholder .image__main .icon-image[data-v-efec1cb6]{margin:0}.image__placeholder .image__main p[data-v-efec1cb6]{padding:10px}.fade-enter-active[data-v-efec1cb6]{transition:opacity .3s ease-in-out}.fade-enter-to[data-v-efec1cb6]{opacity:1}.fade-enter[data-v-efec1cb6]{opacity:0}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/nodes/ImageView.vue\"],\"names\":[],\"mappings\":\"AAoMA,wBACC,QAAS,CACT,SAAU,CACV,iCAGA,iBAAkB,CAClB,+BAAgC,CAFjC,oDAIE,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BAID,eAAgB,CAChB,WAAY,CACZ,YAAa,CACb,uBAAwB,CACxB,iCAGA,YAAa,CACb,8BAGA,iBAAkB,CADnB,2CAIE,eAAgB,CAChB,uCAKA,YAAa,CAFf,kDAKE,6CAA8C,CAC9C,iBAAkB,CAClB,WAAY,CACZ,kCAAmC,CARrC,8DAWG,QAAS,CAXZ,oDAeG,YAAa,CACb,oCAKF,kCAAmC,CACnC,gCAGA,SAAU,CACV,6BAGA,SAAU\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.image {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n}\\n\\n.image__caption {\\n\\ttext-align: center;\\n\\tcolor: var(--color-text-lighter);\\n\\tinput[type='text'] {\\n\\t\\twidth: 100%;\\n\\t\\tborder: none;\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\\n.icon-image {\\n\\tmargin-top: 10px;\\n\\theight: 32px;\\n\\tpadding: 20px;\\n\\tbackground-size: contain;\\n}\\n\\n.image__loading {\\n\\theight: 100px;\\n}\\n\\n.image__view {\\n\\ttext-align: center;\\n\\n\\t.image__main {\\n\\t\\tmax-height: 40vh;\\n\\t}\\n}\\n\\n.image__placeholder {\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\t.image__main {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: 5px;\\n\\t\\tborder-radius: var(--border-radius);\\n\\n\\t\\t.icon-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\n\\t\\tp {\\n\\t\\t\\tpadding: 10px;\\n\\t\\t}\\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","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Node } from 'tiptap'\nimport { insertText } from 'tiptap-commands'\n\nexport default class PlainTextDocument extends Node {\n\n\tget name() {\n\t\treturn 'doc'\n\t}\n\n\tget schema() {\n\t\treturn {\n\t\t\tcontent: 'block',\n\t\t}\n\t}\n\n\tkeys() {\n\t\treturn {\n\t\t\tTab: (state) => {\n\t\t\t\tinsertText('\\t')(state, this.editor.view.dispatch, this.editor.view)\n\t\t\t\treturn true\n\t\t\t},\n\t\t}\n\t}\n\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { ListItem as TiptapListItem } from 'tiptap-extensions'\nimport { Plugin } from 'tiptap'\nimport { toggleList, wrappingInputRule } from 'tiptap-commands'\nimport { findParentNode, findParentNodeClosestToPos } from 'prosemirror-utils'\n\nconst TYPES = {\n\tBULLET: 0,\n\tCHECKBOX: 1,\n}\n\nconst getParentList = (schema, selection) => {\n\treturn findParentNode(function(node) {\n\t\treturn node.type === schema.nodes.list_item\n\t})(selection)\n}\n\nexport default class ListItem extends TiptapListItem {\n\n\tget defaultOptions() {\n\t\treturn {\n\t\t\tnested: true,\n\t\t}\n\t}\n\n\tget schema() {\n\t\treturn {\n\t\t\tattrs: {\n\t\t\t\tdone: {\n\t\t\t\t\tdefault: false,\n\t\t\t\t},\n\t\t\t\ttype: {\n\t\t\t\t\tdefault: TYPES.BULLET,\n\t\t\t\t},\n\t\t\t},\n\t\t\tdraggable: false,\n\t\t\tcontent: 'paragraph block*',\n\t\t\ttoDOM: node => {\n\t\t\t\tif (node.attrs.type === TYPES.BULLET) {\n\t\t\t\t\treturn ['li', 0]\n\t\t\t\t}\n\t\t\t\tconst listAttributes = { class: 'checkbox-item' }\n\t\t\t\tconst checkboxAttributes = { type: 'checkbox', class: '', contenteditable: false }\n\t\t\t\tif (node.attrs.done) {\n\t\t\t\t\tcheckboxAttributes.checked = true\n\t\t\t\t\tlistAttributes.class += ' checked'\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t'li',\n\t\t\t\t\tlistAttributes,\n\t\t\t\t\t[\n\t\t\t\t\t\t'input',\n\t\t\t\t\t\tcheckboxAttributes,\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t'label',\n\t\t\t\t\t\t0,\n\t\t\t\t\t],\n\t\t\t\t]\n\t\t\t},\n\t\t\tparseDOM: [\n\t\t\t\t{\n\t\t\t\t\tpriority: 100,\n\t\t\t\t\ttag: 'li',\n\t\t\t\t\tgetAttrs: el => {\n\t\t\t\t\t\tconst checkbox = el.querySelector('input[type=checkbox]')\n\t\t\t\t\t\treturn { done: checkbox && checkbox.checked, type: checkbox ? TYPES.CHECKBOX : TYPES.BULLET }\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ttoMarkdown: (state, node) => {\n\t\t\t\tif (node.attrs.type === TYPES.CHECKBOX) {\n\t\t\t\t\tstate.write(`[${node.attrs.done ? 'x' : ' '}] `)\n\t\t\t\t}\n\t\t\t\tstate.renderContent(node)\n\t\t\t},\n\t\t}\n\t}\n\n\tcommands({ type, schema }) {\n\t\treturn {\n\t\t\tbullet_list_item: () => {\n\t\t\t\treturn (state, dispatch, view) => {\n\t\t\t\t\treturn toggleList(schema.nodes.bullet_list, type)(state, dispatch, view)\n\t\t\t\t}\n\t\t\t},\n\t\t\ttodo_item: () => {\n\t\t\t\treturn (state, dispatch, view) => {\n\t\t\t\t\tconst schema = state.schema\n\t\t\t\t\tconst selection = state.selection\n\t\t\t\t\tconst $from = selection.$from\n\t\t\t\t\tconst $to = selection.$to\n\t\t\t\t\tconst range = $from.blockRange($to)\n\n\t\t\t\t\tlet tr = state.tr\n\t\t\t\t\tlet parentList = getParentList(schema, selection)\n\n\t\t\t\t\tif (typeof parentList === 'undefined') {\n\t\t\t\t\t\ttoggleList(schema.nodes.bullet_list, type)(state, (_transaction) => {\n\t\t\t\t\t\t\ttr = _transaction\n\t\t\t\t\t\t}, view)\n\t\t\t\t\t\tparentList = getParentList(schema, tr.selection)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!range || typeof parentList === 'undefined') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\n\t\t\t\t\ttr.setNodeMarkup(parentList.pos, schema.nodes.list_item, { type: parentList.node.attrs.type === TYPES.CHECKBOX ? TYPES.BULLET : TYPES.CHECKBOX })\n\t\t\t\t\ttr.scrollIntoView()\n\n\t\t\t\t\tif (dispatch) {\n\t\t\t\t\t\tdispatch(tr)\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t}\n\n\tinputRules({ type }) {\n\t\treturn [\n\t\t\twrappingInputRule(/^\\s*([-+*])\\s(\\[ ?\\])\\s$/, type, (match) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: TYPES.CHECKBOX,\n\t\t\t\t}\n\t\t\t}),\n\t\t\twrappingInputRule(/^\\s*([-+*])\\s(\\[(x|X)\\])\\s$/, type, (match) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: TYPES.CHECKBOX,\n\t\t\t\t\tdone: true,\n\t\t\t\t}\n\t\t\t}),\n\t\t\twrappingInputRule(/^\\s*([-+*])\\s[^\\s[]$/, type),\n\t\t]\n\t}\n\n\tget plugins() {\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.list_item\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 (typeof parentList === 'undefined' || parentList.node.attrs.type !== TYPES.CHECKBOX || !isListClicked) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst tr = state.tr\n\t\t\t\t\t\ttr.setNodeMarkup(parentList.pos, schema.nodes.list_item, { done: !parentList.node.attrs.done, type: TYPES.CHECKBOX })\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","/*\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { BulletList as TiptapBulletList } from 'tiptap-extensions'\n\nexport default class BulletList extends TiptapBulletList {\n\n\t/* The bullet list input rules are handled in the ListItem node so we can make sure that \"- [ ]\" can still trigger todo list items */\n\tinputRules() {\n\t\treturn []\n\t}\n\n}\n","var map = {\n\t\"./1c\": [\n\t\t407,\n\t\t1\n\t],\n\t\"./1c.js\": [\n\t\t407,\n\t\t1\n\t],\n\t\"./abnf\": [\n\t\t408,\n\t\t2\n\t],\n\t\"./abnf.js\": [\n\t\t408,\n\t\t2\n\t],\n\t\"./accesslog\": [\n\t\t409,\n\t\t3\n\t],\n\t\"./accesslog.js\": [\n\t\t409,\n\t\t3\n\t],\n\t\"./actionscript\": [\n\t\t410,\n\t\t4\n\t],\n\t\"./actionscript.js\": [\n\t\t410,\n\t\t4\n\t],\n\t\"./ada\": [\n\t\t411,\n\t\t5\n\t],\n\t\"./ada.js\": [\n\t\t411,\n\t\t5\n\t],\n\t\"./angelscript\": [\n\t\t412,\n\t\t6\n\t],\n\t\"./angelscript.js\": [\n\t\t412,\n\t\t6\n\t],\n\t\"./apache\": [\n\t\t413,\n\t\t7\n\t],\n\t\"./apache.js\": [\n\t\t413,\n\t\t7\n\t],\n\t\"./applescript\": [\n\t\t414,\n\t\t8\n\t],\n\t\"./applescript.js\": [\n\t\t414,\n\t\t8\n\t],\n\t\"./arcade\": [\n\t\t415,\n\t\t9\n\t],\n\t\"./arcade.js\": [\n\t\t415,\n\t\t9\n\t],\n\t\"./arduino\": [\n\t\t416,\n\t\t10\n\t],\n\t\"./arduino.js\": [\n\t\t416,\n\t\t10\n\t],\n\t\"./armasm\": [\n\t\t417,\n\t\t11\n\t],\n\t\"./armasm.js\": [\n\t\t417,\n\t\t11\n\t],\n\t\"./asciidoc\": [\n\t\t418,\n\t\t12\n\t],\n\t\"./asciidoc.js\": [\n\t\t418,\n\t\t12\n\t],\n\t\"./aspectj\": [\n\t\t419,\n\t\t13\n\t],\n\t\"./aspectj.js\": [\n\t\t419,\n\t\t13\n\t],\n\t\"./autohotkey\": [\n\t\t420,\n\t\t14\n\t],\n\t\"./autohotkey.js\": [\n\t\t420,\n\t\t14\n\t],\n\t\"./autoit\": [\n\t\t421,\n\t\t15\n\t],\n\t\"./autoit.js\": [\n\t\t421,\n\t\t15\n\t],\n\t\"./avrasm\": [\n\t\t422,\n\t\t16\n\t],\n\t\"./avrasm.js\": [\n\t\t422,\n\t\t16\n\t],\n\t\"./awk\": [\n\t\t423,\n\t\t17\n\t],\n\t\"./awk.js\": [\n\t\t423,\n\t\t17\n\t],\n\t\"./axapta\": [\n\t\t424,\n\t\t18\n\t],\n\t\"./axapta.js\": [\n\t\t424,\n\t\t18\n\t],\n\t\"./bash\": [\n\t\t425,\n\t\t19\n\t],\n\t\"./bash.js\": [\n\t\t425,\n\t\t19\n\t],\n\t\"./basic\": [\n\t\t426,\n\t\t20\n\t],\n\t\"./basic.js\": [\n\t\t426,\n\t\t20\n\t],\n\t\"./bnf\": [\n\t\t427,\n\t\t21\n\t],\n\t\"./bnf.js\": [\n\t\t427,\n\t\t21\n\t],\n\t\"./brainfuck\": [\n\t\t428,\n\t\t22\n\t],\n\t\"./brainfuck.js\": [\n\t\t428,\n\t\t22\n\t],\n\t\"./c\": [\n\t\t430,\n\t\t23\n\t],\n\t\"./c-like\": [\n\t\t429,\n\t\t24\n\t],\n\t\"./c-like.js\": [\n\t\t429,\n\t\t24\n\t],\n\t\"./c.js\": [\n\t\t430,\n\t\t23\n\t],\n\t\"./cal\": [\n\t\t431,\n\t\t25\n\t],\n\t\"./cal.js\": [\n\t\t431,\n\t\t25\n\t],\n\t\"./capnproto\": [\n\t\t432,\n\t\t26\n\t],\n\t\"./capnproto.js\": [\n\t\t432,\n\t\t26\n\t],\n\t\"./ceylon\": [\n\t\t433,\n\t\t27\n\t],\n\t\"./ceylon.js\": [\n\t\t433,\n\t\t27\n\t],\n\t\"./clean\": [\n\t\t434,\n\t\t28\n\t],\n\t\"./clean.js\": [\n\t\t434,\n\t\t28\n\t],\n\t\"./clojure\": [\n\t\t436,\n\t\t29\n\t],\n\t\"./clojure-repl\": [\n\t\t435,\n\t\t30\n\t],\n\t\"./clojure-repl.js\": [\n\t\t435,\n\t\t30\n\t],\n\t\"./clojure.js\": [\n\t\t436,\n\t\t29\n\t],\n\t\"./cmake\": [\n\t\t437,\n\t\t31\n\t],\n\t\"./cmake.js\": [\n\t\t437,\n\t\t31\n\t],\n\t\"./coffeescript\": [\n\t\t438,\n\t\t32\n\t],\n\t\"./coffeescript.js\": [\n\t\t438,\n\t\t32\n\t],\n\t\"./coq\": [\n\t\t439,\n\t\t33\n\t],\n\t\"./coq.js\": [\n\t\t439,\n\t\t33\n\t],\n\t\"./cos\": [\n\t\t440,\n\t\t34\n\t],\n\t\"./cos.js\": [\n\t\t440,\n\t\t34\n\t],\n\t\"./cpp\": [\n\t\t441,\n\t\t35\n\t],\n\t\"./cpp.js\": [\n\t\t441,\n\t\t35\n\t],\n\t\"./crmsh\": [\n\t\t442,\n\t\t36\n\t],\n\t\"./crmsh.js\": [\n\t\t442,\n\t\t36\n\t],\n\t\"./crystal\": [\n\t\t443,\n\t\t37\n\t],\n\t\"./crystal.js\": [\n\t\t443,\n\t\t37\n\t],\n\t\"./csharp\": [\n\t\t444,\n\t\t38\n\t],\n\t\"./csharp.js\": [\n\t\t444,\n\t\t38\n\t],\n\t\"./csp\": [\n\t\t445,\n\t\t39\n\t],\n\t\"./csp.js\": [\n\t\t445,\n\t\t39\n\t],\n\t\"./css\": [\n\t\t446,\n\t\t40\n\t],\n\t\"./css.js\": [\n\t\t446,\n\t\t40\n\t],\n\t\"./d\": [\n\t\t447,\n\t\t41\n\t],\n\t\"./d.js\": [\n\t\t447,\n\t\t41\n\t],\n\t\"./dart\": [\n\t\t448,\n\t\t42\n\t],\n\t\"./dart.js\": [\n\t\t448,\n\t\t42\n\t],\n\t\"./delphi\": [\n\t\t449,\n\t\t43\n\t],\n\t\"./delphi.js\": [\n\t\t449,\n\t\t43\n\t],\n\t\"./diff\": [\n\t\t450,\n\t\t44\n\t],\n\t\"./diff.js\": [\n\t\t450,\n\t\t44\n\t],\n\t\"./django\": [\n\t\t451,\n\t\t45\n\t],\n\t\"./django.js\": [\n\t\t451,\n\t\t45\n\t],\n\t\"./dns\": [\n\t\t452,\n\t\t46\n\t],\n\t\"./dns.js\": [\n\t\t452,\n\t\t46\n\t],\n\t\"./dockerfile\": [\n\t\t453,\n\t\t47\n\t],\n\t\"./dockerfile.js\": [\n\t\t453,\n\t\t47\n\t],\n\t\"./dos\": [\n\t\t454,\n\t\t48\n\t],\n\t\"./dos.js\": [\n\t\t454,\n\t\t48\n\t],\n\t\"./dsconfig\": [\n\t\t455,\n\t\t49\n\t],\n\t\"./dsconfig.js\": [\n\t\t455,\n\t\t49\n\t],\n\t\"./dts\": [\n\t\t456,\n\t\t50\n\t],\n\t\"./dts.js\": [\n\t\t456,\n\t\t50\n\t],\n\t\"./dust\": [\n\t\t457,\n\t\t51\n\t],\n\t\"./dust.js\": [\n\t\t457,\n\t\t51\n\t],\n\t\"./ebnf\": [\n\t\t458,\n\t\t52\n\t],\n\t\"./ebnf.js\": [\n\t\t458,\n\t\t52\n\t],\n\t\"./elixir\": [\n\t\t459,\n\t\t53\n\t],\n\t\"./elixir.js\": [\n\t\t459,\n\t\t53\n\t],\n\t\"./elm\": [\n\t\t460,\n\t\t54\n\t],\n\t\"./elm.js\": [\n\t\t460,\n\t\t54\n\t],\n\t\"./erb\": [\n\t\t461,\n\t\t55\n\t],\n\t\"./erb.js\": [\n\t\t461,\n\t\t55\n\t],\n\t\"./erlang\": [\n\t\t463,\n\t\t56\n\t],\n\t\"./erlang-repl\": [\n\t\t462,\n\t\t57\n\t],\n\t\"./erlang-repl.js\": [\n\t\t462,\n\t\t57\n\t],\n\t\"./erlang.js\": [\n\t\t463,\n\t\t56\n\t],\n\t\"./excel\": [\n\t\t464,\n\t\t58\n\t],\n\t\"./excel.js\": [\n\t\t464,\n\t\t58\n\t],\n\t\"./fix\": [\n\t\t465,\n\t\t59\n\t],\n\t\"./fix.js\": [\n\t\t465,\n\t\t59\n\t],\n\t\"./flix\": [\n\t\t466,\n\t\t60\n\t],\n\t\"./flix.js\": [\n\t\t466,\n\t\t60\n\t],\n\t\"./fortran\": [\n\t\t467,\n\t\t61\n\t],\n\t\"./fortran.js\": [\n\t\t467,\n\t\t61\n\t],\n\t\"./fsharp\": [\n\t\t468,\n\t\t62\n\t],\n\t\"./fsharp.js\": [\n\t\t468,\n\t\t62\n\t],\n\t\"./gams\": [\n\t\t469,\n\t\t63\n\t],\n\t\"./gams.js\": [\n\t\t469,\n\t\t63\n\t],\n\t\"./gauss\": [\n\t\t470,\n\t\t64\n\t],\n\t\"./gauss.js\": [\n\t\t470,\n\t\t64\n\t],\n\t\"./gcode\": [\n\t\t471,\n\t\t65\n\t],\n\t\"./gcode.js\": [\n\t\t471,\n\t\t65\n\t],\n\t\"./gherkin\": [\n\t\t472,\n\t\t66\n\t],\n\t\"./gherkin.js\": [\n\t\t472,\n\t\t66\n\t],\n\t\"./glsl\": [\n\t\t473,\n\t\t67\n\t],\n\t\"./glsl.js\": [\n\t\t473,\n\t\t67\n\t],\n\t\"./gml\": [\n\t\t474,\n\t\t68\n\t],\n\t\"./gml.js\": [\n\t\t474,\n\t\t68\n\t],\n\t\"./go\": [\n\t\t475,\n\t\t69\n\t],\n\t\"./go.js\": [\n\t\t475,\n\t\t69\n\t],\n\t\"./golo\": [\n\t\t476,\n\t\t70\n\t],\n\t\"./golo.js\": [\n\t\t476,\n\t\t70\n\t],\n\t\"./gradle\": [\n\t\t477,\n\t\t71\n\t],\n\t\"./gradle.js\": [\n\t\t477,\n\t\t71\n\t],\n\t\"./groovy\": [\n\t\t478,\n\t\t72\n\t],\n\t\"./groovy.js\": [\n\t\t478,\n\t\t72\n\t],\n\t\"./haml\": [\n\t\t479,\n\t\t73\n\t],\n\t\"./haml.js\": [\n\t\t479,\n\t\t73\n\t],\n\t\"./handlebars\": [\n\t\t480,\n\t\t74\n\t],\n\t\"./handlebars.js\": [\n\t\t480,\n\t\t74\n\t],\n\t\"./haskell\": [\n\t\t481,\n\t\t75\n\t],\n\t\"./haskell.js\": [\n\t\t481,\n\t\t75\n\t],\n\t\"./haxe\": [\n\t\t482,\n\t\t76\n\t],\n\t\"./haxe.js\": [\n\t\t482,\n\t\t76\n\t],\n\t\"./hsp\": [\n\t\t483,\n\t\t77\n\t],\n\t\"./hsp.js\": [\n\t\t483,\n\t\t77\n\t],\n\t\"./htmlbars\": [\n\t\t484,\n\t\t78\n\t],\n\t\"./htmlbars.js\": [\n\t\t484,\n\t\t78\n\t],\n\t\"./http\": [\n\t\t485,\n\t\t79\n\t],\n\t\"./http.js\": [\n\t\t485,\n\t\t79\n\t],\n\t\"./hy\": [\n\t\t486,\n\t\t80\n\t],\n\t\"./hy.js\": [\n\t\t486,\n\t\t80\n\t],\n\t\"./inform7\": [\n\t\t487,\n\t\t81\n\t],\n\t\"./inform7.js\": [\n\t\t487,\n\t\t81\n\t],\n\t\"./ini\": [\n\t\t488,\n\t\t82\n\t],\n\t\"./ini.js\": [\n\t\t488,\n\t\t82\n\t],\n\t\"./irpf90\": [\n\t\t489,\n\t\t83\n\t],\n\t\"./irpf90.js\": [\n\t\t489,\n\t\t83\n\t],\n\t\"./isbl\": [\n\t\t490,\n\t\t84\n\t],\n\t\"./isbl.js\": [\n\t\t490,\n\t\t84\n\t],\n\t\"./java\": [\n\t\t491,\n\t\t85\n\t],\n\t\"./java.js\": [\n\t\t491,\n\t\t85\n\t],\n\t\"./javascript\": [\n\t\t492,\n\t\t86\n\t],\n\t\"./javascript.js\": [\n\t\t492,\n\t\t86\n\t],\n\t\"./jboss-cli\": [\n\t\t493,\n\t\t87\n\t],\n\t\"./jboss-cli.js\": [\n\t\t493,\n\t\t87\n\t],\n\t\"./json\": [\n\t\t494,\n\t\t88\n\t],\n\t\"./json.js\": [\n\t\t494,\n\t\t88\n\t],\n\t\"./julia\": [\n\t\t496,\n\t\t89\n\t],\n\t\"./julia-repl\": [\n\t\t495,\n\t\t90\n\t],\n\t\"./julia-repl.js\": [\n\t\t495,\n\t\t90\n\t],\n\t\"./julia.js\": [\n\t\t496,\n\t\t89\n\t],\n\t\"./kotlin\": [\n\t\t497,\n\t\t91\n\t],\n\t\"./kotlin.js\": [\n\t\t497,\n\t\t91\n\t],\n\t\"./lasso\": [\n\t\t498,\n\t\t92\n\t],\n\t\"./lasso.js\": [\n\t\t498,\n\t\t92\n\t],\n\t\"./latex\": [\n\t\t499,\n\t\t93\n\t],\n\t\"./latex.js\": [\n\t\t499,\n\t\t93\n\t],\n\t\"./ldif\": [\n\t\t500,\n\t\t94\n\t],\n\t\"./ldif.js\": [\n\t\t500,\n\t\t94\n\t],\n\t\"./leaf\": [\n\t\t501,\n\t\t95\n\t],\n\t\"./leaf.js\": [\n\t\t501,\n\t\t95\n\t],\n\t\"./less\": [\n\t\t502,\n\t\t96\n\t],\n\t\"./less.js\": [\n\t\t502,\n\t\t96\n\t],\n\t\"./lisp\": [\n\t\t503,\n\t\t97\n\t],\n\t\"./lisp.js\": [\n\t\t503,\n\t\t97\n\t],\n\t\"./livecodeserver\": [\n\t\t504,\n\t\t98\n\t],\n\t\"./livecodeserver.js\": [\n\t\t504,\n\t\t98\n\t],\n\t\"./livescript\": [\n\t\t505,\n\t\t99\n\t],\n\t\"./livescript.js\": [\n\t\t505,\n\t\t99\n\t],\n\t\"./llvm\": [\n\t\t506,\n\t\t100\n\t],\n\t\"./llvm.js\": [\n\t\t506,\n\t\t100\n\t],\n\t\"./lsl\": [\n\t\t507,\n\t\t101\n\t],\n\t\"./lsl.js\": [\n\t\t507,\n\t\t101\n\t],\n\t\"./lua\": [\n\t\t508,\n\t\t102\n\t],\n\t\"./lua.js\": [\n\t\t508,\n\t\t102\n\t],\n\t\"./makefile\": [\n\t\t509,\n\t\t103\n\t],\n\t\"./makefile.js\": [\n\t\t509,\n\t\t103\n\t],\n\t\"./markdown\": [\n\t\t510,\n\t\t104\n\t],\n\t\"./markdown.js\": [\n\t\t510,\n\t\t104\n\t],\n\t\"./mathematica\": [\n\t\t511,\n\t\t105\n\t],\n\t\"./mathematica.js\": [\n\t\t511,\n\t\t105\n\t],\n\t\"./matlab\": [\n\t\t512,\n\t\t106\n\t],\n\t\"./matlab.js\": [\n\t\t512,\n\t\t106\n\t],\n\t\"./maxima\": [\n\t\t513,\n\t\t107\n\t],\n\t\"./maxima.js\": [\n\t\t513,\n\t\t107\n\t],\n\t\"./mel\": [\n\t\t514,\n\t\t108\n\t],\n\t\"./mel.js\": [\n\t\t514,\n\t\t108\n\t],\n\t\"./mercury\": [\n\t\t515,\n\t\t109\n\t],\n\t\"./mercury.js\": [\n\t\t515,\n\t\t109\n\t],\n\t\"./mipsasm\": [\n\t\t516,\n\t\t110\n\t],\n\t\"./mipsasm.js\": [\n\t\t516,\n\t\t110\n\t],\n\t\"./mizar\": [\n\t\t517,\n\t\t111\n\t],\n\t\"./mizar.js\": [\n\t\t517,\n\t\t111\n\t],\n\t\"./mojolicious\": [\n\t\t518,\n\t\t112\n\t],\n\t\"./mojolicious.js\": [\n\t\t518,\n\t\t112\n\t],\n\t\"./monkey\": [\n\t\t519,\n\t\t113\n\t],\n\t\"./monkey.js\": [\n\t\t519,\n\t\t113\n\t],\n\t\"./moonscript\": [\n\t\t520,\n\t\t114\n\t],\n\t\"./moonscript.js\": [\n\t\t520,\n\t\t114\n\t],\n\t\"./n1ql\": [\n\t\t521,\n\t\t115\n\t],\n\t\"./n1ql.js\": [\n\t\t521,\n\t\t115\n\t],\n\t\"./nginx\": [\n\t\t522,\n\t\t116\n\t],\n\t\"./nginx.js\": [\n\t\t522,\n\t\t116\n\t],\n\t\"./nim\": [\n\t\t523,\n\t\t117\n\t],\n\t\"./nim.js\": [\n\t\t523,\n\t\t117\n\t],\n\t\"./nix\": [\n\t\t524,\n\t\t118\n\t],\n\t\"./nix.js\": [\n\t\t524,\n\t\t118\n\t],\n\t\"./node-repl\": [\n\t\t525,\n\t\t119\n\t],\n\t\"./node-repl.js\": [\n\t\t525,\n\t\t119\n\t],\n\t\"./nsis\": [\n\t\t526,\n\t\t120\n\t],\n\t\"./nsis.js\": [\n\t\t526,\n\t\t120\n\t],\n\t\"./objectivec\": [\n\t\t527,\n\t\t121\n\t],\n\t\"./objectivec.js\": [\n\t\t527,\n\t\t121\n\t],\n\t\"./ocaml\": [\n\t\t528,\n\t\t122\n\t],\n\t\"./ocaml.js\": [\n\t\t528,\n\t\t122\n\t],\n\t\"./openscad\": [\n\t\t529,\n\t\t123\n\t],\n\t\"./openscad.js\": [\n\t\t529,\n\t\t123\n\t],\n\t\"./oxygene\": [\n\t\t530,\n\t\t124\n\t],\n\t\"./oxygene.js\": [\n\t\t530,\n\t\t124\n\t],\n\t\"./parser3\": [\n\t\t531,\n\t\t125\n\t],\n\t\"./parser3.js\": [\n\t\t531,\n\t\t125\n\t],\n\t\"./perl\": [\n\t\t532,\n\t\t126\n\t],\n\t\"./perl.js\": [\n\t\t532,\n\t\t126\n\t],\n\t\"./pf\": [\n\t\t533,\n\t\t127\n\t],\n\t\"./pf.js\": [\n\t\t533,\n\t\t127\n\t],\n\t\"./pgsql\": [\n\t\t534,\n\t\t128\n\t],\n\t\"./pgsql.js\": [\n\t\t534,\n\t\t128\n\t],\n\t\"./php\": [\n\t\t536,\n\t\t129\n\t],\n\t\"./php-template\": [\n\t\t535,\n\t\t130\n\t],\n\t\"./php-template.js\": [\n\t\t535,\n\t\t130\n\t],\n\t\"./php.js\": [\n\t\t536,\n\t\t129\n\t],\n\t\"./plaintext\": [\n\t\t537,\n\t\t131\n\t],\n\t\"./plaintext.js\": [\n\t\t537,\n\t\t131\n\t],\n\t\"./pony\": [\n\t\t538,\n\t\t132\n\t],\n\t\"./pony.js\": [\n\t\t538,\n\t\t132\n\t],\n\t\"./powershell\": [\n\t\t539,\n\t\t133\n\t],\n\t\"./powershell.js\": [\n\t\t539,\n\t\t133\n\t],\n\t\"./processing\": [\n\t\t540,\n\t\t134\n\t],\n\t\"./processing.js\": [\n\t\t540,\n\t\t134\n\t],\n\t\"./profile\": [\n\t\t541,\n\t\t135\n\t],\n\t\"./profile.js\": [\n\t\t541,\n\t\t135\n\t],\n\t\"./prolog\": [\n\t\t542,\n\t\t136\n\t],\n\t\"./prolog.js\": [\n\t\t542,\n\t\t136\n\t],\n\t\"./properties\": [\n\t\t543,\n\t\t137\n\t],\n\t\"./properties.js\": [\n\t\t543,\n\t\t137\n\t],\n\t\"./protobuf\": [\n\t\t544,\n\t\t138\n\t],\n\t\"./protobuf.js\": [\n\t\t544,\n\t\t138\n\t],\n\t\"./puppet\": [\n\t\t545,\n\t\t139\n\t],\n\t\"./puppet.js\": [\n\t\t545,\n\t\t139\n\t],\n\t\"./purebasic\": [\n\t\t546,\n\t\t140\n\t],\n\t\"./purebasic.js\": [\n\t\t546,\n\t\t140\n\t],\n\t\"./python\": [\n\t\t548,\n\t\t141\n\t],\n\t\"./python-repl\": [\n\t\t547,\n\t\t142\n\t],\n\t\"./python-repl.js\": [\n\t\t547,\n\t\t142\n\t],\n\t\"./python.js\": [\n\t\t548,\n\t\t141\n\t],\n\t\"./q\": [\n\t\t549,\n\t\t143\n\t],\n\t\"./q.js\": [\n\t\t549,\n\t\t143\n\t],\n\t\"./qml\": [\n\t\t550,\n\t\t144\n\t],\n\t\"./qml.js\": [\n\t\t550,\n\t\t144\n\t],\n\t\"./r\": [\n\t\t551,\n\t\t145\n\t],\n\t\"./r.js\": [\n\t\t551,\n\t\t145\n\t],\n\t\"./reasonml\": [\n\t\t552,\n\t\t146\n\t],\n\t\"./reasonml.js\": [\n\t\t552,\n\t\t146\n\t],\n\t\"./rib\": [\n\t\t553,\n\t\t147\n\t],\n\t\"./rib.js\": [\n\t\t553,\n\t\t147\n\t],\n\t\"./roboconf\": [\n\t\t554,\n\t\t148\n\t],\n\t\"./roboconf.js\": [\n\t\t554,\n\t\t148\n\t],\n\t\"./routeros\": [\n\t\t555,\n\t\t149\n\t],\n\t\"./routeros.js\": [\n\t\t555,\n\t\t149\n\t],\n\t\"./rsl\": [\n\t\t556,\n\t\t150\n\t],\n\t\"./rsl.js\": [\n\t\t556,\n\t\t150\n\t],\n\t\"./ruby\": [\n\t\t557,\n\t\t151\n\t],\n\t\"./ruby.js\": [\n\t\t557,\n\t\t151\n\t],\n\t\"./ruleslanguage\": [\n\t\t558,\n\t\t152\n\t],\n\t\"./ruleslanguage.js\": [\n\t\t558,\n\t\t152\n\t],\n\t\"./rust\": [\n\t\t559,\n\t\t153\n\t],\n\t\"./rust.js\": [\n\t\t559,\n\t\t153\n\t],\n\t\"./sas\": [\n\t\t560,\n\t\t154\n\t],\n\t\"./sas.js\": [\n\t\t560,\n\t\t154\n\t],\n\t\"./scala\": [\n\t\t561,\n\t\t155\n\t],\n\t\"./scala.js\": [\n\t\t561,\n\t\t155\n\t],\n\t\"./scheme\": [\n\t\t562,\n\t\t156\n\t],\n\t\"./scheme.js\": [\n\t\t562,\n\t\t156\n\t],\n\t\"./scilab\": [\n\t\t563,\n\t\t157\n\t],\n\t\"./scilab.js\": [\n\t\t563,\n\t\t157\n\t],\n\t\"./scss\": [\n\t\t564,\n\t\t158\n\t],\n\t\"./scss.js\": [\n\t\t564,\n\t\t158\n\t],\n\t\"./shell\": [\n\t\t565,\n\t\t159\n\t],\n\t\"./shell.js\": [\n\t\t565,\n\t\t159\n\t],\n\t\"./smali\": [\n\t\t566,\n\t\t160\n\t],\n\t\"./smali.js\": [\n\t\t566,\n\t\t160\n\t],\n\t\"./smalltalk\": [\n\t\t567,\n\t\t161\n\t],\n\t\"./smalltalk.js\": [\n\t\t567,\n\t\t161\n\t],\n\t\"./sml\": [\n\t\t568,\n\t\t162\n\t],\n\t\"./sml.js\": [\n\t\t568,\n\t\t162\n\t],\n\t\"./sqf\": [\n\t\t569,\n\t\t163\n\t],\n\t\"./sqf.js\": [\n\t\t569,\n\t\t163\n\t],\n\t\"./sql\": [\n\t\t570,\n\t\t164\n\t],\n\t\"./sql.js\": [\n\t\t570,\n\t\t164\n\t],\n\t\"./stan\": [\n\t\t571,\n\t\t165\n\t],\n\t\"./stan.js\": [\n\t\t571,\n\t\t165\n\t],\n\t\"./stata\": [\n\t\t572,\n\t\t166\n\t],\n\t\"./stata.js\": [\n\t\t572,\n\t\t166\n\t],\n\t\"./step21\": [\n\t\t573,\n\t\t167\n\t],\n\t\"./step21.js\": [\n\t\t573,\n\t\t167\n\t],\n\t\"./stylus\": [\n\t\t574,\n\t\t168\n\t],\n\t\"./stylus.js\": [\n\t\t574,\n\t\t168\n\t],\n\t\"./subunit\": [\n\t\t575,\n\t\t169\n\t],\n\t\"./subunit.js\": [\n\t\t575,\n\t\t169\n\t],\n\t\"./swift\": [\n\t\t576,\n\t\t170\n\t],\n\t\"./swift.js\": [\n\t\t576,\n\t\t170\n\t],\n\t\"./taggerscript\": [\n\t\t577,\n\t\t171\n\t],\n\t\"./taggerscript.js\": [\n\t\t577,\n\t\t171\n\t],\n\t\"./tap\": [\n\t\t578,\n\t\t172\n\t],\n\t\"./tap.js\": [\n\t\t578,\n\t\t172\n\t],\n\t\"./tcl\": [\n\t\t579,\n\t\t173\n\t],\n\t\"./tcl.js\": [\n\t\t579,\n\t\t173\n\t],\n\t\"./thrift\": [\n\t\t580,\n\t\t174\n\t],\n\t\"./thrift.js\": [\n\t\t580,\n\t\t174\n\t],\n\t\"./tp\": [\n\t\t581,\n\t\t175\n\t],\n\t\"./tp.js\": [\n\t\t581,\n\t\t175\n\t],\n\t\"./twig\": [\n\t\t582,\n\t\t176\n\t],\n\t\"./twig.js\": [\n\t\t582,\n\t\t176\n\t],\n\t\"./typescript\": [\n\t\t583,\n\t\t177\n\t],\n\t\"./typescript.js\": [\n\t\t583,\n\t\t177\n\t],\n\t\"./vala\": [\n\t\t584,\n\t\t178\n\t],\n\t\"./vala.js\": [\n\t\t584,\n\t\t178\n\t],\n\t\"./vbnet\": [\n\t\t585,\n\t\t179\n\t],\n\t\"./vbnet.js\": [\n\t\t585,\n\t\t179\n\t],\n\t\"./vbscript\": [\n\t\t587,\n\t\t180\n\t],\n\t\"./vbscript-html\": [\n\t\t586,\n\t\t181\n\t],\n\t\"./vbscript-html.js\": [\n\t\t586,\n\t\t181\n\t],\n\t\"./vbscript.js\": [\n\t\t587,\n\t\t180\n\t],\n\t\"./verilog\": [\n\t\t588,\n\t\t182\n\t],\n\t\"./verilog.js\": [\n\t\t588,\n\t\t182\n\t],\n\t\"./vhdl\": [\n\t\t589,\n\t\t183\n\t],\n\t\"./vhdl.js\": [\n\t\t589,\n\t\t183\n\t],\n\t\"./vim\": [\n\t\t590,\n\t\t184\n\t],\n\t\"./vim.js\": [\n\t\t590,\n\t\t184\n\t],\n\t\"./x86asm\": [\n\t\t591,\n\t\t185\n\t],\n\t\"./x86asm.js\": [\n\t\t591,\n\t\t185\n\t],\n\t\"./xl\": [\n\t\t592,\n\t\t186\n\t],\n\t\"./xl.js\": [\n\t\t592,\n\t\t186\n\t],\n\t\"./xml\": [\n\t\t593,\n\t\t187\n\t],\n\t\"./xml.js\": [\n\t\t593,\n\t\t187\n\t],\n\t\"./xquery\": [\n\t\t594,\n\t\t188\n\t],\n\t\"./xquery.js\": [\n\t\t594,\n\t\t188\n\t],\n\t\"./yaml\": [\n\t\t595,\n\t\t189\n\t],\n\t\"./yaml.js\": [\n\t\t595,\n\t\t189\n\t],\n\t\"./zephir\": [\n\t\t596,\n\t\t190\n\t],\n\t\"./zephir.js\": [\n\t\t596,\n\t\t190\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\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 __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 682;\nmodule.exports = webpackAsyncContext;","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Keymap from './Keymap'\nimport UserColor from './UserColor'\n\nexport {\n\tKeymap,\n\tUserColor,\n}\n","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Extension, Plugin } from 'tiptap'\n\nexport default class Keymap extends Extension {\n\n\tget name() {\n\t\treturn 'customkeymap'\n\t}\n\n\tkeys({ schema }) {\n\t\treturn this.options\n\t}\n\n\tget plugins() {\n\t\treturn [new Plugin({\n\t\t\tprops: {\n\t\t\t\thandleKeyDown(view, event) {\n\t\t\t\t\tconst key = event.key || event.keyCode\n\t\t\t\t\tif ((event.ctrlKey || event.metaKey) && !event.shiftKey && (key === 'f' || key === 70)) {\n\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// in order to force triggering the browser native search in the text editor\n\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\twindow.dispatchEvent(event)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t})]\n\t}\n\n}\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Extension, Plugin } from 'tiptap'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\nimport TrackState from './tracking/TrackState'\nimport { Span } from './tracking/models'\n\nexport default class UserColor extends Extension {\n\n\tget name() {\n\t\treturn 'users'\n\t}\n\n\tget defaultOptions() {\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\tget plugins() {\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\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\ttracked = tracked.applyTransform(tr)\n\t\t\t\t\t\t\ttState = tracked\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","/*\n * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Span } from './models'\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\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\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) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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-container[data-v-681dd80c]{display:block;width:100%;max-width:100%;height:100%;left:0;top:50px;margin:0 auto;position:relative;background-color:var(--color-main-background)}#editor-wrapper[data-v-681dd80c]{display:flex;width:100%;height:100%;overflow:hidden;position:absolute}#editor-wrapper.show-color-annotations[data-v-681dd80c] .author-annotation{padding-top:2px;padding-bottom:2px}#editor-wrapper[data-v-681dd80c]:not(.show-color-annotations) .author-annotation{background-color:transparent !important;color:var(--color-main-text) !important}#editor-wrapper .ProseMirror[data-v-681dd80c]{margin-top:0 !important}#editor-wrapper.icon-loading #editor[data-v-681dd80c]{opacity:0.3}#editor[data-v-681dd80c],.editor[data-v-681dd80c]{background:var(--color-main-background);color:var(--color-main-text);background-clip:padding-box;border-radius:var(--border-radius);padding:0;position:relative;overflow-y:auto;overflow-x:hidden;width:100%}.document-status[data-v-681dd80c]{z-index:1010;position:relative;background-color:var(--color-main-background)}.document-status .msg[data-v-681dd80c]{padding:12px;padding-left:30px;border-bottom:1px solid var(--color-border);background-position:8px center}.save-status[data-v-681dd80c]{display:inline-flex;padding:0;text-overflow:ellipsis;color:var(--color-text-lighter);position:relative;top:10px;min-width:85px}.save-status.error[data-v-681dd80c]{background-color:var(--color-error);color:var(--color-main-background);border-radius:3px}#editor-container #editor-wrapper.has-conflicts[data-v-681dd80c]{height:calc(100% - 50px)}#editor-container #editor-wrapper.has-conflicts #editor[data-v-681dd80c],#editor-container #editor-wrapper.has-conflicts #read-only-editor[data-v-681dd80c]{width:50%;height:100%}#editor-session-list[data-v-681dd80c]{display:flex}#editor-session-list input[data-v-681dd80c],#editor-session-list div[data-v-681dd80c]{vertical-align:middle;margin-left:3px}.editor__content[data-v-681dd80c]{max-width:670px;margin:auto;position:relative}#body-public[data-v-681dd80c]{height:auto}#files-public-content #editor-container[data-v-681dd80c]{top:0;width:100%}#files-public-content #editor-container #editor[data-v-681dd80c] .menubar{position:sticky;top:0px;width:100%}#files-public-content #editor-container #editor[data-v-681dd80c]{overflow:auto;z-index:1000}#files-public-content #editor-container .has-conflicts #editor[data-v-681dd80c]{padding-top:0}.ie #editor[data-v-681dd80c] .menubar{position:fixed;top:50px;width:100%}.ie .editor__content[data-v-681dd80c] .ProseMirror{padding-top:50px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/EditorWrapper.vue\"],\"names\":[],\"mappings\":\"AA+fA,mCACC,aAAc,CACd,UAAW,CACX,cAAe,CACf,WAAY,CACZ,MAAO,CACP,QAAS,CACT,aAAc,CACd,iBAAkB,CAClB,6CAA8C,CAC9C,iCAGA,YAAa,CACb,UAAW,CACX,WAAY,CACZ,eAAgB,CAChB,iBAAkB,CALnB,2EAQE,eAAgB,CAChB,kBAAmB,CATrB,iFAaE,uCAAwC,CACxC,uCAAwC,CAd1C,8CAkBE,uBAAwB,CAlB1B,sDAsBG,WAAY,CACZ,kDAKF,uCAAwC,CACxC,4BAA6B,CAC7B,2BAA4B,CAC5B,kCAAmC,CACnC,SAAU,CACV,iBAAkB,CAClB,eAAgB,CAChB,iBAAkB,CAClB,UAAW,CACX,kCAGA,YAAa,CACb,iBAAkB,CAClB,6CAA8C,CAC9C,uCAGA,YAAa,CACb,iBAAkB,CAClB,2CAA4C,CAC5C,8BAA+B,CAC/B,8BAGA,mBAAoB,CACpB,SAAU,CACV,sBAAuB,CACvB,+BAAgC,CAChC,iBAAkB,CAClB,QAAS,CACT,cAAe,CAPhB,oCAUE,mCAAoC,CACpC,kCAAmC,CACnC,iBAAkB,CAClB,iEAID,wBAAyB,CAD1B,4JAIE,SAAU,CACV,WAAY,CACZ,sCAID,YAAa,CADd,sFAIE,qBAAsB,CACtB,eAAgB,CAChB,kCAID,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAClB,8BAGA,WAAY,CACZ,yDAIC,KAAM,CACN,UAAW,CAHb,0EAMG,eAAgB,CAChB,OAAQ,CACR,UAAW,CARd,iEAYG,aAAc,CAEd,YAAa,CAdhB,gFAiBG,aAAc,CACd,sCAOD,cAAe,CACf,QAAS,CACT,UAAW,CALb,mDAQE,gBAAiB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#editor-container {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmax-width: 100%;\\n\\theight: 100%;\\n\\tleft: 0;\\n\\ttop: 50px;\\n\\tmargin: 0 auto;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n#editor-wrapper {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\toverflow: hidden;\\n\\tposition: absolute;\\n\\n\\t&.show-color-annotations::v-deep .author-annotation {\\n\\t\\tpadding-top: 2px;\\n\\t\\tpadding-bottom: 2px;\\n\\t}\\n\\n\\t&:not(.show-color-annotations)::v-deep .author-annotation {\\n\\t\\tbackground-color: transparent !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t}\\n\\n\\t.ProseMirror {\\n\\t\\tmargin-top: 0 !important;\\n\\t}\\n\\t&.icon-loading {\\n\\t\\t#editor {\\n\\t\\t\\topacity: 0.3;\\n\\t\\t}\\n\\t}\\n}\\n\\n#editor, .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\\toverflow-y: auto;\\n\\toverflow-x: hidden;\\n\\twidth: 100%;\\n}\\n\\n.document-status {\\n\\tz-index: 1010;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.document-status .msg {\\n\\tpadding: 12px;\\n\\tpadding-left: 30px;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\tbackground-position: 8px center;\\n}\\n\\n.save-status {\\n\\tdisplay: inline-flex;\\n\\tpadding: 0;\\n\\ttext-overflow: ellipsis;\\n\\tcolor: var(--color-text-lighter);\\n\\tposition: relative;\\n\\ttop: 10px;\\n\\tmin-width: 85px;\\n\\n\\t&.error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: var(--color-main-background);\\n\\t\\tborder-radius: 3px;\\n\\t}\\n}\\n\\n#editor-container #editor-wrapper.has-conflicts {\\n\\theight: calc(100% - 50px);\\n\\n\\t#editor, #read-only-editor {\\n\\t\\twidth: 50%;\\n\\t\\theight: 100%;\\n\\t}\\n}\\n\\n#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.editor__content {\\n\\tmax-width: 670px;\\n\\tmargin: auto;\\n\\tposition: relative;\\n}\\n\\n#body-public {\\n\\theight: auto;\\n}\\n\\n#files-public-content {\\n\\t#editor-container {\\n\\t\\ttop: 0;\\n\\t\\twidth: 100%;\\n\\n\\t\\t#editor::v-deep .menubar {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0px;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t#editor {\\n\\t\\t\\toverflow: auto;\\n\\t\\t\\t// Fix for IE11 issue where the menubar sometimes was positioned under the text\\n\\t\\t\\tz-index: 1000;\\n\\t\\t}\\n\\t\\t.has-conflicts #editor {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ie {\\n\\t#editor::v-deep .menubar {\\n\\t\\t// sticky position is not working as body is our scroll container\\n\\t\\tposition: fixed;\\n\\t\\ttop: 50px;\\n\\t\\twidth: 100%;\\n\\t}\\n\\t.editor__content::v-deep .ProseMirror {\\n\\t\\tpadding-top: 50px;\\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/cssWithMappingToString.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\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../img/checkbox-mark.svg\";\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, \".modal-container #editor-container{position:absolute}.ProseMirror-hideselection *::selection{background:transparent;color:var(--color-main-text)}.ProseMirror-hideselection *::-moz-selection{background:transparent;color:var(--color-main-text)}.ProseMirror-hideselection{caret-color:transparent;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,#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}}#editor-wrapper div.ProseMirror{margin-top:44px;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}#editor-wrapper div.ProseMirror[contenteditable=true],#editor-wrapper div.ProseMirror[contenteditable=false],#editor-wrapper div.ProseMirror [contenteditable=true],#editor-wrapper div.ProseMirror [contenteditable=false]{border:none !important;width:100%;background-color:transparent;color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}#editor-wrapper div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}#editor-wrapper div.ProseMirror .checkbox-item input[type=checkbox]{display:none}#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}#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)}#editor-wrapper div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}#editor-wrapper div.ProseMirror>*:first-child{margin-top:10px}#editor-wrapper div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}#editor-wrapper div.ProseMirror p{margin-bottom:1em;line-height:150%}#editor-wrapper div.ProseMirror em{font-style:italic}#editor-wrapper div.ProseMirror h1,#editor-wrapper div.ProseMirror h2,#editor-wrapper div.ProseMirror h3,#editor-wrapper div.ProseMirror h4,#editor-wrapper div.ProseMirror h5,#editor-wrapper div.ProseMirror h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}#editor-wrapper div.ProseMirror h1{font-size:36px;margin-top:48px}#editor-wrapper div.ProseMirror h2{font-size:28px;margin-top:48px}#editor-wrapper div.ProseMirror h3{font-size:24px}#editor-wrapper div.ProseMirror h4{font-size:21px}#editor-wrapper div.ProseMirror h5{font-size:17px}#editor-wrapper div.ProseMirror h6{font-size:14px}#editor-wrapper div.ProseMirror img{cursor:default;max-width:100%}#editor-wrapper div.ProseMirror hr{padding:2px 0;border:none;margin:1em 0;width:100%}#editor-wrapper div.ProseMirror hr:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}#editor-wrapper div.ProseMirror pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}#editor-wrapper div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}#editor-wrapper div.ProseMirror li{position:relative;padding-left:3px}#editor-wrapper div.ProseMirror li p{margin-bottom:0.5em}#editor-wrapper div.ProseMirror ul,#editor-wrapper div.ProseMirror ol{padding-left:10px;margin-left:10px}#editor-wrapper div.ProseMirror ul li{list-style-type:disc}#editor-wrapper div.ProseMirror ul>li>ul>li{list-style-type:circle}#editor-wrapper div.ProseMirror ul>li>ul>li ul li{list-style-type:square}#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}#editor-wrapper .ProseMirror-focused .ProseMirror-gapcursor{display:block}#editor-wrapper .editor__content p.is-empty:first-child::before{content:attr(data-empty-text);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}#editor-wrapper:not(.richEditor) .ProseMirror pre{background-color:var(--color-main-background)}#editor-wrapper:not(.richEditor) .ProseMirror pre::before{content:attr(data-language);text-transform:uppercase;display:block;text-align:right;font-weight:bold;font-size:0.6rem}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-comment,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-quote{color:#999999}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-variable,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-template-variable,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-attribute,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-tag,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-name,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-regexp,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-link,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-selector-id,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-selector-class{color:#f2777a}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-number,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-meta,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-built_in,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-builtin-name,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-literal,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-type,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-params{color:#f99157}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-string,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-symbol,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-bullet{color:#99cc99}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-title,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-section{color:#ffcc66}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-keyword,#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-selector-tag{color:#6699cc}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-emphasis{font-style:italic}#editor-wrapper:not(.richEditor) .ProseMirror pre code .hljs-strong{font-weight:700}#files-public-content{height:100%}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./css/style.scss\",\"webpack://./src/components/EditorWrapper.vue\",\"webpack://./css/prosemirror.scss\"],\"names\":[],\"mappings\":\"AAAA,mCACE,iBAAkB,CACnB,wCAEyC,sBAAuB,CAAE,4BAA6B,CAAI,6CACrD,sBAAuB,CAAE,4BAA6B,CAAI,2BAC5E,uBAAwB,CAAE,4BAA6B,CAAI,0BAGtF,sBAAuB,CACxB,4BAIC,YAAa,CACd,kCAGC,UAAW,CACX,iBAAkB,CAClB,UAAW,CACX,UAAW,CAAE,QAAS,CAAE,WAAY,CACpC,qBAAsB,CACtB,mBAAoB,CACrB,sFAKG,YAAa,CACd,uBAID,YAAa,CACb,mBAAoB,CACpB,iBAAkB,CACnB,6BAGC,UAAW,CACX,aAAc,CACd,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,2CAA4C,CAC5C,gEAAiE,CAClE,oCAGC,GACE,iBAAkB,CAAA,CC8lBtB,gCC/oBC,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAClB,oBAAqB,CACrB,oBAAqB,CACrB,mCAAoC,CACpC,2BAA4B,CAC5B,0BAA2B,CAC3B,gBAAiB,CACjB,cAAe,CACf,YAAa,CDqoBd,4NC/nBE,sBAAuB,CACvB,UAAW,CACX,4BAA6B,CAC7B,4BAA6B,CAC7B,SAAU,CACV,wBAAyB,CACzB,gBAAiB,CACjB,cAAe,CDwnBjB,+CCpnBE,YAAa,CACb,iBAAkB,CAElB,iBAAkB,CDinBpB,oEC9mBG,YAAa,CD8mBhB,sDC3mBG,UAAW,CACX,qBAAsB,CACtB,sBAAuB,CACvB,8CAA+C,CAC/C,iBAAkB,CAClB,aAAc,CACd,kCAAmC,CACnC,WAAY,CACZ,UAAW,CACX,0BAA2B,CAC3B,0BAA2B,CAC3B,cAAe,CDgmBlB,8DC7lBG,wDAAoD,CACpD,6CAA8C,CAC9C,yCAA0C,CD2lB7C,qDCxlBG,aAAc,CACd,WAAY,CACZ,2BAA4B,CDslB/B,8CCjlBE,eAAgB,CDilBlB,kCC7kBE,kCAAmC,CACnC,yBAA0B,CAC1B,cAAe,CD2kBjB,kCCvkBE,iBAAkB,CAClB,gBAAiB,CDskBnB,mCClkBE,iBAAkB,CDkkBpB,kNCzjBE,eAAgB,CAChB,gBAAiB,CACjB,eAAgB,CAChB,kBAAmB,CACnB,4BAA6B,CDqjB/B,mCCjjBE,cAAe,CACf,eAAgB,CDgjBlB,mCC5iBE,cAAe,CACf,eAAgB,CD2iBlB,mCCviBE,cAAe,CDuiBjB,mCCniBE,cAAe,CDmiBjB,mCC/hBE,cAAe,CD+hBjB,mCC3hBE,cAAe,CD2hBjB,oCCvhBE,cAAe,CACf,cAAe,CDshBjB,mCClhBE,aAAc,CACd,WAAY,CACZ,YAAa,CACb,UAAW,CD+gBb,yCC3gBE,UAAW,CACX,aAAc,CACd,UAAW,CACX,yCAA0C,CAC1C,eAAgB,CDugBlB,oCCngBE,eAAgB,CAChB,eAAgB,CAChB,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CAClB,iBAAkB,CD8fpB,uCC1fE,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CDwfpB,mCCpfE,iBAAkB,CAClB,gBAAiB,CDmfnB,qCChfG,mBAAoB,CDgfvB,sEC3eE,iBAAkB,CAClB,gBAAiB,CD0enB,sCCteE,oBAAqB,CDsevB,4CCjeE,sBAAuB,CDiezB,kDC5dE,sBAAuB,CD4dzB,2CCxdE,gBAAiB,CACjB,kDAAmD,CACnD,mCAAoC,CACpC,aAAc,CACd,cAAe,CDodjB,4DC9cC,aAAc,CD8cf,gEC1cC,6BAA8B,CAC9B,UAAW,CACX,mCAAoC,CACpC,mBAAoB,CACpB,QAAS,CDscV,kDAKG,6CAA8C,CALjD,0DAQI,2BAA4B,CAC5B,wBAAyB,CACzB,aAAc,CACd,gBAAiB,CACjB,gBAAiB,CACjB,gBAAiB,CAbrB,wIAkBK,aAAc,CAlBnB,0nBA6BK,aAAc,CA7BnB,ieAsCK,aAAc,CAtCnB,4MA2CK,aAAc,CA3CnB,wIA+CK,aAAc,CA/CnB,+IAmDK,aAAc,CAnDnB,sEAsDK,iBAAkB,CAtDvB,oEAyDK,eAAgB,CAChB,sBASJ,WAAY\",\"sourcesContent\":[\".modal-container #editor-container {\\n  position: absolute;\\n}\\n\\n.ProseMirror-hideselection *::selection { background: transparent; color: var(--color-main-text); }\\n.ProseMirror-hideselection *::-moz-selection { background: transparent; color: var(--color-main-text); }\\n.ProseMirror-hideselection { caret-color: transparent; color: var(--color-main-text); }\\n\\n.ProseMirror-selectednode {\\n  outline: 2px solid #8cf;\\n}\\n\\n/* Make sure li selections wrap around markers */\\nli.ProseMirror-selectednode {\\n  outline: none;\\n}\\n\\nli.ProseMirror-selectednode:after {\\n  content: \\\"\\\";\\n  position: absolute;\\n  left: -32px;\\n  right: -2px; top: -2px; bottom: -2px;\\n  border: 2px solid #8cf;\\n  pointer-events: none;\\n}\\n\\n.has-conflicts,\\n#editor-wrapper.icon-loading {\\n  .ProseMirror-menubar {\\n    display: none;\\n  }\\n}\\n\\n.ProseMirror-gapcursor {\\n  display: none;\\n  pointer-events: none;\\n  position: absolute;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n  content: \\\"\\\";\\n  display: block;\\n  position: absolute;\\n  top: -2px;\\n  width: 20px;\\n  border-top: 1px solid var(--color-main-text);\\n  animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n  to {\\n    visibility: hidden;\\n  }\\n}\\n\",\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import './../../css/style';\\n\\n#editor-wrapper {\\n\\t@import './../../css/prosemirror';\\n\\n\\t&:not(.richEditor) .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\\n// Required in order to make the public pages behave the same if talk is enabled or not\\n// as Talk overwrites the public page styles and changes the DOM layout for the sidebar injection\\n#files-public-content {\\n\\theight: 100%;\\n}\\n\",\"/* Document rendering styles */\\ndiv.ProseMirror {\\n\\tmargin-top: 44px;\\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&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\tborder: none !important;\\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\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked:before {\\n\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp {\\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: 120%;\\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\\tmargin-top: 48px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 28px;\\n\\t\\tmargin-top: 48px;\\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: 1em 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;\\n\\t\\toverflow-x: auto;\\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\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tul > li > ul > 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}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-empty-text);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 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/cssWithMappingToString.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[data-v-3ea77884]{position:fixed}#direct-editor[data-v-3ea77884]{width:100%;height:100%;position:fixed;overflow:hidden}#direct-editor[data-v-3ea77884] #editor-container{height:100%;top:0}#direct-editor[data-v-3ea77884] #editor-wrapper div.ProseMirror{margin-top:0}pre[data-v-3ea77884]{width:100%;max-width:700px;margin:auto;background-color:var(--color-background-dark)}button[data-v-3ea77884]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}button[data-v-3ea77884]:hover,button[data-v-3ea77884]:focus,button[data-v-3ea77884]:active{background-color:var(--color-background-dark)}button.is-active[data-v-3ea77884],button[data-v-3ea77884]:hover,button[data-v-3ea77884]:focus{opacity:1}button.icon-undo[data-v-3ea77884],button.icon-redo[data-v-3ea77884]{opacity:.4}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/DirectEditing.vue\"],\"names\":[],\"mappings\":\"AAgIA,sBACC,cAAe,CACf,gCAGA,UAAW,CACX,WAAY,CACZ,cAAe,CACf,eAAgB,CAJjB,kDAOE,WAAY,CACZ,KAAM,CARR,gEAWE,YAAa,CACb,qBAID,UAAW,CACX,eAAgB,CAChB,WAAY,CACZ,6CAA8C,CAC9C,wBAGA,UAAW,CACX,WAAY,CACZ,QAAS,CACT,oBAAqB,CACrB,QAAS,CACT,4BAA6B,CAC7B,UAAW,CACX,4BAA6B,CAC7B,iCAAkC,CAClC,kBAAmB,CAVpB,2FAYE,6CAA8C,CAZhD,8FAiBE,SAAU,CAjBZ,oEAqBE,UAAW\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nbody {\\n\\tposition: fixed;\\n}\\n\\n#direct-editor {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tposition: fixed;\\n\\toverflow: hidden;\\n\\n\\t&::v-deep #editor-container {\\n\\t\\theight: 100%;\\n\\t\\ttop: 0;\\n\\t}\\n\\t&::v-deep #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\\t&.icon-undo, &.icon-redo {\\n\\t\\topacity: .4;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nconst persistentStorage = getBuilder('text').persist().build()\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n\tstate: {\n\t\tshowAuthorAnnotations: persistentStorage.getItem('showAuthorAnnotations') === 'true',\n\t},\n\tmutations: {\n\t\tSET_SHOW_AUTHOR_ANNOTATIONS(state, value) {\n\t\t\tstate.showAuthorAnnotations = value\n\t\t\tpersistentStorage.setItem('showAuthorAnnotations', '' + value)\n\t\t},\n\t},\n\tactions: {\n\t\tsetShowAuthorAnnotations({ commit }, value) {\n\t\t\tstore.commit('SET_SHOW_AUTHOR_ANNOTATIONS', value)\n\t\t},\n\t},\n})\n\nexport default store\n","import { render, staticRenderFns } from \"./ReadOnlyEditor.vue?vue&type=template&id=67962a1a&\"\nimport script from \"./ReadOnlyEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./ReadOnlyEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReadOnlyEditor.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./ReadOnlyEditor.vue?vue&type=style&index=1&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","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../img/checkbox-mark.svg\";\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, \"#read-only-editor{overflow:scroll}#read-only-editor div.ProseMirror{margin-top:44px;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}#read-only-editor div.ProseMirror[contenteditable=true],#read-only-editor div.ProseMirror[contenteditable=false],#read-only-editor div.ProseMirror [contenteditable=true],#read-only-editor div.ProseMirror [contenteditable=false]{border:none !important;width:100%;background-color:transparent;color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}#read-only-editor div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}#read-only-editor div.ProseMirror .checkbox-item input[type=checkbox]{display:none}#read-only-editor 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}#read-only-editor 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)}#read-only-editor div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}#read-only-editor div.ProseMirror>*:first-child{margin-top:10px}#read-only-editor div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}#read-only-editor div.ProseMirror p{margin-bottom:1em;line-height:150%}#read-only-editor div.ProseMirror em{font-style:italic}#read-only-editor div.ProseMirror h1,#read-only-editor div.ProseMirror h2,#read-only-editor div.ProseMirror h3,#read-only-editor div.ProseMirror h4,#read-only-editor div.ProseMirror h5,#read-only-editor div.ProseMirror h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}#read-only-editor div.ProseMirror h1{font-size:36px;margin-top:48px}#read-only-editor div.ProseMirror h2{font-size:28px;margin-top:48px}#read-only-editor div.ProseMirror h3{font-size:24px}#read-only-editor div.ProseMirror h4{font-size:21px}#read-only-editor div.ProseMirror h5{font-size:17px}#read-only-editor div.ProseMirror h6{font-size:14px}#read-only-editor div.ProseMirror img{cursor:default;max-width:100%}#read-only-editor div.ProseMirror hr{padding:2px 0;border:none;margin:1em 0;width:100%}#read-only-editor div.ProseMirror hr:after{content:\\\"\\\";display:block;height:1px;background-color:var(--color-border-dark);line-height:2px}#read-only-editor div.ProseMirror pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}#read-only-editor div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}#read-only-editor div.ProseMirror li{position:relative;padding-left:3px}#read-only-editor div.ProseMirror li p{margin-bottom:0.5em}#read-only-editor div.ProseMirror ul,#read-only-editor div.ProseMirror ol{padding-left:10px;margin-left:10px}#read-only-editor div.ProseMirror ul li{list-style-type:disc}#read-only-editor div.ProseMirror ul>li>ul>li{list-style-type:circle}#read-only-editor div.ProseMirror ul>li>ul>li ul li{list-style-type:square}#read-only-editor 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}#read-only-editor .ProseMirror-focused .ProseMirror-gapcursor{display:block}#read-only-editor .editor__content p.is-empty:first-child::before{content:attr(data-empty-text);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}.thumbnailContainer #read-only-editor{width:100%}.thumbnailContainer #read-only-editor .ProseMirror{height:auto;margin:0 0 0 0;padding:0}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ReadOnlyEditor.vue\",\"webpack://./css/prosemirror.scss\"],\"names\":[],\"mappings\":\"AAgEA,kBAEC,eAAgB,CAFjB,kCC9DC,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAClB,oBAAqB,CACrB,oBAAqB,CACrB,mCAAoC,CACpC,2BAA4B,CAC5B,0BAA2B,CAC3B,gBAAiB,CACjB,cAAe,CACf,YAAa,CDoDd,oOC9CE,sBAAuB,CACvB,UAAW,CACX,4BAA6B,CAC7B,4BAA6B,CAC7B,SAAU,CACV,wBAAyB,CACzB,gBAAiB,CACjB,cAAe,CDuCjB,iDCnCE,YAAa,CACb,iBAAkB,CAElB,iBAAkB,CDgCpB,sEC7BG,YAAa,CD6BhB,wDC1BG,UAAW,CACX,qBAAsB,CACtB,sBAAuB,CACvB,8CAA+C,CAC/C,iBAAkB,CAClB,aAAc,CACd,kCAAmC,CACnC,WAAY,CACZ,UAAW,CACX,0BAA2B,CAC3B,0BAA2B,CAC3B,cAAe,CDelB,gECZG,wDAAoD,CACpD,6CAA8C,CAC9C,yCAA0C,CDU7C,uDCPG,aAAc,CACd,WAAY,CACZ,2BAA4B,CDK/B,gDCAE,eAAgB,CDAlB,oCCIE,kCAAmC,CACnC,yBAA0B,CAC1B,cAAe,CDNjB,oCCUE,iBAAkB,CAClB,gBAAiB,CDXnB,qCCeE,iBAAkB,CDfpB,8NCwBE,eAAgB,CAChB,gBAAiB,CACjB,eAAgB,CAChB,kBAAmB,CACnB,4BAA6B,CD5B/B,qCCgCE,cAAe,CACf,eAAgB,CDjClB,qCCqCE,cAAe,CACf,eAAgB,CDtClB,qCC0CE,cAAe,CD1CjB,qCC8CE,cAAe,CD9CjB,qCCkDE,cAAe,CDlDjB,qCCsDE,cAAe,CDtDjB,sCC0DE,cAAe,CACf,cAAe,CD3DjB,qCC+DE,aAAc,CACd,WAAY,CACZ,YAAa,CACb,UAAW,CDlEb,2CCsEE,UAAW,CACX,aAAc,CACd,UAAW,CACX,yCAA0C,CAC1C,eAAgB,CD1ElB,sCC8EE,eAAgB,CAChB,eAAgB,CAChB,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CAClB,iBAAkB,CDnFpB,yCCuFE,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CDzFpB,qCC6FE,iBAAkB,CAClB,gBAAiB,CD9FnB,uCCiGG,mBAAoB,CDjGvB,0ECsGE,iBAAkB,CAClB,gBAAiB,CDvGnB,wCC2GE,oBAAqB,CD3GvB,8CCgHE,sBAAuB,CDhHzB,oDCqHE,sBAAuB,CDrHzB,6CCyHE,gBAAiB,CACjB,kDAAmD,CACnD,mCAAoC,CACpC,aAAc,CACd,cAAe,CD7HjB,8DCmIC,aAAc,CDnIf,kECuIC,6BAA8B,CAC9B,UAAW,CACX,mCAAoC,CACpC,mBAAoB,CACpB,QAAS,CDtIV,sCACC,UAAW,CADZ,mDAIE,WAAY,CACZ,cAAe,CACf,SAAU\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#read-only-editor {\\n\\t@import './../../css/prosemirror';\\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\",\"/* Document rendering styles */\\ndiv.ProseMirror {\\n\\tmargin-top: 44px;\\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&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\tborder: none !important;\\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\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked:before {\\n\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp {\\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: 120%;\\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\\tmargin-top: 48px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 28px;\\n\\t\\tmargin-top: 48px;\\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: 1em 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;\\n\\t\\toverflow-x: auto;\\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\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tul > li > ul > 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}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-empty-text);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 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/cssWithMappingToString.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\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../img/checkbox-mark.svg\";\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{margin-top:44px;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}div.ProseMirror[contenteditable=true],div.ProseMirror[contenteditable=false],div.ProseMirror [contenteditable=true],div.ProseMirror [contenteditable=false]{border:none !important;width:100%;background-color:transparent;color:var(--color-main-text);opacity:1;-webkit-user-select:text;user-select:text;font-size:14px}div.ProseMirror .checkbox-item{display:flex;align-items:start;margin-left:-23px}div.ProseMirror .checkbox-item input[type=checkbox]{display:none}div.ProseMirror .checkbox-item:before{content:'';vertical-align:middle;margin:3px 6px 3px 2px;border:1px solid var(--color-text-maxcontrast);position:relative;display:block;border-radius:var(--border-radius);height:14px;width:14px;box-shadow:none !important;background-position:center;cursor:pointer}div.ProseMirror .checkbox-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-color:var(--color-primary-element);border-color:var(--color-primary-element)}div.ProseMirror .checkbox-item label{display:block;flex-grow:1;max-width:calc(100% - 28px)}div.ProseMirror>*:first-child{margin-top:10px}div.ProseMirror a{color:var(--color-primary-element);text-decoration:underline;padding:.5em 0}div.ProseMirror p{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:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}div.ProseMirror h1{font-size:36px;margin-top:48px}div.ProseMirror h2{font-size:28px;margin-top:48px}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:1em 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;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}div.ProseMirror p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}div.ProseMirror li{position:relative;padding-left:3px}div.ProseMirror li p{margin-bottom:0.5em}div.ProseMirror ul,div.ProseMirror ol{padding-left:10px;margin-left:10px}div.ProseMirror ul li{list-style-type:disc}div.ProseMirror ul>li>ul>li{list-style-type:circle}div.ProseMirror ul>li>ul>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}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.editor__content p.is-empty:first-child::before{content:attr(data-empty-text);float:left;color:var(--color-text-maxcontrast);pointer-events:none;height:0}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./css/prosemirror.scss\"],\"names\":[],\"mappings\":\"AACA,gBACC,eAAgB,CAChB,WAAY,CACZ,iBAAkB,CAClB,oBAAqB,CACrB,oBAAqB,CACrB,mCAAoC,CACpC,2BAA4B,CAC5B,0BAA2B,CAC3B,gBAAiB,CACjB,cAAe,CACf,YAAa,CAXd,4JAiBE,sBAAuB,CACvB,UAAW,CACX,4BAA6B,CAC7B,4BAA6B,CAC7B,SAAU,CACV,wBAAyB,CACzB,gBAAiB,CACjB,cAAe,CAxBjB,+BA4BE,YAAa,CACb,iBAAkB,CAElB,iBAAkB,CA/BpB,oDAkCG,YAAa,CAlChB,sCAqCG,UAAW,CACX,qBAAsB,CACtB,sBAAuB,CACvB,8CAA+C,CAC/C,iBAAkB,CAClB,aAAc,CACd,kCAAmC,CACnC,WAAY,CACZ,UAAW,CACX,0BAA2B,CAC3B,0BAA2B,CAC3B,cAAe,CAhDlB,8CAmDG,wDAAoD,CACpD,6CAA8C,CAC9C,yCAA0C,CArD7C,qCAwDG,aAAc,CACd,WAAY,CACZ,2BAA4B,CA1D/B,8BA+DE,eAAgB,CA/DlB,kBAmEE,kCAAmC,CACnC,yBAA0B,CAC1B,cAAe,CArEjB,kBAyEE,iBAAkB,CAClB,gBAAiB,CA1EnB,mBA8EE,iBAAkB,CA9EpB,kHAuFE,eAAgB,CAChB,gBAAiB,CACjB,eAAgB,CAChB,kBAAmB,CACnB,4BAA6B,CA3F/B,mBA+FE,cAAe,CACf,eAAgB,CAhGlB,mBAoGE,cAAe,CACf,eAAgB,CArGlB,mBAyGE,cAAe,CAzGjB,mBA6GE,cAAe,CA7GjB,mBAiHE,cAAe,CAjHjB,mBAqHE,cAAe,CArHjB,oBAyHE,cAAe,CACf,cAAe,CA1HjB,mBA8HE,aAAc,CACd,WAAY,CACZ,YAAa,CACb,UAAW,CAjIb,yBAqIE,UAAW,CACX,aAAc,CACd,UAAW,CACX,yCAA0C,CAC1C,eAAgB,CAzIlB,oBA6IE,eAAgB,CAChB,eAAgB,CAChB,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CAClB,iBAAkB,CAlJpB,uBAsJE,6CAA8C,CAC9C,kCAAmC,CACnC,iBAAkB,CAxJpB,mBA4JE,iBAAkB,CAClB,gBAAiB,CA7JnB,qBAgKG,mBAAoB,CAhKvB,sCAqKE,iBAAkB,CAClB,gBAAiB,CAtKnB,sBA0KE,oBAAqB,CA1KvB,4BA+KE,sBAAuB,CA/KzB,kCAoLE,sBAAuB,CApLzB,2BAwLE,gBAAiB,CACjB,kDAAmD,CACnD,mCAAoC,CACpC,aAAc,CACd,cAAe,CACf,4CAKD,aAAc,CACd,gDAGA,6BAA8B,CAC9B,UAAW,CACX,mCAAoC,CACpC,mBAAoB,CACpB,QAAS\",\"sourcesContent\":[\"/* Document rendering styles */\\ndiv.ProseMirror {\\n\\tmargin-top: 44px;\\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&[contenteditable=true],\\n\\t&[contenteditable=false],\\n\\t[contenteditable=true],\\n\\t[contenteditable=false] {\\n\\t\\tborder: none !important;\\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\\t}\\n\\n\\t.checkbox-item {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: start;\\n\\t\\t// Left-align with list item text\\n\\t\\tmargin-left: -23px;\\n\\n\\t\\tinput[type=checkbox] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tmargin: 3px 6px 3px 2px;\\n\\t\\t\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\theight: 14px;\\n\\t\\t\\twidth: 14px;\\n\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&.checked:before {\\n\\t\\t\\tbackground-image: url('../../img/checkbox-mark.svg');\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmax-width: calc(100% - 28px);\\n\\t\\t}\\n\\t}\\n\\n\\t> *:first-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t\\ttext-decoration: underline;\\n\\t\\tpadding: .5em 0;\\n\\t}\\n\\n\\tp {\\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: 120%;\\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\\tmargin-top: 48px;\\n\\t}\\n\\n\\th2 {\\n\\t\\tfont-size: 28px;\\n\\t\\tmargin-top: 48px;\\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: 1em 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;\\n\\t\\toverflow-x: auto;\\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\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t\\tpadding-left: 3px;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0.5em;\\n\\t\\t}\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-left: 10px;\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\t// Second-level list entries\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\t// Third-level and further down list entries\\n\\tul > li > ul > 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}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n\\tdisplay: block;\\n}\\n\\n.editor__content p.is-empty:first-child::before {\\n\\tcontent: attr(data-empty-text);\\n\\tfloat: left;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tpointer-events: none;\\n\\theight: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { render, staticRenderFns } from \"./CollisionResolveDialog.vue?vue&type=template&id=7fd0186f&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=7fd0186f&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  \"7fd0186f\",\n  null\n  \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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-7fd0186f]{display:flex;position:fixed;z-index:10000;bottom:0;max-width:900px;width:100vw;margin:auto;padding:20px 0}#resolve-conflicts button[data-v-7fd0186f]{margin:auto;box-shadow:0 0 10px var(--color-box-shadow)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/CollisionResolveDialog.vue\"],\"names\":[],\"mappings\":\"AAwCA,oCACC,YAAa,CACb,cAAe,CACf,aAAc,CACd,QAAS,CACT,eAAgB,CAChB,WAAY,CACZ,WAAY,CACZ,cAAe,CARhB,2CAWE,WAAY,CACZ,2CAA4C\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#resolve-conflicts {\\n\\tdisplay: flex;\\n\\tposition: fixed;\\n\\tz-index: 10000;\\n\\tbottom: 0;\\n\\tmax-width: 900px;\\n\\twidth: 100vw;\\n\\tmargin: auto;\\n\\tpadding: 20px 0;\\n\\n\\tbutton {\\n\\t\\tmargin: auto;\\n\\t\\tbox-shadow: 0 0 10px var(--color-box-shadow);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'icon-loading': _vm.saving},attrs:{\"id\":\"direct-editor\"}},[_c('EditorWrapper',{ref:\"editor\",attrs:{\"initial-session\":_vm.initialSession,\"active\":true,\"mime\":_vm.initial.mimetype,\"is-direct-editing\":true},on:{\"ready\":_vm.loaded},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('button',{staticClass:\"icon-share\",on:{\"click\":_vm.share}}),_vm._v(\" \"),_c('button',{staticClass:\"icon-close\",on:{\"click\":_vm.close}})]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"editor-container\"}},[(_vm.currentSession && _vm.active)?_c('div',{staticClass:\"document-status\"},[(_vm.idle)?_c('p',{staticClass:\"msg icon-info\"},[_vm._v(\"\\n\\t\\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\\t\"+_vm._s(_vm.t('text', 'The document has been changed outside of the editor. The changes cannot be applied.'))+\"\\n\\t\\t\")]):(_vm.hasConnectionIssue)?_c('p',{staticClass:\"msg icon-info\"},[_vm._v(\"\\n\\t\\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._e(),_vm._v(\" \"),(_vm.currentSession && _vm.active)?_c('div',{class:{'has-conflicts': _vm.hasSyncCollission, 'icon-loading': !_vm.initialLoading && !_vm.hasConnectionIssue, 'richEditor': _vm.isRichEditor, 'show-color-annotations': _vm.showAuthorAnnotations},attrs:{\"id\":\"editor-wrapper\"}},[_c('div',{attrs:{\"id\":\"editor\"}},[(!_vm.syncError && !_vm.readOnly)?_c('MenuBar',{ref:\"menubar\",attrs:{\"editor\":_vm.tiptap,\"file-path\":_vm.relativePath,\"is-rich-editor\":_vm.isRichEditor,\"is-public\":_vm.isPublic,\"autohide\":_vm.autohide}},[(_vm.currentSession && _vm.active)?_c('div',{attrs:{\"id\":\"editor-session-list\"}},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.lastSavedStatusTooltip),expression:\"lastSavedStatusTooltip\"}],staticClass:\"save-status\",class:_vm.lastSavedStatusClass},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.lastSavedStatus)+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SessionList',{attrs:{\"sessions\":_vm.filteredSessions}},[(_vm.isPublic && _vm.currentSession.guestName)?_c('GuestNameDialog',{attrs:{\"sync-service\":_vm.syncService}}):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),_vm._t(\"header\")],2):_vm._e(),_vm._v(\" \"),_c('div',[(!_vm.readOnly && _vm.isRichEditor)?_c('MenuBubble',{attrs:{\"editor\":_vm.tiptap,\"file-path\":_vm.relativePath}}):_vm._e(),_vm._v(\" \"),_c('EditorContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.initialLoading),expression:\"initialLoading\"}],staticClass:\"editor__content\",attrs:{\"editor\":_vm.tiptap}})],1)],1),_vm._v(\" \"),(_vm.hasSyncCollission)?_c('ReadOnlyEditor',{attrs:{\"content\":_vm.syncError.data.outsideChange,\"is-rich-editor\":_vm.isRichEditor}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.hasSyncCollission && !_vm.readOnly)?_c('CollisionResolveDialog',{on:{\"resolveUseThisVersion\":_vm.resolveUseThisVersion,\"resolveUseServerVersion\":_vm.resolveUseServerVersion}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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!./EditorWrapper.vue?vue&type=style&index=0&id=681dd80c&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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!./EditorWrapper.vue?vue&type=style&index=1&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectEditing.vue?vue&type=style&index=0&id=3ea77884&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editor)?_c('EditorContent',{attrs:{\"id\":\"read-only-editor\",\"editor\":_vm.editor}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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!./ReadOnlyEditor.vue?vue&type=style&index=0&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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!./ReadOnlyEditor.vue?vue&type=style&index=1&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"collision-resolve-dialog\",attrs:{\"id\":\"resolve-conflicts\"}},[_c('button',{on:{\"click\":function($event){return _vm.$emit('resolveUseThisVersion')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use current version'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.$emit('resolveUseServerVersion')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('text', 'Use the saved version'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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=7fd0186f&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"image\",class:{'icon-loading': !_vm.loaded},attrs:{\"data-src\":_vm.src}},[(_vm.imageLoaded && _vm.isSupportedImage)?_c('div',{staticClass:\"image__view\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_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('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\"},domProps:{\"value\":_vm.alt},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.updateAlt()}}})])])],1):_c('div',{staticClass:\"image__placeholder\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],staticClass:\"image__main\"},[_c('a',{attrs:{\"href\":_vm.internalLinkOrImage,\"target\":\"_blank\"}},[_c('div',{staticClass:\"icon-image\",style:(_vm.mimeIcon)}),_vm._v(\" \"),(!_vm.isSupportedImage)?_c('p',[_vm._v(_vm._s(_vm.alt))]):_vm._e()])])]),_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\"},domProps:{\"value\":_vm.alt},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.updateAlt()}}})])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content 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=efec1cb6&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};"],"sourceRoot":""}