@actualwave/react-native-codeditor 1.1.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 (62) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +16 -6
  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 +69 -2
  7. package/lib/typescript/src/CodeEditor.d.ts +20 -2
  8. package/lib/typescript/src/EditorAPI.d.ts +42 -1
  9. package/lib/typescript/src/WebViewAPI.d.ts +4 -1
  10. package/lib/typescript/src/index.d.ts +1 -1
  11. package/package.json +12 -4
  12. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-core.js +39 -0
  13. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-css.js +19 -0
  14. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-glsl.js +1 -0
  15. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-graphql.js +50 -0
  16. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-icu-messageformat.js +1 -0
  17. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-react-native.js +6 -0
  18. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sksl.js +7 -0
  19. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sql.js +5 -0
  20. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-tailwind.js +63 -0
  21. package/src/assets/codemirror/@actualwave_codemirror-lang-glsl.js +20 -0
  22. package/src/assets/codemirror/@actualwave_codemirror-lang-icu-messageformat.js +11 -0
  23. package/src/assets/codemirror/@actualwave_codemirror-lang-react-native.js +71 -0
  24. package/src/assets/codemirror/@actualwave_codemirror-lang-sksl.js +7 -2
  25. package/src/assets/codemirror/@codemirror_autocomplete.js +9 -9
  26. package/src/assets/codemirror/@codemirror_commands.js +86 -86
  27. package/src/assets/codemirror/@codemirror_lang-css.js +2 -2
  28. package/src/assets/codemirror/@codemirror_lang-go.js +1 -1
  29. package/src/assets/codemirror/@codemirror_lang-html.js +1 -1
  30. package/src/assets/codemirror/@codemirror_lang-javascript.js +4 -4
  31. package/src/assets/codemirror/@codemirror_lang-jinja.js +1 -1
  32. package/src/assets/codemirror/@codemirror_lang-json.js +1 -1
  33. package/src/assets/codemirror/@codemirror_lang-less.js +1 -1
  34. package/src/assets/codemirror/@codemirror_lang-liquid.js +1 -1
  35. package/src/assets/codemirror/@codemirror_lang-markdown.js +2 -2
  36. package/src/assets/codemirror/@codemirror_lang-python.js +1 -1
  37. package/src/assets/codemirror/@codemirror_lang-sql.js +4 -4
  38. package/src/assets/codemirror/@codemirror_lang-xml.js +1 -1
  39. package/src/assets/codemirror/@codemirror_language.js +11 -11
  40. package/src/assets/codemirror/@codemirror_legacy-modes_mode_clike.js +1 -1
  41. package/src/assets/codemirror/@codemirror_legacy-modes_mode_mathematica.js +1 -1
  42. package/src/assets/codemirror/@codemirror_legacy-modes_mode_oz.js +1 -1
  43. package/src/assets/codemirror/@codemirror_legacy-modes_mode_verilog.js +1 -1
  44. package/src/assets/codemirror/@codemirror_lint.js +5 -5
  45. package/src/assets/codemirror/@codemirror_merge.js +4 -4
  46. package/src/assets/codemirror/@codemirror_search.js +8 -8
  47. package/src/assets/codemirror/@codemirror_state.js +1 -1
  48. package/src/assets/codemirror/@codemirror_theme-one-dark.js +3 -3
  49. package/src/assets/codemirror/@codemirror_view.js +6 -6
  50. package/src/assets/codemirror/@lezer_common.js +2 -2
  51. package/src/assets/codemirror/@lezer_css.js +1 -1
  52. package/src/assets/codemirror/@lezer_javascript.js +1 -1
  53. package/src/assets/codemirror/@lezer_lr.js +1 -1
  54. package/src/assets/codemirror/@lezer_markdown.js +4 -4
  55. package/src/assets/codemirror/@lezer_sass.js +1 -1
  56. package/src/assets/codemirror/_core.js +129 -129
  57. package/src/assets/codemirror-editor.umd.js +130 -17
  58. package/src/assets/editor.html +25 -1
  59. package/lib/typescript/app.plugin.d.ts +0 -3
  60. package/lib/typescript/babel.config.d.ts +0 -10
  61. package/lib/typescript/react-native.config.d.ts +0 -2
  62. package/lib/typescript/scripts/copy-assets.d.ts +0 -2
@@ -81,7 +81,7 @@ for(let next,at=start.head;;){if(next=forward?pos.childAfter(at):pos.childBefore
81
81
  will also delete that whitespace. When the cursor is between
82
82
  matching brackets, an additional newline will be inserted after
83
83
  the cursor.
84
- */function newlineAndIndent(atEof){return({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range=>{let{from,to}=range,line=state$1.doc.lineAt(from),explode=!atEof&&from==to&&isBetweenBrackets(state$1,from);atEof&&(from=to=(to<=line.to?line:state$1.doc.lineAt(to)).to);let cx=new language.IndentContext(state$1,{simulateBreak:from,simulateDoubleBreak:!!explode}),indent=language.getIndentation(cx,from);for(null==indent&&(indent=state.countColumn(/^\s*/.exec(state$1.doc.lineAt(from).text)[0],state$1.tabSize));to<line.to&&/\s/.test(line.text[to-line.from]);)to++;explode?({from,to}=explode):from>line.from&&from<line.from+100&&!/\S/.test(line.text.slice(0,from))&&(from=line.from);let insert=["",language.indentString(state$1,indent)];return explode&&insert.push(language.indentString(state$1,cx.lineIndent(line.from,-1))),{changes:{from,to,insert:state.Text.of(insert)},range:state.EditorSelection.cursor(from+1+insert[1].length)}});return dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:"input"})),!0}}function changeBySelectedLine(state$1,f){let atLine=-1;return state$1.changeByRange(range=>{let changes=[];for(let line,pos=range.from;pos<=range.to;)line=state$1.doc.lineAt(pos),line.number>atLine&&(range.empty||range.to>line.from)&&(f(line,changes,range),atLine=line.number),pos=line.to+1;let changeSet=state$1.changes(changes);return{changes,range:state.EditorSelection.range(changeSet.mapPos(range.anchor,1),changeSet.mapPos(range.head,1))}})}/**
84
+ */function newlineAndIndent(atEof){return({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range=>{let{from,to}=range,line=state$1.doc.lineAt(from),explode=!atEof&&from==to&&isBetweenBrackets(state$1,from);atEof&&(from=to=(to<=line.to?line:state$1.doc.lineAt(to)).to);let cx=new language.IndentContext(state$1,{simulateBreak:from,simulateDoubleBreak:!!explode}),indent=language.getIndentation(cx,from);for(null==indent&&(indent=state.countColumn(/^\s*/.exec(state$1.doc.lineAt(from).text)[0],state$1.tabSize));to<line.to&&/\s/.test(line.text[to-line.from]);)to++;explode?{from,to}=explode:from>line.from&&from<line.from+100&&!/\S/.test(line.text.slice(0,from))&&(from=line.from);let insert=["",language.indentString(state$1,indent)];return explode&&insert.push(language.indentString(state$1,cx.lineIndent(line.from,-1))),{changes:{from,to,insert:state.Text.of(insert)},range:state.EditorSelection.cursor(from+1+insert[1].length)}});return dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:"input"})),!0}}function changeBySelectedLine(state$1,f){let atLine=-1;return state$1.changeByRange(range=>{let changes=[];for(let line,pos=range.from;pos<=range.to;)line=state$1.doc.lineAt(pos),line.number>atLine&&(range.empty||range.to>line.from)&&(f(line,changes,range),atLine=line.number),pos=line.to+1;let changeSet=state$1.changes(changes);return{changes,range:state.EditorSelection.range(changeSet.mapPos(range.anchor,1),changeSet.mapPos(range.head,1))}})}/**
85
85
  Auto-indent the selected lines. This uses the [indentation service
86
86
  facet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent
87
87
  information.
@@ -90,42 +90,42 @@ for(let next,at=start.head;;){if(next=forward?pos.childAfter(at):pos.childBefore
90
90
  if available, otherwise falling back to block comments.
91
91
  */const toggleComment=target=>{let{state}=target,line=state.doc.lineAt(state.selection.main.from),config=getConfig(target.state,line.from);return config.line?toggleLineComment(target):!!config.block&&toggleBlockCommentByLine(target)},toggleLineComment=command(changeLineComment,0/* CommentOption.Toggle */),lineComment=command(changeLineComment,1/* CommentOption.Comment */),lineUncomment=command(changeLineComment,2/* CommentOption.Uncomment */),toggleBlockComment=command(changeBlockComment,0/* CommentOption.Toggle */),blockComment=command(changeBlockComment,1/* CommentOption.Comment */),blockUncomment=command(changeBlockComment,2/* CommentOption.Uncomment */),toggleBlockCommentByLine=command((o,s)=>changeBlockComment(o,s,selectedLineRanges(s)),0/* CommentOption.Toggle */),SearchMargin=50,fromHistory=state.Annotation.define(),isolateHistory=state.Annotation.define(),invertedEffects=state.Facet.define(),historyConfig=state.Facet.define({combine(configs){return state.combineConfig(configs,{minDepth:100,newGroupDelay:500,joinToEvent:(_t,isAdjacent)=>isAdjacent},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(a,b)=>(tr,adj)=>a(tr,adj)||b(tr,adj)})}}),historyField_=state.StateField.define({create(){return HistoryState.empty},update(state$1,tr){let config=tr.state.facet(historyConfig),fromHist=tr.annotation(fromHistory);if(fromHist){let item=HistEvent.fromTransaction(tr,fromHist.selection),from=fromHist.side,other=0==from/* BranchName.Done */?state$1.undone:state$1.done;return other=item?updateBranch(other,other.length,config.minDepth,item):addSelection(other,tr.startState.selection),new HistoryState(0==from/* BranchName.Done */?fromHist.rest:other,0==from/* BranchName.Done */?other:fromHist.rest)}let isolate=tr.annotation(isolateHistory);if(("full"==isolate||"before"==isolate)&&(state$1=state$1.isolate()),!1===tr.annotation(state.Transaction.addToHistory))return tr.changes.empty?state$1:state$1.addMapping(tr.changes.desc);let event=HistEvent.fromTransaction(tr),time=tr.annotation(state.Transaction.time),userEvent=tr.annotation(state.Transaction.userEvent);return event?state$1=state$1.addChanges(event,time,userEvent,config,tr):tr.selection&&(state$1=state$1.addSelection(tr.startState.selection,time,userEvent,config.newGroupDelay)),("full"==isolate||"after"==isolate)&&(state$1=state$1.isolate()),state$1},toJSON(value){return{done:value.done.map(e=>e.toJSON()),undone:value.undone.map(e=>e.toJSON())}},fromJSON(json){return new HistoryState(json.done.map(HistEvent.fromJSON),json.undone.map(HistEvent.fromJSON))}}),historyField=historyField_,undo=cmd(0/* BranchName.Done */,!1),redo=cmd(1/* BranchName.Undone */,!1),undoSelection=cmd(0/* BranchName.Done */,!0),redoSelection=cmd(1/* BranchName.Undone */,!0),undoDepth=depth(0/* BranchName.Done */),redoDepth=depth(1/* BranchName.Undone */);/**
92
92
  Comment the current selection using line comments.
93
- */ /**
93
+ *//**
94
94
  Uncomment the current selection using line comments.
95
- */ /**
95
+ *//**
96
96
  Comment or uncomment the current selection using block comments.
97
97
  The block comment syntax is taken from the
98
98
  [`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language
99
99
  data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).
100
- */ /**
100
+ *//**
101
101
  Comment the current selection using block comments.
102
- */ /**
102
+ *//**
103
103
  Uncomment the current selection using block comments.
104
- */ /**
104
+ *//**
105
105
  Comment or uncomment the lines around the current selection using
106
106
  block comments.
107
- */ /**
107
+ *//**
108
108
  Transaction annotation that will prevent that transaction from
109
109
  being combined with other transactions in the undo history. Given
110
110
  `"before"`, it'll prevent merging with previous transactions. With
111
111
  `"after"`, subsequent transactions won't be combined with this
112
112
  one. With `"full"`, the transaction is isolated on both sides.
113
- */ /**
113
+ *//**
114
114
  This facet provides a way to register functions that, given a
115
115
  transaction, provide a set of effects that the history should
116
116
  store when inverting the transaction. This can be used to
117
117
  integrate some kinds of effects in the history, so that they can
118
118
  be undone (and redone again).
119
- */ /**
119
+ *//**
120
120
  Redo a group of history events. Returns false if no group was
121
121
  available.
122
- */ /**
122
+ *//**
123
123
  Undo a change or selection change.
124
- */ /**
124
+ *//**
125
125
  Redo a change or selection change.
126
- */ /**
126
+ *//**
127
127
  The amount of redoable change events available in a given state.
128
- */ // History events store groups of changes or effects that need to be
128
+ */// History events store groups of changes or effects that need to be
129
129
  // undone/redone together.
130
130
  class HistEvent{constructor(// The changes in this event. Normal events hold at least one
131
131
  // change or effect. But it may be necessary to store selection
@@ -151,185 +151,185 @@ static fromTransaction(tr,selection){let effects=none;for(let invert of tr.start
151
151
  - Alt-u (Mod-Shift-u on macOS): [`redoSelection`](https://codemirror.net/6/docs/ref/#commands.redoSelection).
152
152
  */const historyKeymap=[{key:"Mod-z",run:undo,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:redo,preventDefault:!0},{linux:"Ctrl-Shift-z",run:redo,preventDefault:!0},{key:"Mod-u",run:undoSelection,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:redoSelection,preventDefault:!0}],cursorCharLeft=view=>cursorByChar(view,!ltrAtCursor(view)),cursorCharRight=view=>cursorByChar(view,ltrAtCursor(view)),cursorCharForward=view=>cursorByChar(view,!0),cursorCharBackward=view=>cursorByChar(view,!1),cursorCharForwardLogical=target=>moveByCharLogical(target,!0),cursorCharBackwardLogical=target=>moveByCharLogical(target,!1),cursorGroupLeft=view=>cursorByGroup(view,!ltrAtCursor(view)),cursorGroupRight=view=>cursorByGroup(view,ltrAtCursor(view)),cursorGroupForward=view=>cursorByGroup(view,!0),cursorGroupBackward=view=>cursorByGroup(view,!1),cursorGroupForwardWin=view=>moveSel(view,range=>range.empty?view.moveByChar(range,!0,start=>toGroupStart(view,range.head,start)):rangeEnd(range,!0)),segmenter="undefined"!=typeof Intl&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null,cursorSubwordForward=view=>cursorBySubword(view,!0),cursorSubwordBackward=view=>cursorBySubword(view,!1),cursorSyntaxLeft=view=>moveSel(view,range=>moveBySyntax(view.state,range,!ltrAtCursor(view))),cursorSyntaxRight=view=>moveSel(view,range=>moveBySyntax(view.state,range,ltrAtCursor(view))),cursorLineUp=view=>cursorByLine(view,!1),cursorLineDown=view=>cursorByLine(view,!0),cursorPageUp=view=>cursorByPage(view,!1),cursorPageDown=view=>cursorByPage(view,!0),cursorLineBoundaryForward=view=>moveSel(view,range=>moveByLineBoundary(view,range,!0)),cursorLineBoundaryBackward=view=>moveSel(view,range=>moveByLineBoundary(view,range,!1)),cursorLineBoundaryLeft=view=>moveSel(view,range=>moveByLineBoundary(view,range,!ltrAtCursor(view))),cursorLineBoundaryRight=view=>moveSel(view,range=>moveByLineBoundary(view,range,ltrAtCursor(view))),cursorLineStart=view=>moveSel(view,range=>state.EditorSelection.cursor(view.lineBlockAt(range.head).from,1)),cursorLineEnd=view=>moveSel(view,range=>state.EditorSelection.cursor(view.lineBlockAt(range.head).to,-1)),cursorMatchingBracket=({state,dispatch})=>toMatchingBracket(state,dispatch,!1),selectMatchingBracket=({state,dispatch})=>toMatchingBracket(state,dispatch,!0),selectCharLeft=view=>selectByChar(view,!ltrAtCursor(view)),selectCharRight=view=>selectByChar(view,ltrAtCursor(view)),selectCharForward=view=>selectByChar(view,!0),selectCharBackward=view=>selectByChar(view,!1),selectCharForwardLogical=target=>extendSel(target,range=>byCharLogical(target.state,range,!0)),selectCharBackwardLogical=target=>extendSel(target,range=>byCharLogical(target.state,range,!1)),selectGroupLeft=view=>selectByGroup(view,!ltrAtCursor(view)),selectGroupRight=view=>selectByGroup(view,ltrAtCursor(view)),selectGroupForward=view=>selectByGroup(view,!0),selectGroupBackward=view=>selectByGroup(view,!1),selectGroupForwardWin=view=>extendSel(view,range=>view.moveByChar(range,!0,start=>toGroupStart(view,range.head,start))),selectSubwordForward=view=>selectBySubword(view,!0),selectSubwordBackward=view=>selectBySubword(view,!1),selectSyntaxLeft=view=>extendSel(view,range=>moveBySyntax(view.state,range,!ltrAtCursor(view))),selectSyntaxRight=view=>extendSel(view,range=>moveBySyntax(view.state,range,ltrAtCursor(view))),selectLineUp=view=>selectByLine(view,!1),selectLineDown=view=>selectByLine(view,!0),selectPageUp=view=>selectByPage(view,!1),selectPageDown=view=>selectByPage(view,!0),selectLineBoundaryForward=view=>extendSel(view,range=>moveByLineBoundary(view,range,!0)),selectLineBoundaryBackward=view=>extendSel(view,range=>moveByLineBoundary(view,range,!1)),selectLineBoundaryLeft=view=>extendSel(view,range=>moveByLineBoundary(view,range,!ltrAtCursor(view))),selectLineBoundaryRight=view=>extendSel(view,range=>moveByLineBoundary(view,range,ltrAtCursor(view))),selectLineStart=view=>extendSel(view,range=>state.EditorSelection.cursor(view.lineBlockAt(range.head).from)),selectLineEnd=view=>extendSel(view,range=>state.EditorSelection.cursor(view.lineBlockAt(range.head).to)),cursorDocStart=({state,dispatch})=>(dispatch(setSel(state,{anchor:0})),!0),cursorDocEnd=({state,dispatch})=>(dispatch(setSel(state,{anchor:state.doc.length})),!0),selectDocStart=({state,dispatch})=>(dispatch(setSel(state,{anchor:state.selection.main.anchor,head:0})),!0),selectDocEnd=({state,dispatch})=>(dispatch(setSel(state,{anchor:state.selection.main.anchor,head:state.doc.length})),!0),selectAll=({state,dispatch})=>(dispatch(state.update({selection:{anchor:0,head:state.doc.length},userEvent:"select"})),!0),selectLine=({state:state$1,dispatch})=>{let ranges=selectedLineBlocks(state$1).map(({from,to})=>state.EditorSelection.range(from,Math.min(to+1,state$1.doc.length)));return dispatch(state$1.update({selection:state.EditorSelection.create(ranges),userEvent:"select"})),!0},selectParentSyntax=({state:state$1,dispatch})=>{let selection=updateSel(state$1.selection,range=>{let tree=language.syntaxTree(state$1),stack=tree.resolveStack(range.from,1);if(range.empty){let stackBefore=tree.resolveStack(range.from,-1);stackBefore.node.from>=stack.node.from&&stackBefore.node.to<=stack.node.to&&(stack=stackBefore)}for(let cur=stack;cur;cur=cur.next){let{node}=cur;if((node.from<range.from&&node.to>=range.to||node.to>range.to&&node.from<=range.from)&&cur.next)return state.EditorSelection.range(node.to,node.from)}return range});return!selection.eq(state$1.selection)&&(dispatch(setSel(state$1,selection)),!0)},addCursorAbove=view=>addCursorVertically(view,!1),addCursorBelow=view=>addCursorVertically(view,!0),simplifySelection=({state:state$1,dispatch})=>{let cur=state$1.selection,selection=null;return(1<cur.ranges.length?selection=state.EditorSelection.create([cur.main]):!cur.main.empty&&(selection=state.EditorSelection.create([state.EditorSelection.cursor(cur.main.head)])),!!selection)&&(dispatch(setSel(state$1,selection)),!0)},deleteByChar=(target,forward,byIndentUnit)=>deleteBy(target,range=>{let before,targetPos,pos=range.from,{state:state$1}=target,line=state$1.doc.lineAt(pos);if(byIndentUnit&&!forward&&pos>line.from&&pos<line.from+200&&!/[^ \t]/.test(before=line.text.slice(0,pos-line.from))){if("\t"==before[before.length-1])return pos-1;let col=state.countColumn(before,state$1.tabSize),drop=col%language.getIndentUnit(state$1)||language.getIndentUnit(state$1);for(let i=0;i<drop&&" "==before[before.length-1-i];i++)pos--;targetPos=pos}else targetPos=state.findClusterBreak(line.text,pos-line.from,forward,forward)+line.from,targetPos==pos&&line.number!=(forward?state$1.doc.lines:1)?targetPos+=forward?1:-1:!forward&&/[\ufe00-\ufe0f]/.test(line.text.slice(targetPos-line.from,pos-line.from))&&(targetPos=state.findClusterBreak(line.text,targetPos-line.from,!1,!1)+line.from);return targetPos}),deleteCharBackward=view=>deleteByChar(view,!1,!0),deleteCharBackwardStrict=view=>deleteByChar(view,!1,!1),deleteCharForward=view=>deleteByChar(view,!0,!1),deleteByGroup=(target,forward)=>deleteBy(target,range=>{let pos=range.head,{state:state$1}=target,line=state$1.doc.lineAt(pos),categorize=state$1.charCategorizer(pos);for(let cat=null;;){if(pos==(forward?line.to:line.from)){pos==range.head&&line.number!=(forward?state$1.doc.lines:1)&&(pos+=forward?1:-1);break}let next=state.findClusterBreak(line.text,pos-line.from,forward)+line.from,nextChar=line.text.slice(Math.min(pos,next)-line.from,Math.max(pos,next)-line.from),nextCat=categorize(nextChar);if(null!=cat&&nextCat!=cat)break;(" "!=nextChar||pos!=range.head)&&(cat=nextCat),pos=next}return pos}),deleteGroupBackward=target=>deleteByGroup(target,!1),deleteGroupForward=target=>deleteByGroup(target,!0),deleteGroupForwardWin=view=>deleteBy(view,range=>view.moveByChar(range,!0,start=>toGroupStart(view,range.head,start)).head),deleteToLineEnd=view=>deleteBy(view,range=>{let lineEnd=view.lineBlockAt(range.head).to;return range.head<lineEnd?lineEnd:Math.min(view.state.doc.length,range.head+1)}),deleteToLineStart=view=>deleteBy(view,range=>{let lineStart=view.lineBlockAt(range.head).from;return range.head>lineStart?lineStart:Math.max(0,range.head-1)}),deleteLineBoundaryBackward=view=>deleteBy(view,range=>{let lineStart=view.moveToLineBoundary(range,!1).head;return range.head>lineStart?lineStart:Math.max(0,range.head-1)}),deleteLineBoundaryForward=view=>deleteBy(view,range=>{let lineStart=view.moveToLineBoundary(range,!0).head;return range.head<lineStart?lineStart:Math.min(view.state.doc.length,range.head+1)}),deleteTrailingWhitespace=({state,dispatch})=>{if(state.readOnly)return!1;let changes=[];for(let pos=0,prev="",iter=state.doc.iter();;){if(iter.next(),iter.lineBreak||iter.done){let trailing=prev.search(/\s+$/);if(-1<trailing&&changes.push({from:pos-(prev.length-trailing),to:pos}),iter.done)break;prev=""}else prev=iter.value;pos+=iter.value.length}return!!changes.length&&(dispatch(state.update({changes,userEvent:"delete"})),!0)},splitLine=({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range=>({changes:{from:range.from,to:range.to,insert:state.Text.of(["",""])},range:state.EditorSelection.cursor(range.from)}));return dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range=>{if(!range.empty||0==range.from||range.from==state$1.doc.length)return{range};let pos=range.from,line=state$1.doc.lineAt(pos),from=pos==line.from?pos-1:state.findClusterBreak(line.text,pos-line.from,!1)+line.from,to=pos==line.to?pos+1:state.findClusterBreak(line.text,pos-line.from,!0)+line.from;return{changes:{from,to,insert:state$1.doc.slice(pos,to).append(state$1.doc.slice(from,pos))},range:state.EditorSelection.cursor(to)}});return!changes.changes.empty&&(dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:"move.character"})),!0)},moveLineUp=({state,dispatch})=>moveLine(state,dispatch,!1),moveLineDown=({state,dispatch})=>moveLine(state,dispatch,!0),copyLineUp=({state,dispatch})=>copyLine(state,dispatch,!1),copyLineDown=({state,dispatch})=>copyLine(state,dispatch,!0),deleteLine=view=>{if(view.state.readOnly)return!1;let{state}=view,changes=state.changes(selectedLineBlocks(state).map(({from,to})=>(0<from?from--:to<state.doc.length&&to++,{from,to}))),selection=updateSel(state.selection,range=>{let dist;if(view.lineWrapping){let block=view.lineBlockAt(range.head),pos=view.coordsAtPos(range.head,range.assoc||1);pos&&(dist=block.bottom+view.documentTop-pos.bottom+view.defaultLineHeight/2)}return view.moveVertically(range,!0,dist)}).map(changes);return view.dispatch({changes,selection,scrollIntoView:!0,userEvent:"delete.line"}),!0},insertNewline=({state,dispatch})=>(dispatch(state.update(state.replaceSelection(state.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0),insertNewlineKeepIndent=({state:state$1,dispatch})=>(dispatch(state$1.update(state$1.changeByRange(range=>{let indent=/^\s*/.exec(state$1.doc.lineAt(range.from).text)[0];return{changes:{from:range.from,to:range.to,insert:state$1.lineBreak+indent},range:state.EditorSelection.cursor(range.from+indent.length+1)}}),{scrollIntoView:!0,userEvent:"input"})),!0),insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0),indentSelection=({state,dispatch})=>{if(state.readOnly)return!1;let updated=Object.create(null),context=new language.IndentContext(state,{overrideIndentation:start=>{let found=updated[start];return null==found?-1:found}}),changes=changeBySelectedLine(state,(line,changes,range)=>{let indent=language.getIndentation(context,line.from);if(null==indent)return;/\S/.test(line.text)||(indent=0);let cur=/^\s*/.exec(line.text)[0],norm=language.indentString(state,indent);(cur!=norm||range.from<line.from+cur.length)&&(updated[line.from]=indent,changes.push({from:line.from,to:line.from+cur.length,insert:norm}))});return changes.changes.empty||dispatch(state.update(changes,{userEvent:"indent"})),!0},indentMore=({state,dispatch})=>!state.readOnly&&(dispatch(state.update(changeBySelectedLine(state,(line,changes)=>{changes.push({from:line.from,insert:state.facet(language.indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:state$1,dispatch})=>!state$1.readOnly&&(dispatch(state$1.update(changeBySelectedLine(state$1,(line,changes)=>{let space=/^\s*/.exec(line.text)[0];if(!space)return;let col=state.countColumn(space,state$1.tabSize),keep=0,insert=language.indentString(state$1,Math.max(0,col-language.getIndentUnit(state$1)));for(;keep<space.length&&keep<insert.length&&space.charCodeAt(keep)==insert.charCodeAt(keep);)keep++;changes.push({from:line.from+keep,to:line.from+space.length,insert:insert.slice(keep)})}),{userEvent:"delete.dedent"})),!0),toggleTabFocusMode=view=>(view.setTabFocusMode(),!0),temporarilySetTabFocusMode=view=>(view.setTabFocusMode(2e3),!0),insertTab=({state,dispatch})=>state.selection.ranges.some(r=>!r.empty)?indentMore({state,dispatch}):(dispatch(state.update(state.replaceSelection("\t"),{scrollIntoView:!0,userEvent:"input"})),!0),emacsStyleKeymap=[{key:"Ctrl-b",run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:"Ctrl-f",run:cursorCharRight,shift:selectCharRight},{key:"Ctrl-p",run:cursorLineUp,shift:selectLineUp},{key:"Ctrl-n",run:cursorLineDown,shift:selectLineDown},{key:"Ctrl-a",run:cursorLineStart,shift:selectLineStart},{key:"Ctrl-e",run:cursorLineEnd,shift:selectLineEnd},{key:"Ctrl-d",run:deleteCharForward},{key:"Ctrl-h",run:deleteCharBackward},{key:"Ctrl-k",run:deleteToLineEnd},{key:"Ctrl-Alt-h",run:deleteGroupBackward},{key:"Ctrl-o",run:splitLine},{key:"Ctrl-t",run:transposeChars},{key:"Ctrl-v",run:cursorPageDown}],standardKeymap=[{key:"ArrowLeft",run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:cursorGroupLeft,shift:selectGroupLeft,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:cursorLineBoundaryLeft,shift:selectLineBoundaryLeft,preventDefault:!0},{key:"ArrowRight",run:cursorCharRight,shift:selectCharRight,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:cursorGroupRight,shift:selectGroupRight,preventDefault:!0},{mac:"Cmd-ArrowRight",run:cursorLineBoundaryRight,shift:selectLineBoundaryRight,preventDefault:!0},{key:"ArrowUp",run:cursorLineUp,shift:selectLineUp,preventDefault:!0},{mac:"Cmd-ArrowUp",run:cursorDocStart,shift:selectDocStart},{mac:"Ctrl-ArrowUp",run:cursorPageUp,shift:selectPageUp},{key:"ArrowDown",run:cursorLineDown,shift:selectLineDown,preventDefault:!0},{mac:"Cmd-ArrowDown",run:cursorDocEnd,shift:selectDocEnd},{mac:"Ctrl-ArrowDown",run:cursorPageDown,shift:selectPageDown},{key:"PageUp",run:cursorPageUp,shift:selectPageUp},{key:"PageDown",run:cursorPageDown,shift:selectPageDown},{key:"Home",run:cursorLineBoundaryBackward,shift:selectLineBoundaryBackward,preventDefault:!0},{key:"Mod-Home",run:cursorDocStart,shift:selectDocStart},{key:"End",run:cursorLineBoundaryForward,shift:selectLineBoundaryForward,preventDefault:!0},{key:"Mod-End",run:cursorDocEnd,shift:selectDocEnd},{key:"Enter",run:insertNewlineAndIndent,shift:insertNewlineAndIndent},{key:"Mod-a",run:selectAll},{key:"Backspace",run:deleteCharBackward,shift:deleteCharBackward,preventDefault:!0},{key:"Delete",run:deleteCharForward,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:deleteGroupBackward,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:deleteGroupForward,preventDefault:!0},{mac:"Mod-Backspace",run:deleteLineBoundaryBackward,preventDefault:!0},{mac:"Mod-Delete",run:deleteLineBoundaryForward,preventDefault:!0}].concat(emacsStyleKeymap.map(b=>({mac:b.key,run:b.run,shift:b.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Mod-Alt-ArrowUp",run:addCursorAbove},{key:"Mod-Alt-ArrowDown",run:addCursorBelow},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket},{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment},{key:"Ctrl-m",mac:"Shift-Alt-m",run:toggleTabFocusMode}].concat(standardKeymap),indentWithTab={key:"Tab",run:indentMore,shift:indentLess};/**
153
153
  Move the selection one character to the right.
154
- */ /**
154
+ *//**
155
155
  Move the selection one character forward.
156
- */ /**
156
+ *//**
157
157
  Move the selection one character backward.
158
- */ /**
158
+ *//**
159
159
  Move the selection one character backward, in logical string index
160
160
  order.
161
- */ /**
161
+ *//**
162
162
  Move the selection one group to the right.
163
- */ /**
163
+ *//**
164
164
  Move the selection one group forward.
165
- */ /**
165
+ *//**
166
166
  Move the selection one group backward.
167
- */ /**
167
+ *//**
168
168
  Move the selection one group or camel-case subword backward.
169
- */ /**
169
+ *//**
170
170
  Move the cursor over the next syntactic element to the right.
171
- */ /**
171
+ *//**
172
172
  Move the selection one line down.
173
- */ /**
173
+ *//**
174
174
  Move the selection one page down.
175
- */ /**
175
+ *//**
176
176
  Move the selection to previous line wrap point, or failing that to
177
177
  the start of the line. If the line is indented, and the cursor
178
178
  isn't already at the end of the indentation, this will move to the
179
179
  end of the indentation instead of the start of the line.
180
- */ /**
180
+ *//**
181
181
  Move the selection one line wrap point to the left.
182
- */ /**
182
+ *//**
183
183
  Move the selection one line wrap point to the right.
184
- */ /**
184
+ *//**
185
185
  Move the selection to the start of the line.
186
- */ /**
186
+ *//**
187
187
  Move the selection to the end of the line.
188
- */ /**
188
+ *//**
189
189
  Extend the selection to the bracket matching the one the selection
190
190
  head is currently on, if any.
191
- */ /**
191
+ *//**
192
192
  Move the selection head one character to the right.
193
- */ /**
193
+ *//**
194
194
  Move the selection head one character forward.
195
- */ /**
195
+ *//**
196
196
  Move the selection head one character backward.
197
- */ /**
197
+ *//**
198
198
  Move the selection head one character forward by logical
199
199
  (non-direction aware) string index order.
200
- */ /**
200
+ *//**
201
201
  Move the selection head one character backward by logical string
202
202
  index order.
203
- */ /**
203
+ *//**
204
204
  Move the selection head one group to the right.
205
- */ /**
205
+ *//**
206
206
  Move the selection head one group forward.
207
- */ /**
207
+ *//**
208
208
  Move the selection head one group backward.
209
- */ /**
209
+ *//**
210
210
  Move the selection head one group forward in the default Windows
211
211
  style, skipping to the start of the next group.
212
- */ /**
212
+ *//**
213
213
  Move the selection head one group or subword backward.
214
- */ /**
214
+ *//**
215
215
  Move the selection head over the next syntactic element to the left.
216
- */ /**
216
+ *//**
217
217
  Move the selection head over the next syntactic element to the right.
218
- */ /**
218
+ *//**
219
219
  Move the selection head one line down.
220
- */ /**
220
+ *//**
221
221
  Move the selection head one page down.
222
- */ /**
222
+ *//**
223
223
  Move the selection head to the next line boundary.
224
- */ /**
224
+ *//**
225
225
  Move the selection head to the previous line boundary.
226
- */ /**
226
+ *//**
227
227
  Move the selection head one line boundary to the left.
228
- */ /**
228
+ *//**
229
229
  Move the selection head one line boundary to the right.
230
- */ /**
230
+ *//**
231
231
  Move the selection head to the start of the line.
232
- */ /**
232
+ *//**
233
233
  Move the selection head to the end of the line.
234
- */ /**
234
+ *//**
235
235
  Move the selection to the start of the document.
236
- */ /**
236
+ *//**
237
237
  Move the selection to the end of the document.
238
- */ /**
238
+ *//**
239
239
  Move the selection head to the start of the document.
240
- */ /**
240
+ *//**
241
241
  Move the selection head to the end of the document.
242
- */ /**
242
+ *//**
243
243
  Select the entire document.
244
- */ /**
244
+ *//**
245
245
  Expand the selection to cover entire lines.
246
- */ /**
246
+ *//**
247
247
  Select the next syntactic construct that is larger than the
248
248
  selection. Note that this will only work insofar as the language
249
249
  [provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full
250
250
  syntax tree.
251
- */ /**
251
+ *//**
252
252
  Expand the selection by adding a cursor below the heads of
253
253
  currently selected ranges.
254
- */ /**
254
+ *//**
255
255
  Simplify the current selection. When multiple ranges are selected,
256
256
  reduce it to its main range. Otherwise, if the selection is
257
257
  non-empty, convert it to a cursor selection.
258
- */ /**
258
+ *//**
259
259
  Delete the selection, or, for cursor selections, the character or
260
260
  indentation unit before the cursor.
261
- */ /**
261
+ *//**
262
262
  Delete the selection or the character before the cursor. Does not
263
263
  implement any extended behavior like deleting whole indentation
264
264
  units in one go.
265
- */ /**
265
+ *//**
266
266
  Delete the selection or the character after the cursor.
267
- */ /**
267
+ *//**
268
268
  Delete the selection or backward until the end of the next
269
269
  [group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of
270
270
  whitespace when they consist of a single space.
271
- */ /**
271
+ *//**
272
272
  Delete the selection or forward until the end of the next group.
273
- */ /**
273
+ *//**
274
274
  Variant of [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)
275
275
  that uses the Windows convention of also deleting the whitespace
276
276
  after a word.
277
- */ /**
277
+ *//**
278
278
  Delete the selection, or, if it is a cursor selection, delete to
279
279
  the end of the line. If the cursor is directly at the end of the
280
280
  line, delete the line break after it.
281
- */ /**
281
+ *//**
282
282
  Delete the selection, or, if it is a cursor selection, delete to
283
283
  the start of the line. If the cursor is directly at the start of the
284
284
  line, delete the line break before it.
285
- */ /**
285
+ *//**
286
286
  Delete the selection, or, if it is a cursor selection, delete to
287
287
  the start of the line or the next line wrap before the cursor.
288
- */ /**
288
+ *//**
289
289
  Delete the selection, or, if it is a cursor selection, delete to
290
290
  the end of the line or the next line wrap after the cursor.
291
- */ /**
291
+ *//**
292
292
  Delete all whitespace directly before a line end from the
293
293
  document.
294
- */ /**
294
+ *//**
295
295
  Replace each selection range with a line break, leaving the cursor
296
296
  on the line before the break.
297
- */ /**
297
+ *//**
298
298
  Flip the characters before and after the cursor(s).
299
- */ /**
299
+ *//**
300
300
  Move the selected lines down one line.
301
- */ /**
301
+ *//**
302
302
  Create a copy of the selected lines. Keep the selection in the bottom copy.
303
- */ /**
303
+ *//**
304
304
  Delete selected lines.
305
- */ /**
305
+ *//**
306
306
  Replace the selection with a newline.
307
- */ /**
307
+ *//**
308
308
  Replace the selection with a newline and the same amount of
309
309
  indentation as the line above.
310
- */ /**
310
+ *//**
311
311
  Create a blank, indented line below the current line.
312
- */ /**
312
+ *//**
313
313
  Add a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected
314
314
  lines.
315
- */ /**
315
+ *//**
316
316
  Remove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all
317
317
  selected lines.
318
- */ /**
318
+ *//**
319
319
  Enables or disables
320
320
  [tab-focus mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode). While on, this
321
321
  prevents the editor's key bindings from capturing Tab or
322
322
  Shift-Tab, making it possible for the user to move focus out of
323
323
  the editor with the keyboard.
324
- */ /**
324
+ *//**
325
325
  Temporarily enables [tab-focus
326
326
  mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode) for two seconds or until
327
327
  another key is pressed.
328
- */ /**
328
+ *//**
329
329
  Insert a tab character at the cursor or, if something is selected,
330
330
  use [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) to indent the entire
331
331
  selection.
332
- */ /**
332
+ *//**
333
333
  Array of key bindings containing the Emacs-style bindings that are
334
334
  available on macOS by default.
335
335
 
@@ -347,7 +347,7 @@ static fromTransaction(tr,selection){let effects=none;for(let invert of tr.start
347
347
  - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)
348
348
  - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)
349
349
  - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)
350
- */ /**
350
+ *//**
351
351
  An array of key bindings closely sticking to platform-standard or
352
352
  widely used bindings. (This includes the bindings from
353
353
  [`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`
@@ -379,7 +379,7 @@ static fromTransaction(tr,selection){let effects=none;for(let invert of tr.start
379
379
  - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)
380
380
  - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).
381
381
  - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).
382
- */ /**
382
+ *//**
383
383
  The default keymap. Includes all bindings from
384
384
  [`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:
385
385
 
@@ -403,7 +403,7 @@ static fromTransaction(tr,selection){let effects=none;for(let invert of tr.start
403
403
  - Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).
404
404
  - Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).
405
405
  - Ctrl-m (Alt-Shift-m on macOS): [`toggleTabFocusMode`](https://codemirror.net/6/docs/ref/#commands.toggleTabFocusMode).
406
- */ /**
406
+ *//**
407
407
  A binding that binds Tab to [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) and
408
408
  Shift-Tab to [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess).
409
409
  Please see the [Tab example](../../examples/tab/) before using
@@ -3,11 +3,11 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
3
3
  predicate for determining what kind of syntax node can act as a
4
4
  completable variable. This is used by language modes like Sass and
5
5
  Less to reuse this package's completion logic.
6
- */ /**
6
+ *//**
7
7
  Language support for CSS.
8
8
  */function css(){return new language.LanguageSupport(cssLanguage,cssLanguage.data.of({autocomplete:cssCompletionSource}))}if(hasRequiredDist)return dist;hasRequiredDist=1;var css$1=require$$0,language=require$$1,common=require$$2;let _properties=null;const pseudoClasses=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(name=>({type:"class",label:name})),values=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(name=>({type:"keyword",label:name})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(name=>({type:"constant",label:name}))),tags=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(name=>({type:"type",label:name})),atRules=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(label=>({type:"keyword",label})),identifier=/^(\w[\w-]*|-\w[\w-]*|)$/,variable=/^-(-[\w-]*)?$/,VariablesByNode=new common.NodeWeakMap,declSelector=["Declaration"],defineCSSCompletionSource=isVariable=>context=>{let{state,pos}=context,node=language.syntaxTree(state).resolveInner(pos,-1),isDash=node.type.isError&&node.from==node.to-1&&"-"==state.doc.sliceString(node.from,node.to);if("PropertyName"==node.name||(isDash||"TagName"==node.name)&&/^(Block|Styles)$/.test(node.resolve(node.to).name))return{from:node.from,options:properties(),validFor:identifier};if("ValueName"==node.name)return{from:node.from,options:values,validFor:identifier};if("PseudoClassName"==node.name)return{from:node.from,options:pseudoClasses,validFor:identifier};if(isVariable(node)||(context.explicit||isDash)&&isVarArg(node,state.doc))return{from:isVariable(node)||isDash?node.from:pos,options:variableNames(state.doc,astTop(node),isVariable),validFor:variable};if("TagName"==node.name){for(let{parent}=node;parent;parent=parent.parent)if("Block"==parent.name)return{from:node.from,options:properties(),validFor:identifier};return{from:node.from,options:tags,validFor:identifier}}if("AtKeyword"==node.name)return{from:node.from,options:atRules,validFor:identifier};if(!context.explicit)return null;let above=node.resolve(pos),before=above.childBefore(pos);return before&&":"==before.name&&"PseudoClassSelector"==above.name?{from:pos,options:pseudoClasses,validFor:identifier}:before&&":"==before.name&&"Declaration"==above.name||"ArgList"==above.name?{from:pos,options:values,validFor:identifier}:"Block"==above.name||"Styles"==above.name?{from:pos,options:properties(),validFor:identifier}:null},cssCompletionSource=defineCSSCompletionSource(n=>"VariableName"==n.name),cssLanguage=language.LRLanguage.define({name:"css",parser:css$1.parser.configure({props:[language.indentNodeProp.add({Declaration:language.continuedIndent()}),language.foldNodeProp.add({"Block KeyframeList":language.foldInside})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});/**
9
9
  CSS property, variable, and value keyword completion source.
10
- */ /**
10
+ *//**
11
11
  A language provider based on the [Lezer CSS
12
12
  parser](https://github.com/lezer-parser/css), extended with
13
13
  highlighting and indentation information.
@@ -6,7 +6,7 @@ for(let c of getScope(doc,node.node))completions.push(c);return!1}}),cache.set(n
6
6
  A collection of Go-related [snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).
7
7
  */const snippets=[autocomplete.snippetCompletion("func ${name}(${params}) ${type} {\n\t${}\n}",{label:"func",detail:"declaration",type:"keyword"}),autocomplete.snippetCompletion("func (${receiver}) ${name}(${params}) ${type} {\n\t${}\n}",{label:"func",detail:"method declaration",type:"keyword"}),autocomplete.snippetCompletion("var ${name} = ${value}",{label:"var",detail:"declaration",type:"keyword"}),autocomplete.snippetCompletion("type ${name} ${type}",{label:"type",detail:"declaration",type:"keyword"}),autocomplete.snippetCompletion("const ${name} = ${value}",{label:"const",detail:"declaration",type:"keyword"}),autocomplete.snippetCompletion("type ${name} = ${type}",{label:"type",detail:"alias declaration",type:"keyword"}),autocomplete.snippetCompletion("for ${init}; ${test}; ${update} {\n\t${}\n}",{label:"for",detail:"loop",type:"keyword"}),autocomplete.snippetCompletion("for ${i} := range ${value} {\n\t${}\n}",{label:"for",detail:"range",type:"keyword"}),autocomplete.snippetCompletion("select {\n\t${}\n}",{label:"select",detail:"statement",type:"keyword"}),autocomplete.snippetCompletion("case ${}:\n${}",{label:"case",type:"keyword"}),autocomplete.snippetCompletion("switch ${} {\n\t${}\n}",{label:"switch",detail:"statement",type:"keyword"}),autocomplete.snippetCompletion("switch ${}.(${type}) {\n\t${}\n}",{label:"switch",detail:"type statement",type:"keyword"}),autocomplete.snippetCompletion("if ${} {\n\t${}\n}",{label:"if",detail:"block",type:"keyword"}),autocomplete.snippetCompletion("if ${} {\n\t${}\n} else {\n\t${}\n}",{label:"if",detail:"/ else block",type:"keyword"}),autocomplete.snippetCompletion("import ${name} \"${module}\"\n${}",{label:"import",detail:"declaration",type:"keyword"})],cache=new common.NodeWeakMap,ScopeNodes=new Set(["SourceFile","Block","FunctionDecl","MethodDecl","FunctionLiteral","ForStatement","SwitchStatement","TypeSwitchStatement","IfStatement"]),gatherCompletions={FunctionDecl:defIDs("function"),VarDecl:defIDs("var","VarSpec"),ConstDecl:defIDs("constant","ConstSpec"),TypeDecl:defIDs("type","TypeSpec"),ImportDecl:defIDs("constant","ImportSpec"),Parameter:defIDs("var"),__proto__:null},Identifier=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,dontComplete=["String","LineComment","BlockComment","DefName","LabelName","FieldName",".","?."],localCompletionSource=context=>{let inner=language.syntaxTree(context.state).resolveInner(context.pos,-1);if(-1<dontComplete.indexOf(inner.name))return null;let isWord="VariableName"==inner.name||20>inner.to-inner.from&&Identifier.test(context.state.sliceDoc(inner.from,inner.to));if(!isWord&&!context.explicit)return null;let options=[];for(let pos=inner;pos;pos=pos.parent)ScopeNodes.has(pos.name)&&(options=options.concat(getScope(context.state.doc,pos)));return{options,from:isWord?inner.from:context.pos,validFor:Identifier}},goLanguage=language.LRLanguage.define({name:"go",parser:go$1.parser.configure({props:[language.indentNodeProp.add({IfStatement:language.continuedIndent({except:/^\s*({|else\b)/}),LabeledStatement:language.flatIndent,"SwitchBlock SelectBlock":context=>{let after=context.textAfter,closed=/^\s*\}/.test(after),isCase=/^\s*(case|default)\b/.test(after);return context.baseIndent+(closed||isCase?0:context.unit)},Block:language.delimitedIndent({closing:"}"}),BlockComment:()=>null,Statement:language.continuedIndent({except:/^{/})}),language.foldNodeProp.add({"Block SwitchBlock SelectBlock LiteralValue InterfaceType StructType SpecList":language.foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'","\"","`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case\b|default\b|\})$/}});/**
8
8
  Completion source that looks up locally defined names in Go code.
9
- */ /**
9
+ *//**
10
10
  A language provider based on the [Lezer Go
11
11
  parser](https://github.com/lezer-parser/go), extended with
12
12
  folding and indentation information.
@@ -14,7 +14,7 @@ for(let a of eventAttributes)GlobalAttrs[a]=null;class Schema{constructor(extraT
14
14
  parser](https://github.com/lezer-parser/html), extended with the
15
15
  JavaScript and CSS parsers to parse the content of `<script>` and
16
16
  `<style>` tags.
17
- */ /**
17
+ *//**
18
18
  Extension that will automatically insert close tags when a `>` or
19
19
  `/` is typed.
20
20
  */return dist.autoCloseTags=autoCloseTags,dist.html=html,dist.htmlCompletionSource=htmlCompletionSource,dist.htmlCompletionSourceWith=htmlCompletionSourceWith,dist.htmlLanguage=htmlLanguage,dist}(),index=/*@__PURE__*/function getDefaultExportFromCjs(x){return x}(distExports);return module.exports=index,module.exports}
@@ -20,7 +20,7 @@ for(let c of getScope(doc,node.node))completions.push(c);return!1}}),cache.set(n
20
20
  A language provider based on the [Lezer JavaScript
21
21
  parser](https://github.com/lezer-parser/javascript), extended with
22
22
  highlighting and indentation information.
23
- */ /**
23
+ *//**
24
24
  JavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)
25
25
  and local variable completion.
26
26
  */function javascript(config={}){let lang=config.jsx?config.typescript?tsxLanguage:jsxLanguage:config.typescript?typescriptLanguage:javascriptLanguage,completions=config.typescript?typescriptSnippets.concat(typescriptKeywords):snippets.concat(keywords);return new language.LanguageSupport(lang,[javascriptLanguage.data.of({autocomplete:autocomplete.ifNotIn(dontComplete,autocomplete.completeFromList(completions))}),javascriptLanguage.data.of({autocomplete:localCompletionSource}),config.jsx?autoCloseTags:[]])}function findOpenTag(node){for(;;){if("JSXOpenTag"==node.name||"JSXSelfClosingTag"==node.name||"JSXFragmentTag"==node.name)return node;if("JSXEscape"==node.name||!node.parent)return null;node=node.parent}}function elementName(doc,tree,max=doc.length){for(let ch=null===tree||void 0===tree?void 0:tree.firstChild;ch;ch=ch.nextSibling)if("JSXIdentifier"==ch.name||"JSXBuiltin"==ch.name||"JSXNamespacedName"==ch.name||"JSXMemberExpression"==ch.name)return doc.sliceString(ch.from,Math.min(ch.to,max));return""}/**
@@ -42,11 +42,11 @@ for(let c of getScope(doc,node.node))completions.push(c);return!1}}),cache.set(n
42
42
  */const snippets=[autocomplete.snippetCompletion("function ${name}(${params}) {\n\t${}\n}",{label:"function",detail:"definition",type:"keyword"}),autocomplete.snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n\t${}\n}",{label:"for",detail:"loop",type:"keyword"}),autocomplete.snippetCompletion("for (let ${name} of ${collection}) {\n\t${}\n}",{label:"for",detail:"of loop",type:"keyword"}),autocomplete.snippetCompletion("do {\n\t${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),autocomplete.snippetCompletion("while (${}) {\n\t${}\n}",{label:"while",detail:"loop",type:"keyword"}),autocomplete.snippetCompletion("try {\n\t${}\n} catch (${error}) {\n\t${}\n}",{label:"try",detail:"/ catch block",type:"keyword"}),autocomplete.snippetCompletion("if (${}) {\n\t${}\n}",{label:"if",detail:"block",type:"keyword"}),autocomplete.snippetCompletion("if (${}) {\n\t${}\n} else {\n\t${}\n}",{label:"if",detail:"/ else block",type:"keyword"}),autocomplete.snippetCompletion("class ${name} {\n\tconstructor(${params}) {\n\t\t${}\n\t}\n}",{label:"class",detail:"definition",type:"keyword"}),autocomplete.snippetCompletion("import {${names}} from \"${module}\"\n${}",{label:"import",detail:"named",type:"keyword"}),autocomplete.snippetCompletion("import ${name} from \"${module}\"\n${}",{label:"import",detail:"default",type:"keyword"})],typescriptSnippets=snippets.concat([autocomplete.snippetCompletion("interface ${name} {\n\t${}\n}",{label:"interface",detail:"definition",type:"keyword"}),autocomplete.snippetCompletion("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),autocomplete.snippetCompletion("enum ${name} {\n\t${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),cache=new common.NodeWeakMap,ScopeNodes=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]),functionContext=["FunctionDeclaration"],gatherCompletions={FunctionDeclaration:defID("function"),ClassDeclaration:defID("class"),ClassExpression:()=>!0,EnumDeclaration:defID("constant"),TypeAliasDeclaration:defID("type"),NamespaceDeclaration:defID("namespace"),VariableDefinition(node,def){node.matchContext(functionContext)||def(node,"variable")},TypeDefinition(node,def){def(node,"type")},__proto__:null},Identifier=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,dontComplete=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."],javascriptLanguage=language.LRLanguage.define({name:"javascript",parser:javascript$1.parser.configure({props:[language.indentNodeProp.add({IfStatement:language.continuedIndent({except:/^\s*({|else\b)/}),TryStatement:language.continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:language.flatIndent,SwitchBody:context=>{let after=context.textAfter,closed=/^\s*\}/.test(after),isCase=/^\s*(case|default)\b/.test(after);return context.baseIndent+(closed?0:isCase?1:2)*context.unit},Block:language.delimitedIndent({closing:"}"}),ArrowFunction:cx=>cx.baseIndent+cx.unit,"TemplateString BlockComment":()=>null,"Statement Property":language.continuedIndent({except:/^\s*{/}),JSXElement(context){let closed=/^\s*<\//.test(context.textAfter);return context.lineIndent(context.node.from)+(closed?0:context.unit)},JSXEscape(context){let closed=/\s*\}/.test(context.textAfter);return context.lineIndent(context.node.from)+(closed?0:context.unit)},"JSXOpenTag JSXSelfClosingTag"(context){return context.column(context.node.from)+context.unit}}),language.foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":language.foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2}},JSXElement(tree){let open=tree.firstChild;if(!open||"JSXSelfClosingTag"==open.name)return null;let close=tree.lastChild;return{from:open.to,to:close.type.isError?tree.to:close.from}},"JSXSelfClosingTag JSXOpenTag"(tree){var _a;let name=null===(_a=tree.firstChild)||void 0===_a?void 0:_a.nextSibling,close=tree.lastChild;return!name||name.type.isError?null:{from:name.to,to:close.type.isError?tree.to:close.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'","\"","`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),jsxSublanguage={test:node=>/^JSX/.test(node.name),facet:language.defineLanguageFacet({commentTokens:{block:{open:"{/*",close:"*/}"}}})},typescriptLanguage=javascriptLanguage.configure({dialect:"ts"},"typescript"),jsxLanguage=javascriptLanguage.configure({dialect:"jsx",props:[language.sublanguageProp.add(n=>n.isTop?[jsxSublanguage]:void 0)]}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts",props:[language.sublanguageProp.add(n=>n.isTop?[jsxSublanguage]:void 0)]},"typescript");/**
43
43
  A collection of snippet completions for TypeScript. Includes the
44
44
  JavaScript [snippets](https://codemirror.net/6/docs/ref/#lang-javascript.snippets).
45
- */ /**
45
+ *//**
46
46
  A language provider for TypeScript.
47
- */ /**
47
+ *//**
48
48
  Language provider for JSX.
49
- */ /**
49
+ *//**
50
50
  Language provider for JSX + TypeScript.
51
51
  */let kwCompletion=name=>({label:name,type:"keyword"});const keywords=["break","case","const","continue","default","delete","export","extends","false","finally","in","instanceof","let","new","return","static","super","switch","this","throw","true","typeof","var","yield"].map(kwCompletion),typescriptKeywords=keywords.concat(["declare","implements","private","protected","public"].map(kwCompletion)),android="object"==typeof navigator&&/Android\b/.test(navigator.userAgent),autoCloseTags=view.EditorView.inputHandler.of((view,from,to,text,defaultInsert)=>{if((android?view.composing:view.compositionStarted)||view.state.readOnly||from!=to||">"!=text&&"/"!=text||!javascriptLanguage.isActiveAt(view.state,from,-1))return!1;let base=defaultInsert(),{state:state$1}=base,closeTags=state$1.changeByRange(range=>{var _a;let name,{head}=range,around=language.syntaxTree(state$1).resolveInner(head-1,-1);if("JSXStartTag"==around.name&&(around=around.parent),state$1.doc.sliceString(head-1,head)!=text||"JSXAttributeValue"==around.name&&around.to>head);else{if(">"==text&&"JSXFragmentTag"==around.name)return{range,changes:{from:head,insert:`</>`}};if("/"==text&&"JSXStartCloseTag"==around.name){let empty=around.parent,base=empty.parent;if(base&&empty.from==head-2&&((name=elementName(state$1.doc,base.firstChild,head))||"JSXFragmentTag"==(null===(_a=base.firstChild)||void 0===_a?void 0:_a.name))){let insert=`${name}>`;return{range:state.EditorSelection.cursor(head+insert.length,-1),changes:{from:head,insert}}}}else if(">"==text){let openTag=findOpenTag(around);if(openTag&&"JSXOpenTag"==openTag.name&&!/^\/?>|^<\//.test(state$1.doc.sliceString(head,head+2))&&(name=elementName(state$1.doc,openTag,head)))return{range,changes:{from:head,insert:`</${name}>`}}}}return{range}});return!closeTags.changes.empty&&(view.dispatch([base,state$1.update(closeTags,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});/**
52
52
  Extension that will automatically insert JSX close tags when a `>` or
@@ -7,7 +7,7 @@ async function moduleInitFunction(requireAsyncModule,exports={}){const module={e
7
7
  cursor between them.
8
8
  */function statementIndent(except){return context=>{let back=except.test(context.textAfter);return context.lineIndent(context.node.from)+(back?0:context.unit)}}function makeJinja(base){return tagLanguage.configure({wrap:common.parseMixed(node=>node.type.isTop?{parser:base.parser,overlay:n=>"Text"==n.name||"RawText"==n.name}:null)},"jinja")}/**
9
9
  A language provider for Jinja templates.
10
- */ /**
10
+ *//**
11
11
  Jinja template support.
12
12
  */function jinja(config={}){let base=config.base||baseHTML,lang=base.language==baseHTML.language?jinjaLanguage:makeJinja(base.language);return new language.LanguageSupport(lang,[base.support,lang.data.of({autocomplete:jinjaCompletionSource(config)}),base.language.data.of({closeBrackets:{brackets:["{"]}}),closePercentBrace])}if(hasRequiredDist)return dist;hasRequiredDist=1;var language=require$$0,langHtml=require$$1,highlight=require$$2,common=require$$3,lr=require$$4,state=require$$5,view=require$$6;// This file was generated by lezer-generator. You probably shouldn't edit it.
13
13
  const interpolationStart=1,commentTagStart=2,tagStart=3,text=155,endrawTagStart=4,rawText=156,base=new lr.ExternalTokenizer(input=>{let start=input.pos;for(;;){let{next}=input;if(0>next)break;if(123==next/* Ch.BraceL */){let after=input.peek(1);if(123==after/* Ch.BraceL */){if(input.pos>start)break;return void input.acceptToken(interpolationStart,2)}if(35==after/* Ch.Hash */){if(input.pos>start)break;return void input.acceptToken(commentTagStart,2)}if(37==after/* Ch.Percent */){if(input.pos>start)break;for(let next,scan=2,size=2;;)if(next=input.peek(scan),32==next/* Ch.Space */||10==next/* Ch.Newline */)++scan;else if(35==next/* Ch.Hash */)for(++scan;;){let comment=input.peek(scan);if(0>comment||10==comment/* Ch.Newline */)break;scan++}else if(45==next/* Ch.Dash */&&2==size)size=++scan;else return void input.acceptToken(tagStart,size)}}if(input.advance(),10==next/* Ch.Newline */)break}input.pos>start&&input.acceptToken(text)}),raw=rawTokenizer("endraw",156,4),spec_identifier={__proto__:null,in:38,is:40,and:46,or:48,not:52,if:78,else:80,true:98,false:98,self:100,super:102,loop:104,recursive:136,scoped:160,required:162,as:256,import:260,ignore:268,missing:270,with:272,without:274,context:276},spec_TagName={__proto__:null,if:112,elif:118,else:122,endif:126,for:132,endfor:140,raw:146,endraw:152,block:158,endblock:166,macro:172,endmacro:182,call:188,endcall:192,filter:198,endfilter:202,set:208,endset:212,trans:218,pluralize:222,endtrans:226,with:232,endwith:236,autoescape:242,endautoescape:246,import:254,from:258,include:266},parser=lr.LRParser.deserialize({version:14,states:"!*dQVOPOOOOOP'#F`'#F`OeOTO'#CbOvQSO'#CdO!kOPO'#DcO!yOPO'#DnO#XOQO'#DuO#^OPO'#D{O#lOPO'#ESO#zOPO'#E[O$YOPO'#EaO$hOPO'#EfO$vOPO'#EkO%UOPO'#ErO%dOPO'#EwOOOP'#F|'#F|O%rQWO'#E|O&sO#tO'#F]OOOP'#Fq'#FqOOOP'#F_'#F_QVOPOOOOOP-E9^-E9^OOQO'#Ce'#CeO'sQSO,59OO'zQSO'#DWO(RQSO'#DXO(YQ`O'#DZOOQO'#Fr'#FrOvQSO'#CuO(aOPO'#CbOOOP'#Fd'#FdO!kOPO,59}OOOP,59},59}O(oOPO,59}O(}QWO'#E|OOOP,5:Y,5:YO)[OPO,5:YO!yOPO,5:YO)jQWO'#E|OOOQ'#Ff'#FfO)tOQO'#DxO)|OQO,5:aOOOP,5:g,5:gO#^OPO,5:gO*RQWO'#E|OOOP,5:n,5:nO#lOPO,5:nO*YQWO'#E|OOOP,5:v,5:vO#zOPO,5:vO*aQWO'#E|OOOP,5:{,5:{O$YOPO,5:{O*hQWO'#E|OOOP,5;Q,5;QO$hOPO,5;QO*oQWO'#E|OOOP,5;V,5;VO*vOPO,5;VO$vOPO,5;VO+UQWO'#E|OOOP,5;^,5;^O%UOPO,5;^O+`QWO'#E|OOOP,5;c,5;cO%dOPO,5;cO+gQWO'#E|O+nQSO,5;hOvQSO,5:OO+uQSO,5:ZO+zQSO,5:bO+uQSO,5:hO+uQSO,5:oO,PQSO,5:wO,XQpO,5:|O+uQSO,5;RO,^QSO,5;WO,fQSO,5;_OvQSO,5;dOvQSO,5;jOvQSO,5;jOvQSO,5;pOOOO'#Fk'#FkO,nO#tO,5;wOOOP-E9]-E9]O,vQ!bO,59QOvQSO,59TOvQSO,59UOvQSO,59UOvQSO,59UOvQSO,59UO,{QSO'#C}O,XQpO,59cOOQO,59q,59qOOOP1G.j1G.jOvQSO,59UO-SQSO,59UOvQSO,59UOvQSO,59UOvQSO,59nO-wQSO'#FxO.RQSO,59rO.WQSO,59tOOQO,59s,59sO.bQSO'#D[O.iQWO'#F{O.qQWO,59uO0WQSO,59aOOOP-E9b-E9bOOOP1G/i1G/iO(oOPO1G/iO(oOPO1G/iO)TQWO'#E|OvQSO,5:SO0nQSO,5:UO0sQSO,5:WOOOP1G/t1G/tO)[OPO1G/tO)mQWO'#E|O)[OPO1G/tO0xQSO,5:_OOOQ-E9d-E9dOOOP1G/{1G/{O0}QWO'#DyOOOP1G0R1G0RO1SQSO,5:lOOOP1G0Y1G0YO1[QSO,5:tOOOP1G0b1G0bO1aQSO,5:yOOOP1G0g1G0gO1fQSO,5;OOOOP1G0l1G0lO1kQSO,5;TOOOP1G0q1G0qO*vOPO1G0qO+XQWO'#E|O*vOPO1G0qOvQSO,5;YO1pQSO,5;[OOOP1G0x1G0xO1uQSO,5;aOOOP1G0}1G0}O1zQSO,5;fO2PQSO1G1SOOOP1G1S1G1SO2WQSO1G/jOOQO'#Dq'#DqO2_QSO1G/uOOOQ1G/|1G/|O2gQSO1G0SO2rQSO1G0ZO2zQSO'#EVO3SQSO1G0cO,SQSO1G0cO4fQSO'#FvOOQO'#Fv'#FvO5]QSO1G0hO5bQSO1G0mOOOP1G0r1G0rO5mQSO1G0rO5rQSO'#GOO5zQSO1G0yO6PQSO1G1OO6WQSO1G1UO6_QSO1G1UO6fQSO1G1[OOOO-E9i-E9iOOOP1G1c1G1cOOQO1G.l1G.lO6vQSO1G.oO8wQSO1G.pO:oQSO1G.pO:vQSO1G.pO<nQSO1G.pO<uQSO'#FwO>QQSO'#FrO>XQSO'#FwO>aQSO,59iOOQO1G.}1G.}O>fQSO1G.pO@aQSO1G.pOB_QSO1G.pOBfQSO1G.pOD^QSO1G/YOvQSO'#FbODeQSO,5<dOOQO1G/^1G/^ODmQSO1G/_OOQO1G/`1G/`ODuQSO,59vOvQSO'#FcOEjQWO,5<gOOQO1G/a1G/aPErQWO'#E|OOOP7+%T7+%TO(oOPO7+%TOEyQSO1G/nOOOP1G/p1G/pOOOP1G/r1G/rOOOP7+%`7+%`O)[OPO7+%`OOOP1G/y1G/yOFQQSO,5:eOOOP1G0W1G0WOFVQSO1G0WOOOP1G0`1G0`OOOP1G0e1G0eOOOP1G0j1G0jOOOP1G0o1G0oOOOP7+&]7+&]O*vOPO7+&]OF[QSO1G0tOOOP1G0v1G0vOOOP1G0{1G0{OOOP1G1Q1G1QOOOP7+&n7+&nOOOP7+%U7+%UO+uQSO'#FeOFcQSO7+%aOvQSO7+%aOOOP7+%n7+%nOFkQSO7+%nOFpQSO7+%nOOOP7+%u7+%uOFxQSO7+%uOF}QSO'#F}OGQQSO'#F}OGYQSO,5:qOOOP7+%}7+%}OG_QSO7+%}OGdQSO7+%}OOQO,59f,59fOOOP7+&S7+&SOGlQSO7+&oOOOP7+&X7+&XOvQSO7+&oOvQSO7+&^OGtQSO,5<jOvQSO,5<jOOOP7+&e7+&eOOOP7+&j7+&jO+uQSO7+&pOG|QSO7+&pOOOP7+&v7+&vOHRQSO7+&vOHWQSO7+&vOOQO7+$Z7+$ZOvQSO'#FaOH]QSO,5<cOvQSO,59jOOQO1G/T1G/TOOQO7+$[7+$[OvQSO7+$tOHeQSO,5;|OOQO-E9`-E9`OOQO7+$y7+$yOImQ`O1G/bOIwQSO'#D^OOQO,5;},5;}OOQO-E9a-E9aOOOP<<Ho<<HoOOOP7+%Y7+%YOOOP<<Hz<<HzOOOP1G0P1G0POOOP7+%r7+%rOOOP<<Iw<<IwOOOP7+&`7+&`OOQO,5<P,5<POOQO-E9c-E9cOvQSO<<H{OJOQSO<<H{OOOP<<IY<<IYOJYQSO<<IYOOOP<<Ia<<IaOvQSO,5:rO+uQSO'#FgOJ_QSO,5<iOOQO1G0]1G0]OOOP<<Ii<<IiOJgQSO<<IiOvQSO<<JZOJlQSO<<JZOJsQSO<<IxOvQSO1G2UOJ}QSO1G2UOKXQSO<<J[OK^QSO'#CeOOQO'#FT'#FTOKiQSO'#FTOKnQSO<<J[OKvQSO<<JbOK{QSO<<JbOLWQSO,5;{OLbQSO'#FrOOQO,5;{,5;{OOQO-E9_-E9_OLiQSO1G/UOM}QSO<<H`O! ]Q`O,59aODuQSO,59xO! sQSOAN>gOOOPAN>gAN>gO! }QSOAN>gOOOPAN>tAN>tO!!SQSO1G0^O!!^QSO,5<ROOQO,5<R,5<ROOQO-E9e-E9eOOOPAN?TAN?TO!!iQSOAN?uOOOPAN?uAN?uO+uQSO'#FhO!!pQSOAN?dOOOPAN?dAN?dO!!xQSO7+'pO+uQSO'#FiO!#SQSO7+'pOOOPAN?vAN?vO+uQSO,5;oOG|QSO'#FjO!#[QSOAN?vOOOPAN?|AN?|O!#dQSOAN?|OvQSO,59mO!$sQ`O1G.pO!%{Q`O1G.pO!&SQ`O1G.pO!'[Q`O1G.pO!'cQ`O'#FvO!'jQ`O1G.pO!(uQ`O1G.pO!*TQ`O1G.pO!*[Q`O1G.pO!+dQ`O1G/YO!+kQ`O1G/dOOOPG24RG24RO!+uQSOG24ROvQSO,5:sOOOPG25aG25aO!+zQSO,5<SOOQO-E9f-E9fOOOPG25OG25OO!,PQSO<<K[O!,XQSO,5<TOOQO-E9g-E9gOOQO1G1Z1G1ZOOQO,5<U,5<UOOQO-E9h-E9hOOOPG25bG25bO!,aQSOG25hO!,fQSO1G/XOOOPLD)mLD)mO!,pQSO1G0_OvQSO1G1nO!,zQSO1G1oOvQSO1G1oOOOPLD+SLD+SO!-wQ`O<<H`O!.[QSO7+'YOvQSO7+'ZO!.fQSO7+'ZO!.pQSO<<JuODuQSO'#CuODuQSO,59UODuQSO,59UODuQSO,59UODuQSO,59UO!.zQpO,59cODuQSO,59UO!/PQSO,59UODuQSO,59UODuQSO,59UODuQSO,59nO!/tQSO1G.pP!0RQSO1G/YODuQSO7+$tO!0YQ`O1G.pP!0gQ`O1G/YO-SQSO,59UPvQSO,59nO!0nQSO,59aP!3XQSO1G.pP!3`QSO1G.pP!5aQSO1G/YP!5hQSO<<H`O!/PQSO,59UPDuQSO,59nP!6_QSO1G/YP!7pQ`O1G/YO-SQSO'#CuO-SQSO,59UO-SQSO,59UO-SQSO,59UO-SQSO,59UO-SQSO,59UP-SQSO,59UP-SQSO,59UP-SQSO,59nO!7wQSO1G.pO!9xQSO1G.pO!:PQSO1G.pO!;UQSO1G.pP-SQSO7+$tO!<XQ`O,59aP!>SQ`O1G.pP!>ZQ`O1G.pP!>bQ`O1G/YP!?QQ`O<<H`O!/PQSO'#CuO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UP!/PQSO,59UP!/PQSO,59UP!/PQSO,59nP!/PQSO7+$tP-SQSO,59nP!/PQSO,59nO!?zQ`O1G.pO!@RQ`O1G.pO!@fQ`O1G.pO!@yQ`O1G.p",stateData:"!Ac~O$dOS~OPROQaOR`O$aPO~O$aPOPUXQUXRUX$`UX~OekOfkOjlOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~OPROQaORrO$aPO~OPROQaORvO$aPO~O$bwO~OPROQaOR|O$aPO~OPROQaOR!PO$aPO~OPROQaOR!SO$aPO~OPROQaOR!VO$aPO~OPROQaOR!YO$aPO~OPROQaOR!^O$aPO~OPROQaOR!aO$aPO~OPROQaOR!dO$aPO~O!X!eO!Y!fO!d!gO!k!hO!q!iO!x!jO#Q!kO#V!lO#[!mO#a!nO#h!oO#m!pO#s!qO#u!rO#y!sO~O$s!tO~OZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOl#OOp!}Ow#VO$i!xO~OV#QO~P&xO$h$lP~PvOo#ZO~PvO$m$oP~PvO$aPOPUXQUXRUX~OPROQaOR#dO$aPO~O!]#eO!_#fO!a#gO~P%rOPROQaOR#jO$aPO~O!_#fO!h#lO~P%rO$bwOS!lX~OS#oO~O!u#qO~P%rO!}#sO~P%rO#S#uO~P%rO#X#wO~P%rO#^#yO~P%rOPROQaOR#|O$aPO~O#c$OO#e$PO~P%rO#j$RO~P%rO#o$TO~P%rO!Z$VO~PvO$g$XO~O!Z$ZO~Op$^O$gfO~Om$aO~O!Z$eO$g$XO~O$g$XO!Z$rP~O$Q$nO$s!tO~O[$oO~Oo$kP~PvOekOfkOj)fOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%PO$h$lX~P&xO$h%RO~Oo%TOt%PO~P&xO!P%UO~P&xOt%VO$m$oX~O$m%XO~OZ!wOp!}O$i!xOViagiahialiawiatia$hiaoia!Pia!Zia#tia#via#zia#|ia#}iaxia!fia~O_!yO`!zOa!{Ob!|Oc#ROd#SO~P.vO!Z%^O~O!Z%_O~O!Z%bO~O!n%cO~O!Z%dO$g$XO~O!Z%fO~O!Z%gO~O!Z%hO~O!Z%iO~O!Z%mO~O!Z%nO~O!Z%oO~O!Z%pO~P&xO!Z%qO~P&xOc%tOt%rO~O!Z%uO!r%wO!s%vO~Op$^O!Z%xO~O$g$XOo$qP~Op!}O!Z%}O~Op!}OZ$jX_$jX`$jXa$jXb$jXc$jXd$jXg$jXh$jXl$jXw$jX$i$jXt$jXe$jXf$jX$g$jXx$jX~O!Z$jXV$jX$h$jXo$jX!P$jX#t$jX#v$jX#z$jX#|$jX#}$jX!f$jX~P3[O!Z&RO~Os&UOt%rO!Z&TO~Os&VO~Os&XOt%rO~O!Z&YO~O!Z&ZO~P&xO#t&[O~P&xO#v&]O~P&xO!Z&^O#z&`O#|&_O#}&_O~P&xO$h&aO~P&xOZ!wOp!}O$i!xOV^i`^ia^ib^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ie^if^i$g^ix^i!f^i~O_^i~P6}OZ!wO_!yOp!}O$i!xOV^ia^ib^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~O`^i~P9OO`!zO~P9OOZ!wO_!yO`!zOa!{Op!}O$i!xOV^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Ob^i~P:}Ot&bOo$kX~P&xOZ$fX_$fX`$fXa$fXb$fXc$fXd$fXg$fXh$fXl$fXo$fXp$fXt$fXw$fX$i$fX~Os&dO~P=POt&bOo$kX~Oo&eO~Ob!|O~P:}OZ!wO_)gO`)hOa)iOb)jOc)kOp!}O$i!xOV^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oe&fOf&fO$gfO~P>mOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOp!}O$i!xOV^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P@nOg#TO~P@nOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOp!}O$i!xOVvilviwvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox&gO~PBmOt%PO$h$la~Oo&jOt%PO~OekOfkOj(yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%VO$m$oa~O!]#eO~P%rO!Z&pO~P&xO!Z&rO~O!Z&sO~O!Z&uO~P&xOc&xOt%rO~O!Z&zO~O!Z&zO!s&{O~O!Z&|O~Os&}Ot'OOo$qX~Oo'QO~O!Z'RO~Op!}O!Z'RO~Os'TOt%rO~Os'WOt%rO~O$g'ZO~O$O'_O~O#{'`O~Ot&bOo$ka~Ot$Ua$h$Uao$Ua~P&xOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOl)OOp!}Ow)TO$i!xO~Ot!Oi$m!Oi~PHrO!P'hO~P&xO!Z'jO!f'kO~P&xO!Z'lO~Ot'OOo$qa~O!Z'qO~O!Z'sO~P&xOt'tO!Z'vO~P&xOt'xO!Z$ri~P&xO!Z'zO~Ot!eX!Z!eX#tXX~O#t'{O~Ot'|O!Z'zO~O!Z(OO~O!Z(OO#|(PO#}(PO~Oo$Tat$Ta~P&xOs(QO~P=POoritri~P&xOZ!wOp!}O$i!xOVvylvywvytvy$hvyovy!Pvy!Zvy#tvy#vvy#zvy#|vy#}vyxvy!fvy~O_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UO~PLsOZ!wOp!}O$i!xOgiahialiatiawia$miaxia~O_(zO`({Oa(|Ob(}Oc)POd)QO~PNkO!Z(^O!f(_O~P&xO!Z(^O~Oo!zit!zi~P&xOs(`Oo$Zat$Za~O!Z(aO~P&xOt'tO!Z(dO~Ot'xO!Z$rq~P&xOt'xO!Z$rq~Ot'|O!Z(kO~O$O(lO~OZ!wOp!}O$i!xO`^ia^ib^ic^id^ig^ih^il^it^iw^i$m^ie^if^i$g^ix^i~O_^i~P!#iOZ!wO_(zOp!}O$i!xOa^ib^ic^id^ig^ih^il^it^iw^i$m^ix^i~O`^i~P!$zO`({O~P!$zOZ!wO_(zO`({Oa(|Op!}O$i!xOc^id^ig^ih^il^it^iw^i$m^ix^i~Ob^i~P!&ZO$m$jX~P3[Ob(}O~P!&ZOZ!wO_)zO`){Oa)|Ob)}Oc*OOp!}O$i!xOd^ig^ih^il^it^iw^i$m^ix^i~Oe&fOf&fO$gfO~P!'qOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOp!}O$i!xOh^il^it^iw^i$m^ix^i~Og^i~P!)SOg)RO~P!)SOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xOlvitviwvi$mvi~Ox)WO~P!*cOt!Qi$m!Qi~PHrO!Z(nO~Os(pO~Ot'xO!Z$ry~Os(rOt%rO~O!Z(sO~Oouitui~P&xOo!{it!{i~P&xOs(vOt%rO~OZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xO~Olvytvywvy$mvyxvy~P!-SOt$[q!Z$[q~P&xOt$]q!Z$]q~P&xOt$]y!Z$]y~P&xOm(VO~OekOfkOj)yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Oe^if^i$g^i~P>mOxvi~PBmOe^if^i$g^i~P!'qOxvi~P!*cO_)gO`)hOa)iOb)jOc)kOd)ZOeiafia$gia~P.vOZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOp!}O$i!xOV^ie^if^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P!1_Og)lO~P!1_OZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOp!}O$i!xOVvievifvilviwvi$gvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox)sO~P!3gO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOevyfvy$gvy~PLsOxvi~P!3gOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOg*POh*QOp!}O$i!xOevifvilvitviwvi$gvi$mvi~Oxvi~P!6fO_)gO~P6}OZ!wO_)gO`)hOp!}O$i!xOV^ib^ic^id^ie^if^ig^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oa^i~P!8OOa)iO~P!8OOZ!wOp!}O$i!xOc^id^ie^if^ig^ih^il^iw^i$g^it^ix^i~O_)gO`)hOa)iOb)jOV^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^i!f^i~P!:WO_)zO`){Oa)|Ob)}Oc*OOd)bOeiafia$gia~PNkOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOp!}O$i!xOe^if^ih^il^it^iw^i$g^i$m^ix^i~Og^i~P!<xOg*PO~P!<xOx*SO~P!6fOZ!wO_)zO`){Oa)|Ob)}Op!}O$i!xO~Oc*OOd)bOg*POh*QOevyfvylvytvywvy$gvy$mvyxvy~P!>iO_)zO~P!#iO_)zO`){Oa^ib^i$m^i~P!:WO_)zO`){Oa)|Ob^i$m^i~P!:WO_)zO`){Oa)|Ob)}O$m^i~P!:WOfaZa~",goto:"Cy$sPPPPPP$tP$t%j'sPP's'sPPPPPPPPPP'sP'sPP)jPP)o+nPP+q'sPP's's's's's+tP+wPPPP+z,pPPP-fP-jP-vP+z.UP.zP/zP+z0YP1O1RP+z1UPPP1zP+z2QP2v2|3P3SP+z3YP4OP+z4UP4zP+z5QP5vP+z5|P6rP6xP+z7WP7|P+z8SP8xP$t$t$tPPPP9O$tPPPPPP$tP9U:j;f;m;w;}<T<g<m<t<z=U=[PPPPP=b>YPPPCcCjCmPPCp$tCsCv!gbOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k$dkRhijl!e!f!p!q!r!s!x!y!z!{!|#R#S#T#U#V#e$O%P%U%V%t&U&V&X&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UQ$_!kQ$v!}Q&P$`S&f${(XS']&]'|R'b&b$ikRhijl!e!f!p!q!r!s!x!y!z!{!|!}#R#S#T#U#V#e$O%P%U%V%t&U&V&X&b&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UV$b!l#O)O$d#Pg#W#Y#[#_$U$W$i$j$k$l$p$q$r$s$t$u$z${$|$}%O%]%l&h&k&l&y'U'V'X'a'e'f'g'i'm'r'w(R(S(T(U(W(X(Y(Z([(](m(o(t(u(w(x)U)V)X)Y)])^)_)`)a)d)e)o)p)q)r)t)u)v)w)x*V*W*X*YQ&O$_S&Q$a(VR'S&PR$w!}R'c&bR#]jR&m%V!g_OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k!gSOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQqSQtTQ#boR#kuQpSS#aoqS%Z#b#cR&o%[!gTOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$Y!gQ$[!iQ$]!jQ$d!mQ$f!nQ$g!oQ%e#qQ%z$^Q&v%rQ'Y&[S'[&]'|Q'n'OQ(b'tQ(f'xR(h'{QsTS#htuS%`#i#kR&q%a!gUOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kRyUR#ny!gVOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQzVR#p{!gWOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$`!kR%y$]R%{$^R'o'OQ}WR#r!O!gXOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!QXR#t!R!gYOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!TYR#v!U!gZOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!WZR#x!X!g[OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ![[R#}!]Q!Z[S#z![!]S%j#{#}R&t%k!g]OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!_]R$Q!`!g^OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!b^R$S!cQ'^&]R(i'|QdOQuTQ{VQ!OWQ!RXQ!UYQ!XZQ!][Q!`]Q!c^p!vdu{!O!R!U!X!]!`!c#c#i#{%[%a%kQ#cqQ#itQ#{![Q%[#bQ%a#kR%k#}SQOdSeQm!cmSTVWXYZ[]^oqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kS&c$u$wR'd&cQ%Q#WQ%S#YT&i%Q%SQ%W#]R&n%WQoSR#`oQ%s$YQ&S$dQ&W$gW&w%s&S&W(qR(q(fQxUR#mxS'P%z%{R'p'PQ'u'VR(c'uQ'y'XQ(e'wT(g'y(eQ'}'^R(j'}Q!uaR$m!u!bcOTVWXYZ[]^dqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQgRQ#WhQ#YiQ#[jQ#_lQ$U!eQ$W!fQ$i!pQ$j!qQ$k!rQ$l!sQ$p!xS$q!y)gQ$r!zQ$s!{Q$t!|Q$u!}Q$z#RQ${#SQ$|#TQ$}#UQ%O#VQ%]#eQ%l$OQ&h%PQ&k%UQ&l%VQ&y%tQ'U&UQ'V&VQ'X&XQ'a&bQ'e&dQ'f&gQ'g(yQ'i&xQ'm&}Q'r'TQ'w'WS(R(z)zQ(S({Q(T(|Q(U(}Q(W)PQ(X)QQ(Y)RQ(Z)SQ([)TQ(]'hQ(m(QQ(o(`Q(t)WQ(u(pQ(w(rQ(x(vQ)U)ZQ)V)[Q)X)bQ)Y)cQ)])fQ)^)lQ)_)mQ)`)nQ)a)sQ)d*TQ)e*UQ)o)hQ)p)iQ)q)jQ)r)kQ)t)yQ)u*PQ)v*QQ)w*RQ)x*SQ*V){Q*W)|Q*X)}R*Y*OQ$c!lT$y#O)OR$x!}R#XhR#^jR%|$^R$h!o",nodeNames:"\u26A0 {{ {# {% {% Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression ConcatOp ArithOp ArithOp CompareOp in is StringLiteral NumberLiteral and or NotExpression not FilterExpression FilterOp FilterName FilterCall ) ( ArgumentList NamedArgument AssignOp , NamedArgument ConditionalExpression if else CallExpression ArrayExpression TupleExpression ParenthesizedExpression DictExpression Entry : Entry BooleanLiteral self super loop IfStatement Tag TagName if %} Tag elif Tag else EndTag endif ForStatement Tag for Definition recursive EndTag endfor RawStatement Tag raw RawText EndTag endraw BlockStatement Tag block scoped required EndTag endblock MacroStatement Tag macro ParamList OptionalParameter OptionalParameter EndTag endmacro CallStatement Tag call EndTag endcall FilterStatement Tag filter EndTag endfilter SetStatement Tag set EndTag endset TransStatement Tag trans Tag pluralize EndTag endtrans WithStatement Tag with EndTag endwith AutoescapeStatement Tag autoescape EndTag endautoescape Tag Tag Tag import as from import ImportItem Tag include ignore missing with without context Comment #}",maxTerm:173,nodeProps:[["closedBy",1,"}}",2,"#}",-2,3,4,"%}",32,")"],["openedBy",7,"{{",31,"(",57,"{%",140,"{#"],["group",-18,9,10,13,14,21,22,25,27,38,41,42,43,44,45,49,50,51,52,"Expression",-11,53,64,71,77,84,92,97,102,107,114,119,"Statement"]],skippedNodes:[0],repeatNodeCount:13,tokenData:".|~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vuv&nwx&{xy)nyz)sz{)x{|*V|}+|}!O,R!O!P,g!P!Q,o!Q![+h![!],w!^!_,|!_!`-U!`!a,|!c!}-^!}#O.U#P#Q.Z#R#S-^#T#o-^#o#p.`#p#q.e#q#r.j#r#s.w%W;'S-^;'S;:j.O<%lO-^~#_S$d~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOb~~#yWOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~$hOe~~$kYOY#vYZ#vZr#vrs%Zs#O#v#O#P$h#P;'S#v;'S;=`&O;=`<%l#v<%lO#v~%`We~OY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~%{P;=`<%l#v~&RXOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x;=`<%l#v<%lO#v~&sP`~#q#r&v~&{O!Z~~'OWOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~'kYOY&{YZ&{Zw&{wx(Zx#O&{#O#P'h#P;'S&{;'S;=`)O;=`<%l&{<%lO&{~(`We~OY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~({P;=`<%l&{~)RXOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x;=`<%l&{<%lO&{~)sOp~~)xOo~~)}P`~z{*Q~*VO`~~*[Qa~!O!P*b!Q![+h~*eP!Q![*h~*mSf~!Q![*h!g!h*y#R#S*h#X#Y*y~*|R{|+V}!O+V!Q![+]~+YP!Q![+]~+bQf~!Q![+]#R#S+]~+mTf~!O!P*b!Q![+h!g!h*y#R#S+h#X#Y*y~,ROt~~,WRa~uv,a!O!P*b!Q![+h~,dP#q#r&v~,lPZ~!Q![*h~,tP`~!P!Q*Q~,|O!P~~-RPb~!_!`#q~-ZPs~!_!`#q!`-iVm`[p!XS$gY!Q![-^!c!}-^#R#S-^#T#o-^%W;'S-^;'S;:j.O<%lO-^!`.RP;=`<%l-^~.ZO$i~~.`O$h~~.eO$n~~.jOl~^.oP$m[#q#r.rQ.wOVQ~.|O_~",tokenizers:[base,raw,1,2,3,4,5,new lr.LocalTokenGroup("b~RPstU~XP#q#r[~aO$Q~~",17,173)],topRules:{Template:[0,5]},specialized:[{term:161,get:value=>spec_identifier[value]||-1},{term:55,get:value=>spec_TagName[value]||-1}],tokenPrec:3602}),Filters=completions("abs attr batch capitalize center default dictsort escape filesizeformat first float forceescape format groupby indent int items join last length list lower map max min pprint random reject rejectattr replace reverse round safe select selectattr slice sort string striptags sum title tojson trim truncate unique upper urlencode urlize wordcount wordwrap xmlattr","function"),Functions=completions("boolean callable defined divisibleby eq escaped even filter float ge gt in integer iterable le lower lt mapping ne none number odd sameas sequence string test undefined upper range lipsum dict joiner namespace","function"),Globals=completions("loop super self true false varargs kwargs caller name arguments catch_kwargs catch_varargs caller","keyword"),Expressions=Functions.concat(Globals),Tags=completions("raw endraw filter endfilter trans pluralize endtrans with endwith autoescape endautoescape if elif else endif for endfor call endcall block endblock set endset macro endmacro import include break continue debug do extends","keyword"),closePercentBrace=view.EditorView.inputHandler.of((view,from,to,text)=>"%"==text&&from==to&&"{}"==view.state.doc.sliceString(from-1,to+1)&&(view.dispatch(view.state.changeByRange(range=>({changes:{from:range.from,to:range.to,insert:"%%"},range:state.EditorSelection.cursor(range.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0)),tagLanguage=language.LRLanguage.define({name:"jinja",parser:parser.configure({props:[highlight.styleTags({"TagName raw endraw filter endfilter as trans pluralize endtrans with endwith autoescape endautoescape":highlight.tags.keyword,"required scoped recursive with without context ignore missing":highlight.tags.modifier,self:highlight.tags.self,"loop super":highlight.tags.standard(highlight.tags.variableName),"if elif else endif for endfor call endcall":highlight.tags.controlKeyword,"block endblock set endset macro endmacro import from include":highlight.tags.definitionKeyword,"Comment/...":highlight.tags.blockComment,VariableName:highlight.tags.variableName,Definition:highlight.tags.definition(highlight.tags.variableName),PropertyName:highlight.tags.propertyName,FilterName:highlight.tags.special(highlight.tags.variableName),ArithOp:highlight.tags.arithmeticOperator,AssignOp:highlight.tags.definitionOperator,"not and or":highlight.tags.logicOperator,CompareOp:highlight.tags.compareOperator,"in is":highlight.tags.operatorKeyword,"FilterOp ConcatOp":highlight.tags.operator,StringLiteral:highlight.tags.string,NumberLiteral:highlight.tags.number,BooleanLiteral:highlight.tags.bool,"{% %} {# #} {{ }} { }":highlight.tags.brace,"( )":highlight.tags.paren,".":highlight.tags.derefOperator,": , .":highlight.tags.punctuation}),language.indentNodeProp.add({Tag:language.delimitedIndent({closing:"%}"}),"IfStatement ForStatement":statementIndent(/^\s*(\{%-?\s*)?(endif|endfor|else|elif)\b/),Statement:statementIndent(/^\s*(\{%-?\s*)?end\w/)}),language.foldNodeProp.add({"Statement Comment"(tree){let first=tree.firstChild,last=tree.lastChild;return first&&("Tag"==first.name||"{#"==first.name)?{from:first.to,to:"EndTag"==last.name||"#}"==last.name?last.from:tree.to}:null}})]}),languageData:{indentOnInput:/^\s*{%-?\s*(?:end|elif|else)$/}}),baseHTML=langHtml.html(),jinjaLanguage=makeJinja(baseHTML.language);// FIXME inline
@@ -1,6 +1,6 @@
1
1
  async function moduleInitFunction(requireAsyncModule,exports={}){const module={exports:exports};var hasRequiredDist,require$$0=await requireAsyncModule("@lezer/json"),require$$1=await requireAsyncModule("@codemirror/language"),dist={},distExports=function requireDist(){function getErrorPosition(error,doc){let m;return(m=error.message.match(/at position (\d+)/))?Math.min(+m[1],doc.length):(m=error.message.match(/at line (\d+) column (\d+)/))?Math.min(doc.line(+m[1]).from+ +m[2]-1,doc.length):0}/**
2
2
  A language provider that provides JSON parsing.
3
- */ /**
3
+ *//**
4
4
  JSON language support.
5
5
  */function json(){return new language.LanguageSupport(jsonLanguage)}if(hasRequiredDist)return dist;hasRequiredDist=1;var json$1=require$$0,language=require$$1;/**
6
6
  Calls