@actualwave/react-native-codeditor 1.0.0 → 1.2.0

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 (63) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +53 -3
  3. package/SKILL.md +469 -0
  4. package/THIRD_PARTY_NOTICES +120 -0
  5. package/app.plugin.js +1 -1
  6. package/lib/module/CodeEditor.js +73 -2
  7. package/lib/module/WebViewAPI.js +4 -0
  8. package/lib/typescript/src/CodeEditor.d.ts +21 -2
  9. package/lib/typescript/src/EditorAPI.d.ts +44 -1
  10. package/lib/typescript/src/WebViewAPI.d.ts +5 -1
  11. package/lib/typescript/src/index.d.ts +1 -1
  12. package/package.json +12 -4
  13. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-core.js +39 -0
  14. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-css.js +19 -0
  15. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-glsl.js +1 -0
  16. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-graphql.js +50 -0
  17. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-icu-messageformat.js +1 -0
  18. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-react-native.js +6 -0
  19. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sksl.js +7 -0
  20. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sql.js +5 -0
  21. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-tailwind.js +63 -0
  22. package/src/assets/codemirror/@actualwave_codemirror-lang-glsl.js +20 -0
  23. package/src/assets/codemirror/@actualwave_codemirror-lang-icu-messageformat.js +11 -0
  24. package/src/assets/codemirror/@actualwave_codemirror-lang-react-native.js +71 -0
  25. package/src/assets/codemirror/@actualwave_codemirror-lang-sksl.js +7 -2
  26. package/src/assets/codemirror/@codemirror_autocomplete.js +9 -9
  27. package/src/assets/codemirror/@codemirror_commands.js +86 -86
  28. package/src/assets/codemirror/@codemirror_lang-css.js +2 -2
  29. package/src/assets/codemirror/@codemirror_lang-go.js +1 -1
  30. package/src/assets/codemirror/@codemirror_lang-html.js +1 -1
  31. package/src/assets/codemirror/@codemirror_lang-javascript.js +4 -4
  32. package/src/assets/codemirror/@codemirror_lang-jinja.js +1 -1
  33. package/src/assets/codemirror/@codemirror_lang-json.js +1 -1
  34. package/src/assets/codemirror/@codemirror_lang-less.js +1 -1
  35. package/src/assets/codemirror/@codemirror_lang-liquid.js +1 -1
  36. package/src/assets/codemirror/@codemirror_lang-markdown.js +2 -2
  37. package/src/assets/codemirror/@codemirror_lang-python.js +1 -1
  38. package/src/assets/codemirror/@codemirror_lang-sql.js +4 -4
  39. package/src/assets/codemirror/@codemirror_lang-xml.js +1 -1
  40. package/src/assets/codemirror/@codemirror_language.js +11 -11
  41. package/src/assets/codemirror/@codemirror_legacy-modes_mode_clike.js +1 -1
  42. package/src/assets/codemirror/@codemirror_legacy-modes_mode_mathematica.js +1 -1
  43. package/src/assets/codemirror/@codemirror_legacy-modes_mode_oz.js +1 -1
  44. package/src/assets/codemirror/@codemirror_legacy-modes_mode_verilog.js +1 -1
  45. package/src/assets/codemirror/@codemirror_lint.js +5 -5
  46. package/src/assets/codemirror/@codemirror_merge.js +4 -4
  47. package/src/assets/codemirror/@codemirror_search.js +8 -8
  48. package/src/assets/codemirror/@codemirror_state.js +1 -1
  49. package/src/assets/codemirror/@codemirror_theme-one-dark.js +3 -3
  50. package/src/assets/codemirror/@codemirror_view.js +6 -6
  51. package/src/assets/codemirror/@lezer_common.js +2 -2
  52. package/src/assets/codemirror/@lezer_css.js +1 -1
  53. package/src/assets/codemirror/@lezer_javascript.js +1 -1
  54. package/src/assets/codemirror/@lezer_lr.js +1 -1
  55. package/src/assets/codemirror/@lezer_markdown.js +4 -4
  56. package/src/assets/codemirror/@lezer_sass.js +1 -1
  57. package/src/assets/codemirror/_core.js +129 -129
  58. package/src/assets/codemirror-editor.umd.js +130 -17
  59. package/src/assets/editor.html +49 -2
  60. package/lib/typescript/app.plugin.d.ts +0 -3
  61. package/lib/typescript/babel.config.d.ts +0 -10
  62. package/lib/typescript/react-native.config.d.ts +0 -2
  63. package/lib/typescript/scripts/copy-assets.d.ts +0 -2
@@ -12,6 +12,6 @@ if("\""==ch||"'"==ch)return state.tokenize=tokenString(ch),state.tokenize(stream
12
12
  if(/[~\d]/.test(ch)){if("~"==ch){if(!/^[0-9]/.test(stream.peek()))return null;if("0"==stream.next()&&stream.match(/^[xX][0-9a-fA-F]+/)||stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return"number"}return"0"==ch&&stream.match(/^[xX][0-9a-fA-F]+/)||stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)?"number":null}// Comments
13
13
  return"%"==ch?(stream.skipToEnd(),"comment"):"/"==ch&&stream.eat("*")?(state.tokenize=tokenComment,tokenComment(stream,state)):singleOperators.test(ch)?"operator":(stream.eatWhile(/\w/),"variable");// Single operators
14
14
  // If nothing match, we skip the entire alphanumerical block
15
- }function tokenClass(stream,state){return stream.eatSpace()?null:(stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),state.tokenize=tokenBase,"type")}function tokenMeth(stream,state){return stream.eatSpace()?null:(stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),state.tokenize=tokenBase,"def")}function tokenFunProc(stream,state){return stream.eatSpace()?null:!state.hasPassedFirstStage&&stream.eat("{")?(state.hasPassedFirstStage=!0,"bracket"):state.hasPassedFirstStage?(stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),state.hasPassedFirstStage=!1,state.tokenize=tokenBase,"def"):(state.tokenize=tokenBase,null)}function tokenComment(stream,state){for(var ch,maybeEnd=!1;ch=stream.next();){if("/"==ch&&maybeEnd){state.tokenize=tokenBase;break}maybeEnd="*"==ch}return"comment"}function tokenString(quote){return function(stream,state){for(var next,escaped=!1,end=!1;null!=(next=stream.next());){if(next==quote&&!escaped){end=!0;break}escaped=!escaped&&"\\"==next}return state.tokenize=tokenBase,"string"}}function buildElectricInputRegEx(){// Reindentation should occur on [] or on a match of any of
15
+ }function tokenClass(stream,state){return stream.eatSpace()?null:(stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),state.tokenize=tokenBase,"type")}function tokenMeth(stream,state){return stream.eatSpace()?null:(stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),state.tokenize=tokenBase,"def")}function tokenFunProc(stream,state){return stream.eatSpace()?null:!state.hasPassedFirstStage&&stream.eat("{")?(state.hasPassedFirstStage=!0,"bracket"):state.hasPassedFirstStage?(stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),state.hasPassedFirstStage=!1,state.tokenize=tokenBase,"def"):(state.tokenize=tokenBase,null)}function tokenComment(stream,state){for(var ch,maybeEnd=!1;ch=stream.next();){if("/"==ch&&maybeEnd){state.tokenize=tokenBase;break}maybeEnd="*"==ch}return"comment"}function tokenString(quote){return function(stream,state){for(var next,escaped=!1,end=!1;null!=(next=stream.next());){if(next==quote&&!escaped){end=!0;break}escaped=!escaped&&"\\"==next}return(end||!escaped)&&(state.tokenize=tokenBase),"string"}}function buildElectricInputRegEx(){// Reindentation should occur on [] or on a match of any of
16
16
  // the block closing keywords, at the end of a line.
17
17
  var allClosings=middle.concat(end);return new RegExp("[\\[\\]]|("+allClosings.join("|")+")$")}if(hasRequiredOz)return oz$1;hasRequiredOz=1,Object.defineProperty(oz$1,"__esModule",{value:!0});var singleOperators=/[\^@!\|<>#~\.\*\-\+\\/,=]/,doubleOperators=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,tripleOperators=/(:::)|(\.\.\.)|(=<:)|(>=:)/,middle=["in","then","else","of","elseof","elsecase","elseif","catch","finally","with","require","prepare","import","export","define","do"],end=["end"],atoms=wordRegexp(["true","false","nil","unit"]),commonKeywords=wordRegexp(["andthen","at","attr","declare","feat","from","lex","mod","div","mode","orelse","parser","prod","prop","scanner","self","syn","token"]),openingKeywords=wordRegexp(["local","proc","fun","case","class","if","cond","or","dis","choice","not","thread","try","raise","lock","for","suchthat","meth","functor"]),middleKeywords=wordRegexp(middle),endKeywords=wordRegexp(end);const oz={name:"oz",startState:function(){return{tokenize:tokenBase,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(stream,state){return stream.sol()&&(state.doInCurrentLine=0),state.tokenize(stream,state)},indent:function(state,textAfter,cx){var trueText=textAfter.replace(/^\s+|\s+$/g,"");return trueText.match(endKeywords)||trueText.match(middleKeywords)||trueText.match(/(\[])/)?cx.unit*(state.currentIndent-1):0>state.currentIndent?0:state.currentIndent*cx.unit},languageData:{indentOnInut:buildElectricInputRegEx(),commentTokens:{line:"%",block:{open:"/*",close:"*/"}}}};return oz$1.oz=oz,oz$1}(),oz=/*@__PURE__*/function getDefaultExportFromCjs(x){return x}(ozExports);return module.exports=oz,module.exports}
@@ -25,7 +25,7 @@ var curPunc,curKeyword,statementIndentUnit=parserConfig.statementIndentUnit,dont
25
25
  ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
26
26
  binary_module_path_operator ::=
27
27
  == | != | && | || | & | | | ^ | ^~ | ~^
28
- */ // Block openings which are closed by a matching keyword in the form of ("end" + keyword)
28
+ */// Block openings which are closed by a matching keyword in the form of ("end" + keyword)
29
29
  // E.g. "task" => "endtask"
30
30
  // Opening/closing pairs
31
31
  for(var keyword in blockKeywords)openClose[keyword]="end"+keyword;for(var i in openClose.begin="end",openClose.casex="endcase",openClose.casez="endcase",openClose["do"]="while",openClose.fork="join;join_any;join_none",openClose.covergroup="endgroup",noIndentKeywords){var keyword=noIndentKeywords[i];openClose[keyword]&&(openClose[keyword]=void 0)}// Keywords which open statements that are ended with a semi-colon
@@ -5,9 +5,9 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
5
5
  */function setDiagnostics(state,diagnostics){return{effects:maybeEnableLint(state,[setDiagnosticsEffect.of(diagnostics)])}}/**
6
6
  The state effect that updates the set of active diagnostics. Can
7
7
  be useful when writing an extension that needs to track these.
8
- */ /**
8
+ *//**
9
9
  Returns the number of active lint diagnostics in the given state.
10
- */function diagnosticCount(state){let lint=state.field(lintState,!1);return lint?lint.diagnostics.size:0}function lintTooltip(view,pos,side){let found,{diagnostics}=view.state.field(lintState),start=-1,end=-1;diagnostics.between(pos-(0>side?1:0),pos+(0<side?1:0),(from,to,{spec})=>{if(pos>=from&&pos<=to&&(from==to||(pos>from||0<side)&&(pos<to||0>side)))return found=spec.diagnostics,start=from,end=to,!1});let diagnosticFilter=view.state.facet(lintConfig).tooltipFilter;return found&&diagnosticFilter&&(found=diagnosticFilter(found,view.state)),found?{pos:start,end:end,above:view.state.doc.lineAt(start).to<end,create(){return{dom:diagnosticsTooltip(view,found)}}}:null}function diagnosticsTooltip(view,diagnostics){return elt("ul",{class:"cm-tooltip-lint"},diagnostics.map(d=>renderDiagnostic(view,d,!1)))}/**
10
+ */function diagnosticCount(state){let lint=state.field(lintState,!1);return lint?lint.diagnostics.size:0}function lintTooltip(view,pos,side){let found,{diagnostics}=view.state.field(lintState),start=-1,end=-1;diagnostics.between(pos-(0>side?1:0),pos+(0<side?1:0),(from,to,{spec})=>{if(pos>=from&&pos<=to&&(from==to||(pos>from||0<side)&&(pos<to||0>side)))return found=spec.diagnostics,start=from,end=to,!1});let diagnosticFilter=view.state.facet(lintConfig).tooltipFilter;return found&&diagnosticFilter&&(found=diagnosticFilter(found,view.state)),found?{pos:start,end:end,above:!0,create(){return{dom:diagnosticsTooltip(view,found)}}}:null}function diagnosticsTooltip(view,diagnostics){return elt("ul",{class:"cm-tooltip-lint"},diagnostics.map(d=>renderDiagnostic(view,d,!1)))}/**
11
11
  Command to open and focus the lint panel.
12
12
  */function batchResults(promises,sink,error){let collected=[],timeout=-1;for(let p of promises)p.then(value=>{collected.push(value),clearTimeout(timeout),collected.length==promises.length?sink(collected):timeout=setTimeout(()=>sink(collected),200)},error)}function combineFilter(a,b){return a?b?(d,s)=>b(a(d,s),s):a:b}/**
13
13
  Given a diagnostic source, this function returns an extension that
@@ -33,11 +33,11 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
33
33
  */function forEachDiagnostic(state$1,f){let lState=state$1.field(lintState,!1);if(lState&&lState.diagnostics.size){let pending=[],pendingStart=[],lastEnd=-1;for(let iter=state.RangeSet.iter([lState.diagnostics]);;iter.next()){for(let i=0;i<pending.length;i++)(!iter.value||0>iter.value.spec.diagnostics.indexOf(pending[i]))&&(f(pending[i],pendingStart[i],lastEnd),pending.splice(i,1),pendingStart.splice(i--,1));if(!iter.value)break;for(let d of iter.value.spec.diagnostics)0>pending.indexOf(d)&&(pending.push(d),pendingStart.push(iter.from));lastEnd=iter.to}}}if(hasRequiredDist)return dist;hasRequiredDist=1;var view=require$$0,state=require$$1,elt=require$$2;class SelectedDiagnostic{constructor(from,to,diagnostic){this.from=from,this.to=to,this.diagnostic=diagnostic}}class LintState{constructor(diagnostics,panel,selected){this.diagnostics=diagnostics,this.panel=panel,this.selected=selected}static init(diagnostics,panel,state$1){// Filter the list of diagnostics for which to create markers
34
34
  let diagnosticFilter=state$1.facet(lintConfig).markerFilter;diagnosticFilter&&(diagnostics=diagnosticFilter(diagnostics,state$1));let sorted=diagnostics.slice().sort((a,b)=>a.from-b.from||a.to-b.to),deco=new state.RangeSetBuilder,active=[],pos=0,scan=state$1.doc.iter(),scanPos=0,docLen=state$1.doc.length;for(let next,i=0;;){if(next=i==sorted.length?null:sorted[i],!next&&!active.length)break;let from,to;if(active.length)from=pos,to=active.reduce((p,d)=>Math.min(p,d.to),next&&next.from>from?next.from:1e8);else{if(from=next.from,from>docLen)break;to=next.to,active.push(next),i++}for(;i<sorted.length;){let next=sorted[i];if(next.from==from&&(next.to>next.from||next.to==from))active.push(next),i++,to=Math.min(next.to,to);else{to=Math.min(next.from,to);break}}to=Math.min(to,docLen);let widget=!1;if(active.some(d=>d.from==from&&(d.to==to||to==docLen))&&(widget=from==to,!widget&&10>to-from)){let behind=from-(scanPos+scan.value.length);0<behind&&(scan.next(behind),scanPos=from);for(let check=from;;){if(check>=to){widget=!0;break}if(!scan.lineBreak&&scanPos+scan.value.length>check)break;check=scanPos+scan.value.length,scanPos+=scan.value.length,scan.next()}}let sev=maxSeverity(active);if(widget)deco.add(from,from,view.Decoration.widget({widget:new DiagnosticWidget(sev),diagnostics:active.slice()}));else{let markClass=active.reduce((c,d)=>d.markClass?c+" "+d.markClass:c,"");deco.add(from,to,view.Decoration.mark({class:"cm-lintRange cm-lintRange-"+sev+markClass,diagnostics:active.slice(),inclusiveEnd:active.some(a=>a.to>to)}))}if(pos=to,pos==docLen)break;for(let i=0;i<active.length;i++)active[i].to<=pos&&active.splice(i--,1)}let set=deco.finish();return new LintState(set,panel,findDiagnostic(set))}}const setDiagnosticsEffect=state.StateEffect.define(),togglePanel=state.StateEffect.define(),movePanelSelection=state.StateEffect.define(),lintState=state.StateField.define({create(){return new LintState(view.Decoration.none,null,null)},update(value,tr){if(tr.docChanged&&value.diagnostics.size){let mapped=value.diagnostics.map(tr.changes),selected=null,panel=value.panel;if(value.selected){let selPos=tr.changes.mapPos(value.selected.from,1);selected=findDiagnostic(mapped,value.selected.diagnostic,selPos)||findDiagnostic(mapped,null,selPos)}!mapped.size&&panel&&tr.state.facet(lintConfig).autoPanel&&(panel=null),value=new LintState(mapped,panel,selected)}for(let effect of tr.effects)if(effect.is(setDiagnosticsEffect)){let panel=tr.state.facet(lintConfig).autoPanel?effect.value.length?LintPanel.open:null:value.panel;value=LintState.init(effect.value,panel,tr.state)}else effect.is(togglePanel)?value=new LintState(value.diagnostics,effect.value?LintPanel.open:null,value.selected):effect.is(movePanelSelection)&&(value=new LintState(value.diagnostics,value.panel,effect.value));return value},provide:f=>[view.showPanel.from(f,val=>val.panel),view.EditorView.decorations.from(f,s=>s.diagnostics)]}),activeMark=view.Decoration.mark({class:"cm-lintRange cm-lintRange-active"}),openLintPanel=view$1=>{let field=view$1.state.field(lintState,!1);field&&field.panel||view$1.dispatch({effects:maybeEnableLint(view$1.state,[togglePanel.of(!0)])});let panel=view.getPanel(view$1,LintPanel.open);return panel&&panel.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=view=>{let field=view.state.field(lintState,!1);return!!(field&&field.panel)&&(view.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=view$1=>{let field=view$1.state.field(lintState,!1);if(!field)return!1;let sel=view$1.state.selection.main,next=findDiagnostic(field.diagnostics,null,sel.to+1);return(next||(next=findDiagnostic(field.diagnostics,null,0),next&&(next.from!=sel.from||next.to!=sel.to)))&&(view$1.dispatch({selection:{anchor:next.from,head:next.to},scrollIntoView:!0}),view.activateHover(view$1,next.from,1,{tooltip:lintHover,until:tr=>tr.docChanged||tr.newSelection.main.head<next.from||tr.newSelection.main.head>next.to}),!0)},previousDiagnostic=view$1=>{var _a;let{state}=view$1,field=state.field(lintState,!1);if(!field)return!1;let prevFrom,prevTo,lastFrom,lastTo,sel=state.selection.main;if(field.diagnostics.between(0,state.doc.length,(from,to)=>{to<sel.to&&(null==prevFrom||prevFrom<from)&&(prevFrom=from,prevTo=to),(null==lastFrom||from>lastFrom)&&(lastFrom=from,lastTo=to)}),null==lastFrom||null==prevFrom&&lastFrom==sel.from)return!1;let from=null!==prevFrom&&void 0!==prevFrom?prevFrom:lastFrom,to=null!==(_a=null!==prevTo&&void 0!==prevTo?prevTo:lastTo)&&void 0!==_a?_a:from;return view$1.dispatch({selection:{anchor:from,head:to},scrollIntoView:!0}),view.activateHover(view$1,from,1,{tooltip:lintHover,until:tr=>tr.docChanged||tr.newSelection.main.head<from||tr.newSelection.main.head>to}),!0},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel,preventDefault:!0},{key:"F8",run:nextDiagnostic}],lintPlugin=view.ViewPlugin.fromClass(class{constructor(view){this.view=view,this.timeout=-1,this.set=!0;let{delay}=view.state.facet(lintConfig);this.lintTime=Date.now()+delay,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,delay)}run(){clearTimeout(this.timeout);let now=Date.now();if(now<this.lintTime-10)this.timeout=setTimeout(this.run,this.lintTime-now);else{this.set=!1;let{state}=this.view,{sources}=state.facet(lintConfig);sources.length&&batchResults(sources.map(s=>Promise.resolve(s(this.view))),annotations=>{this.view.state.doc==state.doc&&this.view.dispatch(setDiagnostics(this.view.state,annotations.reduce((a,b)=>a.concat(b))))},error=>{view.logException(this.view.state,error)})}}update(update){let config=update.state.facet(lintConfig);(update.docChanged||config!=update.startState.facet(lintConfig)||config.needsRefresh&&config.needsRefresh(update))&&(this.lintTime=Date.now()+config.delay,!this.set&&(this.set=!0,this.timeout=setTimeout(this.run,config.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}}),lintConfig=state.Facet.define({combine(input){return{sources:input.map(i=>i.source).filter(x=>null!=x),...state.combineConfig(input.map(i=>i.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:combineFilter,tooltipFilter:combineFilter,needsRefresh:(a,b)=>a?b?u=>a(u)||b(u):a:b,hideOn:(a,b)=>a?b?(t,x,y)=>a(t,x,y)||b(t,x,y):a:b,autoPanel:(a,b)=>a||b})}}});/**
35
35
  Command to close the lint panel, when open.
36
- */ /**
36
+ *//**
37
37
  Move the selection to the next diagnostic.
38
- */ /**
38
+ *//**
39
39
  Move the selection to the previous diagnostic.
40
- */ /**
40
+ *//**
41
41
  A set of default key bindings for the lint functionality.
42
42
 
43
43
  - Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)
@@ -62,7 +62,7 @@ if(posA<endA){let heightA=a.lineBlockAt(posA).top+offA,heightB=b.lineBlockAt(pos
62
62
  if(endA>posA+1e3&&posA<vpA.from&&endA>vpA.from&&posB<vpB.from&&endB>vpB.from){let off=Math.min(vpA.from-posA,vpB.from-posB);posA+=off,posB+=off,chunkI--}else if(!chunk)break;else posA=chunk.toA,posB=chunk.toB;for(;spacersA.value&&spacersA.from<posA;)offA-=spacersA.value.spec.widget.height,spacersA.next();for(;spacersB.value&&spacersB.from<posB;)offB-=spacersB.value.spec.widget.height,spacersB.next()}for(;spacersA.value;)offA-=spacersA.value.spec.widget.height,spacersA.next();for(;spacersB.value;)offB-=spacersB.value.spec.widget.height,spacersB.next();let docDiff=a.contentHeight+offA-(b.contentHeight+offB);docDiff<epsilon?buildA.add(a.state.doc.length,a.state.doc.length,view.Decoration.widget({widget:new Spacer(-docDiff),block:!0,side:1})):docDiff>epsilon&&buildB.add(b.state.doc.length,b.state.doc.length,view.Decoration.widget({widget:new Spacer(docDiff),block:!0,side:1}));let decoA=buildA.finish(),decoB=buildB.finish();compareSpacers(decoA,a.state.field(Spacers))||a.dispatch({effects:adjustSpacers.of(decoA)}),compareSpacers(decoB,b.state.field(Spacers))||b.dispatch({effects:adjustSpacers.of(decoB)})}/**
63
63
  A state effect that expands the section of collapsed unchanged
64
64
  code starting at the given position.
65
- */ /**
65
+ *//**
66
66
  Query whether the given view is displayed next to another editor
67
67
  in a merge view. Returns `null` if it isn't, and a pair of editors
68
68
  (one of which will be the view itself) otherwise.
@@ -74,7 +74,7 @@ if(endA>posA+1e3&&posA<vpA.from&&endA>vpA.from&&posB<vpB.from&&endB>vpB.from){le
74
74
  */function unifiedMergeView(config){var _a;let orig="string"==typeof config.original?state.Text.of(config.original.split(/\r?\n/)):config.original,diffConf=config.diffConfig||defaultDiffConfig;return[state.Prec.low(decorateChunks),deletedChunks,baseTheme,view.EditorView.editorAttributes.of({class:"cm-merge-b"}),computeChunks.of((chunks,tr)=>{let updateDoc=tr.effects.find(e=>e.is(updateOriginalDoc));return updateDoc&&(chunks=Chunk.updateA(chunks,updateDoc.value.doc,tr.startState.doc,updateDoc.value.changes,diffConf)),tr.docChanged&&(chunks=Chunk.updateB(chunks,tr.state.field(originalDoc),tr.newDoc,tr.changes,diffConf)),chunks}),mergeConfig.of({highlightChanges:!1!==config.highlightChanges,markGutter:!1!==config.gutter,syntaxHighlightDeletions:!1!==config.syntaxHighlightDeletions,syntaxHighlightDeletionsMaxLength:3e3,mergeControls:null===(_a=config.mergeControls)||void 0===_a||_a,overrideChunk:config.allowInlineDiffs?overrideChunkInline:void 0,side:"b"}),originalDoc.init(()=>orig),!1===config.gutter?[]:unifiedChangeGutter,config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[],ChunkField.init(state=>Chunk.build(orig,state.doc,diffConf))]}/**
75
75
  The state effect used to signal changes in the original doc in a
76
76
  unified merge view.
77
- */ /**
77
+ *//**
78
78
  Create an effect that, when added to a transaction on a unified
79
79
  merge view, will update the original document that's being compared against.
80
80
  */function originalDocChangeEffect(state,changes){return updateOriginalDoc.of({doc:changes.apply(getOriginalDoc(state)),changes})}/**
@@ -108,7 +108,7 @@ const frontier1=new Frontier,frontier2=new Frontier;let wordChar;try{wordChar=/[
108
108
  Move the selection to the next changed chunk.
109
109
  */const goToNextChunk=moveByChunk(1),goToPreviousChunk=moveByChunk(-1);/**
110
110
  Move the selection to the previous changed chunk.
111
- */ /**
111
+ *//**
112
112
  A chunk describes a range of lines which have changed content in
113
113
  them. Either side (a/b) may either be empty (when its `to` is
114
114
  equal to its `from`), or points at a range starting at the start
@@ -162,6 +162,6 @@ const frontier1=new Frontier,frontier2=new Frontier;let wordChar;try{wordChar=/[
162
162
  Create a new merge view.
163
163
  */constructor(config){this.revertDOM=null,this.revertToA=!1,this.revertToLeft=!1,this.measuring=-1,this.diffConf=config.diffConfig||defaultDiffConfig;let sharedExtensions=[state.Prec.low(decorateChunks),baseTheme,externalTheme,Spacers,view.EditorView.updateListener.of(update=>{0>this.measuring&&(update.heightChanged||update.viewportChanged)&&!update.transactions.some(tr=>tr.effects.some(e=>e.is(adjustSpacers)))&&this.measure()})],configA=[mergeConfig.of({side:"a",sibling:()=>this.b,highlightChanges:!1!==config.highlightChanges,markGutter:!1!==config.gutter})];!1!==config.gutter&&configA.push(changeGutter);let stateA=state.EditorState.create({doc:config.a.doc,selection:config.a.selection,extensions:[config.a.extensions||[],view.EditorView.editorAttributes.of({class:"cm-merge-a"}),configCompartment.of(configA),sharedExtensions]}),configB=[mergeConfig.of({side:"b",sibling:()=>this.a,highlightChanges:!1!==config.highlightChanges,markGutter:!1!==config.gutter})];!1!==config.gutter&&configB.push(changeGutter);let stateB=state.EditorState.create({doc:config.b.doc,selection:config.b.selection,extensions:[config.b.extensions||[],view.EditorView.editorAttributes.of({class:"cm-merge-b"}),configCompartment.of(configB),sharedExtensions]});this.chunks=Chunk.build(stateA.doc,stateB.doc,this.diffConf);let add=[ChunkField.init(()=>this.chunks),collapseCompartment.of(config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[])];stateA=stateA.update({effects:state.StateEffect.appendConfig.of(add)}).state,stateB=stateB.update({effects:state.StateEffect.appendConfig.of(add)}).state,this.dom=document.createElement("div"),this.dom.className="cm-mergeView",this.editorDOM=this.dom.appendChild(document.createElement("div")),this.editorDOM.className="cm-mergeViewEditors";let orientation=config.orientation||"a-b",wrapA=document.createElement("div");wrapA.className="cm-mergeViewEditor";let wrapB=document.createElement("div");wrapB.className="cm-mergeViewEditor",this.editorDOM.appendChild("a-b"==orientation?wrapA:wrapB),this.editorDOM.appendChild("a-b"==orientation?wrapB:wrapA),this.a=new view.EditorView({state:stateA,parent:wrapA,root:config.root,dispatchTransactions:trs=>this.dispatch(trs,this.a)}),this.b=new view.EditorView({state:stateB,parent:wrapB,root:config.root,dispatchTransactions:trs=>this.dispatch(trs,this.b)}),this.setupRevertControls(!!config.revertControls,"b-to-a"==config.revertControls,config.renderRevertControl),config.parent&&config.parent.appendChild(this.dom),this.scheduleMeasure()}dispatch(trs,target){if(trs.some(tr=>tr.docChanged)){let last=trs[trs.length-1],changes=trs.reduce((chs,tr)=>chs.compose(tr.changes),state.ChangeSet.empty(trs[0].startState.doc.length));this.chunks=target==this.a?Chunk.updateA(this.chunks,last.newDoc,this.b.state.doc,changes,this.diffConf):Chunk.updateB(this.chunks,this.a.state.doc,last.newDoc,changes,this.diffConf),target.update([...trs,last.state.update({effects:setChunks.of(this.chunks)})]);let other=target==this.a?this.b:this.a;other.update([other.state.update({effects:setChunks.of(this.chunks)})]),this.scheduleMeasure()}else target.update(trs)}/**
164
164
  Reconfigure an existing merge view.
165
- */reconfigure(config){if("diffConfig"in config&&(this.diffConf=config.diffConfig),"orientation"in config){let aB="b-a"!=config.orientation;if(aB!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let domA=this.a.dom.parentNode,domB=this.b.dom.parentNode;domA.remove(),domB.remove(),this.editorDOM.insertBefore(aB?domA:domB,this.editorDOM.firstChild),this.editorDOM.appendChild(aB?domB:domA),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in config||"renderRevertControl"in config){let controls=!!this.revertDOM,toA=this.revertToA,render=this.renderRevert;"revertControls"in config&&(controls=!!config.revertControls,toA="b-to-a"==config.revertControls),"renderRevertControl"in config&&(render=config.renderRevertControl),this.setupRevertControls(controls,toA,render)}let highlight=("highlightChanges"in config),gutter=("gutter"in config),collapse=("collapseUnchanged"in config);if(highlight||gutter||collapse){let effectsA=[],effectsB=[];if(highlight||gutter){let currentConfig=this.a.state.facet(mergeConfig),markGutter=gutter?!1!==config.gutter:currentConfig.markGutter,highlightChanges=highlight?!1!==config.highlightChanges:currentConfig.highlightChanges;effectsA.push(configCompartment.reconfigure([mergeConfig.of({side:"a",sibling:()=>this.b,highlightChanges,markGutter}),markGutter?changeGutter:[]])),effectsB.push(configCompartment.reconfigure([mergeConfig.of({side:"b",sibling:()=>this.a,highlightChanges,markGutter}),markGutter?changeGutter:[]]))}if(collapse){let effect=collapseCompartment.reconfigure(config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[]);effectsA.push(effect),effectsB.push(effect)}this.a.dispatch({effects:effectsA}),this.b.dispatch({effects:effectsB})}this.scheduleMeasure()}setupRevertControls(controls,toA,render){this.revertToA=toA,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=render,!controls&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):controls&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",e=>this.revertClicked(e)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(0>this.measuring){let win=this.dom.ownerDocument.defaultView||window;this.measuring=win.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){updateSpacers(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let dom=this.revertDOM,next=dom.firstChild,vpA=this.a.viewport,vpB=this.b.viewport;for(let chunk,i=0;i<this.chunks.length&&(chunk=this.chunks[i],!(chunk.fromA>vpA.to||chunk.fromB>vpB.to));i++){if(chunk.fromA<vpA.from||chunk.fromB<vpB.from)continue;let top=this.a.lineBlockAt(chunk.fromA).top+"px";for(;next&&+next.dataset.chunk<i;)next=rm(next);next&&next.dataset.chunk==i+""?(next.style.top!=top&&(next.style.top=top),next=next.nextSibling):dom.insertBefore(this.renderRevertButton(top,i),next)}for(;next;)next=rm(next)}renderRevertButton(top,chunk){let elt;if(this.renderRevert)elt=this.renderRevert();else{elt=document.createElement("button");let text=this.a.state.phrase("Revert this chunk");elt.setAttribute("aria-label",text),elt.setAttribute("title",text),elt.textContent=this.revertToLeft?"\u21DC":"\u21DD"}return elt.style.top=top,elt.setAttribute("data-chunk",chunk+""),elt}revertClicked(e){let chunk,target=e.target;for(;target&&target.parentNode!=this.revertDOM;)target=target.parentNode;if(target&&(chunk=this.chunks[target.dataset.chunk])){let[source,dest,srcFrom,srcTo,destFrom,destTo]=this.revertToA?[this.b,this.a,chunk.fromB,chunk.toB,chunk.fromA,chunk.toA]:[this.a,this.b,chunk.fromA,chunk.toA,chunk.fromB,chunk.toB],insert=source.state.sliceDoc(srcFrom,Math.max(srcFrom,srcTo-1));srcFrom!=srcTo&&destTo<=dest.state.doc.length&&(insert+=source.state.lineBreak),dest.dispatch({changes:{from:destFrom,to:Math.min(dest.state.doc.length,destTo),insert},userEvent:"revert"}),e.preventDefault()}}/**
165
+ */reconfigure(config){if("diffConfig"in config&&(this.diffConf=config.diffConfig),"orientation"in config){let aB="b-a"!=config.orientation;if(aB!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let domA=this.a.dom.parentNode,domB=this.b.dom.parentNode;domA.remove(),domB.remove(),this.editorDOM.insertBefore(aB?domA:domB,this.editorDOM.firstChild),this.editorDOM.appendChild(aB?domB:domA),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in config||"renderRevertControl"in config){let controls=!!this.revertDOM,toA=this.revertToA,render=this.renderRevert;"revertControls"in config&&(controls=!!config.revertControls,toA="b-to-a"==config.revertControls),"renderRevertControl"in config&&(render=config.renderRevertControl),this.setupRevertControls(controls,toA,render)}let highlight="highlightChanges"in config,gutter="gutter"in config,collapse="collapseUnchanged"in config;if(highlight||gutter||collapse){let effectsA=[],effectsB=[];if(highlight||gutter){let currentConfig=this.a.state.facet(mergeConfig),markGutter=gutter?!1!==config.gutter:currentConfig.markGutter,highlightChanges=highlight?!1!==config.highlightChanges:currentConfig.highlightChanges;effectsA.push(configCompartment.reconfigure([mergeConfig.of({side:"a",sibling:()=>this.b,highlightChanges,markGutter}),markGutter?changeGutter:[]])),effectsB.push(configCompartment.reconfigure([mergeConfig.of({side:"b",sibling:()=>this.a,highlightChanges,markGutter}),markGutter?changeGutter:[]]))}if(collapse){let effect=collapseCompartment.reconfigure(config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[]);effectsA.push(effect),effectsB.push(effect)}this.a.dispatch({effects:effectsA}),this.b.dispatch({effects:effectsB})}this.scheduleMeasure()}setupRevertControls(controls,toA,render){this.revertToA=toA,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=render,!controls&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):controls&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",e=>this.revertClicked(e)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(0>this.measuring){let win=this.dom.ownerDocument.defaultView||window;this.measuring=win.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){updateSpacers(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let dom=this.revertDOM,next=dom.firstChild,vpA=this.a.viewport,vpB=this.b.viewport;for(let chunk,i=0;i<this.chunks.length&&(chunk=this.chunks[i],!(chunk.fromA>vpA.to||chunk.fromB>vpB.to));i++){if(chunk.fromA<vpA.from||chunk.fromB<vpB.from)continue;let top=this.a.lineBlockAt(chunk.fromA).top+"px";for(;next&&+next.dataset.chunk<i;)next=rm(next);next&&next.dataset.chunk==i+""?(next.style.top!=top&&(next.style.top=top),next=next.nextSibling):dom.insertBefore(this.renderRevertButton(top,i),next)}for(;next;)next=rm(next)}renderRevertButton(top,chunk){let elt;if(this.renderRevert)elt=this.renderRevert();else{elt=document.createElement("button");let text=this.a.state.phrase("Revert this chunk");elt.setAttribute("aria-label",text),elt.setAttribute("title",text),elt.textContent=this.revertToLeft?"\u21DC":"\u21DD"}return elt.style.top=top,elt.setAttribute("data-chunk",chunk+""),elt}revertClicked(e){let chunk,target=e.target;for(;target&&target.parentNode!=this.revertDOM;)target=target.parentNode;if(target&&(chunk=this.chunks[target.dataset.chunk])){let[source,dest,srcFrom,srcTo,destFrom,destTo]=this.revertToA?[this.b,this.a,chunk.fromB,chunk.toB,chunk.fromA,chunk.toA]:[this.a,this.b,chunk.fromA,chunk.toA,chunk.fromB,chunk.toB],insert=source.state.sliceDoc(srcFrom,Math.max(srcFrom,srcTo-1));srcFrom!=srcTo&&destTo<=dest.state.doc.length&&(insert+=source.state.lineBreak),dest.dispatch({changes:{from:destFrom,to:Math.min(dest.state.doc.length,destTo),insert},userEvent:"revert"}),e.preventDefault()}}/**
166
166
  Destroy this merge view.
167
167
  */destroy(){this.a.destroy(),this.b.destroy(),-1<this.measuring&&(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring),this.dom.remove()}}const deletedChunkGutterMarker=new class extends view.GutterMarker{constructor(){super(...arguments),this.elementClass="cm-deletedLineGutter"}},unifiedChangeGutter=state.Prec.low(view.gutter({class:"cm-changeGutter",markers:view=>{var _a;return(null===(_a=view.plugin(decorateChunks))||void 0===_a?void 0:_a.gutter)||state.RangeSet.empty},widgetMarker:(view,widget)=>widget instanceof DeletionWidget?deletedChunkGutterMarker:null})),updateOriginalDoc=state.StateEffect.define(),originalDoc=state.StateField.define({create:()=>state.Text.empty,update(doc,tr){for(let e of tr.effects)e.is(updateOriginalDoc)&&(doc=e.value.doc);return doc}}),DeletionWidgets=new WeakMap;class DeletionWidget extends view.WidgetType{constructor(buildDOM){super(),this.buildDOM=buildDOM,this.dom=null}eq(other){return this.dom==other.dom}toDOM(view){return this.dom||(this.dom=this.buildDOM(view))}}const deletedChunks=state.StateField.define({create:state=>buildDeletedChunks(state),update(deco,tr){return tr.state.field(ChunkField,!1)==tr.startState.field(ChunkField,!1)?deco:buildDeletedChunks(tr.state)},provide:f=>view.EditorView.decorations.from(f)}),InlineChunkCache=new WeakMap;class InlineDeletion extends view.WidgetType{constructor(text){super(),this.text=text}eq(other){return this.text==other.text}toDOM(view){let elt=document.createElement("del");return elt.className="cm-deletedText",elt.textContent=this.text,elt}}const inlineChangedLineGutterMarker=new class extends view.GutterMarker{constructor(){super(...arguments),this.elementClass="cm-inlineChangedLineGutter"}},inlineChangedLine=view.Decoration.line({class:"cm-inlineChangedLine"});return dist.Change=Change,dist.Chunk=Chunk,dist.MergeView=MergeView,dist.acceptChunk=acceptChunk,dist.diff=diff,dist.getChunks=getChunks,dist.getOriginalDoc=getOriginalDoc,dist.goToNextChunk=goToNextChunk,dist.goToPreviousChunk=goToPreviousChunk,dist.mergeViewSiblings=mergeViewSiblings,dist.originalDocChangeEffect=originalDocChangeEffect,dist.presentableDiff=presentableDiff,dist.rejectChunk=rejectChunk,dist.uncollapseUnchanged=uncollapseUnchanged,dist.unifiedMergeView=unifiedMergeView,dist.updateOriginalDoc=updateOriginalDoc,dist}(),index=/*@__PURE__*/function getDefaultExportFromCjs(x){return x}(distExports);return module.exports=index,module.exports}
@@ -6,7 +6,7 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
6
6
  `-`, document percentages suffixed with `%`, and an optional
7
7
  column position by adding `:` and a second number after the line
8
8
  number.
9
- */ /**
9
+ *//**
10
10
  This extension highlights text that matches the selection. It uses
11
11
  the `"cm-selectionMatch"` class for the highlighting. When
12
12
  `highlightWordAroundCursor` is enabled, the word at the cursor
@@ -18,7 +18,7 @@ function insideWord(check,state$1,from,to){return check(state$1.sliceDoc(from,fr
18
18
  function findNextOccurrence(state,query){let{main,ranges}=state.selection,word=state.wordAt(main.head),fullWord=word&&word.from==main.from&&word.to==main.to;for(let cycled=!1,cursor=new SearchCursor(state.doc,query,ranges[ranges.length-1].to);;)if(cursor.next(),cursor.done){if(cycled)return null;cursor=new SearchCursor(state.doc,query,0,Math.max(0,ranges[ranges.length-1].from-1)),cycled=!0}else{if(cycled&&ranges.some(r=>r.from==cursor.value.from))continue;if(fullWord){let word=state.wordAt(cursor.value.from);if(!word||word.from!=cursor.value.from||word.to!=cursor.value.to)continue}return cursor.value}}/**
19
19
  Select next occurrence of the current selection. Expand selection
20
20
  to the surrounding word when the selection is empty.
21
- */ /**
21
+ *//**
22
22
  Add search state to the editor configuration, and optionally
23
23
  configure the search extension.
24
24
  ([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically
@@ -99,18 +99,18 @@ prevMatchInRange(state,from,to){for(let pos=to;;){let start=Math.max(from,pos-1e
99
99
  Move the selection to the previous instance of the search query,
100
100
  before the current main selection. Will wrap past the start
101
101
  of the document to start searching at the end again.
102
- */ /**
102
+ *//**
103
103
  Select all instances of the search query.
104
- */ /**
104
+ *//**
105
105
  Select all instances of the currently selected text.
106
- */ /**
106
+ *//**
107
107
  Replace the current match of the search query.
108
- */ /**
108
+ *//**
109
109
  Replace all instances of the search query with the given
110
110
  replacement.
111
- */ /**
111
+ *//**
112
112
  Close the search panel.
113
- */ /**
113
+ *//**
114
114
  Default search-related key bindings.
115
115
 
116
116
  - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)
@@ -51,7 +51,7 @@ let filters=state.facet(transactionFilter);for(let filtered,i=filters.length-1;0
51
51
 
52
52
  As such, _never_ mutate properties of a state directly. That'll
53
53
  just break things.
54
- */ /**
54
+ *//**
55
55
  Utility function for combining behaviors to fill in a config
56
56
  object from an array of provided configs. `defaults` should hold
57
57
  default values for all optional fields in `Config`.
@@ -2,11 +2,11 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
2
2
  const chalky="#e5c07b",coral="#e06c75",cyan="#56b6c2",invalid="#ffffff",ivory="#abb2bf",stone="#7d8799",// Brightened compared to original to increase contrast
3
3
  malibu="#61afef",sage="#98c379",whiskey="#d19a66",violet="#c678dd",darkBackground="#21252b",highlightBackground="#2c313a",background="#282c34",tooltipBackground="#353a42",selection="#3E4451",cursor="#528bff",color={chalky:"#e5c07b",coral:"#e06c75",cyan:"#56b6c2",invalid:"#ffffff",ivory:"#abb2bf",stone:"#7d8799",malibu:"#61afef",sage:"#98c379",whiskey:"#d19a66",violet:"#c678dd",darkBackground:"#21252b",highlightBackground:"#2c313a",background:"#282c34",tooltipBackground:"#353a42",selection:"#3E4451",cursor:"#528bff"},oneDarkTheme=view.EditorView.theme({"&":{color:"#abb2bf",backgroundColor:"#282c34"},".cm-content":{caretColor:"#528bff"},".cm-cursor, .cm-dropCursor":{borderLeftColor:"#528bff"},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"#3E4451"},".cm-panels":{backgroundColor:"#21252b",color:"#abb2bf"},".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:"#282c34",color:"#7d8799",border:"none"},".cm-activeLineGutter":{backgroundColor:"#2c313a"},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:"#353a42"},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:"#353a42",borderBottomColor:"#353a42"},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:"#2c313a",color:"#abb2bf"}}},{dark:!0}),oneDarkHighlightStyle=language.HighlightStyle.define([{tag:highlight.tags.keyword,color:"#c678dd"},{tag:[highlight.tags.name,highlight.tags.deleted,highlight.tags.character,highlight.tags.propertyName,highlight.tags.macroName],color:"#e06c75"},{tag:[highlight.tags.function(highlight.tags.variableName),highlight.tags.labelName],color:"#61afef"},{tag:[highlight.tags.color,highlight.tags.constant(highlight.tags.name),highlight.tags.standard(highlight.tags.name)],color:"#d19a66"},{tag:[highlight.tags.definition(highlight.tags.name),highlight.tags.separator],color:"#abb2bf"},{tag:[highlight.tags.typeName,highlight.tags.className,highlight.tags.number,highlight.tags.changed,highlight.tags.annotation,highlight.tags.modifier,highlight.tags.self,highlight.tags.namespace],color:"#e5c07b"},{tag:[highlight.tags.operator,highlight.tags.operatorKeyword,highlight.tags.url,highlight.tags.escape,highlight.tags.regexp,highlight.tags.link,highlight.tags.special(highlight.tags.string)],color:"#56b6c2"},{tag:[highlight.tags.meta,highlight.tags.comment],color:"#7d8799"},{tag:highlight.tags.strong,fontWeight:"bold"},{tag:highlight.tags.emphasis,fontStyle:"italic"},{tag:highlight.tags.strikethrough,textDecoration:"line-through"},{tag:highlight.tags.link,color:"#7d8799",textDecoration:"underline"},{tag:highlight.tags.heading,fontWeight:"bold",color:"#e06c75"},{tag:[highlight.tags.atom,highlight.tags.bool,highlight.tags.special(highlight.tags.variableName)],color:"#d19a66"},{tag:[highlight.tags.processingInstruction,highlight.tags.string,highlight.tags.inserted],color:"#98c379"},{tag:highlight.tags.invalid,color:"#ffffff"}]),oneDark=[oneDarkTheme,language.syntaxHighlighting(oneDarkHighlightStyle)];/**
4
4
  The colors used in the theme, as CSS color strings.
5
- */ /**
5
+ *//**
6
6
  The editor theme styles for One Dark.
7
- */ /**
7
+ *//**
8
8
  The highlighting style for code in the One Dark theme.
9
- */ /**
9
+ *//**
10
10
  Extension to enable the One Dark theme (both the editor theme and
11
11
  the highlight style).
12
12
  */return dist.color=color,dist.oneDark=oneDark,dist.oneDarkHighlightStyle=oneDarkHighlightStyle,dist.oneDarkTheme=oneDarkTheme,dist}(),index=/*@__PURE__*/function getDefaultExportFromCjs(x){return x}(distExports);return module.exports=index,module.exports}
@@ -294,7 +294,7 @@ const plugin=ViewPlugin.define(view=>new HoverPlugin(view,source,hoverState,lock
294
294
  Opening a panel is done by providing a constructor function for
295
295
  the panel through this facet. (The panel is closed again when its
296
296
  constructor is no longer provided.) Values of `null` are ignored.
297
- */ /**
297
+ *//**
298
298
  Show a panel above or below the editor to show the user a message
299
299
  or prompt them for input. Returns an effect that can be dispatched
300
300
  to close the dialog, and a promise that resolves when the dialog
@@ -311,7 +311,7 @@ const plugin=ViewPlugin.define(view=>new HoverPlugin(view,source,hoverState,lock
311
311
  A gutter marker represents a bit of information attached to a line
312
312
  in a specific gutter. Your own custom markers have to extend this
313
313
  class.
314
- */ /**
314
+ *//**
315
315
  Define an editor gutter. The order in which the gutters appear is
316
316
  determined by their extension priority.
317
317
  */function gutter(config){return[gutters(),activeGutters.of({...defaults,...config})]}/**
@@ -341,7 +341,7 @@ const plugin=ViewPlugin.define(view=>new HoverPlugin(view,source,hoverState,lock
341
341
  trailing whitespace.
342
342
  */function highlightTrailingWhitespace(){return trailingHighlighter}/**
343
343
  @internal
344
- */var state=require$$0,styleMod=require$$1,w3cKeyname=require$$2,elt=require$$3;let nav="undefined"==typeof navigator?{userAgent:"",vendor:"",platform:""}:navigator,doc="undefined"==typeof document?{documentElement:{style:{}}}:document;const ie_edge=/Edge\/(\d+)/.exec(nav.userAgent),ie_upto10=/MSIE \d/.test(nav.userAgent),ie_11up=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nav.userAgent),ie=!!(ie_upto10||ie_11up||ie_edge),gecko=!ie&&/gecko\/(\d+)/i.test(nav.userAgent),chrome=!ie&&/Chrome\/(\d+)/.exec(nav.userAgent),webkit=("webkitFontSmoothing"in doc.documentElement.style),safari=!ie&&/Apple Computer/.test(nav.vendor),ios=safari&&(/Mobile\/\w+/.test(nav.userAgent)||2<nav.maxTouchPoints);var browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios,android:/Android\b/.test(nav.userAgent),webkit,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,safari,safari_version:safari?+(/\bVersion\/(\d+(\.\d+)?)/.exec(nav.userAgent)||[0,0])[1]:0,tabSize:null==doc.documentElement.style.tabSize?"-moz-tab-size":"tab-size"};const noAttrs=Object.create(null);class WidgetType{/**
344
+ */var state=require$$0,styleMod=require$$1,w3cKeyname=require$$2,elt=require$$3;let nav="undefined"==typeof navigator?{userAgent:"",vendor:"",platform:""}:navigator,doc="undefined"==typeof document?{documentElement:{style:{}}}:document;const ie_edge=/Edge\/(\d+)/.exec(nav.userAgent),ie_upto10=/MSIE \d/.test(nav.userAgent),ie_11up=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nav.userAgent),ie=!!(ie_upto10||ie_11up||ie_edge),gecko=!ie&&/gecko\/(\d+)/i.test(nav.userAgent),chrome=!ie&&/Chrome\/(\d+)/.exec(nav.userAgent),webkit="webkitFontSmoothing"in doc.documentElement.style,safari=!ie&&/Apple Computer/.test(nav.vendor),ios=safari&&(/Mobile\/\w+/.test(nav.userAgent)||2<nav.maxTouchPoints);var browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios,android:/Android\b/.test(nav.userAgent),webkit,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,safari,safari_version:safari?+(/\bVersion\/(\d+(\.\d+)?)/.exec(nav.userAgent)||[0,0])[1]:0,tabSize:null==doc.documentElement.style.tabSize?"-moz-tab-size":"tab-size"};const noAttrs=Object.create(null);class WidgetType{/**
345
345
  Compare this instance to another instance of the same type.
346
346
  (TypeScript can't express this, but only instances of the same
347
347
  specific class will be passed to this method.) This is used to
@@ -550,7 +550,7 @@ class TilePointer{constructor(top){this.index=0,this.beforeBreak=!1,this.parents
550
550
  // entering tiles, or skipping zero-length tiles, once the distance
551
551
  // has been traversed. When side is 1, leave, enter, or skip
552
552
  // everything at the end position.
553
- advance(dist,side,walker){let{tile,index,beforeBreak,parents}=this;for(;dist||0<side;)if(!tile.isComposite()){if(index==tile.length)beforeBreak=!!tile.breakAfter,({tile,index}=parents.pop()),index++;else if(!dist)break;else{let take=Math.min(dist,tile.length-index);walker&&walker.skip(tile,index,index+take),dist-=take,index+=take}}else if(beforeBreak){if(!dist)break;walker&&walker.break(),dist--,beforeBreak=!1}else if(index==tile.children.length){if(!dist&&!parents.length)break;walker&&walker.leave(tile),beforeBreak=!!tile.breakAfter,({tile,index}=parents.pop()),index++}else{let next=tile.children[index],brk=next.breakAfter;(0<side?!(next.length<=dist):!(next.length<dist))||walker&&!1===walker.skip(next,0,next.length)&&next.isComposite?(parents.push({tile,index}),tile=next,index=0,walker&&next.isComposite()&&walker.enter(next)):(beforeBreak=!!brk,index++,dist-=next.length)}return this.tile=tile,this.index=index,this.beforeBreak=beforeBreak,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}}// Used to track open block wrappers
553
+ advance(dist,side,walker){let{tile,index,beforeBreak,parents}=this;for(;dist||0<side;)if(!tile.isComposite()){if(index==tile.length)beforeBreak=!!tile.breakAfter,{tile,index}=parents.pop(),index++;else if(!dist)break;else{let take=Math.min(dist,tile.length-index);walker&&walker.skip(tile,index,index+take),dist-=take,index+=take}}else if(beforeBreak){if(!dist)break;walker&&walker.break(),dist--,beforeBreak=!1}else if(index==tile.children.length){if(!dist&&!parents.length)break;walker&&walker.leave(tile),beforeBreak=!!tile.breakAfter,{tile,index}=parents.pop(),index++}else{let next=tile.children[index],brk=next.breakAfter;(0<side?!(next.length<=dist):!(next.length<dist))||walker&&!1===walker.skip(next,0,next.length)&&next.isComposite?(parents.push({tile,index}),tile=next,index=0,walker&&next.isComposite()&&walker.enter(next)):(beforeBreak=!!brk,index++,dist-=next.length)}return this.tile=tile,this.index=index,this.beforeBreak=beforeBreak,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}}// Used to track open block wrappers
554
554
  class OpenWrapper{constructor(from,to,wrapper,rank){this.from=from,this.to=to,this.wrapper=wrapper,this.rank=rank}}// This class builds up a new document tile using input from either
555
555
  // iteration over the old tree or iteration over the document +
556
556
  // decorations. The add* methods emit elements into the tile
@@ -817,7 +817,7 @@ this.delayedAndroidKey&&"Enter"!=key||(this.delayedAndroidKey={key,keyCode,// On
817
817
  // this isn't coming right after another change, in which case
818
818
  // it is probably part of a weird chain of updates, and should
819
819
  // be ignored if it returns the DOM to its previous state.
820
- force:this.lastChange<Date.now()-50||null!==(_a=this.delayedAndroidKey)&&void 0!==_a&&_a.force})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){0>this.delayedFlush&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){0<=this.delayedFlush&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let mut of this.observer.takeRecords())this.queue.push(mut);return this.queue}processRecords(){let records=this.pendingRecords();records.length&&(this.queue=[]);let from=-1,to=-1,typeOver=!1;for(let record of records){let range=this.readMutation(record);range&&(range.typeOver&&(typeOver=!0),-1==from?({from,to}=range):(from=Math.min(range.from,from),to=Math.max(range.to,to)))}return{from,to,typeOver}}readChange(){let{from,to,typeOver}=this.processRecords(),newSel=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(0>from&&!newSel)return null;-1<from&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let change=new DOMChange(this.view,from,to,typeOver);return this.view.docView.domChanged={newSel:change.newSel?change.newSel.main:null},change}// Apply pending changes, if any
820
+ force:this.lastChange<Date.now()-50||null!==(_a=this.delayedAndroidKey)&&void 0!==_a&&_a.force})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){0>this.delayedFlush&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){0<=this.delayedFlush&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let mut of this.observer.takeRecords())this.queue.push(mut);return this.queue}processRecords(){let records=this.pendingRecords();records.length&&(this.queue=[]);let from=-1,to=-1,typeOver=!1;for(let record of records){let range=this.readMutation(record);range&&(range.typeOver&&(typeOver=!0),-1==from?{from,to}=range:(from=Math.min(range.from,from),to=Math.max(range.to,to)))}return{from,to,typeOver}}readChange(){let{from,to,typeOver}=this.processRecords(),newSel=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(0>from&&!newSel)return null;-1<from&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let change=new DOMChange(this.view,from,to,typeOver);return this.view.docView.domChanged={newSel:change.newSel?change.newSel.main:null},change}// Apply pending changes, if any
821
821
  flush(readSelection=!0){// Completely hold off flushing when pending keys are set—the code
822
822
  // managing those will make sure processRecords is called and the
823
823
  // view is resynchronized after
@@ -1139,7 +1139,7 @@ return(this.dom.ownerDocument.hasFocus()||browser.safari&&(null===(_a=this.input
1139
1139
  an editor view. The view will ensure that the module is
1140
1140
  mounted in its [document
1141
1141
  root](https://codemirror.net/6/docs/ref/#view.EditorView.constructor^config.root).
1142
- */EditorView.styleModule=styleModule,EditorView.inputHandler=inputHandler,EditorView.clipboardInputFilter=clipboardInputFilter,EditorView.clipboardOutputFilter=clipboardOutputFilter,EditorView.scrollHandler=scrollHandler,EditorView.focusChangeEffect=focusChangeEffect,EditorView.perLineTextDirection=perLineTextDirection,EditorView.exceptionSink=exceptionSink,EditorView.updateListener=updateListener,EditorView.editable=editable,EditorView.mouseSelectionStyle=mouseSelectionStyle,EditorView.dragMovesSelection=dragMovesSelection$1,EditorView.clickAddsSelectionRange=clickAddsSelectionRange,EditorView.decorations=decorations,EditorView.blockWrappers=blockWrappers,EditorView.outerDecorations=outerDecorations,EditorView.atomicRanges=atomicRanges,EditorView.bidiIsolatedRanges=bidiIsolatedRanges,EditorView.cursorScrollMargin=state.Facet.define({combine:inputs=>{let x=5,y=5;for(let i of inputs)"number"==typeof i?x=y=i:({x,y}=i);return{x,y}}}),EditorView.scrollMargins=scrollMargins,EditorView.darkTheme=darkTheme,EditorView.cspNonce=state.Facet.define({combine:values=>values.length?values[0]:""}),EditorView.contentAttributes=contentAttributes,EditorView.editorAttributes=editorAttributes,EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"}),EditorView.announce=state.StateEffect.define();// Maximum line length for which we compute accurate bidi info
1142
+ */EditorView.styleModule=styleModule,EditorView.inputHandler=inputHandler,EditorView.clipboardInputFilter=clipboardInputFilter,EditorView.clipboardOutputFilter=clipboardOutputFilter,EditorView.scrollHandler=scrollHandler,EditorView.focusChangeEffect=focusChangeEffect,EditorView.perLineTextDirection=perLineTextDirection,EditorView.exceptionSink=exceptionSink,EditorView.updateListener=updateListener,EditorView.editable=editable,EditorView.mouseSelectionStyle=mouseSelectionStyle,EditorView.dragMovesSelection=dragMovesSelection$1,EditorView.clickAddsSelectionRange=clickAddsSelectionRange,EditorView.decorations=decorations,EditorView.blockWrappers=blockWrappers,EditorView.outerDecorations=outerDecorations,EditorView.atomicRanges=atomicRanges,EditorView.bidiIsolatedRanges=bidiIsolatedRanges,EditorView.cursorScrollMargin=state.Facet.define({combine:inputs=>{let x=5,y=5;for(let i of inputs)"number"==typeof i?x=y=i:{x,y}=i;return{x,y}}}),EditorView.scrollMargins=scrollMargins,EditorView.darkTheme=darkTheme,EditorView.cspNonce=state.Facet.define({combine:values=>values.length?values[0]:""}),EditorView.contentAttributes=contentAttributes,EditorView.editorAttributes=editorAttributes,EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"}),EditorView.announce=state.StateEffect.define();// Maximum line length for which we compute accurate bidi info
1143
1143
  const MaxBidiLine=4096,BadMeasure={};class CachedOrder{constructor(from,to,dir,isolates,fresh,order){this.from=from,this.to=to,this.dir=dir,this.isolates=isolates,this.fresh=fresh,this.order=order}static update(cache,changes){if(changes.empty&&!cache.some(c=>c.fresh))return cache;let result=[],lastDir=cache.length?cache[cache.length-1].dir:exports.Direction.LTR;for(let i=Math.max(0,cache.length-10),entry;i<cache.length;i++)entry=cache[i],entry.dir!=lastDir||changes.touchesRange(entry.from,entry.to)||result.push(new CachedOrder(changes.mapPos(entry.from,1),changes.mapPos(entry.to,-1),entry.dir,entry.isolates,!1,entry.order));return result}}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key",handleKeyEvents=state.Prec.default(EditorView.domEventHandlers({keydown(event,view){return runHandlers(getKeymap(view.state),event,view,"editor")}})),keymap=state.Facet.define({enables:handleKeyEvents}),Keymaps=new WeakMap;/**
1144
1144
  Facet used for registering keymaps.
1145
1145
 
@@ -27,7 +27,7 @@ divide(only.children,only.positions,0,only.children.length,positions[groupFrom]+
27
27
  Provides a way to associate values with pieces of trees. As long
28
28
  as that part of the tree is reused, the associated values can be
29
29
  retrieved from an updated tree.
30
- */ /**
30
+ *//**
31
31
  Create a parse wrapper that, after the inner parse completes,
32
32
  scans its tree for mixed language regions with the `nest`
33
33
  function, runs the resulting [inner parses](#common.NestedParse),
@@ -299,7 +299,7 @@ index,_parent){super(),this._tree=_tree,this.from=from,this.index=index,this._pa
299
299
  Move to this node's next sibling, if any.
300
300
  */nextSibling(){return this.sibling(1)}/**
301
301
  Move to this node's previous sibling, if any.
302
- */prevSibling(){return this.sibling(-1)}atLastNode(dir){let index,parent,{buffer}=this;if(buffer){if(!(0<dir)){for(let i=0;i<this.index;i++)if(buffer.buffer.buffer[i+3]<this.index)return!1;}else if(this.index<buffer.buffer.buffer.length)return!1;({index,parent}=buffer)}else({index,_parent:parent}=this._tree);for(;parent;({index,_parent:parent}=parent))if(-1<index)for(let child,i=index+dir,e=0>dir?-1:parent._tree.children.length;i!=e;i+=dir)if(child=parent._tree.children[i],this.mode&exports.IterMode.IncludeAnonymous||child instanceof TreeBuffer||!child.type.isAnonymous||hasChild(child))return!1;return!0}move(dir,enter){if(enter&&this.enterChild(dir,0,4/* Side.DontCare */))return!0;for(;;){if(this.sibling(dir))return!0;if(this.atLastNode(dir)||!this.parent())return!1}}/**
302
+ */prevSibling(){return this.sibling(-1)}atLastNode(dir){let index,parent,{buffer}=this;if(buffer){if(!(0<dir)){for(let i=0;i<this.index;i++)if(buffer.buffer.buffer[i+3]<this.index)return!1;}else if(this.index<buffer.buffer.buffer.length)return!1;({index,parent}=buffer)}else({index,_parent:parent}=this._tree);for(;parent;{index,_parent:parent}=parent)if(-1<index)for(let child,i=index+dir,e=0>dir?-1:parent._tree.children.length;i!=e;i+=dir)if(child=parent._tree.children[i],this.mode&exports.IterMode.IncludeAnonymous||child instanceof TreeBuffer||!child.type.isAnonymous||hasChild(child))return!1;return!0}move(dir,enter){if(enter&&this.enterChild(dir,0,4/* Side.DontCare */))return!0;for(;;){if(this.sibling(dir))return!0;if(this.atLastNode(dir)||!this.parent())return!1}}/**
303
303
  Move to the next node in a
304
304
  [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)
305
305
  traversal, going from a node to its first child or, if the
@@ -1,4 +1,4 @@
1
1
  async function moduleInitFunction(requireAsyncModule,exports={}){const module={exports:exports};var hasRequiredDist,require$$0=await requireAsyncModule("@lezer/lr"),require$$1=await requireAsyncModule("@lezer/highlight"),dist={},distExports=function requireDist(){function isAlpha(ch){return 65<=ch&&90>=ch||97<=ch&&122>=ch||161<=ch}function isDigit(ch){return 48<=ch&&57>=ch}function isHex(ch){return isDigit(ch)||97<=ch&&102>=ch||65<=ch&&70>=ch}if(hasRequiredDist)return dist;hasRequiredDist=1,Object.defineProperty(dist,"__esModule",{value:!0});var lr=require$$0,highlight=require$$1;// This file was generated by lezer-generator. You probably shouldn't edit it.
2
2
  const descendantOp=135,Unit=1,identifier=136,callee=137,VariableName=2,queryIdentifier=138,queryVariableName=3,QueryCallee=4,space=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],colon=58,parenL=40,underscore=95,bracketL=91,dash=45,period=46,hash=35,percent=37,ampersand=38,backslash=92,newline=10,asterisk=42,identifierTokens=(id,varName,callee)=>(input,stack)=>{for(let inside=!1,dashes=0,i=0;;i++){let{next}=input;if(isAlpha(next)||next==dash||next==underscore||inside&&isDigit(next))!inside&&(next!=dash||0<i)&&(inside=!0),dashes===i&&next==dash&&dashes++,input.advance();else if(next==backslash&&input.peek(1)!=newline){if(input.advance(),isHex(input.next)){do input.advance();while(isHex(input.next));32==input.next&&input.advance()}else-1<input.next&&input.advance();inside=!0}else{inside&&input.acceptToken(2==dashes&&stack.canShift(VariableName)?varName:next==parenL?callee:id);break}}},identifiers=new lr.ExternalTokenizer(identifierTokens(136,2,137),{contextual:!0}),queryIdentifiers=new lr.ExternalTokenizer(identifierTokens(138,3,4),{contextual:!0}),descendant=new lr.ExternalTokenizer(input=>{if(space.includes(input.peek(-1))){let{next}=input;(isAlpha(next)||next==underscore||next==hash||next==period||next==asterisk||next==bracketL||next==colon&&isAlpha(input.peek(1))||next==dash||next==ampersand)&&input.acceptToken(descendantOp)}}),unitToken=new lr.ExternalTokenizer(input=>{if(!space.includes(input.peek(-1))){let{next}=input;if(next==percent&&(input.advance(),input.acceptToken(Unit)),isAlpha(next)){do input.advance();while(isAlpha(input.next)||isDigit(input.next));input.acceptToken(Unit)}}}),cssHighlighting=highlight.styleTags({"AtKeyword import charset namespace keyframes media supports font-feature-values":highlight.tags.definitionKeyword,"from to selector scope MatchFlag":highlight.tags.keyword,NamespaceName:highlight.tags.namespace,KeyframeName:highlight.tags.labelName,KeyframeRangeName:highlight.tags.operatorKeyword,TagName:highlight.tags.tagName,ClassName:highlight.tags.className,PseudoClassName:highlight.tags.constant(highlight.tags.className),IdName:highlight.tags.labelName,"FeatureName PropertyName":highlight.tags.propertyName,AttributeName:highlight.tags.attributeName,NumberLiteral:highlight.tags.number,KeywordQuery:highlight.tags.keyword,UnaryQueryOp:highlight.tags.operatorKeyword,"CallTag ValueName FontName":highlight.tags.atom,VariableName:highlight.tags.variableName,Callee:highlight.tags.operatorKeyword,Unit:highlight.tags.unit,"UniversalSelector NestingSelector":highlight.tags.definitionOperator,"MatchOp CompareOp":highlight.tags.compareOperator,"ChildOp SiblingOp, LogicOp":highlight.tags.logicOperator,BinOp:highlight.tags.arithmeticOperator,Important:highlight.tags.modifier,Comment:highlight.tags.blockComment,ColorLiteral:highlight.tags.color,"ParenthesizedContent StringLiteral":highlight.tags.string,":":highlight.tags.punctuation,"PseudoOp #":highlight.tags.derefOperator,"; , |":highlight.tags.separator,"( )":highlight.tags.paren,"[ ]":highlight.tags.squareBracket,"{ }":highlight.tags.brace}),spec_callee={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:132,"url-prefix":132,domain:132,regexp:132},spec_queryIdentifier={__proto__:null,or:104,and:104,not:112,only:112,layer:186},spec_QueryCallee={__proto__:null,selector:118,layer:182},spec_AtKeyword={__proto__:null,"@import":178,"@media":190,"@charset":194,"@namespace":198,"@keyframes":204,"@supports":216,"@scope":220,"@font-feature-values":226},spec_identifier={__proto__:null,to:223},parser=lr.LRParser.deserialize({version:14,states:"IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5<YO8xQ`O,5<YPOOO'#Eu'#EuP9TO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,wQ`O1G.tO,|Q`O1G.tOOQP1G/z1G/zO9`QpO1G/|O9hQaO1G0TO:OQaO1G0VO:fQaO1G0WO:|QaO,5;iOOQO-E8{-E8{OOQS1G.i1G.iO;WQ`O,5:nO;]QdO'#DsO;dQdO'#CuOOQO'#Dz'#DzOOQO,5:d,5:dO-^QdO,5:dOOQP1G/|1G/|O)VQdO1G/|O;kQ!jO'#D^O;yQ!bO,59yO<RQhO,5:ROOQO'#Fk'#FkO;|Q!bO,59}O<ZQhO'#FVO)zQhO,59{O)zQhO'#FVO=OQhO1G0yOOQS1G0y1G0yO=YQhO,5:PO>QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<<ISOKjQdO'#E|OKtQ`O,5<XOOQP1G/y1G/yOOQS-E8u-E8uOK|QdO'#E{OLWQ`O,5<QOOQ]1G.{1G.{OOQP<<IS<<ISOL`Q`O<<ISOLeQdO7+%POOQO'#D`'#D`OLlQ!bO7+%TOLtQhO'#EzOMRQ`O,5<WO)VQdO,5<WOOQW1G/r1G/rOOQO'#E['#E[OMZQ`O1G0`OOQS<<Id<<IdO)VQdO,59wOMzQhO1G/bOOQ[1G/b1G/bONRQ`O1G/bOOQW-E8w-E8wOOQ[7+%a7+%aOOQO,5;T,5;TOBnQdO'#FTOI`Q`O,5;nOOQS,5;n,5;nOOQS-E9Q-E9QOOQS1G0n1G0nOOQS<<Iy<<IyONZQ!fO,5;jOOQS-E8|-E8|OOQO<<Ia<<IaOOQPAN>nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<<Hk<<HkOOQW<<Ho<<HoO! {QhO<<HoO!!^QhO,5;fO!!iQ`O,5;fOOQO-E8x-E8xO!!nQdO1G1rOGvQdO'#FQO!!xQ`O7+%zOOQW7+%z7+%zO!#QQ!bO1G/cOOQ[7+$|7+$|O!#]QhO7+$|P!#dQ`O'#EyOOQO,5;o,5;oOOQO-E9R-E9ROOQS1G1Y1G1YOOQPG24YG24YO!#iQ`OAN>ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<<If<<IfOOQ[<<Hh<<HhPOQW,5;e,5;eOOQWG23uG23uO!#vQdO7+&l",stateData:"!$Z~O$QOS$RQQ~OWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|RO$XTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|lO$XTO~O#z$bP~P!jO$RqO~O`YXcYXdYXmYXpYXsYX!aYX!rYX!uYX#{YX$X[X~OgYX~P$ZO#|sO~O$XuO~O$XuO`$WXc$WXd$WXm$WXp$WXs$WX!a$WX!r$WX!u$WX#{$WXg$WX~O#|vO~O`xOcyOdyOmzOp{O!r|O!u!OO#{}O~Os!RO!a!PO~P&^Of!XO#|!TO#}!UO~O#|!YO~OW!^O#|![O$X!]O~OWVO^_O`WOcYOdYOmZOp[O!r]O!u^O#|RO$XTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO$O!bO~On!iO~P(dOQ!tOh!mOp!nOs!oOu!wOw!wO}!uO!d!vO#|!lO#}!rO$]!pO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO$O!bO~Os$eP~P)zOw!|O!d!vO#|!{O~Ow#OO#|#OO~Oh#ROs!RO#c#TO~O#|#VO~Oc!xX~P$ZOc#YO~On#ZO#z$bXr$bX~O#z$bXr$bX~P!jO$S#^O$T#^O$U#`O~Of#eO#|!TO#}!UO~Os!RO!a!PO~Or$bP~P!jOh#oO~Oh#pO~Oo!kX!o!kX$X!mX~O#|#qO~O$X#sO~Oo#tO!o#uO~O`xOcyOdyOmzOp{O~Os!qa!a!qa!r!qa!u!qa#{!qag!qa~P-pOs!ta!a!ta!r!ta!u!ta#{!tag!ta~P-pOS!fOc!gOd!gOh!cO!Y!eO!]!jO~OR#yOu#yOw#yO$O#vO$]!pO~P/POn$PO!U#|O!a#}O~P(dOh$RO~O$O$TO~Oh#RO~O`$WOc$WOg$ZOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo$]O~P)VO`$WOc$WOl$WOm$WOn$WOr$_O~P)VOP$`OSvXcvXdvXhvXnvXyvX!YvX!]vX!}vX#PvX$OvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!dvX#|vX#}vX$]vXovXrvX!avX#zvX$dvX!pvX~Oy$aO!}$bO#P$cOn$eP~P)zOh#pOS$ZXc$ZXd$ZXn$ZXy$ZX!Y$ZX!]$ZX!}$ZX#P$ZX$O$ZXQ$ZX`$ZXg$ZXl$ZXm$ZXp$ZXs$ZXu$ZXw$ZX}$ZX!d$ZX#|$ZX#}$ZX$]$ZXo$ZXr$ZX!a$ZX#z$ZX$d$ZX!p$ZX~Oh$gO~Oh$iO~O!U#|O!a$jOs$eXn$eX~Os!RO~On$mOy$aO~On$nO~Ow$oO!d!vO~Os$pO~Os!RO!U#|O~Os!RO#c$vO~O#|#VOs#fX~O$d$zOn!wa#z!war!wa~P)VOn#sX#z#sXr#sX~P!jOn#ZO#z$bar$ba~O$S#^O$T#^O$U%RO~Oo%TO!o%UO~Os!qi!a!qi!r!qi!u!qi#{!qig!qi~P-pOs!si!a!si!r!si!u!si#{!sig!si~P-pOs!ti!a!ti!r!ti!u!ti#{!tig!ti~P-pOs#qa!a#qa~P&^Or%VO~Og$aP~P'oOg$YP~P)VOc!SXg!QX!U!QX!W!SX~Oc%_O!W%`O~Og%aO!U#|O~O!U#|OS#yXc#yXd#yXh#yXn#yXs#yX!Y#yX!]#yX!a#yX$O#yX~On%eO!a#}O~P(dO!U#|OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!a!Xa$O!Xag!Xa~O$O%fOg$`P~P/POy$aOQ$[X`$[Xc$[Xg$[Xh$[Xl$[Xm$[Xn$[Xp$[Xs$[Xu$[Xw$[X}$[X!d$[X#|$[X#}$[X$]$[Xo$[Xr$[X~O`$WOc$WOg%kOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo%lO~P)VO`$WOc$WOl$WOm$WOn$WOr%mO~P)VOh%oOS!|Xc!|Xd!|Xn!|X!Y!|X!]!|X$O!|X~On%pO~Og%uOw%vO!e%vO~Os#uX!a#uXn#uX~P)zO!a$jOs$ean$ea~On%yO~Or&QO#|%{O$]%zO~Og&RO~P&^Oy$aO!a&VO$d$zOn!wi#z!wir!wi~P)VO$c&YO~On#sa#z#sar#sa~P!jOn#ZO#z$bir$bi~O!a&]Og$aX~P&^Og&_O~Oy$aOQ#kXg#kXh#kXp#kXs#kXu#kXw#kX}#kX!a#kX!d#kX#|#kX#}#kX$]#kX~O!a&aOg$YX~P)VOg&cO~Oo&dOy$aO!p&eO~OR#yOu#yOw#yO$O&gO$]!pO~O!U#|OS#yac#yad#yah#yan#yas#ya!Y#ya!]#ya!a#ya$O#ya~Oc!SXg!QX!U!QX!a!QX~O!U#|O!a&iOg$`X~Oc&kO~Og&lO~O#|&mO~On&oO~Oc&pO!U#|O~Og&rOn&qO~Og&uO~O!U#|Os#ua!a#uan#ua~OP$`OsvX!avXgvX~O$]%zOs#]X!a#]X~Os!RO!a&wO~Or&{O#|%{O$]%zO~Oy$aOQ#rXh#rXn#rXp#rXs#rXu#rXw#rX}#rX!a#rX!d#rX#z#rX#|#rX#}#rX$]#rX$d#rXr#rX~O!a&VO$d$zOn!wq#z!wqr!wq~P)VOo'QOy$aO!p'RO~Og#pX!a#pX~P'oO!a&]Og$aa~Og#oX!a#oX~P)VO!a&aOg$Ya~Oo'QO~Og'WO~P)VOg'XO!W'YO~O$O%fOg#nX!a#nX~P/PO!a&iOg$`a~O`'_Og'aO~OS#mac#mad#mah#ma!Y#ma!]#ma$O#ma~Og'cO~PMcOg'cOn'dO~Oy$aOQ#rah#ran#rap#ras#rau#raw#ra}#ra!a#ra!d#ra#z#ra#|#ra#}#ra$]#ra$d#rar#ra~Oo'iO~Og#pa!a#pa~P&^Og#oa!a#oa~P)VOR#yOu#yOw#yO$O&gO$]%zO~O!U#|Og#na!a#na~Oc'kO~O!a&iOg$`i~P)VO`'_Og'oO~Oy$aOg!Pin!Pi~Og'pO~PMcOn'qO~Og'rO~O!a&iOg$`q~Og#nq!a#nq~P)VO$Q!e$R$]`$]y!u~",goto:"4h$fPPPPP$gP$jP$s%V$s%i%{P$sP&R$sPP&XPPP&_&i&iPPPPP&iPP&iP'VP&iP&i(Q&iP(n(q(w(w)Z(wP(wP(wP(w(wP)j(w)vP(w)yPP*m*s$s*y$s+P+P+V+ZPP$sP$s$sP+a,],j,q$jP,zP,}P$jP$jP$jP-T$jP-W-Z-^-e$jP$jPP$jP-j$jP-m-s.S.j.x/O/Y/`/f/l/r/|0S0Y0`0f0lPPPPPPPPPPP0r0{P1q1t2vP3O3x4R4U4XPP4_RrQ_aOPco!R#Z$}q_OP]^co|}!O!P!R#R#Z#o$}&]qSOP]^co|}!O!P!R#R#Z#o$}&]qUOP]^co|}!O!P!R#R#Z#o$}&]QtTR#auQwWR#bxQ!VYR#cyQ#c!XS$f!s!tR%S#e!V!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k's!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sU#y!c%`'YU%}$p&P&wR&v%|!V!sdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sR$h!uQ%s$gR&s%tq!h`ei!c!d!e!q#|#}$O$R$e$g$j%t&iQ#w!cQ%h$RQ&h%`Q'[&iR'j'YQ#UjQ$U!jQ$t#TR&T$vR$S!f!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sQ!|gR$o!}Q!WYR#dyQ#c!WR%S#dQ!ZZR#fzQ!_[R#g{T!^[{Q#r!]R%]#sQ!SXQ!i`Q#SjQ#m!QQ$P!dQ$l!yQ$r#QQ$u#UQ$x#XQ%e$OQ&S$tQ&y&OQ&|&TR'h&xSnP!RQ#]oQ$|#ZR&Z$}ZmPo!R#Z$}Q${#YQ&X$yR'P&WR$e!qQ&n%oR'm'_R!}gR#PhR$q#PS&O$p&PR'f&wV%|$p&P&wR#XkQ#_qR%Q#_QcOSoP!RU!kco$}R$}#ZQ%Z#pY&`%Z&f'U'^'sQ&f%_Q'U&aQ'^&kR's'kQ$Y!mQ$[!nQ$^!oV%j$Y$[$^Q%t$gR&t%tQ&j%gS']&j'lR'l'^Q&b%ZR'V&bQ&^%WR'T&^Q!QXR#l!QQ&W$yR'O&WQ#[nS%O#[%PR%P#]Q'`&nR'n'`Q$k!xR%x$kQ&P$pR&z&PQ&x&OR'g&xQ#WkR$w#WQ$O!dR%d$O_bOPco!R#Z$}^XOPco!R#Z$}Q!`]Q!a^Q#h|Q#i}Q#j!OQ#k!PQ$s#RQ%W#oR'S&]R%[#pQ!qdQ!zf[$V!m!n!o$Y$[$^Q$y#Yd%Y#p%Z%_&a&f&k'U'^'k'sQ%^#uQ%n$aS&U$y&WQ&[%UQ&}&VR'b&p]$X!m!n!o$Y$[$^Q!d`U!xe!q$eQ#QiQ#x!cS#{!d$OQ$Q!eQ%b#|Q%c#}Q%g$RS%r$g%tQ%w$jR'Z&iQ#z!cQ&h%`R'j'YR%i$RR%X#oQpPR#n!RQ!yeQ$d!qR%q$e",nodeNames:"\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to FontFeatureStatement font-feature-values FontName AtRule Styles",maxTerm:159,nodeProps:[["isolate",-2,5,39,""],["openedBy",23,"(",31,"[",34,"{"],["closedBy",24,")",32,"]",35,"}"]],propSources:[cssHighlighting],skippedNodes:[0,5,117],repeatNodeCount:17,tokenData:"K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!e`$R~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[descendant,unitToken,identifiers,queryIdentifiers,1,2,3,4,new lr.LocalTokenGroup("m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~",28,142)],topRules:{StyleSheet:[0,6],Styles:[1,116]},dynamicPrecedences:{84:1},specialized:[{term:137,get:value=>spec_callee[value]||-1},{term:138,get:value=>spec_queryIdentifier[value]||-1},{term:4,get:value=>spec_QueryCallee[value]||-1},{term:28,get:value=>spec_AtKeyword[value]||-1},{term:136,get:value=>spec_identifier[value]||-1}],tokenPrec:2256});/* Hand-written tokenizers for CSS tokens that can't be
3
- expressed by Lezer's built-in tokenizer. */ // This file was generated by lezer-generator. You probably shouldn't edit it.
3
+ expressed by Lezer's built-in tokenizer. */// This file was generated by lezer-generator. You probably shouldn't edit it.
4
4
  return dist.parser=parser,dist}(),index=/*@__PURE__*/function getDefaultExportFromCjs(x){return x}(distExports);return module.exports=index,module.exports}