UNPKG

@gdquest/gd-exercise-react

Version:

React project for GDExercise.

3 lines (2 loc) 2.94 kB
import{F as R,E as p,D as b,h as C,j as u,V as k,s as T,k as w}from"./GdExercise-be6e505c.js";import"./client-c781d100.js";import"./loader-9a6dfd57.js";var d=R.define({combine:e=>e.length>0?e[e.length-1]:"start-freeze"}),h=R.define({combine:e=>e.length>0?e[e.length-1]:"end-freeze"}),x=p.theme({".cm-frozen":{opacity:.75,fontStyle:"italic"}});function F(e,o,s){const c=T(e).cursor(),n=e.languageDataAt("commentTokens",0),t=[];let r=0;do{if(c.name!=="Comment")continue;let f=0,m=0;const a=e.sliceDoc(c.from,c.to);let g="";for(const l of n)if(l.line!=null){if(!a.startsWith(l.line))continue;f=l.line.length}else if(l.block!=null){if(!(a.startsWith(l.block.open)&&a.endsWith(l.block.close)))continue;f=l.block.open.length,m=-l.block.close.length}g=a.slice(f,a.length+m).trim(),g===o?r=c.from:g===s&&(t.push(u.range(r,c.to)),r=0)}while(c.next());return r>0&&t.push(u.range(r,e.doc.toString().length)),t}function S(e){const o=new Set;for(let s=e.from;s<=e.to;s++)o.add(s);return o}function v(e,o){const s=Array.from(S(e));for(const i of s)o.delete(i)}function D(e){const o=Array.from(e).sort((t,r)=>t-r),s=o.reduce((t,r,f)=>f===0?r:Math.min(t,r),0),i=o.reduce((t,r,f)=>f===0?r:Math.max(t,r),0),c=[];let n=null;for(let t=s;t<i;t++){if(o.find(f=>f===t)==null&&n!=null){c.push(n),n=null;continue}n==null?n=u.range(t,t):n=u.range(n.from,t)}return n!=null&&(c.push(n),n=null),c}function y(){return C.transactionFilter.of(e=>{if(!(e.selection!=null||e.docChanged))return e;const o=F(e.startState,e.startState.facet(d),e.startState.facet(h));let s=!1;if(e.docChanged){e.changes.iterChanges((n,t,r,f,m)=>{const a=Math.max(t-n,f-r);for(let g=0;g<o.length;g++){let l=o[g];a>0&&r<l.from&&(l=u.range(l.from+a,l.to+a),o[g]=l)}});for(const n of o){switch(e.changes.desc.touchesRange(n.from,n.to)){case"cover":case!0:s=!0;break}if(s)break}}let i=[];if(e.selection!=null){let n=e.newSelection;s&&(n=e.startState.selection);for(const f of n.ranges){const m=S(f);for(const a of o)v(a,m);i.push(...D(m))}const t=f=>f.from===0;if(o.find(t)!=null){const f=i.find(t);f!=null&&(i=i.filter(m=>m!==f))}}return{...e,...i.length>0?{selection:u.create(i)}:{},...s?{changes:[],selection:e.startState.selection}:{}}})}var A=b.line({attributes:{class:"cm-frozen"}});function z(e){const o=new w,s=F(e.state,e.state.facet(d),e.state.facet(h));for(const{from:i,to:c}of e.visibleRanges)for(let n=i;n<=c;){const t=e.state.doc.lineAt(n);for(const r of s)(r.from<t.from&&t.from<r.to||r.from<t.to&&t.to<r.to)&&o.add(t.from,t.from,A);n=t.to+1}return o.finish()}var E=class{constructor(e){this.decorations=z(e)}update(e){(e.docChanged||e.viewportChanged)&&(this.decorations=z(e.view))}};function O(){return k.fromClass(E,{decorations:o=>o.decorations})}var P=d,V=h;function _(e="start-freeze",o="end-freeze"){const s=P.of(e),i=V.of(o),c=y(),n=O();return[c,n,s,i,x]}export{h as endFreezeComment,_ as freeze,d as startFreezeComment}; //# sourceMappingURL=dist-SFRFRGE3-2bd06938.js.map