{"version":3,"file":"dist-index.cjs","sources":["../../../../../../../node_modules/@codemirror/lang-javascript/dist/index.js"],"sourcesContent":["import { parser } from '@lezer/javascript';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, defineLanguageFacet, sublanguageProp, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\n/**\nA collection of JavaScript-related\n[snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).\n*/\nconst snippets = [\n    /*@__PURE__*/snippetCompletion(\"function ${name}(${params}) {\\n\\t${}\\n}\", {\n        label: \"function\",\n        detail: \"definition\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}\", {\n        label: \"for\",\n        detail: \"loop\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"for (let ${name} of ${collection}) {\\n\\t${}\\n}\", {\n        label: \"for\",\n        detail: \"of loop\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"do {\\n\\t${}\\n} while (${})\", {\n        label: \"do\",\n        detail: \"loop\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"while (${}) {\\n\\t${}\\n}\", {\n        label: \"while\",\n        detail: \"loop\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}\", {\n        label: \"try\",\n        detail: \"/ catch block\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n}\", {\n        label: \"if\",\n        detail: \"block\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}\", {\n        label: \"if\",\n        detail: \"/ else block\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}\", {\n        label: \"class\",\n        detail: \"definition\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"import {${names}} from \\\"${module}\\\"\\n${}\", {\n        label: \"import\",\n        detail: \"named\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"import ${name} from \\\"${module}\\\"\\n${}\", {\n        label: \"import\",\n        detail: \"default\",\n        type: \"keyword\"\n    })\n];\n/**\nA collection of snippet completions for TypeScript. Includes the\nJavaScript [snippets](https://codemirror.net/6/docs/ref/#lang-javascript.snippets).\n*/\nconst typescriptSnippets = /*@__PURE__*/snippets.concat([\n    /*@__PURE__*/snippetCompletion(\"interface ${name} {\\n\\t${}\\n}\", {\n        label: \"interface\",\n        detail: \"definition\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"type ${name} = ${type}\", {\n        label: \"type\",\n        detail: \"definition\",\n        type: \"keyword\"\n    }),\n    /*@__PURE__*/snippetCompletion(\"enum ${name} {\\n\\t${}\\n}\", {\n        label: \"enum\",\n        detail: \"definition\",\n        type: \"keyword\"\n    })\n]);\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n    \"Script\", \"Block\",\n    \"FunctionExpression\", \"FunctionDeclaration\", \"ArrowFunction\", \"MethodDeclaration\",\n    \"ForStatement\"\n]);\nfunction defID(type) {\n    return (node, def) => {\n        let id = node.node.getChild(\"VariableDefinition\");\n        if (id)\n            def(id, type);\n        return true;\n    };\n}\nconst functionContext = [\"FunctionDeclaration\"];\nconst gatherCompletions = {\n    FunctionDeclaration: /*@__PURE__*/defID(\"function\"),\n    ClassDeclaration: /*@__PURE__*/defID(\"class\"),\n    ClassExpression: () => true,\n    EnumDeclaration: /*@__PURE__*/defID(\"constant\"),\n    TypeAliasDeclaration: /*@__PURE__*/defID(\"type\"),\n    NamespaceDeclaration: /*@__PURE__*/defID(\"namespace\"),\n    VariableDefinition(node, def) { if (!node.matchContext(functionContext))\n        def(node, \"variable\"); },\n    TypeDefinition(node, def) { def(node, \"type\"); },\n    __proto__: null\n};\nfunction getScope(doc, node) {\n    let cached = cache.get(node);\n    if (cached)\n        return cached;\n    let completions = [], top = true;\n    function def(node, type) {\n        let name = doc.sliceString(node.from, node.to);\n        completions.push({ label: name, type });\n    }\n    node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n        if (top) {\n            top = false;\n        }\n        else if (node.name) {\n            let gather = gatherCompletions[node.name];\n            if (gather && gather(node, def) || ScopeNodes.has(node.name))\n                return false;\n        }\n        else if (node.to - node.from > 8192) {\n            // Allow caching for bigger internal nodes\n            for (let c of getScope(doc, node.node))\n                completions.push(c);\n            return false;\n        }\n    });\n    cache.set(node, completions);\n    return completions;\n}\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\n    \"TemplateString\", \"String\", \"RegExp\",\n    \"LineComment\", \"BlockComment\",\n    \"VariableDefinition\", \"TypeDefinition\", \"Label\",\n    \"PropertyDefinition\", \"PropertyName\",\n    \"PrivatePropertyDefinition\", \"PrivatePropertyName\",\n    \"JSXText\", \"JSXAttributeValue\", \"JSXOpenTag\", \"JSXCloseTag\", \"JSXSelfClosingTag\",\n    \".\", \"?.\"\n];\n/**\nCompletion source that looks up locally defined names in\nJavaScript code.\n*/\nfunction localCompletionSource(context) {\n    let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n    if (dontComplete.indexOf(inner.name) > -1)\n        return null;\n    let isWord = inner.name == \"VariableName\" ||\n        inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n    if (!isWord && !context.explicit)\n        return null;\n    let options = [];\n    for (let pos = inner; pos; pos = pos.parent) {\n        if (ScopeNodes.has(pos.name))\n            options = options.concat(getScope(context.state.doc, pos));\n    }\n    return {\n        options,\n        from: isWord ? inner.from : context.pos,\n        validFor: Identifier\n    };\n}\nfunction pathFor(read, member, name) {\n    var _a;\n    let path = [];\n    for (;;) {\n        let obj = member.firstChild, prop;\n        if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"VariableName\") {\n            path.push(read(obj));\n            return { path: path.reverse(), name };\n        }\n        else if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"MemberExpression\" && ((_a = (prop = obj.lastChild)) === null || _a === void 0 ? void 0 : _a.name) == \"PropertyName\") {\n            path.push(read(prop));\n            member = obj;\n        }\n        else {\n            return null;\n        }\n    }\n}\n/**\nHelper function for defining JavaScript completion sources. It\nreturns the completable name and object path for a completion\ncontext, or null if no name/property completion should happen at\nthat position. For example, when completing after `a.b.c` it will\nreturn `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\nit will return `{path: [], name: \"x\"}`. When not in a property or\nname, it will return null if `context.explicit` is false, and\n`{path: [], name: \"\"}` otherwise.\n*/\nfunction completionPath(context) {\n    let read = (node) => context.state.doc.sliceString(node.from, node.to);\n    let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n    if (inner.name == \"PropertyName\") {\n        return pathFor(read, inner.parent, read(inner));\n    }\n    else if ((inner.name == \".\" || inner.name == \"?.\") && inner.parent.name == \"MemberExpression\") {\n        return pathFor(read, inner.parent, \"\");\n    }\n    else if (dontComplete.indexOf(inner.name) > -1) {\n        return null;\n    }\n    else if (inner.name == \"VariableName\" || inner.to - inner.from < 20 && Identifier.test(read(inner))) {\n        return { path: [], name: read(inner) };\n    }\n    else if (inner.name == \"MemberExpression\") {\n        return pathFor(read, inner, \"\");\n    }\n    else {\n        return context.explicit ? { path: [], name: \"\" } : null;\n    }\n}\nfunction enumeratePropertyCompletions(obj, top) {\n    let options = [], seen = new Set;\n    for (let depth = 0;; depth++) {\n        for (let name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n            if (!/^[a-zA-Z_$\\xaa-\\uffdc][\\w$\\xaa-\\uffdc]*$/.test(name) || seen.has(name))\n                continue;\n            seen.add(name);\n            let value;\n            try {\n                value = obj[name];\n            }\n            catch (_) {\n                continue;\n            }\n            options.push({\n                label: name,\n                type: typeof value == \"function\" ? (/^[A-Z]/.test(name) ? \"class\" : top ? \"function\" : \"method\")\n                    : top ? \"variable\" : \"property\",\n                boost: -depth\n            });\n        }\n        let next = Object.getPrototypeOf(obj);\n        if (!next)\n            return options;\n        obj = next;\n    }\n}\n/**\nDefines a [completion source](https://codemirror.net/6/docs/ref/#autocomplete.CompletionSource) that\ncompletes from the given scope object (for example `globalThis`).\nWill enter properties of the object when completing properties on\na directly-named path.\n*/\nfunction scopeCompletionSource(scope) {\n    let cache = new Map;\n    return (context) => {\n        let path = completionPath(context);\n        if (!path)\n            return null;\n        let target = scope;\n        for (let step of path.path) {\n            target = target[step];\n            if (!target)\n                return null;\n        }\n        let options = cache.get(target);\n        if (!options)\n            cache.set(target, options = enumeratePropertyCompletions(target, !path.path.length));\n        return {\n            from: context.pos - path.name.length,\n            options,\n            validFor: Identifier\n        };\n    };\n}\n\n/**\nA language provider based on the [Lezer JavaScript\nparser](https://github.com/lezer-parser/javascript), extended with\nhighlighting and indentation information.\n*/\nconst javascriptLanguage = /*@__PURE__*/LRLanguage.define({\n    name: \"javascript\",\n    parser: /*@__PURE__*/parser.configure({\n        props: [\n            /*@__PURE__*/indentNodeProp.add({\n                IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n                TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n                LabeledStatement: flatIndent,\n                SwitchBody: context => {\n                    let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n                    return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n                },\n                Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n                ArrowFunction: cx => cx.baseIndent + cx.unit,\n                \"TemplateString BlockComment\": () => null,\n                \"Statement Property\": /*@__PURE__*/continuedIndent({ except: /^\\s*{/ }),\n                JSXElement(context) {\n                    let closed = /^\\s*<\\//.test(context.textAfter);\n                    return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n                },\n                JSXEscape(context) {\n                    let closed = /\\s*\\}/.test(context.textAfter);\n                    return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n                },\n                \"JSXOpenTag JSXSelfClosingTag\"(context) {\n                    return context.column(context.node.from) + context.unit;\n                }\n            }),\n            /*@__PURE__*/foldNodeProp.add({\n                \"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\": foldInside,\n                BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n            })\n        ]\n    }),\n    languageData: {\n        closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] },\n        commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n        indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n        wordChars: \"$\"\n    }\n});\nconst jsxSublanguage = {\n    test: node => /^JSX/.test(node.name),\n    facet: /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"{/*\", close: \"*/}\" } } })\n};\n/**\nA language provider for TypeScript.\n*/\nconst typescriptLanguage = /*@__PURE__*/javascriptLanguage.configure({ dialect: \"ts\" }, \"typescript\");\n/**\nLanguage provider for JSX.\n*/\nconst jsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n    dialect: \"jsx\",\n    props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n});\n/**\nLanguage provider for JSX + TypeScript.\n*/\nconst tsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n    dialect: \"jsx ts\",\n    props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n}, \"typescript\");\nlet kwCompletion = (name) => ({ label: name, type: \"keyword\" });\nconst keywords = /*@__PURE__*/\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\".split(\" \").map(kwCompletion);\nconst typescriptKeywords = /*@__PURE__*/keywords.concat(/*@__PURE__*/[\"declare\", \"implements\", \"private\", \"protected\", \"public\"].map(kwCompletion));\n/**\nJavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)\nand local variable completion.\n*/\nfunction javascript(config = {}) {\n    let lang = config.jsx ? (config.typescript ? tsxLanguage : jsxLanguage)\n        : config.typescript ? typescriptLanguage : javascriptLanguage;\n    let completions = config.typescript ? typescriptSnippets.concat(typescriptKeywords) : snippets.concat(keywords);\n    return new LanguageSupport(lang, [\n        javascriptLanguage.data.of({\n            autocomplete: ifNotIn(dontComplete, completeFromList(completions))\n        }),\n        javascriptLanguage.data.of({\n            autocomplete: localCompletionSource\n        }),\n        config.jsx ? autoCloseTags : [],\n    ]);\n}\nfunction findOpenTag(node) {\n    for (;;) {\n        if (node.name == \"JSXOpenTag\" || node.name == \"JSXSelfClosingTag\" || node.name == \"JSXFragmentTag\")\n            return node;\n        if (node.name == \"JSXEscape\" || !node.parent)\n            return null;\n        node = node.parent;\n    }\n}\nfunction elementName(doc, tree, max = doc.length) {\n    for (let ch = tree === null || tree === void 0 ? void 0 : tree.firstChild; ch; ch = ch.nextSibling) {\n        if (ch.name == \"JSXIdentifier\" || ch.name == \"JSXBuiltin\" || ch.name == \"JSXNamespacedName\" ||\n            ch.name == \"JSXMemberExpression\")\n            return doc.sliceString(ch.from, Math.min(ch.to, max));\n    }\n    return \"\";\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\n/**\nExtension that will automatically insert JSX close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, defaultInsert) => {\n    if ((android ? view.composing : view.compositionStarted) || view.state.readOnly ||\n        from != to || (text != \">\" && text != \"/\") ||\n        !javascriptLanguage.isActiveAt(view.state, from, -1))\n        return false;\n    let base = defaultInsert(), { state } = base;\n    let closeTags = state.changeByRange(range => {\n        var _a;\n        let { head } = range, around = syntaxTree(state).resolveInner(head - 1, -1), name;\n        if (around.name == \"JSXStartTag\")\n            around = around.parent;\n        if (state.doc.sliceString(head - 1, head) != text || around.name == \"JSXAttributeValue\" && around.to > head) ;\n        else if (text == \">\" && around.name == \"JSXFragmentTag\") {\n            return { range, changes: { from: head, insert: `</>` } };\n        }\n        else if (text == \"/\" && around.name == \"JSXStartCloseTag\") {\n            let empty = around.parent, base = empty.parent;\n            if (base && empty.from == head - 2 &&\n                ((name = elementName(state.doc, base.firstChild, head)) || ((_a = base.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"JSXFragmentTag\")) {\n                let insert = `${name}>`;\n                return { range: EditorSelection.cursor(head + insert.length, -1), changes: { from: head, insert } };\n            }\n        }\n        else if (text == \">\") {\n            let openTag = findOpenTag(around);\n            if (openTag && openTag.name == \"JSXOpenTag\" &&\n                !/^\\/?>|^<\\//.test(state.doc.sliceString(head, head + 2)) &&\n                (name = elementName(state.doc, openTag, head)))\n                return { range, changes: { from: head, insert: `</${name}>` } };\n        }\n        return { range };\n    });\n    if (closeTags.changes.empty)\n        return false;\n    view.dispatch([\n        base,\n        state.update(closeTags, { userEvent: \"input.complete\", scrollIntoView: true })\n    ]);\n    return true;\n});\n\n/**\nConnects an [ESLint](https://eslint.org/) linter to CodeMirror's\n[lint](https://codemirror.net/6/docs/ref/#lint) integration. `eslint` should be an instance of the\n[`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\nclass, and `config` an optional ESLint configuration. The return\nvalue of this function can be passed to [`linter`](https://codemirror.net/6/docs/ref/#lint.linter)\nto create a JavaScript linting extension.\n\nNote that ESLint targets node, and is tricky to run in the\nbrowser. The\n[eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\npackage may help with that (see\n[example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\n*/\nfunction esLint(eslint, config) {\n    if (!config) {\n        config = {\n            parserOptions: { ecmaVersion: 2019, sourceType: \"module\" },\n            env: { browser: true, node: true, es6: true, es2015: true, es2017: true, es2020: true },\n            rules: {}\n        };\n        eslint.getRules().forEach((desc, name) => {\n            var _a;\n            if ((_a = desc.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended)\n                config.rules[name] = 2;\n        });\n    }\n    return (view) => {\n        let { state } = view, found = [];\n        for (let { from, to } of javascriptLanguage.findRegions(state)) {\n            let fromLine = state.doc.lineAt(from), offset = { line: fromLine.number - 1, col: from - fromLine.from, pos: from };\n            for (let d of eslint.verify(state.sliceDoc(from, to), config))\n                found.push(translateDiagnostic(d, state.doc, offset));\n        }\n        return found;\n    };\n}\nfunction mapPos(line, col, doc, offset) {\n    return doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1);\n}\nfunction translateDiagnostic(input, doc, offset) {\n    let start = mapPos(input.line, input.column, doc, offset);\n    let result = {\n        from: start,\n        to: input.endLine != null && input.endColumn != 1 ? mapPos(input.endLine, input.endColumn, doc, offset) : start,\n        message: input.message,\n        source: input.ruleId ? \"eslint:\" + input.ruleId : \"eslint\",\n        severity: input.severity == 1 ? \"warning\" : \"error\",\n    };\n    if (input.fix) {\n        let { range, text } = input.fix, from = range[0] + offset.pos - start, to = range[1] + offset.pos - start;\n        result.actions = [{\n                name: \"fix\",\n                apply(view, start) {\n                    view.dispatch({ changes: { from: start + from, to: start + to, insert: text }, scrollIntoView: true });\n                }\n            }];\n    }\n    return result;\n}\n\nexport { autoCloseTags, completionPath, esLint, javascript, javascriptLanguage, jsxLanguage, localCompletionSource, scopeCompletionSource, snippets, tsxLanguage, typescriptLanguage, typescriptSnippets };\n"],"names":["snippetCompletion","NodeWeakMap","node","IterMode","syntaxTree","cache","LRLanguage","parser","indentNodeProp","continuedIndent","flatIndent","delimitedIndent","foldNodeProp","foldInside","defineLanguageFacet","sublanguageProp","LanguageSupport","ifNotIn","completeFromList","EditorView","base","EditorSelection"],"mappings":"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","x_google_ignoreList":[0]}