una-editor 0.3.0 → 0.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +35 -2
- package/README.md +35 -2
- package/dist/clike-BKuxyWF6.cjs +1 -0
- package/dist/clike-DiubheGH.js +616 -0
- package/dist/go-BHVhI2MG.js +155 -0
- package/dist/go-BgtlNyKc.cjs +1 -0
- package/dist/index-B6iSwiLv.js +300 -0
- package/dist/index-BnVlSGix.cjs +1 -0
- package/dist/index-C8zz5a-F.js +611 -0
- package/dist/index-CJBxDvDy.js +93 -0
- package/dist/index-CKydJJ8n.js +28596 -0
- package/dist/index-CeTMfP8Z.cjs +1 -0
- package/dist/index-DBHwJjkL.cjs +3 -0
- package/dist/index-RMx02Mab.cjs +72 -0
- package/dist/index.cjs +1 -66
- package/dist/index.mjs +8 -25476
- package/dist/rust-Dt_Syouh.cjs +1 -0
- package/dist/rust-ohAAD9YU.js +144 -0
- package/dist/types/components/UnaEditor.vue.d.ts +10 -8
- package/dist/types/components/UnaEditor.vue.d.ts.map +1 -1
- package/dist/types/composables/useEditor.d.ts +2 -0
- package/dist/types/composables/useEditor.d.ts.map +1 -1
- package/dist/types/extensions/codeBlockDecorator.d.ts +6 -0
- package/dist/types/extensions/codeBlockDecorator.d.ts.map +1 -0
- package/dist/types/extensions/codeThemeExtension.d.ts +8 -0
- package/dist/types/extensions/codeThemeExtension.d.ts.map +1 -0
- package/dist/types/extensions/hybridMarkdown.d.ts +2 -1
- package/dist/types/extensions/hybridMarkdown.d.ts.map +1 -1
- package/dist/types/extensions/languageSupport.d.ts +20 -0
- package/dist/types/extensions/languageSupport.d.ts.map +1 -0
- package/dist/types/extensions/structuredTable.d.ts +7 -0
- package/dist/types/extensions/structuredTable.d.ts.map +1 -0
- package/dist/types/extensions/structuredTableModel.d.ts +57 -0
- package/dist/types/extensions/structuredTableModel.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/locales/en-US.d.ts.map +1 -1
- package/dist/types/themes/codeThemes.d.ts +5 -0
- package/dist/types/themes/codeThemes.d.ts.map +1 -0
- package/dist/types/types/editor.d.ts +105 -0
- package/dist/types/types/editor.d.ts.map +1 -1
- package/dist/una-editor.css +1 -1
- package/package.json +13 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function p(n){d(n,"start");var t={},e=n.languageData||{},f=!1;for(var u in n)if(u!=e&&n.hasOwnProperty(u))for(var s=t[u]=[],i=n[u],r=0;r<i.length;r++){var o=i[r];s.push(new k(o,n)),(o.indent||o.dedent)&&(f=!0)}return{name:e.name,startState:function(){return{state:"start",pending:null,indent:f?[]:null}},copyState:function(g){var a={state:g.state,pending:g.pending,indent:g.indent&&g.indent.slice(0)};return g.stack&&(a.stack=g.stack.slice(0)),a},token:l(t),indent:h(t,e),mergeTokens:e.mergeTokens,languageData:e}}function d(n,t){if(!n.hasOwnProperty(t))throw new Error("Undefined state "+t+" in simple mode")}function c(n,t){if(!n)return/(?:)/;var e="";return n instanceof RegExp?(n.ignoreCase&&(e="i"),n.unicode&&(e+="u"),n=n.source):n=String(n),new RegExp("^(?:"+n+")",e)}function x(n){if(!n)return null;if(n.apply)return n;if(typeof n=="string")return n.replace(/\./g," ");for(var t=[],e=0;e<n.length;e++)t.push(n[e]&&n[e].replace(/\./g," "));return t}function k(n,t){(n.next||n.push)&&d(t,n.next||n.push),this.regex=c(n.regex),this.token=x(n.token),this.data=n}function l(n){return function(t,e){if(e.pending){var f=e.pending.shift();return e.pending.length==0&&(e.pending=null),t.pos+=f.text.length,f.token}for(var u=n[e.state],s=0;s<u.length;s++){var i=u[s],r=(!i.data.sol||t.sol())&&t.match(i.regex);if(r){i.data.next?e.state=i.data.next:i.data.push?((e.stack||(e.stack=[])).push(e.state),e.state=i.data.push):i.data.pop&&e.stack&&e.stack.length&&(e.state=e.stack.pop()),i.data.indent&&e.indent.push(t.indentation()+t.indentUnit),i.data.dedent&&e.indent.pop();var o=i.token;if(o&&o.apply&&(o=o(r)),r.length>2&&i.token&&typeof i.token!="string"){e.pending=[];for(var g=2;g<r.length;g++)r[g]&&e.pending.push({text:r[g],token:i.token[g-1]});return t.backUp(r[0].length-(r[1]?r[1].length:0)),o[0]}else return o&&o.join?o[0]:o}}return t.next(),null}}function h(n,t){return function(e,f){if(e.indent==null||t.dontIndentStates&&t.dontIndentStates.indexOf(e.state)>-1)return null;var u=e.indent.length-1,s=n[e.state];n:for(;;){for(var i=0;i<s.length;i++){var r=s[i];if(r.data.dedent&&r.data.dedentIfLineStart!==!1){var o=r.regex.exec(f);if(o&&o[0]){u--,(r.next||r.push)&&(s=n[r.next||r.push]),f=f.slice(o[0].length);continue n}}}break}return u<0?0:e.indent[u]}}const b=p({start:[{regex:/b?"/,token:"string",next:"string"},{regex:/b?r"/,token:"string",next:"string_raw"},{regex:/b?r#+"/,token:"string",next:"string_raw_hash"},{regex:/'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/,token:"string.special"},{regex:/b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/,token:"string.special"},{regex:/(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,token:"number"},{regex:/(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,token:"keyword"},{regex:/\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/,token:"atom"},{regex:/\b(?:true|false|Some|None|Ok|Err)\b/,token:"builtin"},{regex:/\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/#!?\[.*\]/,token:"meta"},{regex:/\/\/.*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/[a-zA-Z_]\w*!/,token:"macroName"},{regex:/[a-zA-Z_]\w*/,token:"variable"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0}],string:[{regex:/"/,token:"string",next:"start"},{regex:/(?:[^\\"]|\\(?:.|$))*/,token:"string"}],string_raw:[{regex:/"/,token:"string",next:"start"},{regex:/[^"]*/,token:"string"}],string_raw_hash:[{regex:/"#+/,token:"string",next:"start"},{regex:/(?:[^"]|"(?!#))*/,token:"string"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],languageData:{name:"rust",dontIndentStates:["comment"],indentOnInput:/^\s*\}$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}});exports.rust=b;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
function p(n) {
|
|
2
|
+
d(n, "start");
|
|
3
|
+
var t = {}, e = n.languageData || {}, u = !1;
|
|
4
|
+
for (var f in n) if (f != e && n.hasOwnProperty(f))
|
|
5
|
+
for (var s = t[f] = [], i = n[f], r = 0; r < i.length; r++) {
|
|
6
|
+
var o = i[r];
|
|
7
|
+
s.push(new k(o, n)), (o.indent || o.dedent) && (u = !0);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
name: e.name,
|
|
11
|
+
startState: function() {
|
|
12
|
+
return { state: "start", pending: null, indent: u ? [] : null };
|
|
13
|
+
},
|
|
14
|
+
copyState: function(g) {
|
|
15
|
+
var a = { state: g.state, pending: g.pending, indent: g.indent && g.indent.slice(0) };
|
|
16
|
+
return g.stack && (a.stack = g.stack.slice(0)), a;
|
|
17
|
+
},
|
|
18
|
+
token: l(t),
|
|
19
|
+
indent: h(t, e),
|
|
20
|
+
mergeTokens: e.mergeTokens,
|
|
21
|
+
languageData: e
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function d(n, t) {
|
|
25
|
+
if (!n.hasOwnProperty(t))
|
|
26
|
+
throw new Error("Undefined state " + t + " in simple mode");
|
|
27
|
+
}
|
|
28
|
+
function x(n, t) {
|
|
29
|
+
if (!n) return /(?:)/;
|
|
30
|
+
var e = "";
|
|
31
|
+
return n instanceof RegExp ? (n.ignoreCase && (e = "i"), n.unicode && (e += "u"), n = n.source) : n = String(n), new RegExp("^(?:" + n + ")", e);
|
|
32
|
+
}
|
|
33
|
+
function c(n) {
|
|
34
|
+
if (!n) return null;
|
|
35
|
+
if (n.apply) return n;
|
|
36
|
+
if (typeof n == "string") return n.replace(/\./g, " ");
|
|
37
|
+
for (var t = [], e = 0; e < n.length; e++)
|
|
38
|
+
t.push(n[e] && n[e].replace(/\./g, " "));
|
|
39
|
+
return t;
|
|
40
|
+
}
|
|
41
|
+
function k(n, t) {
|
|
42
|
+
(n.next || n.push) && d(t, n.next || n.push), this.regex = x(n.regex), this.token = c(n.token), this.data = n;
|
|
43
|
+
}
|
|
44
|
+
function l(n) {
|
|
45
|
+
return function(t, e) {
|
|
46
|
+
if (e.pending) {
|
|
47
|
+
var u = e.pending.shift();
|
|
48
|
+
return e.pending.length == 0 && (e.pending = null), t.pos += u.text.length, u.token;
|
|
49
|
+
}
|
|
50
|
+
for (var f = n[e.state], s = 0; s < f.length; s++) {
|
|
51
|
+
var i = f[s], r = (!i.data.sol || t.sol()) && t.match(i.regex);
|
|
52
|
+
if (r) {
|
|
53
|
+
i.data.next ? e.state = i.data.next : i.data.push ? ((e.stack || (e.stack = [])).push(e.state), e.state = i.data.push) : i.data.pop && e.stack && e.stack.length && (e.state = e.stack.pop()), i.data.indent && e.indent.push(t.indentation() + t.indentUnit), i.data.dedent && e.indent.pop();
|
|
54
|
+
var o = i.token;
|
|
55
|
+
if (o && o.apply && (o = o(r)), r.length > 2 && i.token && typeof i.token != "string") {
|
|
56
|
+
e.pending = [];
|
|
57
|
+
for (var g = 2; g < r.length; g++)
|
|
58
|
+
r[g] && e.pending.push({ text: r[g], token: i.token[g - 1] });
|
|
59
|
+
return t.backUp(r[0].length - (r[1] ? r[1].length : 0)), o[0];
|
|
60
|
+
} else return o && o.join ? o[0] : o;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return t.next(), null;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function h(n, t) {
|
|
67
|
+
return function(e, u) {
|
|
68
|
+
if (e.indent == null || t.dontIndentStates && t.dontIndentStates.indexOf(e.state) > -1)
|
|
69
|
+
return null;
|
|
70
|
+
var f = e.indent.length - 1, s = n[e.state];
|
|
71
|
+
n: for (; ; ) {
|
|
72
|
+
for (var i = 0; i < s.length; i++) {
|
|
73
|
+
var r = s[i];
|
|
74
|
+
if (r.data.dedent && r.data.dedentIfLineStart !== !1) {
|
|
75
|
+
var o = r.regex.exec(u);
|
|
76
|
+
if (o && o[0]) {
|
|
77
|
+
f--, (r.next || r.push) && (s = n[r.next || r.push]), u = u.slice(o[0].length);
|
|
78
|
+
continue n;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
return f < 0 ? 0 : e.indent[f];
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const m = p({
|
|
88
|
+
start: [
|
|
89
|
+
// string and byte string
|
|
90
|
+
{ regex: /b?"/, token: "string", next: "string" },
|
|
91
|
+
// raw string and raw byte string
|
|
92
|
+
{ regex: /b?r"/, token: "string", next: "string_raw" },
|
|
93
|
+
{ regex: /b?r#+"/, token: "string", next: "string_raw_hash" },
|
|
94
|
+
// character
|
|
95
|
+
{ regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string.special" },
|
|
96
|
+
// byte
|
|
97
|
+
{ regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string.special" },
|
|
98
|
+
{
|
|
99
|
+
regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,
|
|
100
|
+
token: "number"
|
|
101
|
+
},
|
|
102
|
+
{ regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"] },
|
|
103
|
+
{ regex: /(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword" },
|
|
104
|
+
{ regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom" },
|
|
105
|
+
{ regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin" },
|
|
106
|
+
{
|
|
107
|
+
regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,
|
|
108
|
+
token: ["keyword", null, "def"]
|
|
109
|
+
},
|
|
110
|
+
{ regex: /#!?\[.*\]/, token: "meta" },
|
|
111
|
+
{ regex: /\/\/.*/, token: "comment" },
|
|
112
|
+
{ regex: /\/\*/, token: "comment", next: "comment" },
|
|
113
|
+
{ regex: /[-+\/*=<>!]+/, token: "operator" },
|
|
114
|
+
{ regex: /[a-zA-Z_]\w*!/, token: "macroName" },
|
|
115
|
+
{ regex: /[a-zA-Z_]\w*/, token: "variable" },
|
|
116
|
+
{ regex: /[\{\[\(]/, indent: !0 },
|
|
117
|
+
{ regex: /[\}\]\)]/, dedent: !0 }
|
|
118
|
+
],
|
|
119
|
+
string: [
|
|
120
|
+
{ regex: /"/, token: "string", next: "start" },
|
|
121
|
+
{ regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string" }
|
|
122
|
+
],
|
|
123
|
+
string_raw: [
|
|
124
|
+
{ regex: /"/, token: "string", next: "start" },
|
|
125
|
+
{ regex: /[^"]*/, token: "string" }
|
|
126
|
+
],
|
|
127
|
+
string_raw_hash: [
|
|
128
|
+
{ regex: /"#+/, token: "string", next: "start" },
|
|
129
|
+
{ regex: /(?:[^"]|"(?!#))*/, token: "string" }
|
|
130
|
+
],
|
|
131
|
+
comment: [
|
|
132
|
+
{ regex: /.*?\*\//, token: "comment", next: "start" },
|
|
133
|
+
{ regex: /.*/, token: "comment" }
|
|
134
|
+
],
|
|
135
|
+
languageData: {
|
|
136
|
+
name: "rust",
|
|
137
|
+
dontIndentStates: ["comment"],
|
|
138
|
+
indentOnInput: /^\s*\}$/,
|
|
139
|
+
commentTokens: { line: "//", block: { open: "/*", close: "*/" } }
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
export {
|
|
143
|
+
m as rust
|
|
144
|
+
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { EditorProps, EditorExposed } from '../types/editor';
|
|
2
2
|
declare const __VLS_export: import("vue").DefineComponent<EditorProps, EditorExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
|
-
"update:modelValue": (value: string) => any;
|
|
4
|
-
change: (value: string) => any;
|
|
5
|
-
save: () => any;
|
|
6
|
-
focus: () => any;
|
|
7
3
|
blur: () => any;
|
|
4
|
+
change: (value: string) => any;
|
|
8
5
|
drop: (files: File[]) => any;
|
|
6
|
+
focus: () => any;
|
|
7
|
+
"update:modelValue": (value: string) => any;
|
|
8
|
+
save: () => any;
|
|
9
9
|
}, string, import("vue").PublicProps, Readonly<EditorProps> & Readonly<{
|
|
10
|
-
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
11
|
-
onChange?: ((value: string) => any) | undefined;
|
|
12
|
-
onSave?: (() => any) | undefined;
|
|
13
|
-
onFocus?: (() => any) | undefined;
|
|
14
10
|
onBlur?: (() => any) | undefined;
|
|
11
|
+
onChange?: ((value: string) => any) | undefined;
|
|
15
12
|
onDrop?: ((files: File[]) => any) | undefined;
|
|
13
|
+
onFocus?: (() => any) | undefined;
|
|
14
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
15
|
+
onSave?: (() => any) | undefined;
|
|
16
16
|
}>, {
|
|
17
17
|
modelValue: string;
|
|
18
18
|
lineNumbers: boolean;
|
|
@@ -21,6 +21,8 @@ declare const __VLS_export: import("vue").DefineComponent<EditorProps, EditorExp
|
|
|
21
21
|
vimMode: boolean;
|
|
22
22
|
locale: string | import("..").CustomLocale;
|
|
23
23
|
theme: "light" | "dark";
|
|
24
|
+
codeTheme: "auto" | import("../types/editor").CodeThemeName;
|
|
25
|
+
codeLineNumbers: boolean;
|
|
24
26
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
27
|
declare const _default: typeof __VLS_export;
|
|
26
28
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnaEditor.vue.d.ts","sourceRoot":"","sources":["../../../src/components/UnaEditor.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UnaEditor.vue.d.ts","sourceRoot":"","sources":["../../../src/components/UnaEditor.vue"],"names":[],"mappings":"AAwKA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqLlE,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;6EAKhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -16,5 +16,7 @@ export declare function useEditor(container: Ref<HTMLElement | undefined>, props
|
|
|
16
16
|
insertText: (text: string) => void;
|
|
17
17
|
getHeadings: () => Heading[];
|
|
18
18
|
scrollToLine: (lineNumber: number) => void;
|
|
19
|
+
undoHistory: () => boolean;
|
|
20
|
+
redoHistory: () => boolean;
|
|
19
21
|
};
|
|
20
22
|
//# sourceMappingURL=useEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditor.d.ts","sourceRoot":"","sources":["../../../src/composables/useEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAsD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useEditor.d.ts","sourceRoot":"","sources":["../../../src/composables/useEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAsD,MAAM,kBAAkB,CAAC;AAiBlG,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAa,MAAM,iBAAiB,CAAC;AA6CvE,wBAAgB,SAAS,CACvB,SAAS,EAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,EACvC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE;IACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAClC;;;wBAgWwB,MAAM;yBAOL,UAAU,GAAG,SAAS;uBAItB,MAAM;uBAkBR,OAAO,EAAE;+BAwBC,MAAM;;;EAoDzC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create code block decorator extension
|
|
3
|
+
* @param showLineNumbers - Whether to show line numbers
|
|
4
|
+
*/
|
|
5
|
+
export declare function createCodeBlockDecoratorExtension(showLineNumbers: boolean): import("@codemirror/state").Extension[];
|
|
6
|
+
//# sourceMappingURL=codeBlockDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeBlockDecorator.d.ts","sourceRoot":"","sources":["../../../src/extensions/codeBlockDecorator.ts"],"names":[],"mappings":"AAqFA;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,OAAO,2CAsCzE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import type { CodeTheme } from '../types/editor';
|
|
3
|
+
/**
|
|
4
|
+
* Create code theme extension
|
|
5
|
+
* Applies theme colors to code blocks via line-scoped CSS selectors and syntax highlighting
|
|
6
|
+
*/
|
|
7
|
+
export declare function createCodeThemeExtension(theme: CodeTheme): Extension;
|
|
8
|
+
//# sourceMappingURL=codeThemeExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeThemeExtension.d.ts","sourceRoot":"","sources":["../../../src/extensions/codeThemeExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAiEpE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Extension } from '@codemirror/state';
|
|
2
|
+
import type { RenderHooks } from '../types/editor';
|
|
2
3
|
export declare const remeasureEffect: import("@codemirror/state").StateEffectType<null>;
|
|
3
4
|
export declare function setupVimLogicalNavigation(): void;
|
|
4
|
-
export declare function createLivePreviewExtensions(): Extension;
|
|
5
|
+
export declare function createLivePreviewExtensions(renderHooks?: RenderHooks): Extension;
|
|
5
6
|
export declare function createCodeDecorationExtension(): Extension;
|
|
6
7
|
//# sourceMappingURL=hybridMarkdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybridMarkdown.d.ts","sourceRoot":"","sources":["../../../src/extensions/hybridMarkdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"hybridMarkdown.d.ts","sourceRoot":"","sources":["../../../src/extensions/hybridMarkdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAIlF,OAAO,KAAK,EAOV,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,eAAe,mDAA6B,CAAC;AAI1D,wBAAgB,yBAAyB,SAoDxC;AAu7BD,wBAAgB,2BAA2B,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAahF;AA4CD,wBAAgB,6BAA6B,IAAI,SAAS,CAOzD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LanguageDescription, LanguageSupport } from '@codemirror/language';
|
|
2
|
+
/**
|
|
3
|
+
* Get language support for a given language name
|
|
4
|
+
* @param language - Language name (e.g., 'typescript', 'python')
|
|
5
|
+
* @returns Language support or undefined if not supported
|
|
6
|
+
*/
|
|
7
|
+
export declare function getLanguageSupport(language: string): Promise<LanguageSupport | undefined>;
|
|
8
|
+
/**
|
|
9
|
+
* Get list of all supported languages
|
|
10
|
+
*/
|
|
11
|
+
export declare function getSupportedLanguages(): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Check if a language is supported
|
|
14
|
+
*/
|
|
15
|
+
export declare function isLanguageSupported(language: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Create LanguageDescription array for markdown codeLanguages
|
|
18
|
+
*/
|
|
19
|
+
export declare function createLanguageDescriptions(): LanguageDescription[];
|
|
20
|
+
//# sourceMappingURL=languageSupport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageSupport.d.ts","sourceRoot":"","sources":["../../../src/extensions/languageSupport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAoE5E;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAuB/F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,mBAAmB,EAAE,CAwBlE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Extension } from '@codemirror/state';
|
|
2
|
+
import { EditorView } from '@codemirror/view';
|
|
3
|
+
export declare function enterStructuredTableFromAdjacentText(view: EditorView, direction: 1 | -1, editing: boolean, position?: number): boolean;
|
|
4
|
+
export declare function setupStructuredTableVim(): void;
|
|
5
|
+
export declare function createStructuredTableExtensions(): Extension;
|
|
6
|
+
export declare function isStructuredTableOverlayTarget(target: EventTarget | null): boolean;
|
|
7
|
+
//# sourceMappingURL=structuredTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredTable.d.ts","sourceRoot":"","sources":["../../../src/extensions/structuredTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAAc,UAAU,EAAwE,MAAM,kBAAkB,CAAC;AAkyDhI,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAiC,GACxC,OAAO,CAiCT;AA41BD,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AA+ED,wBAAgB,+BAA+B,IAAI,SAAS,CA2B3D;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAElF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { EditorState } from '@codemirror/state';
|
|
2
|
+
interface TreeNode {
|
|
3
|
+
name: string;
|
|
4
|
+
from: number;
|
|
5
|
+
to: number;
|
|
6
|
+
firstChild: TreeNode | null;
|
|
7
|
+
nextSibling: TreeNode | null;
|
|
8
|
+
parent: TreeNode | null;
|
|
9
|
+
}
|
|
10
|
+
export type TableAlignment = 'none' | 'left' | 'right' | 'center';
|
|
11
|
+
export interface TableCellMapping {
|
|
12
|
+
row: number;
|
|
13
|
+
col: number;
|
|
14
|
+
from: number;
|
|
15
|
+
to: number;
|
|
16
|
+
contentFrom: number;
|
|
17
|
+
contentTo: number;
|
|
18
|
+
text: string;
|
|
19
|
+
isHeader: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface TableRowMapping {
|
|
22
|
+
row: number;
|
|
23
|
+
from: number;
|
|
24
|
+
to: number;
|
|
25
|
+
cells: TableCellMapping[];
|
|
26
|
+
isHeader: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface TableMapping {
|
|
29
|
+
from: number;
|
|
30
|
+
to: number;
|
|
31
|
+
delimiterFrom: number;
|
|
32
|
+
delimiterTo: number;
|
|
33
|
+
columnCount: number;
|
|
34
|
+
alignments: TableAlignment[];
|
|
35
|
+
rows: TableRowMapping[];
|
|
36
|
+
}
|
|
37
|
+
export interface TableRewriteResult {
|
|
38
|
+
text: string;
|
|
39
|
+
focusRow: number;
|
|
40
|
+
focusCol: number;
|
|
41
|
+
focusFrom: number;
|
|
42
|
+
focusTo: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function normalizePastedText(text: string): string;
|
|
45
|
+
export declare function normalizeCellText(text: string): string;
|
|
46
|
+
export declare function findTableMappingAt(state: EditorState, pos: number): TableMapping | null;
|
|
47
|
+
export declare function findTableMappingsInRange(state: EditorState, from: number, to: number): TableMapping[];
|
|
48
|
+
export declare function updateTableCell(table: TableMapping, row: number, col: number, text: string): TableRewriteResult;
|
|
49
|
+
export declare function insertTableRow(table: TableMapping, rowIndex: number, position: 'before' | 'after'): TableRewriteResult;
|
|
50
|
+
export declare function insertTableColumn(table: TableMapping, colIndex: number, position: 'before' | 'after'): TableRewriteResult;
|
|
51
|
+
export declare function deleteTableRow(table: TableMapping, row: number): TableRewriteResult | null;
|
|
52
|
+
export declare function deleteTableColumn(table: TableMapping, col: number): TableRewriteResult | null;
|
|
53
|
+
export declare function isCellEmpty(table: TableMapping, row: number, col: number): boolean;
|
|
54
|
+
export declare function isRowEmpty(table: TableMapping, row: number): boolean;
|
|
55
|
+
export declare function parseInlinePreviewText(text: string): TreeNode;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=structuredTableModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredTableModel.d.ts","sourceRoot":"","sources":["../../../src/extensions/structuredTableModel.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const version: string;
|
|
2
2
|
export { default as UnaEditor } from './components/UnaEditor.vue';
|
|
3
|
-
export type { EditorProps, EditorEvents, EditorExposed, CustomLocale, Locale, } from './types/editor';
|
|
3
|
+
export type { EditorProps, EditorEvents, EditorExposed, ImageRenderContext, ImageRenderResult, LinkRenderContext, LinkRenderResult, RenderHooks, CustomLocale, Locale, } from './types/editor';
|
|
4
4
|
export { locales, defaultLocale, defineLocale, zhCN, enUS } from './locales';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,QAAyB,CAAC;AAG9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGlE,YAAY,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,QAAyB,CAAC;AAG9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGlE,YAAY,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../src/locales/en-US.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../src/locales/en-US.ts"],"names":[],"mappings":";;;;;;AAAA,wBAME"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CodeTheme } from '../types/editor';
|
|
2
|
+
export declare const CODE_THEMES: Record<string, CodeTheme>;
|
|
3
|
+
export declare function getCodeTheme(name: string): CodeTheme | undefined;
|
|
4
|
+
export declare function getDefaultCodeTheme(editorTheme: 'light' | 'dark'): CodeTheme;
|
|
5
|
+
//# sourceMappingURL=codeThemes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeThemes.d.ts","sourceRoot":"","sources":["../../../src/themes/codeThemes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAiOjD,CAAC;AAGF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEhE;AAGD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5E"}
|
|
@@ -1,9 +1,100 @@
|
|
|
1
1
|
import type { EditorView } from '@codemirror/view';
|
|
2
|
+
/**
|
|
3
|
+
* Shared document position for render hook contexts.
|
|
4
|
+
*/
|
|
5
|
+
export interface RenderHookPosition {
|
|
6
|
+
from: number;
|
|
7
|
+
to: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Inline style object accepted by render hooks.
|
|
11
|
+
*/
|
|
12
|
+
export interface RenderHookStyle {
|
|
13
|
+
[property: string]: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Dataset object accepted by render hooks.
|
|
17
|
+
*/
|
|
18
|
+
export interface RenderHookDataset {
|
|
19
|
+
[key: string]: string;
|
|
20
|
+
}
|
|
21
|
+
export type CodeThemeName = 'one-dark' | 'dracula' | 'monokai' | 'solarized-dark' | 'nord' | 'tokyo-night' | 'github-light' | 'solarized-light' | 'atom-one-light';
|
|
22
|
+
export interface CodeThemeColors {
|
|
23
|
+
background: string;
|
|
24
|
+
foreground: string;
|
|
25
|
+
selection: string;
|
|
26
|
+
lineNumber: string;
|
|
27
|
+
keyword: string;
|
|
28
|
+
function: string;
|
|
29
|
+
string: string;
|
|
30
|
+
number: string;
|
|
31
|
+
comment: string;
|
|
32
|
+
operator: string;
|
|
33
|
+
variable: string;
|
|
34
|
+
type: string;
|
|
35
|
+
constant?: string;
|
|
36
|
+
property?: string;
|
|
37
|
+
tag?: string;
|
|
38
|
+
attribute?: string;
|
|
39
|
+
regexp?: string;
|
|
40
|
+
escape?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface CodeTheme {
|
|
43
|
+
name: string;
|
|
44
|
+
type: 'light' | 'dark';
|
|
45
|
+
colors: CodeThemeColors;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Context passed to image render hooks.
|
|
49
|
+
*/
|
|
50
|
+
export interface ImageRenderContext {
|
|
51
|
+
src: string;
|
|
52
|
+
alt: string;
|
|
53
|
+
title?: string;
|
|
54
|
+
raw: string;
|
|
55
|
+
position: RenderHookPosition;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Partial render result returned from image render hooks.
|
|
59
|
+
*/
|
|
60
|
+
export interface ImageRenderResult {
|
|
61
|
+
src: string;
|
|
62
|
+
className?: string;
|
|
63
|
+
dataset?: RenderHookDataset;
|
|
64
|
+
style?: RenderHookStyle;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Context passed to link render hooks.
|
|
68
|
+
*/
|
|
69
|
+
export interface LinkRenderContext {
|
|
70
|
+
href: string;
|
|
71
|
+
text: string;
|
|
72
|
+
title?: string;
|
|
73
|
+
raw: string;
|
|
74
|
+
position: RenderHookPosition;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Partial render result returned from link render hooks.
|
|
78
|
+
*/
|
|
79
|
+
export interface LinkRenderResult {
|
|
80
|
+
href: string;
|
|
81
|
+
className?: string;
|
|
82
|
+
dataset?: RenderHookDataset;
|
|
83
|
+
style?: RenderHookStyle;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Optional render-time hooks for live preview elements.
|
|
87
|
+
*/
|
|
88
|
+
export interface RenderHooks {
|
|
89
|
+
image?: (context: ImageRenderContext) => Partial<ImageRenderResult> | void;
|
|
90
|
+
link?: (context: LinkRenderContext) => Partial<LinkRenderResult> | void;
|
|
91
|
+
}
|
|
2
92
|
export interface EditorProps {
|
|
3
93
|
modelValue: string;
|
|
4
94
|
lineNumbers?: boolean;
|
|
5
95
|
lineWrap?: boolean;
|
|
6
96
|
livePreview?: boolean;
|
|
97
|
+
renderHooks?: RenderHooks;
|
|
7
98
|
vimMode?: boolean;
|
|
8
99
|
locale?: string | CustomLocale;
|
|
9
100
|
placeholder?: string;
|
|
@@ -13,6 +104,18 @@ export interface EditorProps {
|
|
|
13
104
|
fontFamily?: string;
|
|
14
105
|
codeFontFamily?: string;
|
|
15
106
|
fontSize?: number;
|
|
107
|
+
/**
|
|
108
|
+
* Code block theme
|
|
109
|
+
* - 'auto': Follow editor theme
|
|
110
|
+
* - CodeThemeName: Use specified color scheme
|
|
111
|
+
* @default 'auto'
|
|
112
|
+
*/
|
|
113
|
+
codeTheme?: 'auto' | CodeThemeName;
|
|
114
|
+
/**
|
|
115
|
+
* Show line numbers in code blocks
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
codeLineNumbers?: boolean;
|
|
16
119
|
}
|
|
17
120
|
export interface EditorEvents {
|
|
18
121
|
'update:modelValue': (value: string) => void;
|
|
@@ -36,6 +139,8 @@ export interface EditorExposed {
|
|
|
36
139
|
insertText: (text: string) => void;
|
|
37
140
|
getHeadings: () => Heading[];
|
|
38
141
|
scrollToLine: (lineNumber: number) => void;
|
|
142
|
+
undoHistory: () => boolean;
|
|
143
|
+
redoHistory: () => boolean;
|
|
39
144
|
}
|
|
40
145
|
export interface CustomLocale {
|
|
41
146
|
[key: string]: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/types/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/types/editor.ts"],"names":[],"mappings":"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"}
|
package/dist/una-editor.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.una-editor[data-v-
|
|
1
|
+
.una-editor[data-v-d031fa3f]{width:100%;height:100%;min-height:200px;position:relative}.una-editor-fullscreen-browser[data-v-d031fa3f]{position:fixed;inset:0;z-index:9999;background:#fff}.una-editor-fullscreen-tip[data-v-d031fa3f]{position:absolute;top:20px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:10000;pointer-events:none;box-shadow:0 4px 12px #0000004d}.fade-enter-active[data-v-d031fa3f],.fade-leave-active[data-v-d031fa3f]{transition:opacity .3s ease}.fade-enter-from[data-v-d031fa3f],.fade-leave-to[data-v-d031fa3f]{opacity:0}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "una-editor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-alpha.0",
|
|
4
4
|
"description": "Lightweight & high-performance Vue 3 editor powered by CodeMirror 6. Supports Hybrid Markdown and Vim mode.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^10.0.1",
|
|
41
|
-
"@typescript-eslint/eslint-plugin": "^8.57.
|
|
42
|
-
"@typescript-eslint/parser": "^8.57.
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^8.57.1",
|
|
42
|
+
"@typescript-eslint/parser": "^8.57.1",
|
|
43
43
|
"@vitejs/plugin-vue": "^5.2.4",
|
|
44
44
|
"@vue/test-utils": "^2.4.6",
|
|
45
45
|
"concurrently": "^9.2.1",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"jsdom": "^28.1.0",
|
|
49
49
|
"prettier": "^3.8.1",
|
|
50
50
|
"typescript": "^5.9.3",
|
|
51
|
-
"typescript-eslint": "^8.57.
|
|
51
|
+
"typescript-eslint": "^8.57.1",
|
|
52
52
|
"vite": "^7.3.1",
|
|
53
53
|
"vitest": "^4.1.0",
|
|
54
54
|
"vue": "^3.5.30",
|
|
55
|
-
"vue-tsc": "^3.2.
|
|
55
|
+
"vue-tsc": "^3.2.6"
|
|
56
56
|
},
|
|
57
57
|
"keywords": [
|
|
58
58
|
"vue",
|
|
@@ -74,12 +74,20 @@
|
|
|
74
74
|
"homepage": "https://charlestang.github.io/UnaEditor/",
|
|
75
75
|
"dependencies": {
|
|
76
76
|
"@codemirror/commands": "^6.10.3",
|
|
77
|
+
"@codemirror/lang-css": "^6.3.1",
|
|
78
|
+
"@codemirror/lang-java": "^6.0.2",
|
|
79
|
+
"@codemirror/lang-javascript": "^6.2.5",
|
|
77
80
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
81
|
+
"@codemirror/lang-php": "^6.0.2",
|
|
82
|
+
"@codemirror/lang-python": "^6.2.1",
|
|
78
83
|
"@codemirror/language": "^6.12.2",
|
|
84
|
+
"@codemirror/language-data": "^6.5.2",
|
|
85
|
+
"@codemirror/legacy-modes": "^6.5.2",
|
|
79
86
|
"@codemirror/search": "^6.6.0",
|
|
80
87
|
"@codemirror/state": "^6.6.0",
|
|
81
88
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
82
89
|
"@codemirror/view": "^6.40.0",
|
|
90
|
+
"@lezer/highlight": "^1.2.3",
|
|
83
91
|
"@replit/codemirror-vim": "^6.3.0"
|
|
84
92
|
}
|
|
85
93
|
}
|