collabmd 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/public/assets/css/style.css +1 -1
  4. package/public/assets/js/chunks/chunk-GFDM7YCF.js +1 -0
  5. package/public/assets/js/chunks/editor-session-EAUBJCHH.js +22 -0
  6. package/public/assets/js/chunks/{preview-render-compiler-UZ4SZDQQ.js → preview-render-compiler-6Y7TKXFJ.js} +1 -1
  7. package/public/assets/js/chunks/{quick-switcher-controller-J7I3CUET.js → quick-switcher-controller-A6SKH5HI.js} +1 -1
  8. package/public/assets/js/{excalidraw-editor-ZDYKMZOL.js → excalidraw-editor-TCIH6GJL.js} +1 -1
  9. package/public/assets/js/excalidraw-editor.js +1 -1
  10. package/public/assets/js/main.js +68 -68
  11. package/public/assets/js/preview-render-worker.js +15 -15
  12. package/src/client/application/app-shell/git-feature.js +57 -18
  13. package/src/client/application/app-shell/ui-feature.js +4 -0
  14. package/src/client/bootstrap/collabmd-app-shell.js +12 -0
  15. package/src/client/domain/vault-utils.js +2 -2
  16. package/src/client/excalidraw-editor.js +2 -1
  17. package/src/client/infrastructure/editor-session.js +4 -0
  18. package/src/client/infrastructure/editor-view-adapter.js +181 -1
  19. package/src/client/infrastructure/workspace-sync-client.js +324 -0
  20. package/src/client/presentation/comment-ui-controller.js +192 -5
  21. package/src/client/presentation/file-explorer-controller.js +15 -3
  22. package/src/client/presentation/file-explorer-view.js +152 -11
  23. package/src/client/styles/style.css +46 -2
  24. package/src/domain/wiki-link-resolver.js +16 -5
  25. package/src/domain/workspace-change.js +68 -0
  26. package/src/domain/workspace-room.js +3 -0
  27. package/src/server/create-app-server.js +41 -10
  28. package/src/server/domain/backlink-index.js +94 -1
  29. package/src/server/domain/collaboration/collaboration-room.js +191 -22
  30. package/src/server/domain/collaboration/room-registry.js +64 -10
  31. package/src/server/infrastructure/git/responses.js +12 -19
  32. package/src/server/infrastructure/http/create-git-api-command-handler.js +53 -43
  33. package/src/server/infrastructure/http/create-git-api-handler.js +2 -0
  34. package/src/server/infrastructure/http/create-request-handler.js +7 -0
  35. package/src/server/infrastructure/http/create-vault-api-command-handler.js +58 -14
  36. package/src/server/infrastructure/http/create-vault-api-handler.js +3 -0
  37. package/src/server/infrastructure/http/create-vault-api-query-handler.js +3 -1
  38. package/src/server/infrastructure/http/http-response.js +65 -28
  39. package/src/server/infrastructure/persistence/vault-file-store.js +163 -52
  40. package/src/server/infrastructure/workspace/file-system-sync-service.js +488 -0
  41. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +551 -0
  42. package/public/assets/js/chunks/chunk-R3DDMJHH.js +0 -1
  43. package/public/assets/js/chunks/editor-session-TAV2VXTA.js +0 -22
@@ -0,0 +1,22 @@
1
+ import{b as Pn,g as Fn}from"./chunk-X6EEYWV4.js";import"./chunk-OOT2HALX.js";import"./chunk-NO7UPWTU.js";import"./chunk-CGVY4PKT.js";import{e as In,f as Rn,g as Vn}from"./chunk-OQLLZFFN.js";import{A as dn,Aa as we,Ba as Bn,C as U,Ca as En,D as x,E as fn,Ea as q,F as pn,Fa as Me,G as gn,H as yn,I as xn,J as Cn,K as Sn,N as mt,O as kn,P as bn,Q as Ln,R as vn,S as ke,a as ut,aa as f,b as F,c as sn,d as an,e as ln,g as cn,ga as be,h as hn,i as p,ia as Le,j as V,ja as c,k as K,ka as wn,l as ge,la as ve,m as ye,ma as le,n as O,na as dt,o as P,oa as ft,p as xe,q as v,r as se,s as ae,ta as Mn,u as un,v as mn,w as Ce,x as w,xa as An,y as Se,ya as Tn,z as C,za as Dn}from"./chunk-G7NUGGE7.js";import{A as ct,B as ie,D as tn,E as ht,F as nn,G as rn,H as on,c as Ht,d as Gt,e as Jt,f as Kt,g as Qt,h as ne,i as pe,j as re,k as Xt,l as G,m as I,n as N,o as R,p as at,q as J,r as lt,s as oe,t as Zt,y as en}from"./chunk-HEWVH67U.js";import"./chunk-775E65SU.js";function On({body:e,user:t}){return{body:e,createdAt:Date.now(),id:ht("comment"),peerId:t?.peerId??"",reactions:[],userColor:t?.color??"",userName:t?.name??"Anonymous"}}function Co(e,t){return e instanceof oe?e.get(t):e?.[t]}function So(e=[]){return Array.isArray(e)?e.map(t=>({emoji:typeof t?.emoji=="string"?t.emoji:"",users:Array.isArray(t?.users)?t.users.map(n=>({reactedAt:Number.isFinite(n?.reactedAt)?n.reactedAt:Date.now(),userColor:typeof n?.userColor=="string"?n.userColor:"",userId:typeof n?.userId=="string"?n.userId:"",userName:typeof n?.userName=="string"&&n.userName?n.userName:"Anonymous"})).filter(n=>n.userId):[]})).filter(t=>t.emoji&&t.users.length>0):[]}function ko(e,t){let n=t?.doc;if(!n)return null;let r=e?.anchor??e,o=r?.anchorKind==="text"?"text":"line",i=n.lines,s=Math.min(Math.max(Math.round(r?.startLine??1),1),i),a=Math.min(Math.max(Math.round(r?.endLine??s),s),i),l=n.line(s).from,h=n.line(a).to,m=Math.min(Math.max(Math.round(r?.startIndex??l),0),n.length),d=Math.min(Math.max(Math.round(r?.endIndex??h),m),n.length);return{anchorEndLine:a,anchorKind:o,anchorQuote:ie(r?.anchorQuote||n.sliceString(m,d)),anchorStartLine:s,endIndex:d,startIndex:m}}var Ae=class{constructor({getDoc:t,getEditorState:n,getLocalUser:r,onCommentsChange:o=null}){this.getDoc=t,this.getEditorState=n,this.getLocalUser=r,this.onCommentsChange=o,this.commentThreads=null,this.ydoc=null,this.ytext=null,this.handleCommentThreadsChange=null,this.handleTextChange=null}bind({commentThreads:t,ydoc:n,ytext:r}){this.unbind(),this.commentThreads=t,this.ydoc=n,this.ytext=r,this.handleCommentThreadsChange=()=>{this.emitCommentsChange()},this.handleTextChange=()=>{this.emitCommentsChange()},this.commentThreads.observeDeep(this.handleCommentThreadsChange),this.ytext?.observe?.(this.handleTextChange),this.emitCommentsChange()}unbind(){this.commentThreads&&this.handleCommentThreadsChange&&this.commentThreads.unobserveDeep(this.handleCommentThreadsChange),this.ytext&&this.handleTextChange&&this.ytext.unobserve(this.handleTextChange),this.commentThreads=null,this.ydoc=null,this.ytext=null,this.handleCommentThreadsChange=null,this.handleTextChange=null}emitCommentsChange(){this.onCommentsChange?.(this.getCommentThreads())}getCommentThreads(){return this.commentThreads?on(this.commentThreads).map(t=>this.resolveCommentThread(t)).filter(Boolean):[]}createCommentThread({anchor:t,body:n}){let r=this.getEditorState();if(!r||!this.commentThreads||!this.ytext||!this.ydoc)return null;let o=ct(n),i=ko(t,r);if(!o||!i)return null;let s=rn({anchorEnd:G(N(this.ytext,i.endIndex)),anchorEndLine:i.anchorEndLine,anchorKind:i.anchorKind,anchorQuote:i.anchorQuote,anchorStart:G(N(this.ytext,i.startIndex)),anchorStartLine:i.anchorStartLine,createdAt:Date.now(),createdByColor:this.getLocalUser()?.color??"",createdByName:this.getLocalUser()?.name??"Anonymous",createdByPeerId:this.getLocalUser()?.peerId??"",id:ht("thread"),messages:[On({body:o,user:this.getLocalUser()})]});return s?(this.ydoc.transact(()=>{this.commentThreads.push([s])},"comment-thread-create"),s.get("id")):null}replyToCommentThread(t,n){let r=ct(n);if(!r||!this.ydoc)return null;let i=this.findSharedCommentThread(t)?.get("messages");if(!(i instanceof lt))return null;let s=On({body:r,user:this.getLocalUser()});return this.ydoc.transact(()=>{i.push([s])},"comment-thread-reply"),s.id}toggleCommentReaction(t,n,r){if(!this.ydoc||!t||!n||typeof r!="string"||!r.trim())return!1;let o=this.getLocalUser?.(),i=typeof o?.userId=="string"?o.userId:"";if(!i)return!1;let a=this.findSharedCommentThread(t)?.get("messages");if(!(a instanceof lt))return!1;let l=a.toArray(),h=l.findIndex(y=>Co(y,"id")===n);if(h<0)return!1;let m=l[h]instanceof oe?l[h].toJSON():{...l[h]},d=So(m.reactions),g=d.findIndex(y=>y.emoji===r);if(g>=0){let y=d[g].users.filter(k=>k.userId!==i);y.length===d[g].users.length&&y.push({reactedAt:Date.now(),userColor:o?.color??"",userId:i,userName:o?.name??"Anonymous"}),y.length===0?d.splice(g,1):d[g]={...d[g],users:y}}else d.push({emoji:r,users:[{reactedAt:Date.now(),userColor:o?.color??"",userId:i,userName:o?.name??"Anonymous"}]});let S={...m,reactions:d};return this.ydoc.transact(()=>{a.delete(h,1),a.insert(h,[S])},"comment-reaction-toggle"),!0}deleteCommentThread(t){if(!this.commentThreads||!this.ydoc)return!1;let n=this.findSharedCommentThreadIndex(t);return n<0?!1:(this.ydoc.transact(()=>{this.commentThreads.delete(n,1)},"comment-thread-resolve"),!0)}findSharedCommentThread(t){return this.commentThreads?this.commentThreads.toArray().find(n=>n instanceof oe&&n.get("id")===t)??null:null}findSharedCommentThreadIndex(t){return this.commentThreads?this.commentThreads.toArray().findIndex(n=>n instanceof oe&&n.get("id")===t):-1}resolveCommentThread(t){let n=this.getEditorState();if(!t||!n||!this.ydoc)return null;let r=nn(t);if(!r)return null;let o=this.resolveCommentPosition(r.anchorStart),i=this.resolveCommentPosition(r.anchorEnd),s=o?.index??n.doc.line(r.anchorStartLine).from,a=Math.min(Math.max(r.anchorEndLine??r.anchorStartLine,r.anchorStartLine),n.doc.lines),l=i?.index??n.doc.line(a).to,h=n.doc.lineAt(s).number,m=Math.min(Math.max(l,s),n.doc.length),d=n.doc.lineAt(m).number,g=n.doc.sliceString(s,r.anchorKind==="text"?Math.max(l,s):n.doc.line(d).to),S=tn(g)||r.anchorQuote;return{...t,anchor:{endIndex:l,endLine:d,excerpt:S,quote:r.anchorQuote,startIndex:s,startLine:h,kind:r.anchorKind},anchorEnd:r.anchorEnd,anchorEndLine:r.anchorEndLine,anchorKind:r.anchorKind,anchorQuote:r.anchorQuote,anchorStart:r.anchorStart,anchorStartLine:r.anchorStartLine}}resolveCommentPosition(t){if(!t||!this.ydoc||!this.ytext)return null;try{let n=I(t),r=R(n,this.ydoc);return!r||r.type!==this.ytext?null:r}catch{return null}}};var Te=class{constructor({localUser:t=null,onAwarenessChange:n=null,onConnectionChange:r=null,onInitialSync:o=null,preferredUserName:i,resolveAwarenessCursor:s=null}){this.onAwarenessChange=n,this.onConnectionChange=r,this.onInitialSync=o,this.preferredUserName=i,this.providedLocalUser=t,this.resolveAwarenessCursor=s??(()=>null),this.provider=null,this.awareness=null,this.localUser=null,this.ydoc=null,this.ytext=null,this.commentThreads=null,this.wsBaseUrl="",this.initialSyncComplete=!1,this.initialSyncPromise=Promise.resolve(),this.resolveInitialSync=null}normalizeViewport(t){if(!t||typeof t!="object")return null;let n=Number(t.topLine),r=Number(t.viewportRatio);return!Number.isFinite(n)||n<1?null:{topLine:Math.max(1,Math.round(n)),viewportRatio:Number.isFinite(r)?Math.min(Math.max(r,0),1):.35}}async initialize(t){this.wsBaseUrl=Ht(),this.ydoc=new Xt,this.ytext=this.ydoc.getText("codemirror"),this.commentThreads=this.ydoc.getArray("comments");let n=new J(this.ytext),r=new Zt(this.wsBaseUrl,t,this.ydoc,{disableBc:!0,maxBackoffTime:5e3});en(r);let o=r.awareness,i=this.providedLocalUser??Jt(this.preferredUserName);this.provider=r,this.awareness=o,this.localUser=i,this.initialSyncComplete=!1,this.initialSyncPromise=new Promise(a=>{this.resolveInitialSync=a}),o.setLocalStateField("user",i),o.on("change",()=>{this.onAwarenessChange?.(this.collectUsers(this.resolveAwarenessCursor))}),this.trackConnectionStatus();let s=!1;return r.on("sync",a=>{!a||s||(s=!0,this.initialSyncComplete=!0,this.resolveInitialSync?.(),this.resolveInitialSync=null,this.onInitialSync?.())}),{awareness:o,commentThreads:this.commentThreads,localUser:this.localUser,undoManager:n,ydoc:this.ydoc,ytext:this.ytext}}destroy(){this.resolveInitialSync?.(),this.resolveInitialSync=null,this.initialSyncComplete=!1,this.initialSyncPromise=Promise.resolve(),this.provider?.disconnect(),this.provider?.destroy(),this.provider=null,this.awareness=null,this.localUser=null,this.ydoc?.destroy(),this.ydoc=null,this.ytext=null,this.commentThreads=null}waitForInitialSync(t=1500){return this.initialSyncComplete?Promise.resolve():Promise.race([this.initialSyncPromise,new Promise(n=>{window.setTimeout(n,t)})])}getText(){return this.ytext?.toString()??""}getLocalUser(){return this.localUser}setUserName(t){let n=Gt(t);return!n||!this.awareness||!this.localUser?null:(this.localUser={...this.localUser,name:n},this.awareness.setLocalStateField("user",this.localUser),n)}getUserCursor(t,n){if(!this.awareness)return null;let r=this.awareness.getStates().get(t);return n(r?.cursor)}getUserViewport(t){if(!this.awareness)return null;let n=this.awareness.getStates().get(t);return this.normalizeViewport(n?.viewport)}setLocalViewport(t){if(!this.awareness)return null;let n=this.normalizeViewport(t);return this.awareness.setLocalStateField("viewport",n),n}collectUsers(t=()=>null){if(!this.awareness)return[];let n=[];return this.awareness.getStates().forEach((r,o)=>{if(!r.user)return;let i=t(r.cursor);n.push({...i??{},...r.user,clientId:o,hasCursor:!!i,isLocal:o===this.awareness.clientID,viewport:this.normalizeViewport(r.viewport)})}),n}trackConnectionStatus(){if(!this.provider)return;let t=0,n=!1;this.provider.on("status",({status:r})=>{r==="connecting"&&(t+=1);let o=r==="connected"&&!n;r==="connected"&&(t=0,n=!0),this.onConnectionChange?.({attempts:t,firstConnection:o,hasEverConnected:n,status:r,unreachable:!n&&t>=3,wsBaseUrl:this.wsBaseUrl})})}};var bo=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=kt(e.state,n.from);return r.line?Lo(e):r.block?wo(e):!1};function St(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let o=e(t,n);return o?(r(n.update(o)),!0):!1}}var Lo=St(To,0);var vo=St(Yn,0);var wo=St((e,t)=>Yn(e,t,Ao(t)),0);function kt(e,t){let n=e.languageDataAt("commentTokens",t,1);return n.length?n[0]:{}}var ce=50;function Mo(e,{open:t,close:n},r,o){let i=e.sliceDoc(r-ce,r),s=e.sliceDoc(o,o+ce),a=/\s*$/.exec(i)[0].length,l=/^\s*/.exec(s)[0].length,h=i.length-a;if(i.slice(h-t.length,h)==t&&s.slice(l,l+n.length)==n)return{open:{pos:r-a,margin:a&&1},close:{pos:o+l,margin:l&&1}};let m,d;o-r<=2*ce?m=d=e.sliceDoc(r,o):(m=e.sliceDoc(r,r+ce),d=e.sliceDoc(o-ce,o));let g=/^\s*/.exec(m)[0].length,S=/\s*$/.exec(d)[0].length,y=d.length-S-n.length;return m.slice(g,g+t.length)==t&&d.slice(y,y+n.length)==n?{open:{pos:r+g+t.length,margin:/\s/.test(m.charAt(g+t.length))?1:0},close:{pos:o-S-n.length,margin:/\s/.test(d.charAt(y-1))?1:0}}:null}function Ao(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),o=n.to<=r.to?r:e.doc.lineAt(n.to);o.from>r.from&&o.from==n.to&&(o=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let i=t.length-1;i>=0&&t[i].to>r.from?t[i].to=o.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:o.to})}return t}function Yn(e,t,n=t.selection.ranges){let r=n.map(i=>kt(t,i.from).block);if(!r.every(i=>i))return null;let o=n.map((i,s)=>Mo(t,r[s],i.from,i.to));if(e!=2&&!o.every(i=>i))return{changes:t.changes(n.map((i,s)=>o[s]?[]:[{from:i.from,insert:r[s].open+" "},{from:i.to,insert:" "+r[s].close}]))};if(e!=1&&o.some(i=>i)){let i=[];for(let s=0,a;s<o.length;s++)if(a=o[s]){let l=r[s],{open:h,close:m}=a;i.push({from:h.pos-l.open.length,to:h.pos+h.margin},{from:m.pos-m.margin,to:m.pos+l.close.length})}return{changes:i}}return null}function To(e,t,n=t.selection.ranges){let r=[],o=-1;e:for(let{from:i,to:s}of n){let a=r.length,l=1e9,h;for(let m=i;m<=s;){let d=t.doc.lineAt(m);if(h==null&&(h=kt(t,d.from).line,!h))continue e;if(d.from>o&&(i==s||s>d.from)){o=d.from;let g=/^\s*/.exec(d.text)[0].length,S=g==d.length,y=d.text.slice(g,g+h.length)==h?g:-1;g<d.text.length&&g<l&&(l=g),r.push({line:d,comment:y,token:h,indent:g,empty:S,single:!1})}m=d.to+1}if(l<1e9)for(let m=a;m<r.length;m++)r[m].indent<r[m].line.text.length&&(r[m].indent=l);r.length==a+1&&(r[a].single=!0)}if(e!=2&&r.some(i=>i.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:a,token:l,indent:h,empty:m,single:d}of r)(d||!m)&&i.push({from:a.from+h,insert:l+" "});let s=t.changes(i);return{changes:s,selection:t.selection.map(s,1)}}else if(e!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:s,comment:a,token:l}of r)if(a>=0){let h=s.from+a,m=h+l.length;s.text[m-s.from]==" "&&m++,i.push({from:h,to:m})}return{changes:i}}return null}var gt=O.define(),Do=O.define(),Bo=V.define(),Hn=V.define({combine(e){return ae(e,{minDepth:100,newGroupDelay:500,joinToEvent:(t,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,n)=>(r,o)=>t(r,o)||n(r,o)})}}),Gn=K.define({create(){return Y.empty},update(e,t){let n=t.state.facet(Hn),r=t.annotation(gt);if(r){let l=D.fromTransaction(t,r.selection),h=r.side,m=h==0?e.undone:e.done;return l?m=Be(m,m.length,n.minDepth,l):m=Xn(m,t.startState.selection),new Y(h==0?r.rest:m,h==0?m:r.rest)}let o=t.annotation(Do);if((o=="full"||o=="before")&&(e=e.isolate()),t.annotation(xe.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let i=D.fromTransaction(t),s=t.annotation(xe.time),a=t.annotation(xe.userEvent);return i?e=e.addChanges(i,s,a,n,t):t.selection&&(e=e.addSelection(t.startState.selection,s,a,n.newGroupDelay)),(o=="full"||o=="after")&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(t=>t.toJSON()),undone:e.undone.map(t=>t.toJSON())}},fromJSON(e){return new Y(e.done.map(D.fromJSON),e.undone.map(D.fromJSON))}});function Jn(e={}){return[Gn,Hn.of(e),x.domEventHandlers({beforeinput(t,n){let r=t.inputType=="historyUndo"?Kn:t.inputType=="historyRedo"?yt:null;return r?(t.preventDefault(),r(n)):!1}})]}function Ee(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let o=n.field(Gn,!1);if(!o)return!1;let i=o.pop(e,n,t);return i?(r(i),!0):!1}}var Kn=Ee(0,!1),yt=Ee(1,!1),Eo=Ee(0,!0),Io=Ee(1,!0);var D=class e{constructor(t,n,r,o,i){this.changes=t,this.effects=n,this.mapped=r,this.startSelection=o,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,n,r;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(o=>o.toJSON())}}static fromJSON(t){return new e(t.changes&&hn.fromJSON(t.changes),[],t.mapped&&cn.fromJSON(t.mapped),t.startSelection&&p.fromJSON(t.startSelection),t.selectionsAfter.map(p.fromJSON))}static fromTransaction(t,n){let r=A;for(let o of t.startState.facet(Bo)){let i=o(t);i.length&&(r=r.concat(i))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,A)}static selection(t){return new e(void 0,A,void 0,void 0,t)}};function Be(e,t,n,r){let o=t+1>n+20?t-n-1:0,i=e.slice(o,t);return i.push(r),i}function Ro(e,t){let n=[],r=!1;return e.iterChangedRanges((o,i)=>n.push(o,i)),t.iterChangedRanges((o,i,s,a)=>{for(let l=0;l<n.length;){let h=n[l++],m=n[l++];a>=h&&s<=m&&(r=!0)}}),r}function Vo(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((n,r)=>n.empty!=t.ranges[r].empty).length===0}function Qn(e,t){return e.length?t.length?e.concat(t):e:t}var A=[],Po=200;function Xn(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Po));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),Be(e,e.length-1,1e9,n.setSelAfter(r)))}else return[D.selection([t])]}function Fo(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function pt(e,t){if(!e.length)return e;let n=e.length,r=A;for(;n;){let o=Oo(e[n-1],t,r);if(o.changes&&!o.changes.empty||o.effects.length){let i=e.slice(0,n);return i[n-1]=o,i}else t=o.mapped,n--,r=o.selectionsAfter}return r.length?[D.selection(r)]:A}function Oo(e,t,n){let r=Qn(e.selectionsAfter.length?e.selectionsAfter.map(a=>a.map(t)):A,n);if(!e.changes)return D.selection(r);let o=e.changes.map(t),i=t.mapDesc(e.changes,!0),s=e.mapped?e.mapped.composeDesc(i):i;return new D(o,P.mapEffects(e.effects,t),s,e.startSelection.map(i),r)}var Uo=/^(input\.type|delete)($|\.)/,Y=class e{constructor(t,n,r=0,o=void 0){this.done=t,this.undone=n,this.prevTime=r,this.prevUserEvent=o}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,o,i){let s=this.done,a=s[s.length-1];return a&&a.changes&&!a.changes.empty&&t.changes&&(!r||Uo.test(r))&&(!a.selectionsAfter.length&&n-this.prevTime<o.newGroupDelay&&o.joinToEvent(i,Ro(a.changes,t.changes))||r=="input.type.compose")?s=Be(s,s.length-1,o.minDepth,new D(t.changes.compose(a.changes),Qn(P.mapEffects(t.effects,a.changes),a.effects),a.mapped,a.startSelection,A)):s=Be(s,s.length,o.minDepth,t),new e(s,A,n,r)}addSelection(t,n,r,o){let i=this.done.length?this.done[this.done.length-1].selectionsAfter:A;return i.length>0&&n-this.prevTime<o&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&Vo(i[i.length-1],t)?this:new e(Xn(this.done,t),this.undone,n,r)}addMapping(t){return new e(pt(this.done,t),pt(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,n,r){let o=t==0?this.done:this.undone;if(o.length==0)return null;let i=o[o.length-1],s=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):n.selection);if(r&&i.selectionsAfter.length)return n.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:gt.of({side:t,rest:Fo(o),selection:s}),userEvent:t==0?"select.undo":"select.redo",scrollIntoView:!0});if(i.changes){let a=o.length==1?A:o.slice(0,o.length-1);return i.mapped&&(a=pt(a,i.mapped)),n.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:gt.of({side:t,rest:a,selection:s}),filter:!1,userEvent:t==0?"undo":"redo",scrollIntoView:!0})}else return null}};Y.empty=new Y(A,A);var Zn=[{key:"Mod-z",run:Kn,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:yt,preventDefault:!0},{linux:"Ctrl-Shift-z",run:yt,preventDefault:!0},{key:"Mod-u",run:Eo,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Io,preventDefault:!0}];function X(e,t){return p.create(e.ranges.map(t),e.mainIndex)}function B(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:"select"})}function E({state:e,dispatch:t},n){let r=X(e.selection,n);return r.eq(e.selection,!0)?!1:(t(B(e,r)),!0)}function Ie(e,t){return p.cursor(t?e.to:e.from)}function er(e,t){return E(e,n=>n.empty?e.moveByChar(n,t):Ie(n,t))}function L(e){return e.textDirectionAt(e.state.selection.main.head)==dn.LTR}var tr=e=>er(e,!L(e)),nr=e=>er(e,L(e));function rr(e,t){return E(e,n=>n.empty?e.moveByGroup(n,t):Ie(n,t))}var No=e=>rr(e,!L(e)),Wo=e=>rr(e,L(e));var Zs=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $o(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function Re(e,t,n){let r=be(e).resolveInner(t.head),o=n?ke.closedBy:ke.openedBy;for(let l=t.head;;){let h=n?r.childAfter(l):r.childBefore(l);if(!h)break;$o(e,h,o)?r=h:l=n?h.to:h.from}let i=r.type.prop(o),s,a;return i&&(s=n?q(e,r.from,1):q(e,r.to,-1))&&s.matched?a=n?s.end.to:s.end.from:a=n?r.to:r.from,p.cursor(a,n?-1:1)}var _o=e=>E(e,t=>Re(e.state,t,!L(e))),zo=e=>E(e,t=>Re(e.state,t,L(e)));function or(e,t){return E(e,n=>{if(!n.empty)return Ie(n,t);let r=e.moveVertically(n,t);return r.head!=n.head?r:e.moveToLineBoundary(n,t)})}var ir=e=>or(e,!1),sr=e=>or(e,!0);function ar(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,o;if(t){for(let i of e.state.facet(x.scrollMargins)){let s=i(e);s?.top&&(n=Math.max(s?.top,n)),s?.bottom&&(r=Math.max(s?.bottom,r))}o=e.scrollDOM.clientHeight-n-r}else o=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,o-5)}}function lr(e,t){let n=ar(e),{state:r}=e,o=X(r.selection,s=>s.empty?e.moveVertically(s,t,n.height):Ie(s,t));if(o.eq(r.selection))return!1;let i;if(n.selfScroll){let s=e.coordsAtPos(r.selection.main.head),a=e.scrollDOM.getBoundingClientRect(),l=a.top+n.marginTop,h=a.bottom-n.marginBottom;s&&s.top>l&&s.bottom<h&&(i=x.scrollIntoView(o.main.head,{y:"start",yMargin:s.top-l}))}return e.dispatch(B(r,o),{effects:i}),!0}var Un=e=>lr(e,!1),xt=e=>lr(e,!0);function W(e,t,n){let r=e.lineBlockAt(t.head),o=e.moveToLineBoundary(t,n);if(o.head==t.head&&o.head!=(n?r.to:r.from)&&(o=e.moveToLineBoundary(t,n,!1)),!n&&o.head==r.from&&r.length){let i=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&t.head!=r.from+i&&(o=p.cursor(r.from+i))}return o}var jo=e=>E(e,t=>W(e,t,!0)),qo=e=>E(e,t=>W(e,t,!1)),Yo=e=>E(e,t=>W(e,t,!L(e))),Ho=e=>E(e,t=>W(e,t,L(e))),Go=e=>E(e,t=>p.cursor(e.lineBlockAt(t.head).from,1)),Jo=e=>E(e,t=>p.cursor(e.lineBlockAt(t.head).to,-1));function Ko(e,t,n){let r=!1,o=X(e.selection,i=>{let s=q(e,i.head,-1)||q(e,i.head,1)||i.head>0&&q(e,i.head-1,1)||i.head<e.doc.length&&q(e,i.head+1,-1);if(!s||!s.end)return i;r=!0;let a=s.start.from==i.head?s.end.to:s.end.from;return n?p.range(i.anchor,a):p.cursor(a)});return r?(t(B(e,o)),!0):!1}var Qo=({state:e,dispatch:t})=>Ko(e,t,!1);function T(e,t){let n=X(e.state.selection,r=>{let o=t(r);return p.range(r.anchor,o.head,o.goalColumn,o.bidiLevel||void 0)});return n.eq(e.state.selection)?!1:(e.dispatch(B(e.state,n)),!0)}function cr(e,t){return T(e,n=>e.moveByChar(n,t))}var hr=e=>cr(e,!L(e)),ur=e=>cr(e,L(e));function mr(e,t){return T(e,n=>e.moveByGroup(n,t))}var Xo=e=>mr(e,!L(e)),Zo=e=>mr(e,L(e));var ei=e=>T(e,t=>Re(e.state,t,!L(e))),ti=e=>T(e,t=>Re(e.state,t,L(e)));function dr(e,t){return T(e,n=>e.moveVertically(n,t))}var fr=e=>dr(e,!1),pr=e=>dr(e,!0);function gr(e,t){return T(e,n=>e.moveVertically(n,t,ar(e).height))}var Nn=e=>gr(e,!1),Wn=e=>gr(e,!0),ni=e=>T(e,t=>W(e,t,!0)),ri=e=>T(e,t=>W(e,t,!1)),oi=e=>T(e,t=>W(e,t,!L(e))),ii=e=>T(e,t=>W(e,t,L(e))),si=e=>T(e,t=>p.cursor(e.lineBlockAt(t.head).from)),ai=e=>T(e,t=>p.cursor(e.lineBlockAt(t.head).to)),$n=({state:e,dispatch:t})=>(t(B(e,{anchor:0})),!0),_n=({state:e,dispatch:t})=>(t(B(e,{anchor:e.doc.length})),!0),zn=({state:e,dispatch:t})=>(t(B(e,{anchor:e.selection.main.anchor,head:0})),!0),jn=({state:e,dispatch:t})=>(t(B(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),li=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:"select"})),!0),ci=({state:e,dispatch:t})=>{let n=Ve(e).map(({from:r,to:o})=>p.range(r,Math.min(o+1,e.doc.length)));return t(e.update({selection:p.create(n),userEvent:"select"})),!0},hi=({state:e,dispatch:t})=>{let n=X(e.selection,r=>{let o=be(e),i=o.resolveStack(r.from,1);if(r.empty){let s=o.resolveStack(r.from,-1);s.node.from>=i.node.from&&s.node.to<=i.node.to&&(i=s)}for(let s=i;s;s=s.next){let{node:a}=s;if((a.from<r.from&&a.to>=r.to||a.to>r.to&&a.from<=r.from)&&s.next)return p.range(a.to,a.from)}return r});return n.eq(e.selection)?!1:(t(B(e,n)),!0)};function yr(e,t){let{state:n}=e,r=n.selection,o=n.selection.ranges.slice();for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head);if(t?s.to<e.state.doc.length:s.from>0)for(let a=i;;){let l=e.moveVertically(a,t);if(l.head<s.from||l.head>s.to){o.some(h=>h.head==l.head)||o.push(l);break}else{if(l.head==a.head)break;a=l}}}return o.length==r.ranges.length?!1:(e.dispatch(B(n,p.create(o,o.length-1))),!0)}var ui=e=>yr(e,!1),mi=e=>yr(e,!0),di=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=p.create([n.main]):n.main.empty||(r=p.create([p.cursor(n.main.head)])),r?(t(B(e,r)),!0):!1};function he(e,t){if(e.state.readOnly)return!1;let n="delete.selection",{state:r}=e,o=r.changeByRange(i=>{let{from:s,to:a}=i;if(s==a){let l=t(i);l<s?(n="delete.backward",l=De(e,l,!1)):l>s&&(n="delete.forward",l=De(e,l,!0)),s=Math.min(s,l),a=Math.max(a,l)}else s=De(e,s,!1),a=De(e,a,!0);return s==a?{range:i}:{changes:{from:s,to:a},range:p.cursor(s,s<i.head?-1:1)}});return o.changes.empty?!1:(e.dispatch(r.update(o,{scrollIntoView:!0,userEvent:n,effects:n=="delete.selection"?x.announce.of(r.phrase("Selection deleted")):void 0})),!0)}function De(e,t,n){if(e instanceof x)for(let r of e.state.facet(x.atomicRanges).map(o=>o(e)))r.between(t,t,(o,i)=>{o<t&&i>t&&(t=n?i:o)});return t}var xr=(e,t,n)=>he(e,r=>{let o=r.from,{state:i}=e,s=i.doc.lineAt(o),a,l;if(n&&!t&&o>s.from&&o<s.from+200&&!/[^ \t]/.test(a=s.text.slice(0,o-s.from))){if(a[a.length-1]==" ")return o-1;let h=Ce(a,i.tabSize),m=h%ve(i)||ve(i);for(let d=0;d<m&&a[a.length-1-d]==" ";d++)o--;l=o}else l=F(s.text,o-s.from,t,t)+s.from,l==o&&s.number!=(t?i.doc.lines:1)?l+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(s.text.slice(l-s.from,o-s.from))&&(l=F(s.text,l-s.from,!1,!1)+s.from);return l}),Ct=e=>xr(e,!1,!0);var Cr=e=>xr(e,!0,!1),Sr=(e,t)=>he(e,n=>{let r=n.head,{state:o}=e,i=o.doc.lineAt(r),s=o.charCategorizer(r);for(let a=null;;){if(r==(t?i.to:i.from)){r==n.head&&i.number!=(t?o.doc.lines:1)&&(r+=t?1:-1);break}let l=F(i.text,r-i.from,t)+i.from,h=i.text.slice(Math.min(r,l)-i.from,Math.max(r,l)-i.from),m=s(h);if(a!=null&&m!=a)break;(h!=" "||r!=n.head)&&(a=m),r=l}return r}),kr=e=>Sr(e,!1),fi=e=>Sr(e,!0);var pi=e=>he(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)});var gi=e=>he(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),yi=e=>he(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)});var xi=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:ut.of(["",""])},range:p.cursor(r.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},Ci=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(r=>{if(!r.empty||r.from==0||r.from==e.doc.length)return{range:r};let o=r.from,i=e.doc.lineAt(o),s=o==i.from?o-1:F(i.text,o-i.from,!1)+i.from,a=o==i.to?o+1:F(i.text,o-i.from,!0)+i.from;return{changes:{from:s,to:a,insert:e.doc.slice(o,a).append(e.doc.slice(s,o))},range:p.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Ve(e){let t=[],n=-1;for(let r of e.selection.ranges){let o=e.doc.lineAt(r.from),i=e.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=e.doc.lineAt(r.to-1)),n>=o.number){let s=t[t.length-1];s.to=i.to,s.ranges.push(r)}else t.push({from:o.from,to:i.to,ranges:[r]});n=i.number+1}return t}function br(e,t,n){if(e.readOnly)return!1;let r=[],o=[];for(let i of Ve(e)){if(n?i.to==e.doc.length:i.from==0)continue;let s=e.doc.lineAt(n?i.to+1:i.from-1),a=s.length+1;if(n){r.push({from:i.to,to:s.to},{from:i.from,insert:s.text+e.lineBreak});for(let l of i.ranges)o.push(p.range(Math.min(e.doc.length,l.anchor+a),Math.min(e.doc.length,l.head+a)))}else{r.push({from:s.from,to:i.from},{from:i.to,insert:e.lineBreak+s.text});for(let l of i.ranges)o.push(p.range(l.anchor-a,l.head-a))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:p.create(o,e.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Si=({state:e,dispatch:t})=>br(e,t,!1),ki=({state:e,dispatch:t})=>br(e,t,!0);function Lr(e,t,n){if(e.readOnly)return!1;let r=[];for(let i of Ve(e))n?r.push({from:i.from,insert:e.doc.slice(i.from,i.to)+e.lineBreak}):r.push({from:i.to,insert:e.lineBreak+e.doc.slice(i.from,i.to)});let o=e.changes(r);return t(e.update({changes:o,selection:e.selection.map(o,n?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var bi=({state:e,dispatch:t})=>Lr(e,t,!1),Li=({state:e,dispatch:t})=>Lr(e,t,!0),vi=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(Ve(t).map(({from:o,to:i})=>(o>0?o--:i<t.doc.length&&i++,{from:o,to:i}))),r=X(t.selection,o=>{let i;if(e.lineWrapping){let s=e.lineBlockAt(o.head),a=e.coordsAtPos(o.head,o.assoc||1);a&&(i=s.bottom+e.documentTop-a.bottom+e.defaultLineHeight/2)}return e.moveVertically(o,!0,i)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function wi(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=be(e).resolveInner(t),r=n.childBefore(t),o=n.childAfter(t),i;return r&&o&&r.to<=t&&o.from>=t&&(i=r.type.prop(ke.closedBy))&&i.indexOf(o.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(o.from).from&&!/\S/.test(e.sliceDoc(r.to,o.from))?{from:r.to,to:o.from}:null}var qn=vr(!1),Mi=vr(!0);function vr(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(o=>{let{from:i,to:s}=o,a=t.doc.lineAt(i),l=!e&&i==s&&wi(t,i);e&&(i=s=(s<=a.to?a:t.doc.lineAt(s)).to);let h=new ft(t,{simulateBreak:i,simulateDoubleBreak:!!l}),m=dt(h,i);for(m==null&&(m=Ce(/^\s*/.exec(t.doc.lineAt(i).text)[0],t.tabSize));s<a.to&&/\s/.test(a.text[s-a.from]);)s++;l?{from:i,to:s}=l:i>a.from&&i<a.from+100&&!/\S/.test(a.text.slice(0,i))&&(i=a.from);let d=["",le(t,m)];return l&&d.push(le(t,h.lineIndent(a.from,-1))),{changes:{from:i,to:s,insert:ut.of(d)},range:p.cursor(i+1+d[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:"input"})),!0}}function bt(e,t){let n=-1;return e.changeByRange(r=>{let o=[];for(let s=r.from;s<=r.to;){let a=e.doc.lineAt(s);a.number>n&&(r.empty||r.to>a.from)&&(t(a,o,r),n=a.number),s=a.to+1}let i=e.changes(o);return{changes:o,range:p.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}var Ai=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new ft(e,{overrideIndentation:i=>{let s=n[i];return s??-1}}),o=bt(e,(i,s,a)=>{let l=dt(r,i.from);if(l==null)return;/\S/.test(i.text)||(l=0);let h=/^\s*/.exec(i.text)[0],m=le(e,l);(h!=m||a.from<i.from+h.length)&&(n[i.from]=l,s.push({from:i.from,to:i.from+h.length,insert:m}))});return o.changes.empty||t(e.update(o,{userEvent:"indent"})),!0},wr=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(bt(e,(n,r)=>{r.push({from:n.from,insert:e.facet(wn)})}),{userEvent:"input.indent"})),!0),Mr=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(bt(e,(n,r)=>{let o=/^\s*/.exec(n.text)[0];if(!o)return;let i=Ce(o,e.tabSize),s=0,a=le(e,Math.max(0,i-ve(e)));for(;s<o.length&&s<a.length&&o.charCodeAt(s)==a.charCodeAt(s);)s++;r.push({from:n.from+s,to:n.from+o.length,insert:a.slice(s)})}),{userEvent:"delete.dedent"})),!0),Ti=e=>(e.setTabFocusMode(),!0);var Di=[{key:"Ctrl-b",run:tr,shift:hr,preventDefault:!0},{key:"Ctrl-f",run:nr,shift:ur},{key:"Ctrl-p",run:ir,shift:fr},{key:"Ctrl-n",run:sr,shift:pr},{key:"Ctrl-a",run:Go,shift:si},{key:"Ctrl-e",run:Jo,shift:ai},{key:"Ctrl-d",run:Cr},{key:"Ctrl-h",run:Ct},{key:"Ctrl-k",run:pi},{key:"Ctrl-Alt-h",run:kr},{key:"Ctrl-o",run:xi},{key:"Ctrl-t",run:Ci},{key:"Ctrl-v",run:xt}],Bi=[{key:"ArrowLeft",run:tr,shift:hr,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:No,shift:Xo,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yo,shift:oi,preventDefault:!0},{key:"ArrowRight",run:nr,shift:ur,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Wo,shift:Zo,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Ho,shift:ii,preventDefault:!0},{key:"ArrowUp",run:ir,shift:fr,preventDefault:!0},{mac:"Cmd-ArrowUp",run:$n,shift:zn},{mac:"Ctrl-ArrowUp",run:Un,shift:Nn},{key:"ArrowDown",run:sr,shift:pr,preventDefault:!0},{mac:"Cmd-ArrowDown",run:_n,shift:jn},{mac:"Ctrl-ArrowDown",run:xt,shift:Wn},{key:"PageUp",run:Un,shift:Nn},{key:"PageDown",run:xt,shift:Wn},{key:"Home",run:qo,shift:ri,preventDefault:!0},{key:"Mod-Home",run:$n,shift:zn},{key:"End",run:jo,shift:ni,preventDefault:!0},{key:"Mod-End",run:_n,shift:jn},{key:"Enter",run:qn,shift:qn},{key:"Mod-a",run:li},{key:"Backspace",run:Ct,shift:Ct,preventDefault:!0},{key:"Delete",run:Cr,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:kr,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:fi,preventDefault:!0},{mac:"Mod-Backspace",run:gi,preventDefault:!0},{mac:"Mod-Delete",run:yi,preventDefault:!0}].concat(Di.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Ar=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:_o,shift:ei},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:zo,shift:ti},{key:"Alt-ArrowUp",run:Si},{key:"Shift-Alt-ArrowUp",run:bi},{key:"Alt-ArrowDown",run:ki},{key:"Shift-Alt-ArrowDown",run:Li},{key:"Mod-Alt-ArrowUp",run:ui},{key:"Mod-Alt-ArrowDown",run:mi},{key:"Escape",run:di},{key:"Mod-Enter",run:Mi},{key:"Alt-l",mac:"Ctrl-l",run:ci},{key:"Mod-i",run:hi,preventDefault:!0},{key:"Mod-[",run:Mr},{key:"Mod-]",run:wr},{key:"Mod-Alt-\\",run:Ai},{key:"Shift-Mod-k",run:vi},{key:"Shift-Mod-\\",run:Qo},{key:"Mod-/",run:bo},{key:"Alt-A",run:vo},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ti}].concat(Bi),Tr={key:"Tab",run:wr,shift:Mr};function u(e){return new Le(Me.define(e))}function $(e){return import("./dist-DPBSGC3Y.js").then(t=>t.sql({dialect:t[e]}))}var Dr=[c.of({name:"C",extensions:["c","h","ino"],load(){return import("./dist-IQA4KVJK.js").then(e=>e.cpp())}}),c.of({name:"C++",alias:["cpp"],extensions:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],load(){return import("./dist-IQA4KVJK.js").then(e=>e.cpp())}}),c.of({name:"CQL",alias:["cassandra"],extensions:["cql"],load(){return $("Cassandra")}}),c.of({name:"CSS",extensions:["css"],load(){return import("./dist-HAB5NIXI.js").then(e=>e.css())}}),c.of({name:"Go",extensions:["go"],load(){return import("./dist-7RQKSOUX.js").then(e=>e.go())}}),c.of({name:"HTML",alias:["xhtml"],extensions:["html","htm","handlebars","hbs"],load(){return import("./dist-XOODBV4L.js").then(e=>e.html())}}),c.of({name:"Java",extensions:["java"],load(){return import("./dist-RCQFQRLD.js").then(e=>e.java())}}),c.of({name:"JavaScript",alias:["ecmascript","js","node"],extensions:["js","mjs","cjs"],load(){return import("./dist-ERADYPEK.js").then(e=>e.javascript())}}),c.of({name:"Jinja",extensions:["j2","jinja","jinja2"],load(){return import("./dist-E5NM7OBW.js").then(e=>e.jinja())}}),c.of({name:"JSON",alias:["json5"],extensions:["json","map"],load(){return import("./dist-F43RIHBZ.js").then(e=>e.json())}}),c.of({name:"JSX",extensions:["jsx"],load(){return import("./dist-ERADYPEK.js").then(e=>e.javascript({jsx:!0}))}}),c.of({name:"LESS",extensions:["less"],load(){return import("./dist-ZFZNCRZY.js").then(e=>e.less())}}),c.of({name:"Liquid",extensions:["liquid"],load(){return import("./dist-RSJGLSKC.js").then(e=>e.liquid())}}),c.of({name:"MariaDB SQL",load(){return $("MariaSQL")}}),c.of({name:"Markdown",extensions:["md","markdown","mkd"],load(){return import("./dist-RQLC4GVI.js").then(e=>e.markdown())}}),c.of({name:"MS SQL",load(){return $("MSSQL")}}),c.of({name:"MySQL",load(){return $("MySQL")}}),c.of({name:"PHP",extensions:["php","php3","php4","php5","php7","phtml"],load(){return import("./dist-HG23OLRA.js").then(e=>e.php())}}),c.of({name:"PLSQL",extensions:["pls"],load(){return $("PLSQL")}}),c.of({name:"PostgreSQL",load(){return $("PostgreSQL")}}),c.of({name:"Python",extensions:["BUILD","bzl","py","pyw"],filename:/^(BUCK|BUILD)$/,load(){return import("./dist-OIQTNVT2.js").then(e=>e.python())}}),c.of({name:"Rust",extensions:["rs"],load(){return import("./dist-VCFTF7Z6.js").then(e=>e.rust())}}),c.of({name:"Sass",extensions:["sass"],load(){return import("./dist-ARWGZ6MN.js").then(e=>e.sass({indented:!0}))}}),c.of({name:"SCSS",extensions:["scss"],load(){return import("./dist-ARWGZ6MN.js").then(e=>e.sass())}}),c.of({name:"SQL",extensions:["sql"],load(){return $("StandardSQL")}}),c.of({name:"SQLite",load(){return $("SQLite")}}),c.of({name:"TSX",extensions:["tsx"],load(){return import("./dist-ERADYPEK.js").then(e=>e.javascript({jsx:!0,typescript:!0}))}}),c.of({name:"TypeScript",alias:["ts"],extensions:["ts","mts","cts"],load(){return import("./dist-ERADYPEK.js").then(e=>e.javascript({typescript:!0}))}}),c.of({name:"WebAssembly",extensions:["wat","wast"],load(){return import("./dist-PMZJ734S.js").then(e=>e.wast())}}),c.of({name:"XML",alias:["rss","wsdl","xsd"],extensions:["xml","xsl","xsd","svg"],load(){return import("./dist-IEJXBSDJ.js").then(e=>e.xml())}}),c.of({name:"YAML",alias:["yml"],extensions:["yaml","yml"],load(){return import("./dist-VTO23SHH.js").then(e=>e.yaml())}}),c.of({name:"APL",extensions:["dyalog","apl"],load(){return import("./apl-C5P5JBDI.js").then(e=>u(e.apl))}}),c.of({name:"PGP",alias:["asciiarmor"],extensions:["asc","pgp","sig"],load(){return import("./asciiarmor-3NCLLELT.js").then(e=>u(e.asciiArmor))}}),c.of({name:"ASN.1",extensions:["asn","asn1"],load(){return import("./asn1-KF4WXU3M.js").then(e=>u(e.asn1({})))}}),c.of({name:"Asterisk",filename:/^extensions\.conf$/i,load(){return import("./asterisk-EA3VIN65.js").then(e=>u(e.asterisk))}}),c.of({name:"Brainfuck",extensions:["b","bf"],load(){return import("./brainfuck-A3CTQVFD.js").then(e=>u(e.brainfuck))}}),c.of({name:"Cobol",extensions:["cob","cpy"],load(){return import("./cobol-V6EIK6DN.js").then(e=>u(e.cobol))}}),c.of({name:"C#",alias:["csharp","cs"],extensions:["cs"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.csharp))}}),c.of({name:"Clojure",extensions:["clj","cljc","cljx"],load(){return import("./clojure-BR2VJ2JI.js").then(e=>u(e.clojure))}}),c.of({name:"ClojureScript",extensions:["cljs"],load(){return import("./clojure-BR2VJ2JI.js").then(e=>u(e.clojure))}}),c.of({name:"Closure Stylesheets (GSS)",extensions:["gss"],load(){return import("./css-C5DVWGB4.js").then(e=>u(e.gss))}}),c.of({name:"CMake",extensions:["cmake","cmake.in"],filename:/^CMakeLists\.txt$/,load(){return import("./cmake-2HEWVFEE.js").then(e=>u(e.cmake))}}),c.of({name:"CoffeeScript",alias:["coffee","coffee-script"],extensions:["coffee"],load(){return import("./coffeescript-JW3ZOGMD.js").then(e=>u(e.coffeeScript))}}),c.of({name:"Common Lisp",alias:["lisp"],extensions:["cl","lisp","el"],load(){return import("./commonlisp-UCWSIHYK.js").then(e=>u(e.commonLisp))}}),c.of({name:"Cypher",extensions:["cyp","cypher"],load(){return import("./cypher-K7FZM5GC.js").then(e=>u(e.cypher))}}),c.of({name:"Cython",extensions:["pyx","pxd","pxi"],load(){return import("./python-6YGH4S47.js").then(e=>u(e.cython))}}),c.of({name:"Crystal",extensions:["cr"],load(){return import("./crystal-GR4VLC3M.js").then(e=>u(e.crystal))}}),c.of({name:"D",extensions:["d"],load(){return import("./d-CF3QNNH5.js").then(e=>u(e.d))}}),c.of({name:"Dart",extensions:["dart"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.dart))}}),c.of({name:"diff",extensions:["diff","patch"],load(){return import("./diff-KOMSZU7O.js").then(e=>u(e.diff))}}),c.of({name:"Dockerfile",filename:/^Dockerfile$/,load(){return import("./dockerfile-XCIKYOSI.js").then(e=>u(e.dockerFile))}}),c.of({name:"DTD",extensions:["dtd"],load(){return import("./dtd-3XFH7W6Z.js").then(e=>u(e.dtd))}}),c.of({name:"Dylan",extensions:["dylan","dyl","intr"],load(){return import("./dylan-3UWPKVOR.js").then(e=>u(e.dylan))}}),c.of({name:"EBNF",load(){return import("./ebnf-OLHTL3VN.js").then(e=>u(e.ebnf))}}),c.of({name:"ECL",extensions:["ecl"],load(){return import("./ecl-43LZ3ZRM.js").then(e=>u(e.ecl))}}),c.of({name:"edn",extensions:["edn"],load(){return import("./clojure-BR2VJ2JI.js").then(e=>u(e.clojure))}}),c.of({name:"Eiffel",extensions:["e"],load(){return import("./eiffel-ISPO2UJF.js").then(e=>u(e.eiffel))}}),c.of({name:"Elm",extensions:["elm"],load(){return import("./elm-CLK576PK.js").then(e=>u(e.elm))}}),c.of({name:"Erlang",extensions:["erl"],load(){return import("./erlang-AVQXQFOT.js").then(e=>u(e.erlang))}}),c.of({name:"Esper",load(){return import("./sql-BPLIIUYC.js").then(e=>u(e.esper))}}),c.of({name:"Factor",extensions:["factor"],load(){return import("./factor-CRTVBD6Q.js").then(e=>u(e.factor))}}),c.of({name:"FCL",load(){return import("./fcl-FX24LKTH.js").then(e=>u(e.fcl))}}),c.of({name:"Forth",extensions:["forth","fth","4th"],load(){return import("./forth-YKDKCTVS.js").then(e=>u(e.forth))}}),c.of({name:"Fortran",extensions:["f","for","f77","f90","f95"],load(){return import("./fortran-UJWC6SLU.js").then(e=>u(e.fortran))}}),c.of({name:"F#",alias:["fsharp"],extensions:["fs"],load(){return import("./mllike-VV3KS46B.js").then(e=>u(e.fSharp))}}),c.of({name:"Gas",extensions:["s"],load(){return import("./gas-MYEMWGRE.js").then(e=>u(e.gas))}}),c.of({name:"Gherkin",extensions:["feature"],load(){return import("./gherkin-JWHAU2YG.js").then(e=>u(e.gherkin))}}),c.of({name:"Groovy",extensions:["groovy","gradle"],filename:/^Jenkinsfile$/,load(){return import("./groovy-QZIZQIAK.js").then(e=>u(e.groovy))}}),c.of({name:"Haskell",extensions:["hs"],load(){return import("./haskell-JR3G7YNW.js").then(e=>u(e.haskell))}}),c.of({name:"Haxe",extensions:["hx"],load(){return import("./haxe-TVLAIYEN.js").then(e=>u(e.haxe))}}),c.of({name:"HXML",extensions:["hxml"],load(){return import("./haxe-TVLAIYEN.js").then(e=>u(e.hxml))}}),c.of({name:"HTTP",load(){return import("./http-YXQRE77G.js").then(e=>u(e.http))}}),c.of({name:"IDL",extensions:["pro"],load(){return import("./idl-RAQGJ6LJ.js").then(e=>u(e.idl))}}),c.of({name:"JSON-LD",alias:["jsonld"],extensions:["jsonld"],load(){return import("./javascript-NM7KDJUE.js").then(e=>u(e.jsonld))}}),c.of({name:"Julia",extensions:["jl"],load(){return import("./julia-LG3BH25B.js").then(e=>u(e.julia))}}),c.of({name:"Kotlin",extensions:["kt","kts"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.kotlin))}}),c.of({name:"LiveScript",alias:["ls"],extensions:["ls"],load(){return import("./livescript-4CVWVI4M.js").then(e=>u(e.liveScript))}}),c.of({name:"Lua",extensions:["lua"],load(){return import("./lua-VWGE7DQ7.js").then(e=>u(e.lua))}}),c.of({name:"mIRC",extensions:["mrc"],load(){return import("./mirc-565WBI76.js").then(e=>u(e.mirc))}}),c.of({name:"Mathematica",extensions:["m","nb","wl","wls"],load(){return import("./mathematica-D7APQSEU.js").then(e=>u(e.mathematica))}}),c.of({name:"Modelica",extensions:["mo"],load(){return import("./modelica-EGX44FZV.js").then(e=>u(e.modelica))}}),c.of({name:"MUMPS",extensions:["mps"],load(){return import("./mumps-POZYWSMI.js").then(e=>u(e.mumps))}}),c.of({name:"Mbox",extensions:["mbox"],load(){return import("./mbox-BN3XQBYX.js").then(e=>u(e.mbox))}}),c.of({name:"Nginx",filename:/nginx.*\.conf$/i,load(){return import("./nginx-JUBX55EU.js").then(e=>u(e.nginx))}}),c.of({name:"NSIS",extensions:["nsh","nsi"],load(){return import("./nsis-RC4CREGM.js").then(e=>u(e.nsis))}}),c.of({name:"NTriples",extensions:["nt","nq"],load(){return import("./ntriples-4WK6CNVE.js").then(e=>u(e.ntriples))}}),c.of({name:"Objective-C",alias:["objective-c","objc"],extensions:["m"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.objectiveC))}}),c.of({name:"Objective-C++",alias:["objective-c++","objc++"],extensions:["mm"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.objectiveCpp))}}),c.of({name:"OCaml",extensions:["ml","mli","mll","mly"],load(){return import("./mllike-VV3KS46B.js").then(e=>u(e.oCaml))}}),c.of({name:"Octave",extensions:["m"],load(){return import("./octave-GOKFN2V7.js").then(e=>u(e.octave))}}),c.of({name:"Oz",extensions:["oz"],load(){return import("./oz-OQUMNC63.js").then(e=>u(e.oz))}}),c.of({name:"Pascal",extensions:["p","pas"],load(){return import("./pascal-BBWQWWWD.js").then(e=>u(e.pascal))}}),c.of({name:"Perl",extensions:["pl","pm"],load(){return import("./perl-KTPJTTAM.js").then(e=>u(e.perl))}}),c.of({name:"Pig",extensions:["pig"],load(){return import("./pig-IJMBS4FZ.js").then(e=>u(e.pig))}}),c.of({name:"PowerShell",extensions:["ps1","psd1","psm1"],load(){return import("./powershell-6YGCBHDP.js").then(e=>u(e.powerShell))}}),c.of({name:"Properties files",alias:["ini","properties"],extensions:["properties","ini","in"],load(){return import("./properties-5QTD3364.js").then(e=>u(e.properties))}}),c.of({name:"ProtoBuf",extensions:["proto"],load(){return import("./protobuf-LTRWBIK3.js").then(e=>u(e.protobuf))}}),c.of({name:"Pug",alias:["jade"],extensions:["pug","jade"],load(){return import("./pug-U4PV3WLG.js").then(e=>u(e.pug))}}),c.of({name:"Puppet",extensions:["pp"],load(){return import("./puppet-WGYJPR3Y.js").then(e=>u(e.puppet))}}),c.of({name:"Q",extensions:["q"],load(){return import("./q-VIG4IJLI.js").then(e=>u(e.q))}}),c.of({name:"R",alias:["rscript"],extensions:["r","R"],load(){return import("./r-NVPCXGTR.js").then(e=>u(e.r))}}),c.of({name:"RPM Changes",load(){return import("./rpm-UEA257HD.js").then(e=>u(e.rpmChanges))}}),c.of({name:"RPM Spec",extensions:["spec"],load(){return import("./rpm-UEA257HD.js").then(e=>u(e.rpmSpec))}}),c.of({name:"Ruby",alias:["jruby","macruby","rake","rb","rbx"],extensions:["rb"],filename:/^(Gemfile|Rakefile)$/,load(){return import("./ruby-KPQRAJGE.js").then(e=>u(e.ruby))}}),c.of({name:"SAS",extensions:["sas"],load(){return import("./sas-L7VATVH5.js").then(e=>u(e.sas))}}),c.of({name:"Scala",extensions:["scala"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.scala))}}),c.of({name:"Scheme",extensions:["scm","ss"],load(){return import("./scheme-T2NOWR3P.js").then(e=>u(e.scheme))}}),c.of({name:"Shell",alias:["bash","sh","zsh"],extensions:["sh","ksh","bash"],filename:/^PKGBUILD$/,load(){return import("./shell-DLVDUNFA.js").then(e=>u(e.shell))}}),c.of({name:"Sieve",extensions:["siv","sieve"],load(){return import("./sieve-BKBZYDBU.js").then(e=>u(e.sieve))}}),c.of({name:"Smalltalk",extensions:["st"],load(){return import("./smalltalk-WRJQKJSD.js").then(e=>u(e.smalltalk))}}),c.of({name:"Solr",load(){return import("./solr-66B3BIDL.js").then(e=>u(e.solr))}}),c.of({name:"SML",extensions:["sml","sig","fun","smackspec"],load(){return import("./mllike-VV3KS46B.js").then(e=>u(e.sml))}}),c.of({name:"SPARQL",alias:["sparul"],extensions:["rq","sparql"],load(){return import("./sparql-S25Z47JG.js").then(e=>u(e.sparql))}}),c.of({name:"Spreadsheet",alias:["excel","formula"],load(){return import("./spreadsheet-B272EF7Y.js").then(e=>u(e.spreadsheet))}}),c.of({name:"Squirrel",extensions:["nut"],load(){return import("./clike-RTBH33GE.js").then(e=>u(e.squirrel))}}),c.of({name:"Stylus",extensions:["styl"],load(){return import("./stylus-PJUHLGPT.js").then(e=>u(e.stylus))}}),c.of({name:"Swift",extensions:["swift"],load(){return import("./swift-UYHTO4SX.js").then(e=>u(e.swift))}}),c.of({name:"sTeX",load(){return import("./stex-4IJY64QX.js").then(e=>u(e.stex))}}),c.of({name:"LaTeX",alias:["tex"],extensions:["text","ltx","tex"],load(){return import("./stex-4IJY64QX.js").then(e=>u(e.stex))}}),c.of({name:"SystemVerilog",extensions:["v","sv","svh"],load(){return import("./verilog-EWWQPMNN.js").then(e=>u(e.verilog))}}),c.of({name:"Tcl",extensions:["tcl"],load(){return import("./tcl-OQ5J3VO2.js").then(e=>u(e.tcl))}}),c.of({name:"Textile",extensions:["textile"],load(){return import("./textile-NOGVBEYF.js").then(e=>u(e.textile))}}),c.of({name:"TiddlyWiki",load(){return import("./tiddlywiki-SYTK4QUE.js").then(e=>u(e.tiddlyWiki))}}),c.of({name:"Tiki wiki",load(){return import("./tiki-P7K4ZLOM.js").then(e=>u(e.tiki))}}),c.of({name:"TOML",extensions:["toml"],load(){return import("./toml-AUZYRP36.js").then(e=>u(e.toml))}}),c.of({name:"Troff",extensions:["1","2","3","4","5","6","7","8","9"],load(){return import("./troff-XFYJNQOJ.js").then(e=>u(e.troff))}}),c.of({name:"TTCN",extensions:["ttcn","ttcn3","ttcnpp"],load(){return import("./ttcn-AK2IXWU6.js").then(e=>u(e.ttcn))}}),c.of({name:"TTCN_CFG",extensions:["cfg"],load(){return import("./ttcn-cfg-3IDPIYPU.js").then(e=>u(e.ttcnCfg))}}),c.of({name:"Turtle",extensions:["ttl"],load(){return import("./turtle-OIDMF46P.js").then(e=>u(e.turtle))}}),c.of({name:"Web IDL",extensions:["webidl"],load(){return import("./webidl-XVBHXCRV.js").then(e=>u(e.webIDL))}}),c.of({name:"VB.NET",extensions:["vb"],load(){return import("./vb-J6K4XVA2.js").then(e=>u(e.vb))}}),c.of({name:"VBScript",extensions:["vbs"],load(){return import("./vbscript-FM7DDZZE.js").then(e=>u(e.vbScript))}}),c.of({name:"Velocity",extensions:["vtl"],load(){return import("./velocity-6KZFEOFD.js").then(e=>u(e.velocity))}}),c.of({name:"Verilog",extensions:["v"],load(){return import("./verilog-EWWQPMNN.js").then(e=>u(e.verilog))}}),c.of({name:"VHDL",extensions:["vhd","vhdl"],load(){return import("./vhdl-CJ3M4IHI.js").then(e=>u(e.vhdl))}}),c.of({name:"XQuery",extensions:["xy","xquery","xq","xqm","xqy"],load(){return import("./xquery-7WZOZ4UK.js").then(e=>u(e.xQuery))}}),c.of({name:"Yacas",extensions:["ys"],load(){return import("./yacas-MZ2ZZPF3.js").then(e=>u(e.yacas))}}),c.of({name:"Z80",extensions:["z80"],load(){return import("./z80-I447CBF7.js").then(e=>u(e.z80))}}),c.of({name:"MscGen",extensions:["mscgen","mscin","msc"],load(){return import("./mscgen-GFGTHENT.js").then(e=>u(e.mscgen))}}),c.of({name:"X\xF9",extensions:["xu"],load(){return import("./mscgen-GFGTHENT.js").then(e=>u(e.xu))}}),c.of({name:"MsGenny",extensions:["msgenny"],load(){return import("./mscgen-GFGTHENT.js").then(e=>u(e.msgenny))}}),c.of({name:"Vue",extensions:["vue"],load(){return import("./dist-E36PJE5M.js").then(e=>e.vue())}}),c.of({name:"Angular Template",load(){return import("./dist-SGNQZVVX.js").then(e=>e.angular())}})];var Br=typeof String.prototype.normalize=="function"?e=>e.normalize("NFKD"):e=>e,z=class{constructor(t,n,r=0,o=t.length,i,s){this.test=s,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(r,o),this.bufferStart=r,this.normalize=i?a=>i(Br(a)):Br,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return sn(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let n=an(t),r=this.bufferStart+this.bufferPos;this.bufferPos+=ln(t);let o=this.normalize(n);if(o.length)for(let i=0,s=r;;i++){let a=o.charCodeAt(i),l=this.match(a,s,this.bufferPos+this.bufferStart);if(i==o.length-1){if(l)return this.value=l,this;break}s==r&&i<n.length&&n.charCodeAt(i)==a&&s++}}}match(t,n,r){let o=null;for(let i=0;i<this.matches.length;i+=2){let s=this.matches[i],a=!1;this.query.charCodeAt(s)==t&&(s==this.query.length-1?o={from:this.matches[i+1],to:r}:(this.matches[i]++,a=!0)),a||(this.matches.splice(i,2),i-=2)}return this.query.charCodeAt(0)==t&&(this.query.length==1?o={from:n,to:r}:this.matches.push(1,n)),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}};typeof Symbol<"u"&&(z.prototype[Symbol.iterator]=function(){return this});var Rr={from:-1,to:-1,match:/.*/.exec("")},Tt="gm"+(/x/.unicode==null?"":"u"),Oe=class{constructor(t,n,r,o=0,i=t.length){if(this.text=t,this.to=i,this.curLine="",this.done=!1,this.value=Rr,/\\[sWDnr]|\n|\r|\[\^/.test(n))return new Ne(t,n,r,o,i);this.re=new RegExp(n,Tt+(r?.ignoreCase?"i":"")),this.test=r?.test,this.iter=t.iter();let s=t.lineAt(o);this.curLineStart=s.from,this.matchPos=We(t,o),this.getLine(this.curLineStart)}getLine(t){this.iter.next(t),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,o=r+n[0].length;if(this.matchPos=We(this.text,o+(r==o?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<o||r>this.value.to)&&(!this.test||this.test(r,o,n)))return this.value={from:r,to:o,match:n},this;t=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),t=0;else return this.done=!0,this}}},Lt=new WeakMap,Ue=class e{constructor(t,n){this.from=t,this.text=n}get to(){return this.from+this.text.length}static get(t,n,r){let o=Lt.get(t);if(!o||o.from>=r||o.to<=n){let a=new e(n,t.sliceString(n,r));return Lt.set(t,a),a}if(o.from==n&&o.to==r)return o;let{text:i,from:s}=o;return s>n&&(i=t.sliceString(n,s)+i,s=n),o.to<r&&(i+=t.sliceString(o.to,r)),Lt.set(t,new e(s,i)),new e(n,i.slice(n-s,r-s))}},Ne=class{constructor(t,n,r,o,i){this.text=t,this.to=i,this.done=!1,this.value=Rr,this.matchPos=We(t,o),this.re=new RegExp(n,Tt+(r?.ignoreCase?"i":"")),this.test=r?.test,this.flat=Ue.get(t,o,this.chunkEnd(o+5e3))}chunkEnd(t){return t>=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==t&&(this.re.lastIndex=t+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,o=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,o,n)))return this.value={from:r,to:o,match:n},this.matchPos=We(this.text,o+(r==o?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ue.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<"u"&&(Oe.prototype[Symbol.iterator]=Ne.prototype[Symbol.iterator]=function(){return this});function Ei(e){try{return new RegExp(e,Tt),!0}catch{return!1}}function We(e,t){if(t>=e.length)return t;let n=e.lineAt(t),r;for(;t<n.to&&(r=n.text.charCodeAt(t-n.from))>=56320&&r<57344;)t++;return t}var Ii=e=>{let{state:t}=e,n=String(t.doc.lineAt(e.state.selection.main.head).number),{close:r,result:o}=bn(e,{label:t.phrase("Go to line"),input:{type:"text",name:"line",value:n},focus:!0,submitLabel:t.phrase("go")});return o.then(i=>{let s=i&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(i.elements.line.value);if(!s){e.dispatch({effects:r});return}let a=t.doc.lineAt(t.selection.main.head),[,l,h,m,d]=s,g=m?+m.slice(1):0,S=h?+h:a.number;if(h&&d){let b=S/100;l&&(b=b*(l=="-"?-1:1)+a.number/t.doc.lines),S=Math.round(t.doc.lines*b)}else h&&l&&(S=S*(l=="-"?-1:1)+a.number);let y=t.doc.line(Math.max(1,Math.min(t.doc.lines,S))),k=p.cursor(y.from+Math.max(0,Math.min(g,y.length)));e.dispatch({effects:[r,x.scrollIntoView(k.from,{y:"center"})],selection:k})}),!0},Ri={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Vr=V.define({combine(e){return ae(e,Ri,{highlightWordAroundCursor:(t,n)=>t||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Pr(e){let t=[Ui,Oi];return e&&t.push(Vr.of(e)),t}var Vi=C.mark({class:"cm-selectionMatch"}),Pi=C.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function Er(e,t,n,r){return(n==0||e(t.sliceDoc(n-1,n))!=v.Word)&&(r==t.doc.length||e(t.sliceDoc(r,r+1))!=v.Word)}function Fi(e,t,n,r){return e(t.sliceDoc(n,n+1))==v.Word&&e(t.sliceDoc(r-1,r))==v.Word}var Oi=U.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=e.state.facet(Vr),{state:n}=e,r=n.selection;if(r.ranges.length>1)return C.none;let o=r.main,i,s=null;if(o.empty){if(!t.highlightWordAroundCursor)return C.none;let l=n.wordAt(o.head);if(!l)return C.none;s=n.charCategorizer(o.head),i=n.sliceDoc(l.from,l.to)}else{let l=o.to-o.from;if(l<t.minSelectionLength||l>200)return C.none;if(t.wholeWords){if(i=n.sliceDoc(o.from,o.to),s=n.charCategorizer(o.head),!(Er(s,n,o.from,o.to)&&Fi(s,n,o.from,o.to)))return C.none}else if(i=n.sliceDoc(o.from,o.to),!i)return C.none}let a=[];for(let l of e.visibleRanges){let h=new z(n.doc,i,l.from,l.to);for(;!h.next().done;){let{from:m,to:d}=h.value;if((!s||Er(s,n,m,d))&&(o.empty&&m<=o.from&&d>=o.to?a.push(Pi.range(m,d)):(m>=o.to||d<=o.from)&&a.push(Vi.range(m,d)),a.length>t.maxMatches))return C.none}}return C.set(a)}},{decorations:e=>e.decorations}),Ui=x.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Ni=({state:e,dispatch:t})=>{let{selection:n}=e,r=p.create(n.ranges.map(o=>e.wordAt(o.head)||p.cursor(o.head)),n.mainIndex);return r.eq(n)?!1:(t(e.update({selection:r})),!0)};function Wi(e,t){let{main:n,ranges:r}=e.selection,o=e.wordAt(n.head),i=o&&o.from==n.from&&o.to==n.to;for(let s=!1,a=new z(e.doc,t,r[r.length-1].to);;)if(a.next(),a.done){if(s)return null;a=new z(e.doc,t,0,Math.max(0,r[r.length-1].from-1)),s=!0}else{if(s&&r.some(l=>l.from==a.value.from))continue;if(i){let l=e.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}var $i=({state:e,dispatch:t})=>{let{ranges:n}=e.selection;if(n.some(i=>i.from===i.to))return Ni({state:e,dispatch:t});let r=e.sliceDoc(n[0].from,n[0].to);if(e.selection.ranges.some(i=>e.sliceDoc(i.from,i.to)!=r))return!1;let o=Wi(e,r);return o?(t(e.update({selection:e.selection.addRange(p.range(o.from,o.to),!1),effects:x.scrollIntoView(o.to)})),!0):!1},te=V.define({combine(e){return ae(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new At(t),scrollToMatch:t=>x.scrollIntoView(t)})}});var $e=class{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||Ei(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord,this.test=t.test}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?`
2
+ `:r=="r"?"\r":r=="t"?" ":"\\")}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord&&this.test==t.test}create(){return this.regexp?new wt(this):new vt(this)}getCursor(t,n=0,r){let o=t.doc?t:se.create({doc:t});return r==null&&(r=o.doc.length),this.regexp?ee(this,o,n,r):Z(this,o,n,r)}},_e=class{constructor(t){this.spec=t}};function _i(e,t,n){return(r,o,i,s)=>{if(n&&!n(r,o,i,s))return!1;let a=r>=s&&o<=s+i.length?i.slice(r-s,o-s):t.doc.sliceString(r,o);return e(a,t,r,o)}}function Z(e,t,n,r){let o;return e.wholeWord&&(o=zi(t.doc,t.charCategorizer(t.selection.main.head))),e.test&&(o=_i(e.test,t,o)),new z(t.doc,e.unquoted,n,r,e.caseSensitive?void 0:i=>i.toLowerCase(),o)}function zi(e,t){return(n,r,o,i)=>((i>n||i+o.length<r)&&(i=Math.max(0,n-2),o=e.sliceString(i,Math.min(e.length,r+2))),(t(ze(o,n-i))!=v.Word||t(je(o,n-i))!=v.Word)&&(t(je(o,r-i))!=v.Word||t(ze(o,r-i))!=v.Word))}var vt=class extends _e{constructor(t){super(t)}nextMatch(t,n,r){let o=Z(this.spec,t,r,t.doc.length).nextOverlapping();if(o.done){let i=Math.min(t.doc.length,n+this.spec.unquoted.length);o=Z(this.spec,t,0,i).nextOverlapping()}return o.done||o.value.from==n&&o.value.to==r?null:o.value}prevMatchInRange(t,n,r){for(let o=r;;){let i=Math.max(n,o-1e4-this.spec.unquoted.length),s=Z(this.spec,t,i,o),a=null;for(;!s.nextOverlapping().done;)a=s.value;if(a)return a;if(i==n)return null;o-=1e4}}prevMatch(t,n,r){let o=this.prevMatchInRange(t,0,n);return o||(o=this.prevMatchInRange(t,Math.max(0,r-this.spec.unquoted.length),t.doc.length)),o&&(o.from!=n||o.to!=r)?o:null}getReplacement(t){return this.spec.unquote(this.spec.replace)}matchAll(t,n){let r=Z(this.spec,t,0,t.doc.length),o=[];for(;!r.next().done;){if(o.length>=n)return null;o.push(r.value)}return o}highlight(t,n,r,o){let i=Z(this.spec,t,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,t.doc.length));for(;!i.next().done;)o(i.value.from,i.value.to)}};function ji(e,t,n){return(r,o,i)=>(!n||n(r,o,i))&&e(i[0],t,r,o)}function ee(e,t,n,r){let o;return e.wholeWord&&(o=qi(t.charCategorizer(t.selection.main.head))),e.test&&(o=ji(e.test,t,o)),new Oe(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:o},n,r)}function ze(e,t){return e.slice(F(e,t,!1),t)}function je(e,t){return e.slice(t,F(e,t))}function qi(e){return(t,n,r)=>!r[0].length||(e(ze(r.input,r.index))!=v.Word||e(je(r.input,r.index))!=v.Word)&&(e(je(r.input,r.index+r[0].length))!=v.Word||e(ze(r.input,r.index+r[0].length))!=v.Word)}var wt=class extends _e{nextMatch(t,n,r){let o=ee(this.spec,t,r,t.doc.length).next();return o.done&&(o=ee(this.spec,t,0,n).next()),o.done?null:o.value}prevMatchInRange(t,n,r){for(let o=1;;o++){let i=Math.max(n,r-o*1e4),s=ee(this.spec,t,i,r),a=null;for(;!s.next().done;)a=s.value;if(a&&(i==n||a.from>i+10))return a;if(i==n)return null}}prevMatch(t,n,r){return this.prevMatchInRange(t,0,n)||this.prevMatchInRange(t,r,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return t.match[0];if(r=="$")return"$";for(let o=r.length;o>0;o--){let i=+r.slice(0,o);if(i>0&&i<t.match.length)return t.match[i]+r.slice(o)}return n})}matchAll(t,n){let r=ee(this.spec,t,0,t.doc.length),o=[];for(;!r.next().done;){if(o.length>=n)return null;o.push(r.value)}return o}highlight(t,n,r,o){let i=ee(this.spec,t,Math.max(0,n-250),Math.min(r+250,t.doc.length));for(;!i.next().done;)o(i.value.from,i.value.to)}},me=P.define(),Dt=P.define(),_=K.define({create(e){return new ue(Mt(e).create(),null)},update(e,t){for(let n of t.effects)n.is(me)?e=new ue(n.value.create(),e.panel):n.is(Dt)&&(e=new ue(e.query,n.value?Bt:null));return e},provide:e=>kn.from(e,t=>t.panel)});var ue=class{constructor(t,n){this.query=t,this.panel=n}},Yi=C.mark({class:"cm-searchMatch"}),Hi=C.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Gi=U.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(_))}update(e){let t=e.state.field(_);(t!=e.startState.field(_)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:e,panel:t}){if(!t||!e.spec.valid)return C.none;let{view:n}=this,r=new mn;for(let o=0,i=n.visibleRanges,s=i.length;o<s;o++){let{from:a,to:l}=i[o];for(;o<s-1&&l>i[o+1].from-500;)l=i[++o].to;e.highlight(n.state,a,l,(h,m)=>{let d=n.state.selection.ranges.some(g=>g.from==h&&g.to==m);r.add(h,m,d?Hi:Yi)})}return r.finish()}},{decorations:e=>e.decorations});function de(e){return t=>{let n=t.state.field(_,!1);return n&&n.query.spec.valid?e(t,n):Ur(t)}}var qe=de((e,{query:t})=>{let{to:n}=e.state.selection.main,r=t.nextMatch(e.state,n,n);if(!r)return!1;let o=p.single(r.from,r.to),i=e.state.facet(te);return e.dispatch({selection:o,effects:[Et(e,r),i.scrollToMatch(o.main,e)],userEvent:"select.search"}),Or(e),!0}),Ye=de((e,{query:t})=>{let{state:n}=e,{from:r}=n.selection.main,o=t.prevMatch(n,r,r);if(!o)return!1;let i=p.single(o.from,o.to),s=e.state.facet(te);return e.dispatch({selection:i,effects:[Et(e,o),s.scrollToMatch(i.main,e)],userEvent:"select.search"}),Or(e),!0}),Ji=de((e,{query:t})=>{let n=t.matchAll(e.state,1e3);return!n||!n.length?!1:(e.dispatch({selection:p.create(n.map(r=>p.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),Ki=({state:e,dispatch:t})=>{let n=e.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:o}=n.main,i=[],s=0;for(let a=new z(e.doc,e.sliceDoc(r,o));!a.next().done;){if(i.length>1e3)return!1;a.value.from==r&&(s=i.length),i.push(p.range(a.value.from,a.value.to))}return t(e.update({selection:p.create(i,s),userEvent:"select.search.matches"})),!0},Ir=de((e,{query:t})=>{let{state:n}=e,{from:r,to:o}=n.selection.main;if(n.readOnly)return!1;let i=t.nextMatch(n,r,r);if(!i)return!1;let s=i,a=[],l,h,m=[];s.from==r&&s.to==o&&(h=n.toText(t.getReplacement(s)),a.push({from:s.from,to:s.to,insert:h}),s=t.nextMatch(n,s.from,s.to),m.push(x.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let d=e.state.changes(a);return s&&(l=p.single(s.from,s.to).map(d),m.push(Et(e,s)),m.push(n.facet(te).scrollToMatch(l.main,e))),e.dispatch({changes:d,selection:l,effects:m,userEvent:"input.replace"}),!0}),Qi=de((e,{query:t})=>{if(e.state.readOnly)return!1;let n=t.matchAll(e.state,1e9).map(o=>{let{from:i,to:s}=o;return{from:i,to:s,insert:t.getReplacement(o)}});if(!n.length)return!1;let r=e.state.phrase("replaced $ matches",n.length)+".";return e.dispatch({changes:n,effects:x.announce.of(r),userEvent:"input.replace.all"}),!0});function Bt(e){return e.state.facet(te).createPanel(e)}function Mt(e,t){var n,r,o,i,s;let a=e.selection.main,l=a.empty||a.to>a.from+100?"":e.sliceDoc(a.from,a.to);if(t&&!l)return t;let h=e.facet(te);return new $e({search:((n=t?.literal)!==null&&n!==void 0?n:h.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(r=t?.caseSensitive)!==null&&r!==void 0?r:h.caseSensitive,literal:(o=t?.literal)!==null&&o!==void 0?o:h.literal,regexp:(i=t?.regexp)!==null&&i!==void 0?i:h.regexp,wholeWord:(s=t?.wholeWord)!==null&&s!==void 0?s:h.wholeWord})}function Fr(e){let t=mt(e,Bt);return t&&t.dom.querySelector("[main-field]")}function Or(e){let t=Fr(e);t&&t==e.root.activeElement&&t.select()}var Ur=e=>{let t=e.state.field(_,!1);if(t&&t.panel){let n=Fr(e);if(n&&n!=e.root.activeElement){let r=Mt(e.state,t.query.spec);r.valid&&e.dispatch({effects:me.of(r)}),n.focus(),n.select()}}else e.dispatch({effects:[Dt.of(!0),t?me.of(Mt(e.state,t.query.spec)):P.appendConfig.of(Zi)]});return!0},Nr=e=>{let t=e.state.field(_,!1);if(!t||!t.panel)return!1;let n=mt(e,Bt);return n&&n.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:Dt.of(!1)}),!0},Wr=[{key:"Mod-f",run:Ur,scope:"editor search-panel"},{key:"F3",run:qe,shift:Ye,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:qe,shift:Ye,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Nr,scope:"editor search-panel"},{key:"Mod-Shift-l",run:Ki},{key:"Mod-Alt-g",run:Ii},{key:"Mod-d",run:$i,preventDefault:!0}],At=class{constructor(t){this.view=t;let n=this.query=t.state.field(_).query.spec;this.commit=this.commit.bind(this),this.searchField=w("input",{value:n.search,placeholder:M(t,"Find"),"aria-label":M(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=w("input",{value:n.replace,placeholder:M(t,"Replace"),"aria-label":M(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=w("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=w("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=w("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(o,i,s){return w("button",{class:"cm-button",name:o,onclick:i,type:"button"},s)}this.dom=w("div",{onkeydown:o=>this.keydown(o),class:"cm-search"},[this.searchField,r("next",()=>qe(t),[M(t,"next")]),r("prev",()=>Ye(t),[M(t,"previous")]),r("select",()=>Ji(t),[M(t,"all")]),w("label",null,[this.caseField,M(t,"match case")]),w("label",null,[this.reField,M(t,"regexp")]),w("label",null,[this.wordField,M(t,"by word")]),...t.state.readOnly?[]:[w("br"),this.replaceField,r("replace",()=>Ir(t),[M(t,"replace")]),r("replaceAll",()=>Qi(t),[M(t,"replace all")])],w("button",{name:"close",onclick:()=>Nr(t),"aria-label":M(t,"close"),type:"button"},["\xD7"])])}commit(){let t=new $e({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:me.of(t)}))}keydown(t){pn(this.view,t,"search-panel")?t.preventDefault():t.keyCode==13&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?Ye:qe)(this.view)):t.keyCode==13&&t.target==this.replaceField&&(t.preventDefault(),Ir(this.view))}update(t){for(let n of t.transactions)for(let r of n.effects)r.is(me)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(te).top}};function M(e,t){return e.state.phrase(t)}var Pe=30,Fe=/[\s\.,:;?!]/;function Et(e,{from:t,to:n}){let r=e.state.doc.lineAt(t),o=e.state.doc.lineAt(n).to,i=Math.max(r.from,t-Pe),s=Math.min(o,n+Pe),a=e.state.sliceDoc(i,s);if(i!=r.from){for(let l=0;l<Pe;l++)if(!Fe.test(a[l+1])&&Fe.test(a[l])){a=a.slice(l);break}}if(s!=o){for(let l=a.length-1;l>a.length-Pe;l--)if(!Fe.test(a[l-1])&&Fe.test(a[l])){a=a.slice(0,l);break}}return x.announce.of(`${e.state.phrase("current match")}. ${a} ${e.state.phrase("on line")} ${r.number}.`)}var Xi=x.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),Zi=[_,ge.low(Gi),Xi];var es="#e5c07b",$r="#e06c75",ts="#56b6c2",ns="#ffffff",He="#abb2bf",Rt="#7d8799",rs="#61afef",os="#98c379",_r="#d19a66",is="#c678dd",ss="#21252b",zr="#2c313a",jr="#282c34",It="#353a42",as="#3E4451",qr="#528bff";var ls=x.theme({"&":{color:He,backgroundColor:jr},".cm-content":{caretColor:qr},".cm-cursor, .cm-dropCursor":{borderLeftColor:qr},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:as},".cm-panels":{backgroundColor:ss,color:He},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:jr,color:Rt,border:"none"},".cm-activeLineGutter":{backgroundColor:zr},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:It},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:It,borderBottomColor:It},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:zr,color:He}}},{dark:!0}),cs=Dn.define([{tag:f.keyword,color:is},{tag:[f.name,f.deleted,f.character,f.propertyName,f.macroName],color:$r},{tag:[f.function(f.variableName),f.labelName],color:rs},{tag:[f.color,f.constant(f.name),f.standard(f.name)],color:_r},{tag:[f.definition(f.name),f.separator],color:He},{tag:[f.typeName,f.className,f.number,f.changed,f.annotation,f.modifier,f.self,f.namespace],color:es},{tag:[f.operator,f.operatorKeyword,f.url,f.escape,f.regexp,f.link,f.special(f.string)],color:ts},{tag:[f.meta,f.comment],color:Rt},{tag:f.strong,fontWeight:"bold"},{tag:f.emphasis,fontStyle:"italic"},{tag:f.strikethrough,textDecoration:"line-through"},{tag:f.link,color:Rt,textDecoration:"underline"},{tag:f.heading,fontWeight:"bold",color:$r},{tag:[f.atom,f.bool,f.special(f.variableName)],color:_r},{tag:[f.processingInstruction,f.string,f.inserted],color:os},{tag:f.invalid,color:ns}]),Vt=[ls,we(cs)];var Ge=class e{constructor(t,n){this.yanchor=t,this.yhead=n}toJSON(){return{yanchor:G(this.yanchor),yhead:G(this.yhead)}}static fromJSON(t){return new e(I(t.yanchor),I(t.yhead))}};var Je=class{constructor(t,n){this.ytext=t,this.awareness=n,this.undoManager=new J(t)}toYPos(t,n=0){return N(this.ytext,t,n)}fromYPos(t){let n=R(I(t),this.ytext.doc);if(n==null||n.type!==this.ytext)throw new Error("[y-codemirror] The position you want to retrieve was created by a different document");return{pos:n.index,assoc:n.assoc}}toYRange(t){let n=t.assoc,r=this.toYPos(t.anchor,n),o=this.toYPos(t.head,n);return new Ge(r,o)}fromYRange(t){let n=this.fromYPos(t.yanchor),r=this.fromYPos(t.yhead);return n.pos===r.pos?p.cursor(r.pos,r.assoc):p.range(n.pos,r.pos)}},H=V.define({combine(e){return e[e.length-1]}}),Ke=O.define(),Pt=class{constructor(t){this.view=t,this.conf=t.state.facet(H),this._observer=(n,r)=>{if(r.origin!==this.conf){let o=n.delta,i=[],s=0;for(let a=0;a<o.length;a++){let l=o[a];l.insert!=null?i.push({from:s,to:s,insert:l.insert}):l.delete!=null?(i.push({from:s,to:s+l.delete,insert:""}),s+=l.delete):s+=l.retain}t.dispatch({changes:i,annotations:[Ke.of(this.conf)]})}},this._ytext=this.conf.ytext,this._ytext.observe(this._observer)}update(t){if(!t.docChanged||t.transactions.length>0&&t.transactions[0].annotation(Ke)===this.conf)return;let n=this.conf.ytext;n.doc.transact(()=>{let r=0;t.changes.iterChanges((o,i,s,a,l)=>{let h=l.sliceString(0,l.length,`
3
+ `);o!==i&&n.delete(o+r,i-o),h.length>0&&n.insert(o+r,h),r+=h.length-(i-o)})},this.conf)}destroy(){this._ytext.unobserve(this._observer)}},Hr=U.fromClass(Pt);var Gr=x.baseTheme({".cm-ySelection":{},".cm-yLineSelection":{padding:0,margin:"0px 2px 0px 4px"},".cm-ySelectionCaret":{position:"relative",borderLeft:"1px solid black",borderRight:"1px solid black",marginLeft:"-1px",marginRight:"-1px",boxSizing:"border-box",display:"inline"},".cm-ySelectionCaretDot":{borderRadius:"50%",position:"absolute",width:".4em",height:".4em",top:"-.2em",left:"-.2em",backgroundColor:"inherit",transition:"transform .3s ease-in-out",boxSizing:"border-box"},".cm-ySelectionCaret:hover > .cm-ySelectionCaretDot":{transformOrigin:"bottom center",transform:"scale(0)"},".cm-ySelectionInfo":{position:"absolute",top:"-1.05em",left:"-1px",fontSize:".75em",fontFamily:"serif",fontStyle:"normal",fontWeight:"normal",lineHeight:"normal",userSelect:"none",color:"white",paddingLeft:"2px",paddingRight:"2px",zIndex:101,transition:"opacity .3s ease-in-out",backgroundColor:"inherit",opacity:0,transitionDelay:"0s",whiteSpace:"nowrap"},".cm-ySelectionCaret:hover > .cm-ySelectionInfo":{opacity:1,transitionDelay:"0s"}}),hs=O.define(),Ot=class extends Se{constructor(t,n){super(),this.color=t,this.name=n}toDOM(){return pe("span",[ne("class","cm-ySelectionCaret"),ne("style",`background-color: ${this.color}; border-color: ${this.color}`)],[re("\u2060"),pe("div",[ne("class","cm-ySelectionCaretDot")]),re("\u2060"),pe("div",[ne("class","cm-ySelectionInfo")],[re(this.name)]),re("\u2060")])}eq(t){return t.color===this.color}compare(t){return t.color===this.color}updateDOM(){return!1}get estimatedHeight(){return-1}ignoreEvent(){return!0}},Ut=class{constructor(t){this.conf=t.state.facet(H),this._listener=({added:n,updated:r,removed:o},i,s)=>{n.concat(r).concat(o).findIndex(l=>l!==this.conf.awareness.doc.clientID)>=0&&t.dispatch({annotations:[hs.of([])]})},this._awareness=this.conf.awareness,this._awareness.on("change",this._listener),this.decorations=un.of([])}destroy(){this._awareness.off("change",this._listener)}update(t){let n=this.conf.ytext,r=n.doc,o=this.conf.awareness,i=[],s=this.conf.awareness.getLocalState();if(s!=null){let a=t.view.hasFocus&&t.view.dom.ownerDocument.hasFocus(),l=a?t.state.selection.main:null,h=s.cursor==null?null:I(s.cursor.anchor),m=s.cursor==null?null:I(s.cursor.head);if(l!=null){let d=N(n,l.anchor),g=N(n,l.head);(s.cursor==null||!at(h,d)||!at(m,g))&&o.setLocalStateField("cursor",{anchor:d,head:g})}else s.cursor!=null&&a&&o.setLocalStateField("cursor",null)}o.getStates().forEach((a,l)=>{if(l===o.doc.clientID)return;let h=a.cursor;if(h==null||h.anchor==null||h.head==null)return;let m=R(h.anchor,r),d=R(h.head,r);if(m==null||d==null||m.type!==n||d.type!==n)return;let{color:g="#30bced",name:S="Anonymous"}=a.user||{},y=a.user&&a.user.colorLight||g+"33",k=Kt(m.index,d.index),b=Qt(m.index,d.index),j=t.view.state.doc.lineAt(k),it=t.view.state.doc.lineAt(b);if(j.number===it.number)i.push({from:k,to:b,value:C.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});else{i.push({from:k,to:j.from+j.length,value:C.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})}),i.push({from:it.from,to:b,value:C.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});for(let st=j.number+1;st<it.number;st++){let Yt=t.view.state.doc.line(st).from;i.push({from:Yt,to:Yt,value:C.line({attributes:{style:`background-color: ${y}`,class:"cm-yLineSelection"}})})}}i.push({from:d.index,to:d.index,value:C.widget({side:d.index-m.index>0?-1:1,block:!1,widget:new Ot(g,S)})})}),this.decorations=C.set(i,!0)}},Jr=U.fromClass(Ut,{decorations:e=>e.decorations});var Kr=()=>{let e=!0;return(t,n)=>{if(e){e=!1;try{t()}finally{e=!0}}else n!==void 0&&n()}};var Qe=class{constructor(t){this.undoManager=t}addTrackedOrigin(t){this.undoManager.addTrackedOrigin(t)}removeTrackedOrigin(t){this.undoManager.removeTrackedOrigin(t)}undo(){return this.undoManager.undo()!=null}redo(){return this.undoManager.redo()!=null}},fe=V.define({combine(e){return e[e.length-1]}}),va=O.define(),Nt=class{constructor(t){this.view=t,this.conf=t.state.facet(fe),this._undoManager=this.conf.undoManager,this.syncConf=t.state.facet(H),this._beforeChangeSelection=null,this._mux=Kr(),this._onStackItemAdded=({stackItem:n,changedParentTypes:r})=>{r.has(this.syncConf.ytext)&&this._beforeChangeSelection&&!n.meta.has(this)&&n.meta.set(this,this._beforeChangeSelection)},this._onStackItemPopped=({stackItem:n})=>{let r=n.meta.get(this);if(r){let o=this.syncConf.fromYRange(r);t.dispatch(t.state.update({selection:o,effects:[x.scrollIntoView(o)]})),this._storeSelection()}},this._storeSelection=()=>{this._beforeChangeSelection=this.syncConf.toYRange(this.view.state.selection.main)},this._undoManager.on("stack-item-added",this._onStackItemAdded),this._undoManager.on("stack-item-popped",this._onStackItemPopped),this._undoManager.addTrackedOrigin(this.syncConf)}update(t){t.selectionSet&&(t.transactions.length===0||t.transactions[0].annotation(Ke)!==this.syncConf)&&this._storeSelection()}destroy(){this._undoManager.off("stack-item-added",this._onStackItemAdded),this._undoManager.off("stack-item-popped",this._onStackItemPopped),this._undoManager.removeTrackedOrigin(this.syncConf)}},Qr=U.fromClass(Nt),Xr=({state:e,dispatch:t})=>e.facet(fe).undo()||!0,Zr=({state:e,dispatch:t})=>e.facet(fe).redo()||!0;var eo=(e,t,{undoManager:n=new J(e)}={})=>{let r=new Je(e,t),o=[H.of(r),Hr];return t&&o.push(Gr,Jr),n!==!1&&o.push(fe.of(new Qe(n)),Qr,x.domEventHandlers({beforeinput(i,s){return i.inputType==="historyUndo"?Xr(s):i.inputType==="historyRedo"?Zr(s):!1}})),o};var Xe=Object.freeze({bold:"bold text",code:"code",italic:"emphasis",strikethrough:"struck text"}),Ze="link text",Wt="https://",et="alt text",$t="https://",tt="Video",_t="https://",to="code",ro=Object.freeze(["Column 1","Column 2"]),no="Value";function us(e,t){let n=Math.max(0,Math.min(e.from,e.to,t)),r=Math.max(0,Math.min(Math.max(e.from,e.to),t));return{from:n,to:r}}function ms(e,t){return t===0||e[t-1]===`
4
+ `}function ds(e,t){if(t<=0)return 0;let n=e.lastIndexOf(`
5
+ `,t-1);return n<0?0:n+1}function fs(e,t){let n=e.indexOf(`
6
+ `,t);return n<0?e.length:n}function oo(e,t){let{from:n}=t,{to:r}=t;return r>n&&ms(e,r)&&(r-=1),{from:ds(e,n),to:fs(e,Math.max(n,r))}}function nt(e,t,n,r){let o=e.slice(t.from,t.to);return o.length>0?{anchor:t.from+n.length,from:t.from,head:t.from+n.length+o.length,insert:`${n}${o}${n}`,to:t.to}:{anchor:t.from+n.length,from:t.from,head:t.from+n.length+r.length,insert:`${n}${r}${n}`,to:t.to}}function zt(e){return/^https?:\/\//i.test(e.trim())}function ps(e,t){let n=e.slice(t.from,t.to);if(n.length>0&&zt(n))return{anchor:t.from+1,from:t.from,head:t.from+1+Ze.length,insert:`[${Ze}](${n})`,to:t.to};if(n.length>0){let r=`[${n}](`;return{anchor:t.from+r.length,from:t.from,head:t.from+r.length+Wt.length,insert:`${r}${Wt})`,to:t.to}}return{anchor:t.from+1,from:t.from,head:t.from+1+Ze.length,insert:`[${Ze}](${Wt})`,to:t.to}}function gs(e,t){let n=e.slice(t.from,t.to);if(n.length>0&&zt(n))return{anchor:t.from+2,from:t.from,head:t.from+2+et.length,insert:`![${et}](${n})`,to:t.to};if(n.length>0){let r=`![${n}](`;return{anchor:t.from+r.length,from:t.from,head:t.from+r.length+$t.length,insert:`${r}${$t})`,to:t.to}}return{anchor:t.from+2,from:t.from,head:t.from+2+et.length,insert:`![${et}](${$t})`,to:t.to}}function ys(e,t){let n=e.slice(t.from,t.to);if(n.length>0&&zt(n))return{anchor:t.from+2,from:t.from,head:t.from+2+tt.length,insert:`![${tt}](${n})`,to:t.to};if(n.length>0){let r=`![${n}](`;return{anchor:t.from+r.length,from:t.from,head:t.from+r.length+_t.length,insert:`${r}${_t})`,to:t.to}}return{anchor:t.from+2,from:t.from,head:t.from+2+tt.length,insert:`![${tt}](${_t})`,to:t.to}}function rt(e,t,n,r){let o=oo(e,t),s=e.slice(o.from,o.to).split(`
7
+ `),a=d=>r.test(d),l=s.every(d=>d.trim().length===0||a(d)),h=0,m=s.map(d=>{if(d.trim().length===0)return d;if(l)return a(d)?d.replace(r,""):d;let g=n(h);return h+=1,`${g}${d}`});return{anchor:o.from,from:o.from,head:o.from+m.join(`
8
+ `).length,insert:m.join(`
9
+ `),to:o.to}}function xs(e,t){return rt(e,t,()=>"## ",/^#{1,6}\s+/)}function Cs(e,t){return rt(e,t,()=>"- ",/^[-*+]\s+/)}function Ss(e,t){return rt(e,t,()=>"> ",/^>\s+/)}function ks(e,t){return rt(e,t,()=>"- [ ] ",/^-\s\[(?: |x|X)\]\s+/)}function bs(e,t){let n=oo(e,t),o=e.slice(n.from,n.to).split(`
10
+ `),i=o.every(l=>l.trim().length===0||/^\d+\.\s+/.test(l)),s=1,a=o.map(l=>{if(l.trim().length===0)return l;if(i)return l.replace(/^\d+\.\s+/,"");let h=`${s}. ${l}`;return s+=1,h});return{anchor:n.from,from:n.from,head:n.from+a.join(`
11
+ `).length,insert:a.join(`
12
+ `),to:n.to}}function Ls(e){let n=e.replace(/\r\n/g,`
13
+ `).match(/^```[^\n]*\n([\s\S]*?)\n```$/);return n?n[1]:null}function vs(e,t){let n=e.slice(t.from,t.to);if(n.length>0){let r=Ls(n);return r!==null?{anchor:t.from,from:t.from,head:t.from+r.length,insert:r,to:t.to}:{anchor:t.from+4,from:t.from,head:t.from+4+n.length,insert:`\`\`\`
14
+ ${n}
15
+ \`\`\``,to:t.to}}return{anchor:t.from+4,from:t.from,head:t.from+4+to.length,insert:`\`\`\`
16
+ ${to}
17
+ \`\`\``,to:t.to}}function io(e,t,n,r,o=0){let i=t.from>0&&e[t.from-1]!==`
18
+ `,s=t.to<e.length&&e[t.to]!==`
19
+ `,a=i?`
20
+ `:"",h=`${a}${n}${s?`
21
+ `:""}`,m=t.from+a.length+r;return{anchor:m,from:t.from,head:m+o,insert:h,to:t.to}}function ws(e=""){let t=e.trim()||no;return[`| ${ro.join(" | ")} |`,"| --- | --- |",`| ${t} | ${no} |`].join(`
22
+ `)}function Ms(e,t){let n=e.slice(t.from,t.to),r=ws(n);return io(e,t,r,2,ro[0].length)}function As(e,t){return io(e,t,"---",4,0)}function so(e,t,n){let r=String(e??""),o=us(t,r.length);switch(n){case"bold":return nt(r,o,"**",Xe.bold);case"italic":return nt(r,o,"_",Xe.italic);case"strikethrough":return nt(r,o,"~~",Xe.strikethrough);case"code":return nt(r,o,"`",Xe.code);case"link":return ps(r,o);case"image":return gs(r,o);case"video":return ys(r,o);case"heading":return xs(r,o);case"quote":return Ss(r,o);case"bullet-list":return Cs(r,o);case"numbered-list":return bs(r,o);case"task-list":return ks(r,o);case"code-block":return vs(r,o);case"table":return Ms(r,o);case"horizontal-rule":return As(r,o);default:return null}}function ao(e){return t=>{let n=t.state.doc.lineAt(t.pos),r=n.text.slice(0,t.pos-n.from),o=r.lastIndexOf("[[");if(o===-1)return null;let i=r.slice(o+2);if(i.includes("]]"))return null;let s=i.toLowerCase(),a=n.from+o+2,h=e().map(m=>{let d=m.replace(/\.md$/i,""),g=d.split("/").pop();return{filePath:m,label:d,fileName:g}}).filter(({label:m,fileName:d})=>m.toLowerCase().includes(s)||d.toLowerCase().includes(s)).map(({label:m,fileName:d})=>({label:m,detail:m.includes("/")?` ${d}`:void 0,apply:(g,S,y,k)=>{let b=g.state.doc.toString(),j=k;b.slice(k,k+2)==="]]"&&(j=k+2),g.dispatch({changes:{from:y,to:j,insert:`${S.label}]]`},selection:{anchor:y+S.label.length+2}})},type:"text",boost:m.toLowerCase().startsWith(s)?1:0}));return h.length===0?null:{from:a,options:h,filter:!1}}}var Ts=new Set(["@startuml","@enduml","@startmindmap","@endmindmap","@startwbs","@endwbs","@startgantt","@endgantt","@startjson","@endjson","@startyaml","@endyaml","@startsalt","@endsalt"]),Ds=new Set(["activate","actor","agent","allowmixing","alt","annotation","artifact","as","autonumber","boundary","box","break","caption","card","case","circle","class","cloud","collections","component","control","create","critical","database","deactivate","destroy","detach","else","elseif","end","endlegend","endif","endwhile","entity","enum","exception","file","folder","footer","fork","frame","group","header","hide","hnote","if","interface","json","kill","label","legend","loop","map","namespace","newpage","node","note","object","of","opt","order","over","package","page","par","participant","partition","person","port","protocol","queue","rectangle","ref","repeat","return","rnote","show","skinparam","split","stack","start","state","stop","storage","struct","switch","then","title","usecase","while"]),Bs=new Set(["false","no","off","on","true","yes"]);function Es(e){let t=e.match(/[@!A-Za-z_][\w.-]*/u,!1);return t?(e.match(/[@!A-Za-z_][\w.-]*/u),t[0]):""}var Is=Me.define({languageData:{commentTokens:{block:{close:"'/",open:"/'"},line:"'"}},startState(){return{inBlockComment:!1}},token(e,t){if(t.inBlockComment)return e.skipTo("'/")?(e.match("'/"),t.inBlockComment=!1):e.skipToEnd(),"comment";if(e.eatSpace())return null;if(e.match("/'"))return t.inBlockComment=!0,"comment";let n=e.pos===0?" ":e.string.charAt(e.pos-1);if(e.peek()==="'"&&(e.sol()||/\s/u.test(n)))return e.skipToEnd(),"comment";if(e.match(/"(?:[^"\\]|\\.)*"?/u))return"string";if(e.match(/#[0-9a-f]{3,8}\b/iu)||e.match(/#[A-Za-z][\w-]*/u))return"atom";if(e.match(/\b\d+(?:\.\d+)?\b/u))return"number";if(e.match(/[<>{}[\]():,]/u))return"punctuation";if(e.match(/[ox*+<#]?[-=.\\/]+(?:left|right|up|down)?[-=.\\/]*[ox*+>#]?/iu))return"operator";let r=Es(e);if(r){let o=r.toLowerCase();return o.startsWith("!")||Ts.has(o)?"meta":Ds.has(o)?"keyword":Bs.has(o)?"bool":/^[A-Z][A-Z0-9_]*$/u.test(r)?"typeName":"variableName"}return e.next(),null}}),jt=new Le(Is),lo=c.of({alias:["plantuml","puml"],extensions:["plantuml","puml"],name:"PlantUML",support:jt});function Rs(e){let t=Array.from(e?.clipboardData?.files??[]);for(let r of t)if(r?.type?.startsWith?.("image/"))return r;let n=Array.from(e?.clipboardData?.items??[]);for(let r of n){if(r.kind!=="file"||!r.type?.startsWith?.("image/"))continue;let o=r.getAsFile?.();if(o)return o}return null}function co(e,t){let n=Rs(e);return n?typeof t!="function"?(console.warn("[editor] Ignoring pasted image because no image paste handler is registered."),!1):(console.debug("[editor] Detected pasted image.",{name:n.name??"",size:n.size??null,type:n.type??""}),e.preventDefault?.(),Promise.resolve(t(n)).catch(r=>{console.error("[editor] Failed to process pasted image:",r)}),!0):!1}var Vs=[...Dr,lo],ho=C.mark({class:"cm-matchingBracket cm-matchingBracket-paired"}),uo=C.mark({class:"cm-nonmatchingBracket"}),Ps=C.mark({class:"cm-remoteUpdateFlash"}),Fs=1350,Os=160,Us=900,qt=class extends Se{toDOM(){let t=document.createElement("span");return t.className="cm-remoteUpdateCaretWidget",t.setAttribute("aria-hidden","true"),t}ignoreEvent(){return!0}},go=P.define(),yo=P.define(),Ns=K.define({create:()=>C.none,update(e,t){let n=e.map(t.changes);return t.effects.forEach(r=>{if(r.is(yo)){n=C.none;return}if(r.is(go)){let{from:o,showCaret:i,to:s}=r.value,a=[];s>o&&a.push(Ps.range(o,s)),i&&a.push(C.widget({side:-1,widget:new qt}).range(o)),n=a.length>0?C.set(a,!0):C.none}}),n},provide:e=>x.decorations.from(e)});function mo(e,t){return t.selection.ranges.some(n=>n.empty&&e.to===n.head)}function Ws(e,t){let n=[];if(!e.matched)return n.push(uo.range(e.start.from,e.start.to)),e.end&&n.push(uo.range(e.end.from,e.end.to)),n;let r=mo(e.start,t),o=e.end?mo(e.end,t):!1;return r||n.push(ho.range(e.start.from,e.start.to)),e.end&&!o&&n.push(ho.range(e.end.from,e.end.to)),n}function fo(e){let t=e==="dark"?"oklch(from var(--color-surface-offset) l c h / 0.55)":"oklch(from var(--color-surface-offset) l c h / 0.75)",n=e==="dark"?"oklch(from var(--color-primary) l c h / 0.28)":"oklch(from var(--color-primary) l c h / 0.18)",r=e==="dark"?"oklch(from var(--color-primary) l c h / 0.4)":"oklch(from var(--color-primary) l c h / 0.26)",o=e==="dark"?"oklch(from var(--color-primary) l c h / 0.65)":"oklch(from var(--color-primary) l c h / 0.5)",i=e==="dark"?"color-mix(in oklab, var(--color-primary) 78%, white)":"color-mix(in oklab, var(--color-primary) 84%, black)",s=e==="dark"?"oklch(from var(--color-primary) l c h / 0.2)":"oklch(from var(--color-primary) l c h / 0.12)",a=e==="dark"?"oklch(from var(--color-primary) calc(l + 0.08) c h / 0.85)":"oklch(from var(--color-primary) calc(l - 0.04) c h / 0.7)",l=e==="dark"?"oklch(from var(--color-error) l c h / 0.12)":"oklch(from var(--color-error) l c h / 0.1)",h=e==="dark"?"oklch(from var(--color-error) calc(l + 0.08) c h / 0.8)":"oklch(from var(--color-error) calc(l - 0.04) c h / 0.7)";return x.theme({"&":{backgroundColor:"var(--color-bg)",color:"var(--color-text)"},".cm-content":{caretColor:i,fontFamily:"var(--font-mono)",padding:"16px 0"},".cm-cursor, .cm-dropCursor":{borderLeftColor:i,borderLeftWidth:"3px",marginLeft:"-1px"},".cm-foldPlaceholder":{backgroundColor:"var(--color-surface-dynamic)",border:"none",color:"var(--color-text-muted)"},".cm-gutters":{backgroundColor:"var(--color-surface)",borderRight:"1px solid var(--color-divider)",color:"var(--color-text-muted)",minWidth:"44px"},".cm-line":{padding:"0 16px"},".cm-activeLine":{backgroundColor:t,boxShadow:`inset 3px 0 0 ${n}`},".cm-activeLineGutter":{backgroundColor:t,boxShadow:`inset 3px 0 0 ${n}`,color:"var(--color-text-muted)"},".cm-matchingBracket":{borderRadius:"2px",color:"inherit"},".cm-matchingBracket.cm-matchingBracket-paired":{backgroundColor:s,outline:`1px solid ${a}`},".cm-nonmatchingBracket":{backgroundColor:l,outline:`1px solid ${h}`,borderRadius:"2px"},".cm-selectionMatch":{backgroundColor:"var(--color-primary-highlight)"},".cm-remoteUpdateFlash":{animation:"collabmd-remote-update-flash 1.35s ease-out",backgroundColor:e==="dark"?"oklch(from var(--color-primary) l c h / 0.22)":"oklch(from var(--color-primary) l c h / 0.16)",borderRadius:"3px",boxShadow:`0 0 0 1px ${e==="dark"?"oklch(from var(--color-primary) calc(l + 0.05) c h / 0.26)":"oklch(from var(--color-primary) calc(l - 0.04) c h / 0.2)"}`},".cm-remoteUpdateCaretWidget":{animation:"collabmd-remote-update-caret 1s ease-out",backgroundColor:"transparent",borderLeft:`2px solid ${e==="dark"?"color-mix(in oklab, var(--color-primary) 78%, white)":"color-mix(in oklab, var(--color-primary) 84%, black)"}`,borderRadius:"999px",boxShadow:`0 0 0 1px ${e==="dark"?"oklch(from var(--color-primary) calc(l + 0.06) c h / 0.22)":"oklch(from var(--color-primary) calc(l - 0.04) c h / 0.16)"}`,display:"inline-block",height:"1.2em",marginLeft:"-1px",marginRight:"-1px",pointerEvents:"none",transformOrigin:"center bottom",verticalAlign:"text-bottom",width:"0"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:r},"&.cm-focused .cm-selectionLayer .cm-selectionBackground":{border:`1px solid ${o}`,borderRadius:"2px"},"@keyframes collabmd-remote-update-flash":{"0%":{backgroundColor:e==="dark"?"oklch(from var(--color-primary) l c h / 0.34)":"oklch(from var(--color-primary) l c h / 0.26)"},"100%":{backgroundColor:"oklch(from var(--color-primary) l c h / 0)"}},"@keyframes collabmd-remote-update-caret":{"0%":{boxShadow:`0 0 0 1px ${e==="dark"?"oklch(from var(--color-primary) calc(l + 0.08) c h / 0.34)":"oklch(from var(--color-primary) calc(l - 0.04) c h / 0.24)"}`,opacity:"0",transform:"translateY(0.2em) scaleY(0.7)"},"18%":{opacity:"1",transform:"translateY(0) scaleY(1)"},"72%":{opacity:"1",transform:"translateY(0) scaleY(1)"},"100%":{boxShadow:`0 0 0 1px ${e==="dark"?"oklch(from var(--color-primary) calc(l + 0.08) c h / 0)":"oklch(from var(--color-primary) calc(l - 0.04) c h / 0)"}`,opacity:"0",transform:"translateY(-0.05em) scaleY(0.9)"}}},{dark:e==="dark"})}function $s(e){return typeof e=="string"&&(e.toLowerCase().endsWith(".puml")||e.toLowerCase().endsWith(".plantuml"))?jt:Fn({base:Pn,codeLanguages:Vs})}function po(e){return{from:Math.min(...e.ranges.map(t=>Math.min(t.from,t.to))),to:Math.max(...e.ranges.map(t=>Math.max(t.from,t.to)))}}var ot=class{constructor({editorContainer:t,getFileList:n,initialTheme:r,lineInfoElement:o,lineWrappingEnabled:i=!0,onDocChanged:s=null,onImagePaste:a=null,onSelectionChanged:l=null,onViewportChanged:h=null}){this.editorContainer=t,this.getFileList=n??(()=>[]),this.initialTheme=r,this.lineInfoElement=o,this.lineWrappingEnabled=i,this.onDocChanged=s,this.onImagePaste=a,this.onSelectionChanged=l,this.onViewportChanged=h,this.editorView=null,this.themeCompartment=new ye,this.syntaxThemeCompartment=new ye,this.lineWrappingCompartment=new ye,this.viewportFrame=0,this.remoteUpdateFlashTimer=0,this.lastLocalInputAt=0,this.handleScroll=()=>{this.viewportFrame||(this.viewportFrame=requestAnimationFrame(()=>{this.viewportFrame=0,this.emitViewportChange()}))},this.handleLocalInputActivity=()=>{this.lastLocalInputAt=Date.now()}}initialize({awareness:t,filePath:n,undoManager:r,ytext:o}){let i=x.updateListener.of(a=>{a.docChanged&&this.onDocChanged?.(),(a.selectionSet||a.docChanged)&&(this.updateCursorInfo(a.state),this.onSelectionChanged?.(a.state))}),s=this.editorContainer.querySelector("#editorLoading");Array.from(this.editorContainer.children).forEach(a=>{a!==s&&a.remove()}),this.editorView=new x({parent:this.editorContainer,state:se.create({doc:o.toString(),extensions:[Ln(),vn(),yn(),Jn(),Tn(),gn(),se.allowMultipleSelections.of(!0),Mn(),we(Bn,{fallback:!0}),En({renderMatch:Ws}),In(),Vn({override:[ao(this.getFileList)]}),Cn(),Sn(),xn(),Pr(),fn.of([...Rn,...Ar,...Zn,...Wr,...An,Tr]),x.contentAttributes.of({"aria-label":"Markdown editor"}),ge.highest(x.domEventHandlers({paste:a=>co(a,this.onImagePaste)})),$s(n),this.themeCompartment.of(fo(this.initialTheme)),this.syntaxThemeCompartment.of(this.initialTheme==="dark"?Vt:[]),this.lineWrappingCompartment.of(this.lineWrappingEnabled?x.lineWrapping:[]),Ns,eo(o,t,{undoManager:r}),i]})}),this.editorView.scrollDOM.addEventListener("scroll",this.handleScroll,{passive:!0}),this.editorView.contentDOM.addEventListener("beforeinput",this.handleLocalInputActivity),this.editorView.contentDOM.addEventListener("keydown",this.handleLocalInputActivity),this.editorView.contentDOM.addEventListener("paste",this.handleLocalInputActivity),this.editorView.contentDOM.addEventListener("compositionstart",this.handleLocalInputActivity),this.updateCursorInfo(this.editorView.state),this.onSelectionChanged?.(this.editorView.state),this.emitViewportChange()}destroy(){this.viewportFrame&&(cancelAnimationFrame(this.viewportFrame),this.viewportFrame=0),this.remoteUpdateFlashTimer&&(clearTimeout(this.remoteUpdateFlashTimer),this.remoteUpdateFlashTimer=0),this.editorView?.contentDOM?.removeEventListener("beforeinput",this.handleLocalInputActivity),this.editorView?.contentDOM?.removeEventListener("keydown",this.handleLocalInputActivity),this.editorView?.contentDOM?.removeEventListener("paste",this.handleLocalInputActivity),this.editorView?.contentDOM?.removeEventListener("compositionstart",this.handleLocalInputActivity),this.editorView?.scrollDOM?.removeEventListener("scroll",this.handleScroll),this.editorView?.destroy(),this.editorView=null,this.editorContainer&&(this.editorContainer.innerHTML="")}getText(){return this.editorView?.state.doc.toString()??""}getDoc(){return this.editorView?.state.doc??null}getState(){return this.editorView?.state??null}getScrollContainer(){return this.editorView?.scrollDOM??null}applyTheme(t){this.editorView&&this.editorView.dispatch({effects:[this.themeCompartment.reconfigure(fo(t)),this.syntaxThemeCompartment.reconfigure(t==="dark"?Vt:[])]})}isLineWrappingEnabled(){return this.lineWrappingEnabled}setLineWrapping(t){return this.lineWrappingEnabled=!!t,this.editorView?(this.editorView.dispatch({effects:this.lineWrappingCompartment.reconfigure(this.lineWrappingEnabled?x.lineWrapping:[])}),this.lineWrappingEnabled):this.lineWrappingEnabled}requestMeasure(){this.editorView?.requestMeasure()}flashRemoteRange({from:t=0,to:n=0}={},r=Fs){let o=this.editorView?.state;if(!o||o.doc.length===0)return!1;let i=Math.min(Math.max(Math.round(t),0),o.doc.length),s=Math.min(Math.max(Math.round(n),0),o.doc.length);if(s<=i)if(i<o.doc.length)s=i+1;else if(i>0)i-=1,s=i+1;else return!1;let l=Math.max(s-i,0)<=Os&&Date.now()-this.lastLocalInputAt>Us;return this.editorView.dispatch({effects:go.of({from:i,showCaret:l,to:s})}),this.remoteUpdateFlashTimer&&clearTimeout(this.remoteUpdateFlashTimer),this.remoteUpdateFlashTimer=window.setTimeout(()=>{this.remoteUpdateFlashTimer=0,this.editorView?.dispatch({effects:yo.of(null)})},r),!0}getViewportState(t=.35){return{topLine:this.getTopVisibleLineNumber(t),viewportRatio:t}}getTopVisibleLineNumber(t=0){if(!this.editorView)return 1;let n=this.editorView.scrollDOM.getBoundingClientRect(),r=Math.max(n.height*t,8),o=this.editorView.lineBlockAtHeight(n.top+r-this.editorView.documentTop);return o?this.editorView.state.doc.lineAt(o.from).number:1}getCurrentSelectionLineRange(){let t=this.editorView?.state;if(!t)return null;let{doc:n,selection:r}=t,{from:o,to:i}=po(r),s=n.lineAt(o).number,a=Math.min(Math.max(i,o),n.length);return a>o&&n.lineAt(a).from===a&&(a-=1),{endLine:n.lineAt(a).number,startLine:s}}getCurrentSelectionCommentAnchor(){let t=this.editorView?.state;if(!t)return null;let{doc:n,selection:r}=t,{from:o,to:i}=po(r);if(o===i){let l=n.lineAt(o);return{anchorKind:"line",anchorQuote:ie(l.text),endIndex:l.to,endLine:l.number,startIndex:l.from,startLine:l.number}}let a=Math.min(Math.max(i,o),n.length);return a>o&&n.lineAt(a).from===a&&(a-=1),{anchorKind:"text",anchorQuote:ie(n.sliceString(o,i)),endIndex:i,endLine:n.lineAt(a).number,startIndex:o,startLine:n.lineAt(o).number}}normalizeLineRange({endLine:t,startLine:n}){let r=this.editorView?.state;if(!r)return{endLine:1,startLine:1};let o=r.doc.lines,i=Math.min(Math.max(Math.round(n??1),1),o);return{endLine:Math.min(Math.max(Math.round(t??i),i),o),startLine:i}}getLineInfoAt(t){let n=this.editorView?.state;if(!n)return null;let r=Math.min(Math.max(t,0),n.doc.length),o=n.doc.lineAt(r);return{line:o,lineNumber:o.number}}getAnchorClientRect(t){let n=this.editorView?.state,r=this.editorView;if(!n||!r||!t)return null;let o=t.anchorKind||t.kind||"line",i=Math.min(Math.max(Math.round(t.startIndex??0),0),n.doc.length),s=Math.min(Math.max(Math.round(t.endIndex??i),i),n.doc.length);if(o==="text"&&s>i){let k=r.coordsAtPos(i),b=r.coordsAtPos(Math.max(s-1,i));if(k&&b)return{bottom:Math.max(k.bottom,b.bottom),height:Math.max(k.bottom,b.bottom)-Math.min(k.top,b.top),left:Math.min(k.left,b.left),right:Math.max(k.right,b.right),top:Math.min(k.top,b.top),width:Math.max(k.right,b.right)-Math.min(k.left,b.left)}}let a=n.doc.line(Math.min(Math.max(Math.round(t.startLine??1),1),n.doc.lines)),l=r.lineBlockAt(a.from),h=r.scrollDOM.getBoundingClientRect(),m=r.scrollDOM.scrollTop,d=r.contentDOM.getBoundingClientRect(),g=d.left,S=Math.max(d.right,h.right-8),y=h.top+l.top-m;return{bottom:y+l.height,height:l.height,left:g,right:S,top:y,width:Math.max(S-g,0)}}getSelectionChipClientRect(t){let n=this.editorView?.state,r=this.editorView;if(!n||!r||!t)return null;let o=Math.min(Math.max(Math.round(t.startIndex??0),0),n.doc.length),i=n.doc.lineAt(o),s=r.lineBlockAt(i.from),a=r.scrollDOM.getBoundingClientRect(),l=r.scrollDOM.scrollTop,h=r.contentDOM.getBoundingClientRect(),m=Math.max(h.right,a.right-8),d=a.top+s.top-l;return{bottom:d+s.height,height:s.height,left:h.left,right:m,top:d,width:Math.max(m-h.left,0)}}scrollToLine(t,n=0){let r=this.editorView?.state,o=this.editorView?.scrollDOM;if(!r||!o||!this.editorView)return!1;let i=Math.min(Math.max(Math.round(t),1),r.doc.lines),s=r.doc.line(i),a=this.editorView.lineBlockAt(s.from),l=Math.max(o.scrollHeight-o.clientHeight,0),h=n>0?o.clientHeight*n:8,m=Math.min(Math.max(a.top-h,0),l);return o.scrollTo({top:m}),!0}scrollToPosition(t,n="center"){let r=this.editorView?.state,o=this.editorView?.scrollDOM;if(!r||!o||!this.editorView)return!1;let i=Math.min(Math.max(Math.round(t),0),r.doc.length),s=this.editorView.lineBlockAt(i),a=Math.max(o.scrollHeight-o.clientHeight,0),l=s.top;return n==="center"&&(l=s.top-(o.clientHeight-s.height)/2),o.scrollTo({top:Math.min(Math.max(l,0),a)}),!0}applyMarkdownToolbarAction(t){if(!this.editorView)return!1;let{state:n}=this.editorView,r=n.doc.toString(),o=!1,i=n.changeByRange(s=>{let a=so(r,s,t);return a?(o=!0,{changes:{from:a.from,insert:a.insert,to:a.to},range:p.range(a.anchor,a.head)}):{range:s}});return o?(this.editorView.dispatch(n.update(i,{scrollIntoView:!0,userEvent:"input"})),this.editorView.focus(),!0):!1}insertText(t){if(!this.editorView)return!1;let n=String(t??""),{state:r}=this.editorView,o=r.selection.main,i=o.from+n.length;return this.editorView.dispatch({changes:{from:o.from,insert:n,to:o.to},scrollIntoView:!0,selection:{anchor:i,head:i},userEvent:"input"}),this.editorView.focus(),!0}updateCursorInfo(t){if(!this.lineInfoElement)return;let n=t.selection.main.head,r=t.doc.lineAt(n),o=n-r.from+1;this.lineInfoElement.textContent=`Ln ${r.number}, Col ${o}`}emitViewportChange(){this.onViewportChanged?.(this.getViewportState())}};var xo=class{constructor({editorContainer:t,lineWrappingEnabled:n=!0,initialTheme:r,lineInfoElement:o,onAwarenessChange:i,onConnectionChange:s,onCommentsChange:a,onContentChange:l,onImagePaste:h,onSelectionChange:m,preferredUserName:d,localUser:g,getFileList:S}){this.onAwarenessChange=i,this.onCommentsChange=a,this.onContentChange=l,this.onSelectionChange=m,this.hasDeliveredContent=!1,this.lastDeliveredContent=null,this.collaborationClient=new Te({localUser:g,onAwarenessChange:y=>this.onAwarenessChange?.(y),onConnectionChange:s,onInitialSync:()=>this.emitContentChange(),preferredUserName:d,resolveAwarenessCursor:y=>this.resolveAwarenessCursor(y)}),this.viewAdapter=new ot({editorContainer:t,getFileList:S||(()=>[]),initialTheme:r,lineInfoElement:o,lineWrappingEnabled:n,onDocChanged:()=>{this.emitContentChange()},onImagePaste:h,onViewportChanged:y=>{this.collaborationClient.setLocalViewport(y)},onSelectionChanged:()=>{this.onSelectionChange?.(this.getCurrentSelectionCommentAnchor())}}),this.commentThreadStore=new Ae({getDoc:()=>this.collaborationClient.ydoc,getEditorState:()=>this.viewAdapter.getState(),getLocalUser:()=>this.collaborationClient.getLocalUser(),onCommentsChange:y=>this.onCommentsChange?.(y)})}async initialize(t){this.hasDeliveredContent=!1,this.lastDeliveredContent=null;let n=await this.collaborationClient.initialize(t);this.viewAdapter.initialize({awareness:n.awareness,filePath:t,undoManager:n.undoManager,ytext:n.ytext}),this.commentThreadStore.bind({commentThreads:n.commentThreads,ydoc:n.ydoc,ytext:n.ytext}),this.onAwarenessChange?.(this.collaborationClient.collectUsers(r=>this.resolveAwarenessCursor(r)))}emitContentChange({force:t=!1}={}){let n=this.getText();return!t&&this.hasDeliveredContent&&n===this.lastDeliveredContent?!1:(this.hasDeliveredContent=!0,this.lastDeliveredContent=n,this.onContentChange?.(),!0)}ensureInitialContent(){return this.emitContentChange()}applyTheme(t){this.viewAdapter.applyTheme(t)}getText(){return this.collaborationClient.getText()||this.viewAdapter.getText()}getScrollContainer(){return this.viewAdapter.getScrollContainer()}getTopVisibleLineNumber(t=0){return this.viewAdapter.getTopVisibleLineNumber(t)}getLocalUser(){return this.collaborationClient.getLocalUser()}get awareness(){return this.collaborationClient.awareness}get provider(){return this.collaborationClient.provider}get ydoc(){return this.collaborationClient.ydoc}get ytext(){return this.collaborationClient.ytext}getCurrentSelectionLineRange(){return this.viewAdapter.getCurrentSelectionLineRange()}getCurrentSelectionCommentAnchor(){return this.viewAdapter.getCurrentSelectionCommentAnchor()}getCommentAnchorClientRect(t){return this.viewAdapter.getAnchorClientRect(t)}getSelectionChipClientRect(t){return this.viewAdapter.getSelectionChipClientRect(t)}getCommentThreads(){return this.commentThreadStore.getCommentThreads()}createCommentThread(t){return this.commentThreadStore.createCommentThread(t)}replyToCommentThread(t,n){return this.commentThreadStore.replyToCommentThread(t,n)}toggleCommentReaction(t,n,r){return this.commentThreadStore.toggleCommentReaction(t,n,r)}deleteCommentThread(t){return this.commentThreadStore.deleteCommentThread(t)}isLineWrappingEnabled(){return this.viewAdapter.isLineWrappingEnabled()}setLineWrapping(t){return this.viewAdapter.setLineWrapping(t)}scrollToLine(t,n=0){return this.viewAdapter.scrollToLine(t,n)}getUserCursor(t){return this.collaborationClient.getUserCursor(t,n=>this.resolveAwarenessCursor(n))}getUserViewport(t){return this.collaborationClient.getUserViewport(t)}scrollToPosition(t,n="center"){return this.viewAdapter.scrollToPosition(t,n)}scrollToUserViewport(t){let n=this.getUserViewport(t);return n?this.scrollToLine(n.topLine,n.viewportRatio):!1}scrollToUserCursor(t,n="center"){let r=this.getUserCursor(t);return r?this.scrollToPosition(r.cursorHead,n)||this.scrollToLine(r.cursorLine):!1}setUserName(t){return this.collaborationClient.setUserName(t)}requestMeasure(){this.viewAdapter.requestMeasure()}applyMarkdownToolbarAction(t){return this.viewAdapter.applyMarkdownToolbarAction(t)}insertText(t){return this.viewAdapter.insertText(t)}flashExternalUpdate(t){return this.viewAdapter.flashRemoteRange(t)}waitForInitialSync(t=1500){return this.collaborationClient.waitForInitialSync(t)}destroy(){this.commentThreadStore.unbind(),this.hasDeliveredContent=!1,this.lastDeliveredContent=null,this.collaborationClient.destroy(),this.viewAdapter.destroy()}resolveAwarenessCursor(t){let n=this.collaborationClient.ydoc,r=this.collaborationClient.ytext,o=this.viewAdapter.getState();if(!t?.anchor||!t?.head||!n||!o||!r)return null;let i=R(t.anchor,n),s=R(t.head,n);if(!i||!s||i.type!==r||s.type!==r)return null;let a=o.doc.lineAt(s.index);return{cursorAnchor:i.index,cursorHead:s.index,cursorLine:a.number}}};export{xo as EditorSession};
@@ -1 +1 @@
1
- import{a as z,b as T,c as O}from"./chunk-5QRWYPYT.js";import{a as l,b as A,d as R,l as V}from"./chunk-R3DDMJHH.js";import"./chunk-775E65SU.js";var B=Object.freeze({".mp4":"video/mp4",".ogg":"video/ogg",".webm":"video/webm"}),D=new Set(["youtube.com","www.youtube.com","m.youtube.com","youtu.be","www.youtu.be","youtube-nocookie.com","www.youtube-nocookie.com"]);function S(t,e,a,r,c,d){return t?.(e,a,r,c,d)??d.renderToken(e,a,r)}function _(t=""){let e=2166136261;for(let a=0;a<t.length;a+=1)e^=t.charCodeAt(a),e=Math.imul(e,16777619);return(e>>>0).toString(36)}function k(t=""){return String(t).replace(/<->/g,"\u2194").replace(/<=>/g,"\u21D4").replace(/->/g,"\u2192").replace(/<-/g,"\u2190").replace(/=>/g,"\u21D2")}function P(t=""){return l(k(t))}function G(t=""){let e=String(t).split(/<br\s*\/?>/i);return e.length===1?P(t):e.map(a=>P(a)).join("<br>")}function H({key:t,sourceAttributes:e,sourceHash:a,sourceText:r}){return`<div class="mermaid-shell diagram-preview-shell"${e} data-mermaid-key="${l(t)}" data-mermaid-source-hash="${l(a)}"><div class="mermaid-placeholder-card diagram-preview-placeholder-card"><div class="mermaid-placeholder-copy diagram-preview-placeholder-copy"><strong>Mermaid diagram</strong><span>Loads when visible</span></div><button type="button" class="mermaid-placeholder-btn diagram-preview-placeholder-btn" data-mermaid-key="${l(t)}">Render</button></div><pre class="mermaid-source" hidden>${l(r)}</pre></div>`}function j({embedKey:t,label:e,target:a}){return`<span class="mermaid-shell diagram-preview-shell" data-mermaid-key="${l(t)}" data-mermaid-target="${l(a)}" data-mermaid-label="${l(e)}"><span class="mermaid-placeholder-card diagram-preview-placeholder-card"><span class="mermaid-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Loads when visible</span></span><button type="button" class="mermaid-placeholder-btn diagram-preview-placeholder-btn" data-mermaid-key="${l(t)}">Render</button></span><span class="mermaid-source" hidden></span></span>`}function Z({key:t,sourceAttributes:e,sourceHash:a,sourceText:r}){return`<div class="plantuml-shell diagram-preview-shell"${e} data-plantuml-key="${l(t)}" data-plantuml-source-hash="${l(a)}"><div class="plantuml-placeholder-card diagram-preview-placeholder-card"><div class="plantuml-placeholder-copy diagram-preview-placeholder-copy"><strong>PlantUML diagram</strong><span>Renders server-side when visible</span></div><button type="button" class="plantuml-placeholder-btn diagram-preview-placeholder-btn" data-plantuml-key="${l(t)}">Render</button></div><pre class="plantuml-source" hidden>${l(r)}</pre></div>`}function X({embedKey:t,label:e,target:a}){return`<span class="plantuml-shell diagram-preview-shell" data-plantuml-key="${l(t)}" data-plantuml-target="${l(a)}" data-plantuml-label="${l(e)}"><span class="plantuml-placeholder-card diagram-preview-placeholder-card"><span class="plantuml-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Renders server-side when visible</span></span><button type="button" class="plantuml-placeholder-btn diagram-preview-placeholder-btn" data-plantuml-key="${l(t)}">Render</button></span><span class="plantuml-source" hidden></span></span>`}function F({embedKey:t,label:e,target:a}){return`<span class="excalidraw-embed-placeholder diagram-preview-shell" data-embed-key="${l(t)}" data-embed-target="${l(a)}" data-embed-label="${l(e)}"><span class="excalidraw-embed-placeholder-card diagram-preview-placeholder-card"><span class="excalidraw-embed-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Loads when visible</span></span><button type="button" class="excalidraw-embed-placeholder-btn diagram-preview-placeholder-btn" data-embed-key="${l(t)}">Load diagram</button></span></span>`}function J(t=""){let e=t.toLowerCase().match(/\.(mp4|ogg|webm)$/i);return e&&B[`.${e[1].toLowerCase()}`]||null}function U(t=""){let e=String(t||"").trim();return/^[A-Za-z0-9_-]{11}$/.test(e)?e:null}function K(t){let e=t.hostname.toLowerCase(),a=null;return e==="youtu.be"||e==="www.youtu.be"?a=U(t.pathname.split("/").filter(Boolean)[0]||""):(e.includes("youtube")||e.includes("youtube-nocookie"))&&(t.pathname==="/watch"?a=U(t.searchParams.get("v")||""):t.pathname.startsWith("/embed/")&&(a=U(t.pathname.split("/").filter(Boolean)[1]||""))),a?`https://www.youtube-nocookie.com/embed/${a}`:null}function q(t=""){let e;try{e=new URL(String(t||"").trim())}catch{return null}if(e.protocol!=="https:")return null;let a=e.hostname.toLowerCase();if(D.has(a)){let c=K(e);return c?{embedUrl:c,type:"youtube"}:null}let r=J(e.pathname);return r?{mimeType:r,sourceUrl:e.toString(),type:"direct-video"}:null}function N({embedKey:t,kind:e,label:a,mimeType:r="",source:c,url:d}){let m=e==="youtube"?"YouTube video":"Video file",u=r?` data-video-embed-mime-type="${l(r)}"`:"";return`<span class="video-embed-placeholder video-embed-shell diagram-preview-shell" data-video-embed-key="${l(t)}" data-video-embed-kind="${l(e)}" data-video-embed-label="${l(a)}" data-video-embed-source="${l(c)}" data-video-embed-url="${l(d)}"${u}><span class="video-embed-placeholder-card diagram-preview-placeholder-card"><span class="video-embed-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(a)}</strong><span>${l(m)}</span></span></span></span>`}function Q(t,e){let a=t.attrGet("src")||"",r=q(a);if(!r)return null;let c=k(t.content||t.attrGet("title")||""),d=r.type==="youtube"?r.embedUrl:r.sourceUrl,m=e.get(d)??0;e.set(d,m+1);let u=`video-${_(d)}-${m}`;return N({embedKey:u,kind:r.type,label:c||"Embedded video",mimeType:r.mimeType,source:d,url:r.type==="youtube"?r.embedUrl:r.sourceUrl})}function ee(t=""){let e=String(t??"").trim();return!e||e.startsWith("data:")||e.startsWith("blob:")||e.startsWith("#")||e.startsWith("//")||/^[a-zA-Z][a-zA-Z\d+.-]*:/u.test(e)||e.startsWith("/")}function te(t="",{attachmentApiPath:e,sourceFilePath:a}={}){if(!a||ee(t))return null;let r=R(a,t);return!r||!V(r)?null:`${e}?path=${encodeURIComponent(r)}`}function E(t,{excalidrawEmbedCounts:e,fileList:a,mermaidEmbedCounts:r,plantUmlEmbedCounts:c}){let d=/!\[\[([^\]|]+\.(?:excalidraw|mmd|mermaid|puml|plantuml))(?:\|([^\]]+))?\]\]|\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/gi,m=0,u="",h;for(;(h=d.exec(t))!==null;){if(h.index>m&&(u+=G(t.slice(m,h.index))),h[1]){let s=h[1].trim(),y=(h[2]||s).trim();if(/\.excalidraw$/i.test(s)){let b=e.get(s)??0;e.set(s,b+1),u+=F({embedKey:`${s}#${b}`,label:k(y.replace(/\.excalidraw$/i,"")),target:s})}else if(/\.(?:mmd|mermaid)$/i.test(s)){let b=r.get(s)??0;r.set(s,b+1),u+=j({embedKey:`${s}#${b}`,label:k(y.replace(/\.(?:mmd|mermaid)$/i,"")),target:s})}else{let b=c.get(s)??0;c.set(s,b+1),u+=X({embedKey:`${s}#${b}`,label:k(y.replace(/\.(?:puml|plantuml)$/i,"")),target:s})}}else{let s=h[3].trim(),y=(h[4]||h[3]).trim(),b=A(s,a),I=b?"wiki-link":"wiki-link wiki-link-new",M=b?k(y):`Create "${s}"`;u+=`<a class="${I}" href="#" data-wiki-target="${l(s)}" title="${l(M)}">${P(y)}</a>`}m=d.lastIndex}return m<t.length&&(u+=G(t.slice(m))),u}function re(t=[],{attachmentApiPath:e="/api/attachment",sourceFilePath:a=""}={}){let r=z({highlight(o,n){if(n==="mermaid"||n==="plantuml"||n==="puml")return"";try{return n&&T.getLanguage(n)?T.highlight(o,{language:n}).value:T.highlightAuto(o).value}catch{return""}},html:!1,linkify:!0,typographer:!0});r.core.ruler.push("collabmd-source-lines",o=>{o.tokens.forEach(n=>{if(!n.map)return;let[i,w]=n.map,g=i+1,p=Math.max(w,i+1);(n.nesting===1||n.type==="fence"||n.type==="code_block"||n.type==="html_block")&&(n.attrSet("data-source-line",String(g)),n.attrSet("data-source-line-end",String(p)))})});let c=new Map,d=new Map,m=new Map,u=new Map,h=new Map,s=new Map,y=r.renderer.rules.fence,b=r.renderer.rules.image,I=r.renderer.rules.link_open,M=r.renderer.rules.table_open,Y=r.renderer.rules.table_close;return r.renderer.rules.fence=(o,n,i,w,g)=>{let p=o[n],f=p.info?p.info.trim().toLowerCase():"",$=p.attrGet("data-source-line"),C=p.attrGet("data-source-line-end"),L=$?` data-source-line="${$}" data-source-line-end="${C}"`:"";if(f==="mermaid"){let v=_(p.content),x=d.get(v)??0;return d.set(v,x+1),H({key:`mermaid-${v}-${x}`,sourceAttributes:L,sourceHash:v,sourceText:p.content})}if(f==="plantuml"||f==="puml"){let v=_(p.content),x=u.get(v)??0;return u.set(v,x+1),Z({key:`plantuml-${v}-${x}`,sourceAttributes:L,sourceHash:v,sourceText:p.content})}let W=S(y,o,n,i,w,g);return $?W.replace(/^<pre/,`<pre data-source-line="${$}" data-source-line-end="${C}"`):W},r.renderer.rules.list_item_open=(o,n,i,w,g)=>{let f=o[n+2]?.content??"";return(f.startsWith("[ ] ")||f.startsWith("[x] ")||f.startsWith("[X] "))&&o[n].attrJoin("class","task-list-item"),g.renderToken(o,n,i)},r.renderer.rules.text=(o,n)=>{let i=o[n].content;return i.startsWith("[x] ")||i.startsWith("[X] ")?`<input type="checkbox" checked disabled> ${E(i.slice(4),{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})}`:i.startsWith("[ ] ")?`<input type="checkbox" disabled> ${E(i.slice(4),{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})}`:E(i,{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})},r.renderer.rules.link_open=(o,n,i,w,g)=>(o[n].attrSet("target","_blank"),o[n].attrSet("rel","noopener noreferrer"),S(I,o,n,i,w,g)),r.renderer.rules.image=(o,n,i,w,g)=>{let p=o[n],f=te(p.attrGet("src")||"",{attachmentApiPath:e,sourceFilePath:a});f&&p.attrSet("src",f);let $=Q(p,s);return $||S(b,o,n,i,w,g)},r.renderer.rules.table_open=(o,n,i,w,g)=>`<div class="table-wrapper">${S(M,o,n,i,w,g)}`,r.renderer.rules.table_close=(o,n,i,w,g)=>`${S(Y,o,n,i,w,g)}</div>`,r}function ie({attachmentApiPath:t="/api/attachment",fileList:e=[],markdownText:a="",sourceFilePath:r=""}={}){let c=String(a);return{html:re(e,{attachmentApiPath:t,sourceFilePath:r}).render(c),stats:O(c)}}export{ie as compilePreviewDocument};
1
+ import{a as z,b as T,c as O}from"./chunk-5QRWYPYT.js";import{a as l,b as A,d as R,l as V}from"./chunk-GFDM7YCF.js";import"./chunk-775E65SU.js";var B=Object.freeze({".mp4":"video/mp4",".ogg":"video/ogg",".webm":"video/webm"}),D=new Set(["youtube.com","www.youtube.com","m.youtube.com","youtu.be","www.youtu.be","youtube-nocookie.com","www.youtube-nocookie.com"]);function S(t,e,a,r,c,d){return t?.(e,a,r,c,d)??d.renderToken(e,a,r)}function _(t=""){let e=2166136261;for(let a=0;a<t.length;a+=1)e^=t.charCodeAt(a),e=Math.imul(e,16777619);return(e>>>0).toString(36)}function k(t=""){return String(t).replace(/<->/g,"\u2194").replace(/<=>/g,"\u21D4").replace(/->/g,"\u2192").replace(/<-/g,"\u2190").replace(/=>/g,"\u21D2")}function P(t=""){return l(k(t))}function G(t=""){let e=String(t).split(/<br\s*\/?>/i);return e.length===1?P(t):e.map(a=>P(a)).join("<br>")}function H({key:t,sourceAttributes:e,sourceHash:a,sourceText:r}){return`<div class="mermaid-shell diagram-preview-shell"${e} data-mermaid-key="${l(t)}" data-mermaid-source-hash="${l(a)}"><div class="mermaid-placeholder-card diagram-preview-placeholder-card"><div class="mermaid-placeholder-copy diagram-preview-placeholder-copy"><strong>Mermaid diagram</strong><span>Loads when visible</span></div><button type="button" class="mermaid-placeholder-btn diagram-preview-placeholder-btn" data-mermaid-key="${l(t)}">Render</button></div><pre class="mermaid-source" hidden>${l(r)}</pre></div>`}function j({embedKey:t,label:e,target:a}){return`<span class="mermaid-shell diagram-preview-shell" data-mermaid-key="${l(t)}" data-mermaid-target="${l(a)}" data-mermaid-label="${l(e)}"><span class="mermaid-placeholder-card diagram-preview-placeholder-card"><span class="mermaid-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Loads when visible</span></span><button type="button" class="mermaid-placeholder-btn diagram-preview-placeholder-btn" data-mermaid-key="${l(t)}">Render</button></span><span class="mermaid-source" hidden></span></span>`}function Z({key:t,sourceAttributes:e,sourceHash:a,sourceText:r}){return`<div class="plantuml-shell diagram-preview-shell"${e} data-plantuml-key="${l(t)}" data-plantuml-source-hash="${l(a)}"><div class="plantuml-placeholder-card diagram-preview-placeholder-card"><div class="plantuml-placeholder-copy diagram-preview-placeholder-copy"><strong>PlantUML diagram</strong><span>Renders server-side when visible</span></div><button type="button" class="plantuml-placeholder-btn diagram-preview-placeholder-btn" data-plantuml-key="${l(t)}">Render</button></div><pre class="plantuml-source" hidden>${l(r)}</pre></div>`}function X({embedKey:t,label:e,target:a}){return`<span class="plantuml-shell diagram-preview-shell" data-plantuml-key="${l(t)}" data-plantuml-target="${l(a)}" data-plantuml-label="${l(e)}"><span class="plantuml-placeholder-card diagram-preview-placeholder-card"><span class="plantuml-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Renders server-side when visible</span></span><button type="button" class="plantuml-placeholder-btn diagram-preview-placeholder-btn" data-plantuml-key="${l(t)}">Render</button></span><span class="plantuml-source" hidden></span></span>`}function F({embedKey:t,label:e,target:a}){return`<span class="excalidraw-embed-placeholder diagram-preview-shell" data-embed-key="${l(t)}" data-embed-target="${l(a)}" data-embed-label="${l(e)}"><span class="excalidraw-embed-placeholder-card diagram-preview-placeholder-card"><span class="excalidraw-embed-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(e)}</strong><span>Loads when visible</span></span><button type="button" class="excalidraw-embed-placeholder-btn diagram-preview-placeholder-btn" data-embed-key="${l(t)}">Load diagram</button></span></span>`}function J(t=""){let e=t.toLowerCase().match(/\.(mp4|ogg|webm)$/i);return e&&B[`.${e[1].toLowerCase()}`]||null}function U(t=""){let e=String(t||"").trim();return/^[A-Za-z0-9_-]{11}$/.test(e)?e:null}function K(t){let e=t.hostname.toLowerCase(),a=null;return e==="youtu.be"||e==="www.youtu.be"?a=U(t.pathname.split("/").filter(Boolean)[0]||""):(e.includes("youtube")||e.includes("youtube-nocookie"))&&(t.pathname==="/watch"?a=U(t.searchParams.get("v")||""):t.pathname.startsWith("/embed/")&&(a=U(t.pathname.split("/").filter(Boolean)[1]||""))),a?`https://www.youtube-nocookie.com/embed/${a}`:null}function q(t=""){let e;try{e=new URL(String(t||"").trim())}catch{return null}if(e.protocol!=="https:")return null;let a=e.hostname.toLowerCase();if(D.has(a)){let c=K(e);return c?{embedUrl:c,type:"youtube"}:null}let r=J(e.pathname);return r?{mimeType:r,sourceUrl:e.toString(),type:"direct-video"}:null}function N({embedKey:t,kind:e,label:a,mimeType:r="",source:c,url:d}){let m=e==="youtube"?"YouTube video":"Video file",u=r?` data-video-embed-mime-type="${l(r)}"`:"";return`<span class="video-embed-placeholder video-embed-shell diagram-preview-shell" data-video-embed-key="${l(t)}" data-video-embed-kind="${l(e)}" data-video-embed-label="${l(a)}" data-video-embed-source="${l(c)}" data-video-embed-url="${l(d)}"${u}><span class="video-embed-placeholder-card diagram-preview-placeholder-card"><span class="video-embed-placeholder-copy diagram-preview-placeholder-copy"><strong>${l(a)}</strong><span>${l(m)}</span></span></span></span>`}function Q(t,e){let a=t.attrGet("src")||"",r=q(a);if(!r)return null;let c=k(t.content||t.attrGet("title")||""),d=r.type==="youtube"?r.embedUrl:r.sourceUrl,m=e.get(d)??0;e.set(d,m+1);let u=`video-${_(d)}-${m}`;return N({embedKey:u,kind:r.type,label:c||"Embedded video",mimeType:r.mimeType,source:d,url:r.type==="youtube"?r.embedUrl:r.sourceUrl})}function ee(t=""){let e=String(t??"").trim();return!e||e.startsWith("data:")||e.startsWith("blob:")||e.startsWith("#")||e.startsWith("//")||/^[a-zA-Z][a-zA-Z\d+.-]*:/u.test(e)||e.startsWith("/")}function te(t="",{attachmentApiPath:e,sourceFilePath:a}={}){if(!a||ee(t))return null;let r=R(a,t);return!r||!V(r)?null:`${e}?path=${encodeURIComponent(r)}`}function E(t,{excalidrawEmbedCounts:e,fileList:a,mermaidEmbedCounts:r,plantUmlEmbedCounts:c}){let d=/!\[\[([^\]|]+\.(?:excalidraw|mmd|mermaid|puml|plantuml))(?:\|([^\]]+))?\]\]|\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/gi,m=0,u="",h;for(;(h=d.exec(t))!==null;){if(h.index>m&&(u+=G(t.slice(m,h.index))),h[1]){let s=h[1].trim(),y=(h[2]||s).trim();if(/\.excalidraw$/i.test(s)){let b=e.get(s)??0;e.set(s,b+1),u+=F({embedKey:`${s}#${b}`,label:k(y.replace(/\.excalidraw$/i,"")),target:s})}else if(/\.(?:mmd|mermaid)$/i.test(s)){let b=r.get(s)??0;r.set(s,b+1),u+=j({embedKey:`${s}#${b}`,label:k(y.replace(/\.(?:mmd|mermaid)$/i,"")),target:s})}else{let b=c.get(s)??0;c.set(s,b+1),u+=X({embedKey:`${s}#${b}`,label:k(y.replace(/\.(?:puml|plantuml)$/i,"")),target:s})}}else{let s=h[3].trim(),y=(h[4]||h[3]).trim(),b=A(s,a),I=b?"wiki-link":"wiki-link wiki-link-new",M=b?k(y):`Create "${s}"`;u+=`<a class="${I}" href="#" data-wiki-target="${l(s)}" title="${l(M)}">${P(y)}</a>`}m=d.lastIndex}return m<t.length&&(u+=G(t.slice(m))),u}function re(t=[],{attachmentApiPath:e="/api/attachment",sourceFilePath:a=""}={}){let r=z({highlight(o,n){if(n==="mermaid"||n==="plantuml"||n==="puml")return"";try{return n&&T.getLanguage(n)?T.highlight(o,{language:n}).value:T.highlightAuto(o).value}catch{return""}},html:!1,linkify:!0,typographer:!0});r.core.ruler.push("collabmd-source-lines",o=>{o.tokens.forEach(n=>{if(!n.map)return;let[i,w]=n.map,g=i+1,p=Math.max(w,i+1);(n.nesting===1||n.type==="fence"||n.type==="code_block"||n.type==="html_block")&&(n.attrSet("data-source-line",String(g)),n.attrSet("data-source-line-end",String(p)))})});let c=new Map,d=new Map,m=new Map,u=new Map,h=new Map,s=new Map,y=r.renderer.rules.fence,b=r.renderer.rules.image,I=r.renderer.rules.link_open,M=r.renderer.rules.table_open,Y=r.renderer.rules.table_close;return r.renderer.rules.fence=(o,n,i,w,g)=>{let p=o[n],f=p.info?p.info.trim().toLowerCase():"",$=p.attrGet("data-source-line"),C=p.attrGet("data-source-line-end"),L=$?` data-source-line="${$}" data-source-line-end="${C}"`:"";if(f==="mermaid"){let v=_(p.content),x=d.get(v)??0;return d.set(v,x+1),H({key:`mermaid-${v}-${x}`,sourceAttributes:L,sourceHash:v,sourceText:p.content})}if(f==="plantuml"||f==="puml"){let v=_(p.content),x=u.get(v)??0;return u.set(v,x+1),Z({key:`plantuml-${v}-${x}`,sourceAttributes:L,sourceHash:v,sourceText:p.content})}let W=S(y,o,n,i,w,g);return $?W.replace(/^<pre/,`<pre data-source-line="${$}" data-source-line-end="${C}"`):W},r.renderer.rules.list_item_open=(o,n,i,w,g)=>{let f=o[n+2]?.content??"";return(f.startsWith("[ ] ")||f.startsWith("[x] ")||f.startsWith("[X] "))&&o[n].attrJoin("class","task-list-item"),g.renderToken(o,n,i)},r.renderer.rules.text=(o,n)=>{let i=o[n].content;return i.startsWith("[x] ")||i.startsWith("[X] ")?`<input type="checkbox" checked disabled> ${E(i.slice(4),{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})}`:i.startsWith("[ ] ")?`<input type="checkbox" disabled> ${E(i.slice(4),{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})}`:E(i,{excalidrawEmbedCounts:c,fileList:t,mermaidEmbedCounts:m,plantUmlEmbedCounts:h})},r.renderer.rules.link_open=(o,n,i,w,g)=>(o[n].attrSet("target","_blank"),o[n].attrSet("rel","noopener noreferrer"),S(I,o,n,i,w,g)),r.renderer.rules.image=(o,n,i,w,g)=>{let p=o[n],f=te(p.attrGet("src")||"",{attachmentApiPath:e,sourceFilePath:a});f&&p.attrSet("src",f);let $=Q(p,s);return $||S(b,o,n,i,w,g)},r.renderer.rules.table_open=(o,n,i,w,g)=>`<div class="table-wrapper">${S(M,o,n,i,w,g)}`,r.renderer.rules.table_close=(o,n,i,w,g)=>`${S(Y,o,n,i,w,g)}</div>`,r}function ie({attachmentApiPath:t="/api/attachment",fileList:e=[],markdownText:a="",sourceFilePath:r=""}={}){let c=String(a);return{html:re(e,{attachmentApiPath:t,sourceFilePath:r}).render(c),stats:O(c)}}export{ie as compilePreviewDocument};
@@ -1,4 +1,4 @@
1
- import{a as c,p as a}from"./chunk-R3DDMJHH.js";import"./chunk-775E65SU.js";var d=12;function u(h){return a(h)}var f=class{constructor({getFileList:e,onFileSelect:t}){this.getFileList=e,this.onFileSelect=t,this.overlay=document.getElementById("quickSwitcher"),this.input=document.getElementById("quickSwitcherInput"),this.resultsList=document.getElementById("quickSwitcherResults"),this.hint=document.getElementById("quickSwitcherHint"),this.filteredFiles=[],this.selectedIndex=0,this.isOpen=!1,this.bindEvents()}bindEvents(){this.overlay?.addEventListener("mousedown",e=>{e.target===this.overlay&&this.close()}),this.input?.addEventListener("input",()=>{this.filterFiles()}),this.input?.addEventListener("keydown",e=>{switch(e.key){case"ArrowDown":e.preventDefault(),this.moveSelection(1);break;case"ArrowUp":e.preventDefault(),this.moveSelection(-1);break;case"Enter":e.preventDefault(),this.confirmSelection();break;case"Escape":e.preventDefault(),this.close();break;case"Tab":e.preventDefault(),this.moveSelection(e.shiftKey?-1:1);break}})}open(){this.overlay&&(this.isOpen=!0,this.input.value="",this.selectedIndex=0,this.overlay.classList.add("visible"),this.filterFiles(),this._focusAfterTransition())}_focusAfterTransition(){this._cancelPendingFocus();let e=()=>{this._focusCleanup=null,this.input?.focus(),this.isOpen&&this.input&&document.activeElement!==this.input&&setTimeout(()=>this.input?.focus(),50)},t=i=>{(i.propertyName==="visibility"||i.propertyName==="opacity")&&(this.overlay.removeEventListener("transitionend",t),clearTimeout(s),e())};this.overlay.addEventListener("transitionend",t);let s=setTimeout(()=>{this.overlay.removeEventListener("transitionend",t),e()},160);this._focusCleanup=()=>{this.overlay.removeEventListener("transitionend",t),clearTimeout(s)}}_cancelPendingFocus(){this._focusCleanup&&(this._focusCleanup(),this._focusCleanup=null)}close(){this.overlay&&(this._cancelPendingFocus(),this.isOpen=!1,this.overlay.classList.remove("visible"),this.input.value="",this.resultsList.innerHTML="")}toggle(){this.isOpen?this.close():this.open()}filterFiles(){let e=this.input?.value.trim().toLowerCase()??"",t=this.getFileList?.()??[];e?this.filteredFiles=t.map(s=>{let i=this.fuzzyScore(s.toLowerCase(),e);return{filePath:s,score:i}}).filter(s=>s.score>0).sort((s,i)=>i.score-s.score).slice(0,d).map(s=>s.filePath):this.filteredFiles=t.slice(0,d),this.selectedIndex=0,this.renderResults(e)}fuzzyScore(e,t){let s=u(e),i=s.split("/").pop();if(i.includes(t))return 100+1/i.length;if(s.includes(t))return 50+1/s.length;let n=0,o=0,l=0;for(let r=0;r<s.length&&n<t.length;r++)s[r]===t[n]?(n++,l+=1,o+=l,(r===0||s[r-1]==="/"||s[r-1]==="-"||s[r-1]==="_"||s[r-1]===" ")&&(o+=5)):l=0;return n===t.length?o:0}renderResults(e){if(!this.resultsList)return;if(this.resultsList.innerHTML="",this.filteredFiles.length===0){this.hint&&(this.hint.textContent=e?"No files found":"No files in vault",this.hint.classList.remove("hidden"));return}this.hint&&this.hint.classList.add("hidden");let t=document.createDocumentFragment();this.filteredFiles.forEach((s,i)=>{let n=document.createElement("button");n.type="button",n.className="qs-result-item",i===this.selectedIndex&&n.classList.add("selected"),n.dataset.index=String(i);let o=u(s),l=o.split("/").pop(),r=o.includes("/")?o.substring(0,o.lastIndexOf("/")):"";n.innerHTML=`
1
+ import{a as c,p as a}from"./chunk-GFDM7YCF.js";import"./chunk-775E65SU.js";var d=12;function u(h){return a(h)}var f=class{constructor({getFileList:e,onFileSelect:t}){this.getFileList=e,this.onFileSelect=t,this.overlay=document.getElementById("quickSwitcher"),this.input=document.getElementById("quickSwitcherInput"),this.resultsList=document.getElementById("quickSwitcherResults"),this.hint=document.getElementById("quickSwitcherHint"),this.filteredFiles=[],this.selectedIndex=0,this.isOpen=!1,this.bindEvents()}bindEvents(){this.overlay?.addEventListener("mousedown",e=>{e.target===this.overlay&&this.close()}),this.input?.addEventListener("input",()=>{this.filterFiles()}),this.input?.addEventListener("keydown",e=>{switch(e.key){case"ArrowDown":e.preventDefault(),this.moveSelection(1);break;case"ArrowUp":e.preventDefault(),this.moveSelection(-1);break;case"Enter":e.preventDefault(),this.confirmSelection();break;case"Escape":e.preventDefault(),this.close();break;case"Tab":e.preventDefault(),this.moveSelection(e.shiftKey?-1:1);break}})}open(){this.overlay&&(this.isOpen=!0,this.input.value="",this.selectedIndex=0,this.overlay.classList.add("visible"),this.filterFiles(),this._focusAfterTransition())}_focusAfterTransition(){this._cancelPendingFocus();let e=()=>{this._focusCleanup=null,this.input?.focus(),this.isOpen&&this.input&&document.activeElement!==this.input&&setTimeout(()=>this.input?.focus(),50)},t=i=>{(i.propertyName==="visibility"||i.propertyName==="opacity")&&(this.overlay.removeEventListener("transitionend",t),clearTimeout(s),e())};this.overlay.addEventListener("transitionend",t);let s=setTimeout(()=>{this.overlay.removeEventListener("transitionend",t),e()},160);this._focusCleanup=()=>{this.overlay.removeEventListener("transitionend",t),clearTimeout(s)}}_cancelPendingFocus(){this._focusCleanup&&(this._focusCleanup(),this._focusCleanup=null)}close(){this.overlay&&(this._cancelPendingFocus(),this.isOpen=!1,this.overlay.classList.remove("visible"),this.input.value="",this.resultsList.innerHTML="")}toggle(){this.isOpen?this.close():this.open()}filterFiles(){let e=this.input?.value.trim().toLowerCase()??"",t=this.getFileList?.()??[];e?this.filteredFiles=t.map(s=>{let i=this.fuzzyScore(s.toLowerCase(),e);return{filePath:s,score:i}}).filter(s=>s.score>0).sort((s,i)=>i.score-s.score).slice(0,d).map(s=>s.filePath):this.filteredFiles=t.slice(0,d),this.selectedIndex=0,this.renderResults(e)}fuzzyScore(e,t){let s=u(e),i=s.split("/").pop();if(i.includes(t))return 100+1/i.length;if(s.includes(t))return 50+1/s.length;let n=0,o=0,l=0;for(let r=0;r<s.length&&n<t.length;r++)s[r]===t[n]?(n++,l+=1,o+=l,(r===0||s[r-1]==="/"||s[r-1]==="-"||s[r-1]==="_"||s[r-1]===" ")&&(o+=5)):l=0;return n===t.length?o:0}renderResults(e){if(!this.resultsList)return;if(this.resultsList.innerHTML="",this.filteredFiles.length===0){this.hint&&(this.hint.textContent=e?"No files found":"No files in vault",this.hint.classList.remove("hidden"));return}this.hint&&this.hint.classList.add("hidden");let t=document.createDocumentFragment();this.filteredFiles.forEach((s,i)=>{let n=document.createElement("button");n.type="button",n.className="qs-result-item",i===this.selectedIndex&&n.classList.add("selected"),n.dataset.index=String(i);let o=u(s),l=o.split("/").pop(),r=o.includes("/")?o.substring(0,o.lastIndexOf("/")):"";n.innerHTML=`
2
2
  <svg class="qs-result-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
3
3
  <span class="qs-result-name">${this.highlightMatch(l,e)}</span>
4
4
  ${r?`<span class="qs-result-path">${c(r)}</span>`:""}