{"version":3,"sources":["../src/index.ts","../src/Editor.tsx","../src/Header.tsx","../src/EditorContent.tsx","../src/highlightSyntax.ts","../src/Settings.tsx","../src/themes/light.js","../src/Problems.tsx","../src/themes/dark.js","../src/languages/json.js","../src/languages/plainText.js"],"sourcesContent":["import Editor from './Editor';\n\nexport { Editor };\n","import { useEffect, useState } from 'react';\nimport Header from './Header';\nimport EditorContent from './EditorContent';\nimport Settings from './Settings';\nimport lightTheme from './themes/light';\nimport type { Config, EditorProps, EditorState, Lang, Theme } from './types';\nimport Problems from './Problems';\nimport darkTheme from './themes/dark';\nimport jsonLang from './languages/json';\nimport plainTextLang from './languages/plainText';\n\nexport default function Editor(props: EditorProps) {\n  const languages: Lang[] = [\n    jsonLang as unknown as Lang,\n    plainTextLang,\n    ...(props.languages || []),\n  ];\n  const themes = [lightTheme, darkTheme, ...(props.themes || [])];\n  const config: Config = {\n    indent: props.config?.indent || 'Space',\n    indentSize: props.config?.indentSize || 2,\n    textArea: props.config?.textArea || {},\n  };\n  const [state, setState] = useState<EditorState>({\n    value: props.value,\n    errors: [],\n    warnings: [],\n    showSettings: false,\n    showProblems: false,\n    theme: themes.find((i) => i.name === (props.theme || 'Light')) as Theme,\n    lang: languages.find(\n      (i) => i.name === (props.lang || 'Plain Text')\n    ) as Lang,\n    cursorPos: [0, 0],\n    config,\n    setCursor: false,\n  });\n\n  useEffect(() => {\n    setState({\n      ...state,\n      value: props.value,\n    });\n  }, [props.value]);\n\n  useEffect(() => {\n    setState({\n      ...state,\n      theme: themes.find((i) => i.name === (props.theme || 'Light')) as Theme,\n    });\n  }, [props.theme]);\n\n  useEffect(() => {\n    setState({\n      ...state,\n      lang: languages.find(\n        (i) => i.name === (props.lang || 'Plain Text')\n      ) as Lang,\n    });\n  }, [props.lang]);\n\n  const renderContent = () => {\n    if (state.showSettings) {\n      return (\n        <Settings\n          themes={themes}\n          languages={languages}\n          state={state}\n          setState={setState}\n        />\n      );\n    }\n\n    if (state.showProblems) {\n      return <Problems state={state} setState={setState} />;\n    }\n\n    return null;\n  };\n\n  return (\n    <div\n      style={{\n        ...props.style,\n        border: '1px solid lightgray',\n        boxSizing: 'border-box',\n        position: 'relative',\n      }}\n    >\n      <Header\n        title={props.title || 'Untitled'}\n        state={state}\n        setState={setState}\n        onChange={props.onChange}\n      />\n      <EditorContent\n        setState={setState}\n        state={state}\n        onChange={props.onChange}\n      />\n      {renderContent()}\n    </div>\n  );\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore\nimport prettier from 'prettier/esm/standalone.mjs';\n// @ts-ignore\nimport babelParser from 'prettier/esm/parser-babel.mjs';\n// @ts-ignore\nimport cssParser from 'prettier/esm/parser-postcss.mjs';\n// @ts-ignore\nimport graphqlParser from 'prettier/esm/parser-graphql.mjs';\n// @ts-ignore\nimport htmlParser from 'prettier/esm/parser-html.mjs';\n// @ts-ignore\nimport markdownParser from 'prettier/esm/parser-markdown.mjs';\n// @ts-ignore\nimport typescriptParser from 'prettier/esm/parser-typescript.mjs';\n// @ts-ignore\nimport yamlParser from 'prettier/esm/parser-yaml.mjs';\nimport type { EditorState } from './types';\nimport type { Dispatch } from 'react';\n\ninterface Props {\n  title: string;\n  state: EditorState;\n  setState: Dispatch<EditorState>;\n  onChange: (value: string) => void;\n}\n\nexport default function Header({ title, state, setState, onChange }: Props) {\n  const handleFormat = () => {\n    try {\n      const value = prettier.format(state.value, {\n        parser: state.lang.parser,\n        plugins: [\n          babelParser,\n          cssParser,\n          graphqlParser,\n          htmlParser,\n          markdownParser,\n          typescriptParser,\n          yamlParser,\n        ],\n      });\n      if (onChange) {\n        onChange(value);\n      }\n      setState({ ...state, value, errors: [] });\n    } catch (error: unknown) {\n      setState({ ...state, errors: [(error as Error).message] });\n    }\n  };\n  return (\n    <div\n      style={{\n        boxSizing: 'border-box',\n        height: '30px',\n        padding: '5px 10px',\n        background: '#0074D9',\n        color: 'white',\n        display: 'flex',\n        justifyContent: 'space-between',\n        alignItems: 'center',\n      }}\n    >\n      <span\n        style={{ fontSize: '12px', fontWeight: 'bold', userSelect: 'none' }}\n      >\n        {title}\n      </span>\n      <div style={{ display: 'flex', alignItems: 'center' }}>\n        {state.errors.length > 0 && (\n          <button\n            type=\"button\"\n            title=\"Problems\"\n            style={{\n              marginRight: '10px',\n              fontSize: '12px',\n              border: '0px',\n              padding: '0px 5px',\n              background: 'white',\n              cursor: 'pointer',\n              borderRadius: '10px',\n              display: 'flex',\n              alignItems: 'center',\n            }}\n            onClick={() =>\n              setState({ ...state, showProblems: !state.showProblems })\n            }\n          >\n            <svg\n              style={{ fill: '#FF4136', width: '20px' }}\n              focusable=\"false\"\n              aria-hidden=\"true\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"></path>\n            </svg>\n            <span style={{ marginRight: '5px' }}>{state.errors.length}</span>\n            <svg\n              style={{ fill: '#FFDC00', width: '20px' }}\n              focusable=\"false\"\n              aria-hidden=\"true\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"></path>\n            </svg>\n            <span style={{ marginRight: '5px' }}>{state.warnings.length}</span>\n          </button>\n        )}\n        <button\n          type=\"button\"\n          style={{\n            marginRight: '10px',\n            fontSize: '12px',\n            border: 0,\n            padding: 0,\n            background: 'inherit',\n            cursor: 'pointer',\n          }}\n          onClick={handleFormat}\n          title=\"Format\"\n          disabled={state.lang.parser === null}\n        >\n          <svg\n            style={{\n              fill: state.lang.parser === null ? 'gray' : 'white',\n              width: '20px',\n            }}\n            focusable=\"false\"\n            aria-hidden=\"true\"\n            viewBox=\"0 0 24 24\"\n          >\n            <path d=\"M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zm0-6v2h18V3H3z\"></path>\n          </svg>\n        </button>\n        <button\n          type=\"button\"\n          title=\"Settings\"\n          style={{\n            border: 0,\n            padding: 0,\n            margin: 0,\n            background: 'inherit',\n            cursor: 'pointer',\n          }}\n          onClick={() =>\n            setState({\n              ...state,\n              showSettings: !state.showSettings,\n            })\n          }\n        >\n          <svg\n            style={{ fill: 'white', width: '20px' }}\n            focusable=\"false\"\n            aria-hidden=\"true\"\n            viewBox=\"0 0 24 24\"\n          >\n            <path d=\"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z\"></path>\n          </svg>\n        </button>\n      </div>\n    </div>\n  );\n}\n","import { Dispatch, KeyboardEvent, useLayoutEffect, useRef } from 'react';\nimport { insertAt } from '@opentf/utils';\nimport highlightSyntax from './highlightSyntax';\nimport type { EditorState } from './types';\n\ninterface Props {\n  state: EditorState;\n  setState: Dispatch<EditorState>;\n  onChange: (value: string) => void;\n}\n\nexport default function EditorContent({ state, setState, onChange }: Props) {\n  const textAreaRef = useRef<HTMLTextAreaElement>(null);\n  const hlCode = highlightSyntax(state);\n  const newLinesMatch = [...hlCode.matchAll(/\\n/g)];\n\n  useLayoutEffect(() => {\n    if (textAreaRef.current !== null && state.setCursor) {\n      textAreaRef.current.setSelectionRange(\n        state.cursorPos[0],\n        state.cursorPos[1]\n      );\n      setState({ ...state, setCursor: false });\n    }\n  }, [state.setCursor]);\n\n  const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n    const indentChar = state.config.indent === 'Tab' ? '\\t' : ' ';\n    const { selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\n\n    if (e.key === 'Tab') {\n      e.preventDefault();\n      const value = insertAt(\n        state.value,\n        selectionStart,\n        indentChar.repeat(state.config.indentSize)\n      );\n      if (onChange) {\n        onChange(value);\n      }\n      setState({\n        ...state,\n        value,\n        cursorPos: [\n          selectionStart + state.config.indentSize,\n          selectionEnd + state.config.indentSize,\n        ],\n        setCursor: true,\n      });\n    }\n\n    const pairs = ['{', '}', '`', '`', '\"', '\"', \"'\", \"'\", '(', ')', '[', ']'];\n    const index = pairs.findIndex((i) => i === e.key);\n\n    if (index !== -1) {\n      e.preventDefault();\n      let value = insertAt(state.value, selectionStart, e.key);\n      value = insertAt(value, selectionEnd + 1, pairs[index + 1]);\n      if (onChange) {\n        onChange(value);\n      }\n      setState({\n        ...state,\n        value,\n        cursorPos: [selectionStart + 1, selectionEnd + 1],\n        setCursor: true,\n      });\n    }\n  };\n\n  return (\n    <div\n      style={{\n        boxSizing: 'border-box',\n        color: state.theme.color,\n        background: state.theme.background,\n        height: 'calc(100% - 30px)',\n        display: 'grid',\n        gridTemplateColumns: 'auto 1fr',\n        overflow: 'auto',\n      }}\n    >\n      <div\n        style={{\n          backgroundColor: state.theme.name.toLowerCase().includes('dark')\n            ? 'inherit'\n            : '#f5f5f5',\n          color: state.theme.name.toLowerCase().includes('dark')\n            ? 'lightgray'\n            : '#6c6c6c',\n          borderRight: '1px solid #ddd',\n          padding: '10px 0px',\n          position: 'sticky',\n          top: 0,\n          left: 0,\n          zIndex: 1,\n          userSelect: 'none',\n        }}\n      >\n        {new Array(newLinesMatch.length + 1).fill('').map((_a, i) => (\n          <div\n            key={i}\n            style={{\n              textAlign: 'right',\n              marginBottom: '2px',\n              fontSize: '14px',\n              padding: '0px 4px',\n            }}\n          >\n            {i + 1}\n          </div>\n        ))}\n      </div>\n      <div\n        style={{\n          boxSizing: 'border-box',\n          position: 'relative',\n          textAlign: 'left',\n          padding: '0px',\n        }}\n      >\n        <pre\n          style={{\n            userSelect: 'none',\n            margin: '0px',\n            border: '0px',\n            background: 'none',\n            boxSizing: 'inherit',\n            display: 'inherit',\n            fontFamily: 'inherit',\n            fontSize: 'inherit',\n            fontStyle: 'inherit',\n            fontVariantLigatures: 'inherit',\n            fontWeight: 'inherit',\n            letterSpacing: 'inherit',\n            lineHeight: 'inherit',\n            tabSize: 'inherit',\n            textIndent: 'inherit',\n            textRendering: 'inherit',\n            textTransform: 'inherit',\n            position: 'relative',\n            pointerEvents: 'none',\n            padding: '10px',\n            whiteSpace: 'pre',\n            overflow: 'hidden',\n          }}\n          dangerouslySetInnerHTML={{ __html: hlCode }}\n        />\n        <textarea\n          ref={textAreaRef}\n          spellCheck={false}\n          value={state.value}\n          onChange={(e) => {\n            if (onChange) {\n              onChange(e.target.value);\n            }\n            setState({ ...state, value: e.target.value });\n          }}\n          onKeyDown={handleKeyDown}\n          style={{\n            margin: '0px',\n            border: '0px',\n            background: 'none',\n            boxSizing: 'inherit',\n            display: 'inherit',\n            fontFamily: 'inherit',\n            fontSize: 'inherit',\n            fontStyle: 'inherit',\n            fontVariantLigatures: 'inherit',\n            fontWeight: 'inherit',\n            letterSpacing: 'inherit',\n            lineHeight: 'inherit',\n            tabSize: 'inherit',\n            textIndent: 'inherit',\n            textRendering: 'inherit',\n            textTransform: 'inherit',\n            position: 'absolute',\n            top: '0px',\n            left: '0px',\n            height: '100%',\n            width: '100%',\n            resize: 'none',\n            color: 'inherit',\n            WebkitFontSmoothing: 'antialiased',\n            WebkitTextFillColor: 'transparent',\n            padding: '10px',\n            outline: 'none',\n            whiteSpace: 'pre',\n            overflow: 'hidden',\n          }}\n          {...state.config.textArea}\n        />\n      </div>\n    </div>\n  );\n}\n","import type { EditorState, Theme, Token } from './types';\n\ntype CodeTokenObj = { t: string; v: string };\n\ntype CodeTokens = (CodeTokenObj | string)[];\n\nfunction render(codeTokens: CodeTokens, theme: Theme) {\n  let out = '';\n  codeTokens.forEach((ct) => {\n    if (typeof ct !== 'string') {\n      out += `<span style=\"${theme.getStyles(ct.t)}\">${ct.v}</span>`;\n      return;\n    }\n    out += ct;\n  });\n\n  return out;\n}\n\nfunction matchTokens(s: string, tokens: Token[]) {\n  const matchArr: CodeTokens = [];\n  let match: RegExpMatchArray | null = null;\n  const tk = tokens.find((tk) => {\n    match = s.match(tk.p);\n    return match !== null;\n  });\n\n  if (match) {\n    const prefix = s.slice(0, (match as RegExpMatchArray).index);\n    if (prefix) {\n      const arr = matchTokens(prefix, tokens);\n      if (arr.some((i) => typeof i === 'string')) {\n        matchArr.push(s);\n        return matchArr;\n      }\n      matchArr.push(...arr);\n    }\n\n    matchArr.push({ t: tk?.t as string, v: match[0] });\n\n    const suffix = s.slice(\n      ((match as RegExpMatchArray).index as number) +\n        (match[0] as string).length\n    );\n    if (suffix) {\n      const arr = matchTokens(suffix, tokens);\n      matchArr.push(...arr);\n    }\n  } else {\n    matchArr.push(s);\n  }\n\n  return matchArr;\n}\n\nfunction transform(code: string, tokens: Token[], codeTokens: CodeTokens) {\n  let str = '';\n\n  for (let i = 0; i < code.length; i++) {\n    const char = code[i];\n\n    if (char === '\\t') {\n      codeTokens.push(char);\n      continue;\n    }\n\n    if (char === ' ' || char === '\\n') {\n      const arr = matchTokens(str + char, tokens);\n\n      if (!arr.some((i) => typeof i === 'string')) {\n        str = '';\n      }\n\n      arr.forEach((m) => {\n        if (typeof m === 'string') {\n          str = m;\n        } else {\n          codeTokens.push(m);\n        }\n      });\n\n      if (str === char) {\n        codeTokens.push(char);\n        str = '';\n      }\n      continue;\n    }\n\n    str += char;\n  }\n\n  codeTokens.push(...matchTokens(str, tokens));\n}\n\nexport default function highlightSyntax(state: EditorState) {\n  const codeTokens: CodeTokens = [];\n\n  if (state.lang.tokens.length === 0) {\n    return state.value;\n  }\n\n  transform(state.value, state.lang.tokens, codeTokens);\n\n  return render(codeTokens, state.theme);\n}\n","import { Dispatch, FormEvent, useEffect, useRef } from 'react';\nimport type { EditorState, Indent, Lang, Theme } from './types';\ninterface Props {\n  themes: Theme[];\n  languages: Lang[];\n  state: EditorState;\n  setState: Dispatch<EditorState>;\n}\n\nexport default function Settings({\n  themes,\n  languages,\n  state,\n  setState,\n}: Props) {\n  const settingsRef = useRef<HTMLDivElement>(null);\n\n  const handleThemeChange = (e: FormEvent<HTMLSelectElement>) => {\n    const theme = themes.find(\n      (i) => i.name === (e.target as HTMLSelectElement).value\n    ) as Theme;\n    setState({ ...state, theme });\n  };\n\n  useEffect(() => {\n    if (settingsRef.current !== null) {\n      settingsRef.current.focus();\n    }\n  }, []);\n\n  return (\n    <div\n      ref={settingsRef}\n      tabIndex={0}\n      style={{\n        background: 'white',\n        color: 'black',\n        padding: '15px',\n        boxSizing: 'border-box',\n        width: '100%',\n        height: 'calc(100% - 30px)',\n        overflow: 'auto',\n        position: 'absolute',\n        top: '30px',\n        left: '0px',\n        zIndex: '2',\n      }}\n      onKeyDown={(e) => {\n        if (e.code === 'Escape') {\n          e.stopPropagation();\n          setState({ ...state, showSettings: false });\n        }\n      }}\n    >\n      <p style={{ textAlign: 'center', margin: 0 }}>SETTINGS</p>\n      <table>\n        <tbody>\n          <tr>\n            <td style={{ padding: '10px' }}>Theme: </td>\n            <td>\n              <select value={state.theme.name} onChange={handleThemeChange}>\n                {themes.map((t, i) => (\n                  <option key={i}>{t.name}</option>\n                ))}\n              </select>\n            </td>\n          </tr>\n          <tr>\n            <td style={{ padding: '10px' }}>Indent: </td>\n            <td>\n              <select\n                value={state.config.indent}\n                onChange={(e) =>\n                  setState({\n                    ...state,\n                    config: {\n                      ...state.config,\n                      indent: e.target.value as Indent,\n                    },\n                  })\n                }\n              >\n                <option>Tab</option>\n                <option>Space</option>\n              </select>\n            </td>\n          </tr>\n          <tr>\n            <td style={{ padding: '10px' }}>Indent Size: </td>\n            <td>\n              <input\n                type=\"number\"\n                value={state.config.indentSize}\n                onChange={(e) =>\n                  setState({\n                    ...state,\n                    config: {\n                      ...state.config,\n                      indentSize: parseInt(e.target.value),\n                    },\n                  })\n                }\n              />\n            </td>\n          </tr>\n          <tr>\n            <td style={{ padding: '10px' }}>Languages: </td>\n            <td>\n              <select\n                value={state.lang.name}\n                onChange={(e) =>\n                  setState({\n                    ...state,\n                    lang: languages.find(\n                      (l) => l.name === e.target.value\n                    ) as Lang,\n                  })\n                }\n              >\n                {languages.map((l, i) => (\n                  <option key={i}>{l.name}</option>\n                ))}\n              </select>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  );\n}\n","export default {\n  name: 'Light',\n  color: '#111111',\n  background: '#fff',\n  getStyles: (className) => {\n    switch (className) {\n      case 'keyword':\n        return 'color: #FF4136';\n      case 'literal':\n        return 'color: #F012BE';\n      case 'attribute':\n        return 'color: #FF851B;';\n      case 'number':\n      case 'operator':\n      case 'regexp':\n        return 'color: inherit';\n      case 'string':\n        return 'color: #2ECC40';\n      case 'puntuation':\n        return 'color: inherit;';\n      default:\n        return '';\n    }\n  },\n};\n","import { Dispatch, useEffect, useRef } from 'react';\nimport type { EditorState } from './types';\n\ninterface Props {\n  state: EditorState;\n  setState: Dispatch<EditorState>;\n}\n\nexport default function Problems({ state, setState }: Props) {\n  const problemsRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (problemsRef.current !== null) {\n      problemsRef.current.focus();\n    }\n  }, []);\n\n  return (\n    <div\n      ref={problemsRef}\n      style={{\n        background: 'black',\n        color: '#ff5555',\n        boxSizing: 'border-box',\n        width: '100%',\n        height: 'calc(100% - 30px)',\n        overflow: 'auto',\n        position: 'absolute',\n        top: '30px',\n        left: '0px',\n        zIndex: '2',\n        lineHeight: '1.3',\n        fontWeight: 'bold',\n      }}\n      tabIndex={0}\n      onKeyDown={(e) => {\n        if (e.code === 'Escape') {\n          e.stopPropagation();\n          setState({ ...state, showProblems: false });\n        }\n      }}\n    >\n      {state.errors.map((err, i) => (\n        <div key={i} style={{ padding: '10px', display: 'inline-block' }}>\n          <pre>{err}</pre>\n        </div>\n      ))}\n      {state.warnings.map((w, i) => (\n        <div key={i} style={{ padding: '10px', display: 'inline-block' }}>\n          {w}\n        </div>\n      ))}\n    </div>\n  );\n}\n","export default {\n  name: 'Dark',\n  color: '#ffffff',\n  background: '#111111',\n  getStyles: (className) => {\n    switch (className) {\n      case 'keyword':\n        return 'color: #FF4136';\n      case 'literal':\n        return 'color: #FFDC00';\n      case 'attribute':\n        return 'color: #FF851B;';\n      case 'number':\n      case 'operator':\n      case 'regexp':\n        return 'color: inherit';\n      case 'string':\n        return 'color: #01FF70';\n      case 'puntuation':\n        return 'color: inherit';\n      default:\n        return '';\n    }\n  },\n};\n","export default {\n  name: 'JSON',\n  parser: 'json',\n  tokens: [\n    {\n      t: 'attribute',\n      p: /\"[^\"]+?\"(?=:)/,\n      s: true,\n      b: '\"',\n    },\n    {\n      t: 'string',\n      p: /\"[^\\n]*?(?<!\\\\)\"/,\n      s: true,\n      b: '\"',\n    },\n    {\n      t: 'literal',\n      p: /null|true|false/,\n    },\n    {\n      t: 'number',\n      p: /(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)/,\n    },\n    {\n      t: 'puntuation',\n      p: /[{}[\\],:]/,\n    },\n  ],\n};\n","export default {\n  name: 'Plain Text',\n  parser: null,\n  tokens: [],\n};\n"],"mappings":"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","names":["src_exports","__export","Editor","__toCommonJS","import_react","import_standalone","import_parser_babel","import_parser_postcss","import_parser_graphql","import_parser_html","import_parser_markdown","import_parser_typescript","import_parser_yaml","import_jsx_runtime","Header","title","state","setState","onChange","handleFormat","value","prettier","babelParser","cssParser","graphqlParser","htmlParser","markdownParser","typescriptParser","yamlParser","error","import_react","import_utils","render","codeTokens","theme","out","ct","matchTokens","s","tokens","matchArr","match","tk","prefix","arr","i","suffix","transform","code","str","char","m","highlightSyntax","state","import_jsx_runtime","EditorContent","state","setState","onChange","textAreaRef","hlCode","highlightSyntax","newLinesMatch","handleKeyDown","e","indentChar","selectionStart","selectionEnd","value","pairs","index","i","_a","import_react","import_jsx_runtime","Settings","themes","languages","state","setState","settingsRef","handleThemeChange","e","theme","i","t","l","light_default","className","import_react","import_jsx_runtime","Problems","state","setState","problemsRef","e","err","i","w","dark_default","className","json_default","plainText_default","import_jsx_runtime","Editor","props","languages","json_default","plainText_default","themes","light_default","dark_default","config","state","setState","renderContent","Settings","Problems","Header","EditorContent"]}