UNPKG

@lobehub/editor

Version:

A powerful and extensible rich text editor built on Meta's Lexical framework, providing a modern editing experience with React integration.

416 lines (412 loc) 7.72 kB
export var MODES = [{ ext: ['agda'], name: 'Agda', syntax: 'text/x-agda', value: 'agda' }, { ext: ['ets', 'arkts'], name: 'ArkTS', syntax: 'text/x-arkts', value: 'arkts' }, { ext: ['bash'], name: 'Bash', syntax: 'shell', value: 'bash' }, { ext: ['vbs'], name: 'Basic', syntax: 'vbscript', value: 'basic' }, { ext: ['c', 'h', 'ino'], name: 'C', syntax: 'text/x-csrc', value: 'c' }, { ext: ['cpp', 'c++', 'cc', 'cxx', 'hpp', 'h++', 'hh', 'hxx'], name: 'C++', syntax: 'text/x-c++src', value: 'cpp' }, { ext: ['cs'], name: 'C#', syntax: 'text/x-csharp', value: 'csharp' }, { ext: ['css'], name: 'CSS', syntax: 'css', value: 'css' }, { ext: ['dart'], name: 'Dart', syntax: 'dart', value: 'dart' }, { ext: ['diff', 'patch'], name: 'Diff', syntax: 'diff', value: 'diff' }, { name: 'Dockerfile', syntax: 'dockerfile', value: 'dockerfile' }, { ext: ['erl'], name: 'Erlang', syntax: 'erlang', value: 'erlang' }, { ext: ['glsl'], name: 'Glsl', syntax: 'x-shader/x-vertex', value: 'glsl' }, { name: 'Git', syntax: 'shell', value: 'git' }, { ext: ['go'], name: 'Go', syntax: 'go', value: 'go' }, { name: 'GraphQL', syntax: 'graphql', value: 'graphql' }, { ext: ['groovy', 'gradle'], name: 'Groovy', syntax: 'groovy', value: 'groovy' }, { ext: ['html', 'htm', 'handlebars', 'hbs'], name: 'HTML', syntax: 'htmlmixed', value: 'html' }, { name: 'HTTP', syntax: 'http', value: 'http' }, { ext: ['java'], name: 'Java', syntax: 'text/x-java', value: 'java' }, { ext: ['js'], name: 'JavaScript', syntax: 'text/javascript', value: 'javascript' }, { ext: ['json', 'map'], name: 'JSON', syntax: 'application/json', value: 'json' }, { ext: ['jsx'], name: 'JSX', syntax: 'jsx', value: 'jsx' }, { name: 'KaTeX', syntax: 'simplemode', value: 'katex' }, { ext: ['kt'], name: 'Kotlin', syntax: 'text/x-kotlin', value: 'kotlin' }, { ext: ['less'], name: 'Less', syntax: 'css', value: 'less' }, { name: 'Makefile', syntax: 'cmake', value: 'makefile' }, { ext: ['markdown', 'md', 'mkd'], name: 'Markdown', syntax: 'markdown', value: 'markdown' }, { name: 'MATLAB', syntax: 'octave', value: 'matlab' }, { ext: ['conf'], name: 'Nginx', syntax: 'nginx', value: 'nginx' }, { ext: ['m'], name: 'Objective-C', syntax: 'text/x-objectivec', value: 'objectivec' }, { ext: ['p', 'pas'], name: 'Pascal', syntax: 'pascal', value: 'pascal' }, { ext: ['pl', 'pm'], name: 'Perl', syntax: 'perl', value: 'perl' }, // syntax 从 'php' 改为 'text/x-php' // 解决 php 必须带有 <?php 标签才会高亮的问题 { ext: ['php', 'php3', 'php4', 'php5', 'php7', 'phtml'], name: 'PHP', syntax: 'text/x-php', value: 'php' }, // { value: 'plantuml', syntax: 'plantuml', name: 'PlantUML' }, // 和文本图容易冲突,不再支持 { ext: ['ps1', 'psd1', 'psm1'], name: 'PowerShell', syntax: 'powershell', value: 'powershell' }, { ext: ['proto'], name: 'Protobuf', syntax: 'protobuf', value: 'protobuf' }, { ext: ['build', 'bzl', 'py', 'pyw'], name: 'Python', syntax: 'python', value: 'python' }, { ext: ['r', 'R'], name: 'R', syntax: 'r', value: 'r' }, { ext: ['rb'], name: 'Ruby', syntax: 'ruby', value: 'ruby' }, { ext: ['rs'], name: 'Rust', syntax: 'rust', value: 'rust' }, { ext: ['scala'], name: 'Scala', syntax: 'text/x-scala', value: 'scala' }, { ext: ['sh', 'ksh'], name: 'Shell', syntax: 'shell', value: 'shell' }, { ext: ['sql'], name: 'SQL', syntax: 'text/x-sql', value: 'sql' }, { name: 'PL/SQL', syntax: 'text/x-plsql', value: 'plsql' }, { ext: ['swift'], name: 'Swift', syntax: 'swift', value: 'swift' }, { ext: ['ts'], name: 'TypeScript', syntax: 'text/typescript', value: 'typescript' }, { ext: ['vb'], name: 'VB.net', syntax: 'vb', value: 'vbnet' }, { ext: ['vtl'], name: 'Velocity', syntax: 'velocity', value: 'velocity' }, { ext: ['xml', 'xsl', 'xsd', 'svg'], name: 'XML', syntax: 'xml', value: 'xml' }, { ext: ['yaml', 'yml'], name: 'YAML', syntax: 'yaml', value: 'yaml' }, { name: 'sTeX', syntax: 'text/x-stex', value: 'stex' }, { ext: ['text', 'ltx', 'tex'], name: 'LaTeX', syntax: 'text/x-latex', value: 'latex' }, { ext: ['sv', 'svh'], name: 'SystemVerilog', syntax: 'text/x-systemverilog', value: 'systemverilog' }, { ext: ['sass', 'scss'], name: 'Sass', syntax: 'text/x-sass', value: 'sass' }, { ext: ['tcl'], name: 'Tcl', syntax: 'text/x-tcl', value: 'tcl' }, { ext: ['v'], name: 'Verilog', syntax: 'text/x-verilog', value: 'verilog' }, { name: 'Vue', syntax: 'text/x-vue', value: 'vue' }, { ext: ['lua'], name: 'Lua', syntax: 'text/x-lua', value: 'lua' }, { ext: ['hs'], name: 'Haskell', syntax: 'haskell', value: 'haskell' }, { ext: ['properties', 'ini', 'in'], name: 'Properties', syntax: 'properties', value: 'properties' }, { ext: ['toml'], name: 'TOML', syntax: 'toml', value: 'toml' }, { ext: ['cyp', 'cypher'], name: 'Cypher', syntax: 'cypher', value: 'cypher' }, { ext: ['tsx'], name: 'TSX', syntax: 'jsx', value: 'tsx' }, { ext: ['fs'], name: 'F#', syntax: 'mllike', value: 'f#' }, { ext: ['ml', 'mli', 'mll', 'mly'], name: 'OCaml', syntax: 'mllike', value: 'ocaml' }, { ext: ['clj', 'cljc', 'cljx'], name: 'Clojure', syntax: 'clojure', value: 'clojure' }, { name: 'ABAP', syntax: 'abap', value: 'abap' }, { ext: ['jl'], name: 'Julia', syntax: 'julia', value: 'julia' }, { ext: ['cmake'], name: 'CMake', syntax: 'cmake', value: 'cmake' }, { ext: ['scm', 'ss'], name: 'Scheme', syntax: 'scheme', value: 'scheme' }, { ext: ['cl', 'lisp', 'el'], name: 'Lisp', syntax: 'commonlisp', value: 'commonlisp' }, { ext: ['f90', 'f95', 'f03'], name: 'Fortran', syntax: 'fortran', value: 'fortran' }, { ext: ['sol'], name: 'Solidity', syntax: 'solidity', value: 'solidity' }]; // 不支持格式化的语言 export var DISABLE_FORMAT_MODE = ['yaml']; MODES.sort(function (modeA, modeB) { var nameA = modeA.name.toLowerCase(); var nameB = modeB.name.toLowerCase(); if (nameA === nameB) { return 0; } if (nameA < nameB) { return -1; } return 1; }); // 保证 plain text 是第一个 MODES.unshift({ name: 'Plain Text', syntax: 'simplemode', value: 'plain' }); export function modeMatch() { var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; // eslint-disable-next-line no-param-reassign mode = mode.toLocaleLowerCase() || 'plain'; var findMode = MODES.find(function (m) { var _m$ext; return m.value === mode || ((_m$ext = m.ext) === null || _m$ext === void 0 ? void 0 : _m$ext.includes(mode)); }); return (findMode === null || findMode === void 0 ? void 0 : findMode.value) || 'plain'; } export var LOBE_THEME = 'default'; export var CODE_THEME_ENUM = /*#__PURE__*/function (CODE_THEME_ENUM) { CODE_THEME_ENUM["LOBE"] = "default"; return CODE_THEME_ENUM; }({}); export var THEMES = [{ isDark: false, name: CODE_THEME_ENUM.LOBE, value: CODE_THEME_ENUM.LOBE }]; // 默认主题下 codeblock 首选风格名 export var DEFAULT_CODEBLOCK_THEME_NAME = CODE_THEME_ENUM.LOBE; // dark主题下 codeblock 首选风格名 export var DARK_CODEBLOCK_THEME_NAME = CODE_THEME_ENUM.LOBE; export function getValidTheme(theme) { var find = THEMES.find(function (v) { return v.value === theme || v.name === theme; }); if (find) { return find.value; } return DEFAULT_CODEBLOCK_THEME_NAME; }