Files

14 lines
9.1 KiB
JavaScript
Raw Permalink Normal View History

import{p as N}from"./vendor-lezer-javascript-BsA5KTFy.js";import{L as O,s as w,c as P,d as F,f as j,e as S,h as B,j as V,k as M,n as J,o as _}from"./cm-language-CDsY7zq0.js";import{E as R}from"./cm-state-X9WpHEQO.js";import{E as W}from"./cm-view-CiSFjroV.js";import{s as p,i as Z,c as z}from"./cm-autocomplete-t9rzw_D0.js";import{a as H,I as K}from"./vendor-lezer-common-tVQBIsvN.js";import"./vendor-lezer-lr-eZ5kYecM.js";import"./vendor-lezer-highlight-DuEf3ZFH.js";import"./vendor-style-mod-Bs6eFhZE.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";const X=[p("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),p("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),p("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),p("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),p("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),p(`try {
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),p("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),p(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),p(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),p('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),p('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],q=X.concat([p("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),p("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),p("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),C=new H,x=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function y(e){return(t,r)=>{let n=t.node.getChild("VariableDefinition");return n&&r(n,e),!0}}const G=["FunctionDeclaration"],Q={FunctionDeclaration:y("function"),ClassDeclaration:y("class"),ClassExpression:()=>!0,EnumDeclaration:y("constant"),TypeAliasDeclaration:y("type"),NamespaceDeclaration:y("namespace"),VariableDefinition(e,t){e.matchContext(G)||t(e,"variable")},TypeDefinition(e,t){t(e,"type")},__proto__:null};function D(e,t){let r=C.get(t);if(r)return r;let n=[],a=!0;function i(o,l){let c=e.sliceString(o.from,o.to);n.push({label:c,type:l})}return t.cursor(K.IncludeAnonymous).iterate(o=>{if(a)a=!1;else if(o.name){let l=Q[o.name];if(l&&l(o,i)||x.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of D(e,o.node))n.push(l);return!1}}),C.set(t,n),n}const h=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,k=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function U(e){let t=w(e.state).resolveInner(e.pos,-1);if(k.indexOf(t.name)>-1)return null;let r=t.name=="VariableName"||t.to-t.from<20&&h.test(e.state.sliceDoc(t.from,t.to));if(!r&&!e.explicit)return null;let n=[];for(let a=t;a;a=a.parent)x.has(a.name)&&(n=n.concat(D(e.state.doc,a)));return{options:n,from:r?t.from:e.pos,validFor:h}}function $(e,t,r){var n;let a=[];for(;;){let i=t.firstChild,o;if(i?.name=="VariableName")return a.push(e(i)),{path:a.reverse(),name:r};if(i?.name=="MemberExpression"&&((n=o=i.lastChild)===null||n===void 0?void 0:n.name)=="PropertyName")a.push(e(o)),t=i;else return null}}function Y(e){let t=n=>e.state.doc.sliceString(n.from,n.to),r=w(e.state).resolveInner(e.pos,-1);return r.name=="PropertyName"?$(t,r.parent,t(r)):(r.name=="."||r.name=="?.")&&r.parent.name=="MemberExpression"?$(t,r.parent,""):k.indexOf(r.name)>-1?null:r.name=="VariableName"||r.to-r.from<20&&h.test(t(r))?{path:[],name:t(r)}:r.name=="MemberExpression"?$(t,r,""):e.explicit?{path:[],name:""}:null}function ee(e,t){let r=[],n=new Set;for(let a=0;;a++){for(let o of(Object.getOwnPropertyNames||Object.keys)(e)){if(!/^[a-zA-Z_$\xaa-\uffdc][\w$\xaa-\uffdc]*$/.test(o)||n.has(o))continue;n.add(o);let l;try{l=e[o]}catch{continue}r.push({label:o,type:typeof l=="function"?/^[A-Z]/.test(o)?"class":t?"function":"method":t?"variable":"property",boost:-a})}let i=Object.getPrototypeOf(e);if(!i)return r;e=i}}function we(e){let t=new Map;return r=>{let n=Y(r);if(!n)return null;let a=e;for(let o of n.path)if(a=a[o],!a)return null;let i=t.get(a);return i||t.set(a,i=ee(a,!n.path.length)),{from:r.pos-n.name.length,options:i,validFor:h}}}const m=O.define({name:"javascript",parser:N.configure({props:[F.add({IfStatement:S({except:/^\s*({|else\b)/}),TryStatement:S({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:V,SwitchBody:e=>{let t=e.textAfter,r=/^\s*\}/.test(t),n=/^\s*(case|default)\b/.test(t);return e.baseIndent+(r?0:n?1:2)*e.unit},Block:B({closing:"}"}),ArrowFunction:e=>e.baseIndent+e.unit,"TemplateString BlockComment":()=>null,"Statement Property":S({except:/^\s*{/}),JSXElement(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},JSXEscape(e){let t=/\s*\}/.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"JSXOpenTag JSXSelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),j.add({"Block ClassBody Swi