vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
1 lines • 29.8 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","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 \".\", \"?.\"\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: /^{/ }),\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 if (desc.meta.docs.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":["snippets","snippetCompletion","typescriptSnippets","cache","NodeWeakMap","ScopeNodes","defID","type","node","def","id","functionContext","gatherCompletions","getScope","doc","cached","completions","top","name","IterMode","gather","c","Identifier","dontComplete","localCompletionSource","context","inner","syntaxTree","isWord","options","pos","javascriptLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","flatIndent","after","closed","isCase","delimitedIndent","cx","foldNodeProp","foldInside","tree","jsxSublanguage","defineLanguageFacet","typescriptLanguage","jsxLanguage","sublanguageProp","n","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","config","lang","LanguageSupport","ifNotIn","completeFromList","autoCloseTags","findOpenTag","elementName","max","ch","android","EditorView","view","from","to","text","defaultInsert","base","state","closeTags","range","_a","head","around","empty","insert","EditorSelection","openTag"],"mappings":"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","x_google_ignoreList":[0]}