import StringStream from "../../util/StringStream.js"
import { countColumn } from "../../util/misc.js"
import * as modeMethods from "../../modes.js"

// declare global: globalThis, CodeMirror

// Create a minimal CodeMirror needed to use runMode, and assign to root.
var root = typeof globalThis !== 'undefined' ? globalThis : window
root.CodeMirror = {}

// Copy StringStream and mode methods into CodeMirror object.
CodeMirror.StringStream = StringStream
for (var exported in modeMethods) CodeMirror[exported] = modeMethods[exported]

// Minimal default mode.
CodeMirror.defineMode("null", () => ({token: stream => stream.skipToEnd()}))
CodeMirror.defineMIME("text/plain", "null")

CodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min
CodeMirror.splitLines = function(string) { return string.split(/\r?\n|\r/) }
CodeMirror.countColumn = countColumn

CodeMirror.defaults = { indentUnit: 2 }
export default CodeMirror
