@actualwave/react-native-codeditor 1.1.0 → 1.2.1
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.
- package/CHANGELOG.md +39 -0
- package/README.md +67 -7
- package/SKILL.md +504 -0
- package/THIRD_PARTY_NOTICES +120 -0
- package/app.plugin.js +1 -1
- package/lib/module/CodeEditor.js +69 -2
- package/lib/typescript/src/CodeEditor.d.ts +20 -2
- package/lib/typescript/src/EditorAPI.d.ts +42 -1
- package/lib/typescript/src/WebViewAPI.d.ts +4 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/package.json +12 -4
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-core.js +39 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-css.js +19 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-glsl.js +1 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-graphql.js +50 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-icu-messageformat.js +1 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-react-native.js +6 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sksl.js +7 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sql.js +5 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-tailwind.js +63 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-glsl.js +20 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-icu-messageformat.js +11 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-js-completion.js +72 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-react-native.js +71 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-sksl.js +7 -2
- package/src/assets/codemirror/@codemirror_autocomplete.js +9 -9
- package/src/assets/codemirror/@codemirror_commands.js +86 -86
- package/src/assets/codemirror/@codemirror_lang-css.js +2 -2
- package/src/assets/codemirror/@codemirror_lang-go.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-html.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-javascript.js +4 -4
- package/src/assets/codemirror/@codemirror_lang-jinja.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-json.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-less.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-liquid.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-markdown.js +2 -2
- package/src/assets/codemirror/@codemirror_lang-python.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-sql.js +4 -4
- package/src/assets/codemirror/@codemirror_lang-xml.js +1 -1
- package/src/assets/codemirror/@codemirror_language.js +11 -11
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_clike.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_mathematica.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_oz.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_verilog.js +1 -1
- package/src/assets/codemirror/@codemirror_lint.js +5 -5
- package/src/assets/codemirror/@codemirror_merge.js +4 -4
- package/src/assets/codemirror/@codemirror_search.js +8 -8
- package/src/assets/codemirror/@codemirror_state.js +1 -1
- package/src/assets/codemirror/@codemirror_theme-one-dark.js +3 -3
- package/src/assets/codemirror/@codemirror_view.js +6 -6
- package/src/assets/codemirror/@lezer_common.js +2 -2
- package/src/assets/codemirror/@lezer_css.js +1 -1
- package/src/assets/codemirror/@lezer_javascript.js +1 -1
- package/src/assets/codemirror/@lezer_lr.js +1 -1
- package/src/assets/codemirror/@lezer_markdown.js +4 -4
- package/src/assets/codemirror/@lezer_sass.js +1 -1
- package/src/assets/codemirror/_core.js +129 -129
- package/src/assets/codemirror-editor.umd.js +130 -17
- package/src/assets/editor.html +37 -2
- package/lib/typescript/app.plugin.d.ts +0 -3
- package/lib/typescript/babel.config.d.ts +0 -10
- package/lib/typescript/react-native.config.d.ts +0 -2
- 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
|
|
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
|
-
|
|
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
|
|
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=
|
|
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=
|
|
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,
|
|
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?
|
|
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:
|
|
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;
|
|
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.
|
|
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}
|