@maketribe/ms-app 3.0.22 → 3.0.23
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/dist/cjs/components/json-editor/index.d.ts +2 -2
- package/dist/cjs/components/json-editor/json-editor-options.d.ts +1 -1
- package/dist/cjs/components/json-editor/json-editor-options.js +1 -1
- package/dist/cjs/components/json-editor/json-editor-options.js.map +1 -1
- package/dist/cjs/components/json-editor/json-editor.d.ts +2 -2
- package/dist/cjs/components/json-editor/json-editor.js +3 -2
- package/dist/cjs/components/json-editor/json-editor.js.map +1 -1
- package/dist/cjs/core/component/ConfigComponents.js +8 -0
- package/dist/cjs/core/component/ConfigComponents.js.map +1 -1
- package/dist/cjs/dataview/config/ConfigForm.d.ts +2 -2
- package/dist/cjs/dataview/config/ConfigForm.js +27 -5
- package/dist/cjs/dataview/config/ConfigForm.js.map +1 -1
- package/dist/esm/components/json-editor/index.d.ts +2 -2
- package/dist/esm/components/json-editor/json-editor-options.d.ts +1 -1
- package/dist/esm/components/json-editor/json-editor-options.js +1 -1
- package/dist/esm/components/json-editor/json-editor-options.js.map +1 -1
- package/dist/esm/components/json-editor/json-editor.d.ts +2 -2
- package/dist/esm/components/json-editor/json-editor.js +3 -2
- package/dist/esm/components/json-editor/json-editor.js.map +1 -1
- package/dist/esm/core/component/ConfigComponents.js +8 -0
- package/dist/esm/core/component/ConfigComponents.js.map +1 -1
- package/dist/esm/dataview/config/ConfigForm.d.ts +2 -2
- package/dist/esm/dataview/config/ConfigForm.js +27 -5
- package/dist/esm/dataview/config/ConfigForm.js.map +1 -1
- package/dist/style/components/index.css +1 -1
- package/dist/style/components/json-editor.css +1 -0
- package/dist/style/index.css +1 -1
- package/dist/style/src/components/index.scss +1 -0
- package/dist/style/src/components/json-editor.scss +7 -0
- package/dist/style/src/page/dv/index.scss +1 -1
- package/package.json +4 -4
- package/src/components/json-editor/json-editor-options.ts +1 -1
- package/src/components/json-editor/json-editor.tsx +3 -2
- package/src/core/component/ConfigComponents.ts +9 -0
- package/src/dataview/config/ConfigForm.ts +27 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const MKJsonEditor: import("@maketribe/utils").SFCWithInstall<import("vue").DefineComponent<{
|
|
2
2
|
readonly modelValue: {
|
|
3
|
-
readonly type: import("vue").PropType<
|
|
3
|
+
readonly type: import("vue").PropType<any>;
|
|
4
4
|
readonly required: true;
|
|
5
5
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
6
6
|
__mkPropKey: true;
|
|
@@ -10,7 +10,7 @@ export declare const MKJsonEditor: import("@maketribe/utils").SFCWithInstall<imp
|
|
|
10
10
|
"update:model-value": (modelValue: string) => boolean;
|
|
11
11
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
12
|
readonly modelValue: {
|
|
13
|
-
readonly type: import("vue").PropType<
|
|
13
|
+
readonly type: import("vue").PropType<any>;
|
|
14
14
|
readonly required: true;
|
|
15
15
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
16
16
|
__mkPropKey: true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExtractPropTypes } from "vue";
|
|
2
2
|
export declare const jsonEditorProps: {
|
|
3
3
|
readonly modelValue: {
|
|
4
|
-
readonly type: import("vue").PropType<
|
|
4
|
+
readonly type: import("vue").PropType<any>;
|
|
5
5
|
readonly required: true;
|
|
6
6
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
7
7
|
__mkPropKey: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-editor-options.js","sources":["../../../../src/components/json-editor/json-editor-options.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const jsonEditorProps = buildProps({\n modelValue: {\n type:
|
|
1
|
+
{"version":3,"file":"json-editor-options.js","sources":["../../../../src/components/json-editor/json-editor-options.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const jsonEditorProps = buildProps({\n modelValue: {\n type: null,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n} as const);\n\nexport type JsonEditorProps = ExtractPropTypes<typeof jsonEditorProps>;\n\nexport const jsonEditorEmits = {\n \"update:model-value\": (modelValue: string) => true,\n};\n\nexport type jsonEditorEmits = typeof jsonEditorEmits;\n"],"names":["buildProps"],"mappings":";;;;AAGO,MAAM,kBAAkBA,gBAAW,CAAA;AAAA,EACxC,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,IAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF,CAAU,EAAA;AAIH,MAAM,eAAkB,GAAA;AAAA,EAC7B,oBAAA,EAAsB,CAAC,UAAuB,KAAA,IAAA;AAChD;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
readonly modelValue: {
|
|
3
|
-
readonly type: import("vue").PropType<
|
|
3
|
+
readonly type: import("vue").PropType<any>;
|
|
4
4
|
readonly required: true;
|
|
5
5
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
6
6
|
__mkPropKey: true;
|
|
@@ -10,7 +10,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
10
10
|
"update:model-value": (modelValue: string) => boolean;
|
|
11
11
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
12
|
readonly modelValue: {
|
|
13
|
-
readonly type: import("vue").PropType<
|
|
13
|
+
readonly type: import("vue").PropType<any>;
|
|
14
14
|
readonly required: true;
|
|
15
15
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
16
16
|
__mkPropKey: true;
|
|
@@ -6,18 +6,19 @@ var index = require('../../node_modules/.pnpm/@codemirror_lang-json@6.0.1/node_m
|
|
|
6
6
|
var jsonEditorOptions = require('./json-editor-options.js');
|
|
7
7
|
|
|
8
8
|
var jsonEditor = /* @__PURE__ */ vue.defineComponent({
|
|
9
|
-
name: "
|
|
9
|
+
name: "MKJsonEditor",
|
|
10
10
|
props: jsonEditorOptions.jsonEditorProps,
|
|
11
11
|
emits: jsonEditorOptions.jsonEditorEmits,
|
|
12
12
|
setup(props, {
|
|
13
13
|
emit
|
|
14
14
|
}) {
|
|
15
15
|
const modelValue = vue.computed({
|
|
16
|
-
get: () => props.modelValue,
|
|
16
|
+
get: () => props.modelValue || "",
|
|
17
17
|
set: (v) => emit("update:model-value", v)
|
|
18
18
|
});
|
|
19
19
|
return () => {
|
|
20
20
|
return vue.createVNode(vueCodemirror_esm.Codemirror, {
|
|
21
|
+
"class": "mk-json-editor",
|
|
21
22
|
"modelValue": vue.unref(modelValue),
|
|
22
23
|
"onUpdate:modelValue": (v) => modelValue.value = v,
|
|
23
24
|
"disabled": props.disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-editor.js","sources":["../../../../src/components/json-editor/json-editor.tsx"],"sourcesContent":["import { computed, defineComponent, unref } from \"vue\";\nimport { Codemirror } from \"vue-codemirror\";\nimport { json } from \"@codemirror/lang-json\";\nimport { jsonEditorEmits, jsonEditorProps } from \"./json-editor-options\";\n\nexport default defineComponent({\n name: \"
|
|
1
|
+
{"version":3,"file":"json-editor.js","sources":["../../../../src/components/json-editor/json-editor.tsx"],"sourcesContent":["import { computed, defineComponent, unref } from \"vue\";\nimport { Codemirror } from \"vue-codemirror\";\nimport { json } from \"@codemirror/lang-json\";\nimport { jsonEditorEmits, jsonEditorProps } from \"./json-editor-options\";\n\nexport default defineComponent({\n name: \"MKJsonEditor\",\n props: jsonEditorProps,\n emits: jsonEditorEmits,\n setup(props, { emit }) {\n const modelValue = computed({\n get: () => (props.modelValue as string) || \"\",\n set: (v: string) => emit(\"update:model-value\", v),\n });\n\n return () => {\n return (\n <Codemirror\n class=\"mk-json-editor\"\n modelValue={unref(modelValue)}\n onUpdate:modelValue={(v: string) => (modelValue.value = v)}\n disabled={props.disabled}\n extensions={[json()]}\n />\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","jsonEditorProps","emits","jsonEditorEmits","setup","emit","modelValue","computed","get","set","v","_createVNode","Codemirror","unref","value","disabled","json"],"mappings":";;;;;;;AAKA,iCAA+BA,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,cAAA;AAAA,EACNC,KAAOC,EAAAA,iCAAAA;AAAAA,EACPC,KAAOC,EAAAA,iCAAAA;AAAAA,EACPC,MAAMJ,KAAO,EAAA;AAAA,IAAEK,IAAAA;AAAAA,GAAQ,EAAA;AACrB,IAAA,MAAMC,aAAaC,YAAS,CAAA;AAAA,MAC1BC,GAAAA,EAAKA,MAAOR,KAAAA,CAAMM,UAAyB,IAAA,EAAA;AAAA,MAC3CG,GAAMC,EAAAA,CAAAA,CAAAA,KAAcL,IAAK,CAAA,oBAAA,EAAsBK,CAAC,CAAA;AAAA,KACjD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAAC,gBAAAC,4BAAA,EAAA;AAAA,QAAA,OAAA,EAAA,gBAAA;AAAA,QAAA,YAAA,EAGgBC,UAAMP,UAAU,CAAA;AAAA,QAAC,qBAAA,EACPI,CAAeJ,CAAAA,KAAAA,UAAAA,CAAWQ,KAAQJ,GAAAA,CAAAA;AAAAA,QAAE,YAChDV,KAAMe,CAAAA,QAAAA;AAAAA,QAAQ,YAAA,EACZ,CAACC,UAAAA,EAAM,CAAA;AAAA,SAAC,IAAA,CAAA,CAAA;AAAA,KAG1B,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var vue = require('vue');
|
|
3
4
|
var elementPlus = require('element-plus');
|
|
4
5
|
var dm = require('@maketribe/dm');
|
|
5
6
|
|
|
@@ -19,6 +20,13 @@ class ConfigComponents extends dm.Components {
|
|
|
19
20
|
title: "\u6570\u503C\u8F93\u5165\u6846",
|
|
20
21
|
component: elementPlus.ElInputNumber
|
|
21
22
|
});
|
|
23
|
+
this.registerComponent({
|
|
24
|
+
name: "MKConfigJsonEditor",
|
|
25
|
+
title: "JSON",
|
|
26
|
+
component: vue.defineAsyncComponent(
|
|
27
|
+
() => Promise.resolve().then(function () { return require('../../components/json-editor/index.js'); })
|
|
28
|
+
)
|
|
29
|
+
});
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
32
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigComponents.js","sources":["../../../../src/core/component/ConfigComponents.ts"],"sourcesContent":["import { ElInput, ElInputNumber } from \"element-plus\";\nimport { Components } from \"@maketribe/dm\";\n\nexport class ConfigComponents extends Components {\n constructor() {\n super();\n\n this.registerComponent({\n name: \"MKConfigInput\",\n title: \"输入框\",\n component: ElInput,\n defaultProps: {\n type: \"textarea\",\n },\n });\n\n this.registerComponent({\n name: \"MKConfigInputNumber\",\n title: \"数值输入框\",\n component: ElInputNumber,\n });\n }\n}\n"],"names":["Components","ElInput","ElInputNumber"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigComponents.js","sources":["../../../../src/core/component/ConfigComponents.ts"],"sourcesContent":["import { defineAsyncComponent } from \"vue\";\nimport { ElInput, ElInputNumber } from \"element-plus\";\nimport { Components } from \"@maketribe/dm\";\n\nexport class ConfigComponents extends Components {\n constructor() {\n super();\n\n this.registerComponent({\n name: \"MKConfigInput\",\n title: \"输入框\",\n component: ElInput,\n defaultProps: {\n type: \"textarea\",\n },\n });\n\n this.registerComponent({\n name: \"MKConfigInputNumber\",\n title: \"数值输入框\",\n component: ElInputNumber,\n });\n\n this.registerComponent({\n name: \"MKConfigJsonEditor\",\n title: \"JSON\",\n component: defineAsyncComponent(\n () => import(\"../../components/json-editor\")\n ),\n });\n }\n}\n"],"names":["Components","ElInput","ElInputNumber","defineAsyncComponent"],"mappings":";;;;;;AAIO,MAAM,yBAAyBA,aAAW,CAAA;AAAA,EAC/C,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA,CAAA;AAEN,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,eAAA;AAAA,MACN,KAAO,EAAA,oBAAA;AAAA,MACP,SAAW,EAAAC,mBAAA;AAAA,MACX,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,UAAA;AAAA,OACR;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,qBAAA;AAAA,MACN,KAAO,EAAA,gCAAA;AAAA,MACP,SAAW,EAAAC,yBAAA;AAAA,KACZ,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,oBAAA;AAAA,MACN,KAAO,EAAA,MAAA;AAAA,MACP,SAAW,EAAAC,wBAAA;AAAA,QACT,MAAM,oDAAO,uCAA8B,KAAA;AAAA,OAC7C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
|
|
@@ -17,6 +17,6 @@ export declare class ConfigForm extends DataForm<Config> implements ITypeResolve
|
|
|
17
17
|
handleTypeChange(data: Config | null): void;
|
|
18
18
|
formatItem(item: Config): Config;
|
|
19
19
|
formatSubmitData(data: any): any;
|
|
20
|
-
resolveType(type: string): "MKConfigInputNumber" | "MKConfigInput";
|
|
21
|
-
resolveItemType(config: Config): "MKConfigInputNumber" | "MKConfigInput";
|
|
20
|
+
resolveType(type: string): "MKConfigInputNumber" | "MKConfigJsonEditor" | "MKConfigInput";
|
|
21
|
+
resolveItemType(config: Config): "MKConfigInputNumber" | "MKConfigJsonEditor" | "MKConfigInput";
|
|
22
22
|
}
|
|
@@ -32,7 +32,8 @@ class ConfigForm extends dm.DataForm {
|
|
|
32
32
|
componentProps: {
|
|
33
33
|
options: [
|
|
34
34
|
{ value: "string", label: "\u5B57\u7B26\u4E32" },
|
|
35
|
-
{ value: "int", label: "\u6574\u6570" }
|
|
35
|
+
{ value: "int", label: "\u6574\u6570" },
|
|
36
|
+
{ value: "json", label: "JSON" }
|
|
36
37
|
],
|
|
37
38
|
onChange: () => {
|
|
38
39
|
this.handleTypeChange(this.data);
|
|
@@ -47,6 +48,20 @@ class ConfigForm extends dm.DataForm {
|
|
|
47
48
|
label: "\u914D\u7F6E\u503C",
|
|
48
49
|
required: true,
|
|
49
50
|
defaultValue: null,
|
|
51
|
+
rules: [
|
|
52
|
+
{
|
|
53
|
+
validator: (rule, value, callback) => {
|
|
54
|
+
if (this.data?.type === "json") {
|
|
55
|
+
try {
|
|
56
|
+
JSON.parse(value);
|
|
57
|
+
} catch (e) {
|
|
58
|
+
callback(new Error("JSON\u683C\u5F0F\u9519\u8BEF"));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
callback();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
],
|
|
50
65
|
componentInfo: this.resolveType(defaultType)
|
|
51
66
|
})
|
|
52
67
|
]);
|
|
@@ -63,19 +78,26 @@ class ConfigForm extends dm.DataForm {
|
|
|
63
78
|
}
|
|
64
79
|
formatItem(item) {
|
|
65
80
|
let value = item.value;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
81
|
+
if (item.type !== "json") {
|
|
82
|
+
try {
|
|
83
|
+
value = JSON.parse(item.value);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
}
|
|
69
86
|
}
|
|
70
87
|
return { ...item, value };
|
|
71
88
|
}
|
|
72
89
|
formatSubmitData(data) {
|
|
73
|
-
return {
|
|
90
|
+
return {
|
|
91
|
+
...data,
|
|
92
|
+
value: data.type === "json" ? data.value : JSON.stringify(data.value)
|
|
93
|
+
};
|
|
74
94
|
}
|
|
75
95
|
resolveType(type) {
|
|
76
96
|
switch (type) {
|
|
77
97
|
case "int":
|
|
78
98
|
return "MKConfigInputNumber";
|
|
99
|
+
case "json":
|
|
100
|
+
return "MKConfigJsonEditor";
|
|
79
101
|
default:
|
|
80
102
|
return "MKConfigInput";
|
|
81
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigForm.js","sources":["../../../../src/dataview/config/ConfigForm.ts"],"sourcesContent":["import {\n DataForm,\n DataFormOptions,\n FormColumn,\n IComponents,\n} from \"@maketribe/dm\";\nimport { defineDataForm } from \"../../define-data-form\";\nimport { ConfigComponents, ITypeResolver } from \"../../core\";\n\nexport type Config<T = any> = {\n id: string;\n key: string;\n type: string;\n value: T;\n};\n\nexport type ConfigFormOptions = DataFormOptions & {\n typeResolver?: ITypeResolver<Config>;\n configComponent?: IComponents;\n};\n\nexport class ConfigForm\n extends DataForm<Config>\n implements ITypeResolver<Config>\n{\n configComponent: IComponents;\n\n constructor(options: ConfigFormOptions = {}) {\n super({ name: \"ms-cfg\", ...options });\n\n this.configComponent = options.configComponent ?? new ConfigComponents();\n }\n\n protected async initialize() {\n await super.initialize();\n\n const defaultType = \"string\";\n this.setColumns([\n new FormColumn({ name: \"id\", label: \"编号\" }),\n new FormColumn({ name: \"key\", label: \"配置键\", required: true }),\n new FormColumn({\n name: \"type\",\n label: \"类型\",\n componentInfo: \"MKFormDataSelect\",\n defaultValue: defaultType,\n required: true,\n componentProps: {\n options: [\n { value: \"string\", label: \"字符串\" },\n { value: \"int\", label: \"整数\" },\n ],\n onChange: () => {\n this.handleTypeChange(this.data);\n\n if (this.data) {\n this.data.value = null;\n }\n },\n },\n }),\n new FormColumn({\n name: \"value\",\n label: \"配置值\",\n required: true,\n defaultValue: null,\n componentInfo: this.resolveType(defaultType),\n }),\n ]);\n\n this.dataChangeEvent.on(({ data }) => {\n this.handleTypeChange(data);\n });\n }\n\n handleTypeChange(data: Config | null) {\n if (!data) {\n return;\n }\n\n const valueFormColumn = this.getColumn(\"value\")!;\n valueFormColumn.componentInfo =\n this.configComponent.resolveComponent(this.resolveItemType(data!)) ||\n this.configComponent.resolveComponent(\"MKFormInput\")!;\n }\n\n formatItem(item: Config): Config {\n let value = item.value;\n\n try {\n
|
|
1
|
+
{"version":3,"file":"ConfigForm.js","sources":["../../../../src/dataview/config/ConfigForm.ts"],"sourcesContent":["import {\n DataForm,\n DataFormOptions,\n FormColumn,\n IComponents,\n} from \"@maketribe/dm\";\nimport { defineDataForm } from \"../../define-data-form\";\nimport { ConfigComponents, ITypeResolver } from \"../../core\";\n\nexport type Config<T = any> = {\n id: string;\n key: string;\n type: string;\n value: T;\n};\n\nexport type ConfigFormOptions = DataFormOptions & {\n typeResolver?: ITypeResolver<Config>;\n configComponent?: IComponents;\n};\n\nexport class ConfigForm\n extends DataForm<Config>\n implements ITypeResolver<Config>\n{\n configComponent: IComponents;\n\n constructor(options: ConfigFormOptions = {}) {\n super({ name: \"ms-cfg\", ...options });\n\n this.configComponent = options.configComponent ?? new ConfigComponents();\n }\n\n protected async initialize() {\n await super.initialize();\n\n const defaultType = \"string\";\n this.setColumns([\n new FormColumn({ name: \"id\", label: \"编号\" }),\n new FormColumn({ name: \"key\", label: \"配置键\", required: true }),\n new FormColumn({\n name: \"type\",\n label: \"类型\",\n componentInfo: \"MKFormDataSelect\",\n defaultValue: defaultType,\n required: true,\n componentProps: {\n options: [\n { value: \"string\", label: \"字符串\" },\n { value: \"int\", label: \"整数\" },\n { value: \"json\", label: \"JSON\" },\n ],\n onChange: () => {\n this.handleTypeChange(this.data);\n\n if (this.data) {\n this.data.value = null;\n }\n },\n },\n }),\n new FormColumn({\n name: \"value\",\n label: \"配置值\",\n required: true,\n defaultValue: null,\n rules: [\n {\n validator: (rule, value, callback) => {\n if (this.data?.type === \"json\") {\n try {\n JSON.parse(value);\n } catch (e) {\n callback(new Error(\"JSON格式错误\"));\n }\n }\n\n callback();\n },\n },\n ],\n componentInfo: this.resolveType(defaultType),\n }),\n ]);\n\n this.dataChangeEvent.on(({ data }) => {\n this.handleTypeChange(data);\n });\n }\n\n handleTypeChange(data: Config | null) {\n if (!data) {\n return;\n }\n\n const valueFormColumn = this.getColumn(\"value\")!;\n valueFormColumn.componentInfo =\n this.configComponent.resolveComponent(this.resolveItemType(data!)) ||\n this.configComponent.resolveComponent(\"MKFormInput\")!;\n }\n\n formatItem(item: Config): Config {\n let value = item.value;\n\n if (item.type !== \"json\") {\n try {\n value = JSON.parse(item.value);\n } catch (e) {}\n }\n\n return { ...item, value };\n }\n\n formatSubmitData(data: any) {\n return {\n ...data,\n value: data.type === \"json\" ? data.value : JSON.stringify(data.value),\n };\n }\n\n resolveType(type: string) {\n switch (type) {\n case \"int\":\n return \"MKConfigInputNumber\";\n case \"json\":\n return \"MKConfigJsonEditor\";\n default:\n return \"MKConfigInput\";\n }\n }\n\n resolveItemType(config: Config) {\n return this.resolveType(config.type);\n }\n}\n\ndefineDataForm(ConfigForm);\n"],"names":["DataForm","ConfigComponents","FormColumn","defineDataForm"],"mappings":";;;;;;;;;;;;;AAqBO,MAAM,mBACHA,WAEV,CAAA;AAAA,EACE,eAAA,CAAA;AAAA,EAEA,WAAA,CAAY,OAA6B,GAAA,EAAI,EAAA;AAC3C,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,QAAU,EAAA,GAAG,SAAS,CAAA,CAAA;AAEpC,IAAA,IAAA,CAAK,eAAkB,GAAA,OAAA,CAAQ,eAAmB,IAAA,IAAIC,iCAAiB,EAAA,CAAA;AAAA,GACzE;AAAA,EAEA,MAAgB,UAAa,GAAA;AAC3B,IAAA,MAAM,MAAM,UAAW,EAAA,CAAA;AAEvB,IAAA,MAAM,WAAc,GAAA,QAAA,CAAA;AACpB,IAAA,IAAA,CAAK,UAAW,CAAA;AAAA,MACd,IAAIC,aAAW,CAAA,EAAE,MAAM,IAAM,EAAA,KAAA,EAAO,gBAAM,CAAA;AAAA,MAC1C,IAAIA,cAAW,EAAE,IAAA,EAAM,OAAO,KAAO,EAAA,oBAAA,EAAO,QAAU,EAAA,IAAA,EAAM,CAAA;AAAA,MAC5D,IAAIA,aAAW,CAAA;AAAA,QACb,IAAM,EAAA,MAAA;AAAA,QACN,KAAO,EAAA,cAAA;AAAA,QACP,aAAe,EAAA,kBAAA;AAAA,QACf,YAAc,EAAA,WAAA;AAAA,QACd,QAAU,EAAA,IAAA;AAAA,QACV,cAAgB,EAAA;AAAA,UACd,OAAS,EAAA;AAAA,YACP,EAAE,KAAA,EAAO,QAAU,EAAA,KAAA,EAAO,oBAAM,EAAA;AAAA,YAChC,EAAE,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,YAC5B,EAAE,KAAA,EAAO,MAAQ,EAAA,KAAA,EAAO,MAAO,EAAA;AAAA,WACjC;AAAA,UACA,UAAU,MAAM;AACd,YAAK,IAAA,CAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA,CAAA;AAE/B,YAAA,IAAI,KAAK,IAAM,EAAA;AACb,cAAA,IAAA,CAAK,KAAK,KAAQ,GAAA,IAAA,CAAA;AAAA,aACpB;AAAA,WACF;AAAA,SACF;AAAA,OACD,CAAA;AAAA,MACD,IAAIA,aAAW,CAAA;AAAA,QACb,IAAM,EAAA,OAAA;AAAA,QACN,KAAO,EAAA,oBAAA;AAAA,QACP,QAAU,EAAA,IAAA;AAAA,QACV,YAAc,EAAA,IAAA;AAAA,QACd,KAAO,EAAA;AAAA,UACL;AAAA,YACE,SAAW,EAAA,CAAC,IAAM,EAAA,KAAA,EAAO,QAAa,KAAA;AACpC,cAAI,IAAA,IAAA,CAAK,IAAM,EAAA,IAAA,KAAS,MAAQ,EAAA;AAC9B,gBAAI,IAAA;AACF,kBAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,yBACT,CAAG,EAAA;AACV,kBAAS,QAAA,CAAA,IAAI,KAAM,CAAA,8BAAU,CAAC,CAAA,CAAA;AAAA,iBAChC;AAAA,eACF;AAEA,cAAS,QAAA,EAAA,CAAA;AAAA,aACX;AAAA,WACF;AAAA,SACF;AAAA,QACA,aAAA,EAAe,IAAK,CAAA,WAAA,CAAY,WAAW,CAAA;AAAA,OAC5C,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,eAAgB,CAAA,EAAA,CAAG,CAAC,EAAE,MAAW,KAAA;AACpC,MAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,iBAAiB,IAAqB,EAAA;AACpC,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAC9C,IAAA,eAAA,CAAgB,aACd,GAAA,IAAA,CAAK,eAAgB,CAAA,gBAAA,CAAiB,IAAK,CAAA,eAAA,CAAgB,IAAK,CAAC,CACjE,IAAA,IAAA,CAAK,eAAgB,CAAA,gBAAA,CAAiB,aAAa,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,WAAW,IAAsB,EAAA;AAC/B,IAAA,IAAI,QAAQ,IAAK,CAAA,KAAA,CAAA;AAEjB,IAAI,IAAA,IAAA,CAAK,SAAS,MAAQ,EAAA;AACxB,MAAI,IAAA;AACF,QAAQ,KAAA,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,eACtB,CAAG,EAAA;AAAA,OAAC;AAAA,KACf;AAEA,IAAO,OAAA,EAAE,GAAG,IAAA,EAAM,KAAM,EAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,iBAAiB,IAAW,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,GAAG,IAAA;AAAA,MACH,KAAA,EAAO,KAAK,IAAS,KAAA,MAAA,GAAS,KAAK,KAAQ,GAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA;AAAA,KACtE,CAAA;AAAA,GACF;AAAA,EAEA,YAAY,IAAc,EAAA;AACxB,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,KAAA;AACH,QAAO,OAAA,qBAAA,CAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAO,OAAA,oBAAA,CAAA;AAAA,MACT;AACE,QAAO,OAAA,eAAA,CAAA;AAAA,KACX;AAAA,GACF;AAAA,EAEA,gBAAgB,MAAgB,EAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,WAAY,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,GACrC;AACF,CAAA;AAEAC,6BAAA,CAAe,UAAU,CAAA;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const MKJsonEditor: import("@maketribe/utils").SFCWithInstall<import("vue").DefineComponent<{
|
|
2
2
|
readonly modelValue: {
|
|
3
|
-
readonly type: import("vue").PropType<
|
|
3
|
+
readonly type: import("vue").PropType<any>;
|
|
4
4
|
readonly required: true;
|
|
5
5
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
6
6
|
__mkPropKey: true;
|
|
@@ -10,7 +10,7 @@ export declare const MKJsonEditor: import("@maketribe/utils").SFCWithInstall<imp
|
|
|
10
10
|
"update:model-value": (modelValue: string) => boolean;
|
|
11
11
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
12
|
readonly modelValue: {
|
|
13
|
-
readonly type: import("vue").PropType<
|
|
13
|
+
readonly type: import("vue").PropType<any>;
|
|
14
14
|
readonly required: true;
|
|
15
15
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
16
16
|
__mkPropKey: true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExtractPropTypes } from "vue";
|
|
2
2
|
export declare const jsonEditorProps: {
|
|
3
3
|
readonly modelValue: {
|
|
4
|
-
readonly type: import("vue").PropType<
|
|
4
|
+
readonly type: import("vue").PropType<any>;
|
|
5
5
|
readonly required: true;
|
|
6
6
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
7
7
|
__mkPropKey: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-editor-options.js","sources":["../../../../src/components/json-editor/json-editor-options.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const jsonEditorProps = buildProps({\n modelValue: {\n type:
|
|
1
|
+
{"version":3,"file":"json-editor-options.js","sources":["../../../../src/components/json-editor/json-editor-options.ts"],"sourcesContent":["import { ExtractPropTypes } from \"vue\";\nimport { buildProps } from \"@maketribe/utils\";\n\nexport const jsonEditorProps = buildProps({\n modelValue: {\n type: null,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n} as const);\n\nexport type JsonEditorProps = ExtractPropTypes<typeof jsonEditorProps>;\n\nexport const jsonEditorEmits = {\n \"update:model-value\": (modelValue: string) => true,\n};\n\nexport type jsonEditorEmits = typeof jsonEditorEmits;\n"],"names":[],"mappings":";;AAGO,MAAM,kBAAkB,UAAW,CAAA;AAAA,EACxC,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,IAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF,CAAU,EAAA;AAIH,MAAM,eAAkB,GAAA;AAAA,EAC7B,oBAAA,EAAsB,CAAC,UAAuB,KAAA,IAAA;AAChD;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
readonly modelValue: {
|
|
3
|
-
readonly type: import("vue").PropType<
|
|
3
|
+
readonly type: import("vue").PropType<any>;
|
|
4
4
|
readonly required: true;
|
|
5
5
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
6
6
|
__mkPropKey: true;
|
|
@@ -10,7 +10,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
10
10
|
"update:model-value": (modelValue: string) => boolean;
|
|
11
11
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
12
|
readonly modelValue: {
|
|
13
|
-
readonly type: import("vue").PropType<
|
|
13
|
+
readonly type: import("vue").PropType<any>;
|
|
14
14
|
readonly required: true;
|
|
15
15
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
16
16
|
__mkPropKey: true;
|
|
@@ -4,18 +4,19 @@ import { json } from '../../node_modules/.pnpm/@codemirror_lang-json@6.0.1/node_
|
|
|
4
4
|
import { jsonEditorProps, jsonEditorEmits } from './json-editor-options.js';
|
|
5
5
|
|
|
6
6
|
var jsonEditor = /* @__PURE__ */ defineComponent({
|
|
7
|
-
name: "
|
|
7
|
+
name: "MKJsonEditor",
|
|
8
8
|
props: jsonEditorProps,
|
|
9
9
|
emits: jsonEditorEmits,
|
|
10
10
|
setup(props, {
|
|
11
11
|
emit
|
|
12
12
|
}) {
|
|
13
13
|
const modelValue = computed({
|
|
14
|
-
get: () => props.modelValue,
|
|
14
|
+
get: () => props.modelValue || "",
|
|
15
15
|
set: (v) => emit("update:model-value", v)
|
|
16
16
|
});
|
|
17
17
|
return () => {
|
|
18
18
|
return createVNode(T, {
|
|
19
|
+
"class": "mk-json-editor",
|
|
19
20
|
"modelValue": unref(modelValue),
|
|
20
21
|
"onUpdate:modelValue": (v) => modelValue.value = v,
|
|
21
22
|
"disabled": props.disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-editor.js","sources":["../../../../src/components/json-editor/json-editor.tsx"],"sourcesContent":["import { computed, defineComponent, unref } from \"vue\";\nimport { Codemirror } from \"vue-codemirror\";\nimport { json } from \"@codemirror/lang-json\";\nimport { jsonEditorEmits, jsonEditorProps } from \"./json-editor-options\";\n\nexport default defineComponent({\n name: \"
|
|
1
|
+
{"version":3,"file":"json-editor.js","sources":["../../../../src/components/json-editor/json-editor.tsx"],"sourcesContent":["import { computed, defineComponent, unref } from \"vue\";\nimport { Codemirror } from \"vue-codemirror\";\nimport { json } from \"@codemirror/lang-json\";\nimport { jsonEditorEmits, jsonEditorProps } from \"./json-editor-options\";\n\nexport default defineComponent({\n name: \"MKJsonEditor\",\n props: jsonEditorProps,\n emits: jsonEditorEmits,\n setup(props, { emit }) {\n const modelValue = computed({\n get: () => (props.modelValue as string) || \"\",\n set: (v: string) => emit(\"update:model-value\", v),\n });\n\n return () => {\n return (\n <Codemirror\n class=\"mk-json-editor\"\n modelValue={unref(modelValue)}\n onUpdate:modelValue={(v: string) => (modelValue.value = v)}\n disabled={props.disabled}\n extensions={[json()]}\n />\n );\n };\n },\n});\n"],"names":["name","props","jsonEditorProps","emits","jsonEditorEmits","setup","emit","modelValue","computed","get","set","v","_createVNode","Codemirror","unref","value","disabled","json"],"mappings":";;;;;AAKA,iCAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,cAAA;AAAA,EACNC,KAAOC,EAAAA,eAAAA;AAAAA,EACPC,KAAOC,EAAAA,eAAAA;AAAAA,EACPC,MAAMJ,KAAO,EAAA;AAAA,IAAEK,IAAAA;AAAAA,GAAQ,EAAA;AACrB,IAAA,MAAMC,aAAaC,QAAS,CAAA;AAAA,MAC1BC,GAAAA,EAAKA,MAAOR,KAAAA,CAAMM,UAAyB,IAAA,EAAA;AAAA,MAC3CG,GAAMC,EAAAA,CAAAA,CAAAA,KAAcL,IAAK,CAAA,oBAAA,EAAsBK,CAAC,CAAA;AAAA,KACjD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAAC,YAAAC,CAAA,EAAA;AAAA,QAAA,OAAA,EAAA,gBAAA;AAAA,QAAA,YAAA,EAGgBC,MAAMP,UAAU,CAAA;AAAA,QAAC,qBAAA,EACPI,CAAeJ,CAAAA,KAAAA,UAAAA,CAAWQ,KAAQJ,GAAAA,CAAAA;AAAAA,QAAE,YAChDV,KAAMe,CAAAA,QAAAA;AAAAA,QAAQ,YAAA,EACZ,CAACC,IAAAA,EAAM,CAAA;AAAA,SAAC,IAAA,CAAA,CAAA;AAAA,KAG1B,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defineAsyncComponent } from 'vue';
|
|
1
2
|
import { ElInput, ElInputNumber } from 'element-plus';
|
|
2
3
|
import { Components } from '@maketribe/dm';
|
|
3
4
|
|
|
@@ -17,6 +18,13 @@ class ConfigComponents extends Components {
|
|
|
17
18
|
title: "\u6570\u503C\u8F93\u5165\u6846",
|
|
18
19
|
component: ElInputNumber
|
|
19
20
|
});
|
|
21
|
+
this.registerComponent({
|
|
22
|
+
name: "MKConfigJsonEditor",
|
|
23
|
+
title: "JSON",
|
|
24
|
+
component: defineAsyncComponent(
|
|
25
|
+
() => import('../../components/json-editor/index.js')
|
|
26
|
+
)
|
|
27
|
+
});
|
|
20
28
|
}
|
|
21
29
|
}
|
|
22
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigComponents.js","sources":["../../../../src/core/component/ConfigComponents.ts"],"sourcesContent":["import { ElInput, ElInputNumber } from \"element-plus\";\nimport { Components } from \"@maketribe/dm\";\n\nexport class ConfigComponents extends Components {\n constructor() {\n super();\n\n this.registerComponent({\n name: \"MKConfigInput\",\n title: \"输入框\",\n component: ElInput,\n defaultProps: {\n type: \"textarea\",\n },\n });\n\n this.registerComponent({\n name: \"MKConfigInputNumber\",\n title: \"数值输入框\",\n component: ElInputNumber,\n });\n }\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigComponents.js","sources":["../../../../src/core/component/ConfigComponents.ts"],"sourcesContent":["import { defineAsyncComponent } from \"vue\";\nimport { ElInput, ElInputNumber } from \"element-plus\";\nimport { Components } from \"@maketribe/dm\";\n\nexport class ConfigComponents extends Components {\n constructor() {\n super();\n\n this.registerComponent({\n name: \"MKConfigInput\",\n title: \"输入框\",\n component: ElInput,\n defaultProps: {\n type: \"textarea\",\n },\n });\n\n this.registerComponent({\n name: \"MKConfigInputNumber\",\n title: \"数值输入框\",\n component: ElInputNumber,\n });\n\n this.registerComponent({\n name: \"MKConfigJsonEditor\",\n title: \"JSON\",\n component: defineAsyncComponent(\n () => import(\"../../components/json-editor\")\n ),\n });\n }\n}\n"],"names":[],"mappings":";;;;AAIO,MAAM,yBAAyB,UAAW,CAAA;AAAA,EAC/C,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA,CAAA;AAEN,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,eAAA;AAAA,MACN,KAAO,EAAA,oBAAA;AAAA,MACP,SAAW,EAAA,OAAA;AAAA,MACX,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,UAAA;AAAA,OACR;AAAA,KACD,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,qBAAA;AAAA,MACN,KAAO,EAAA,gCAAA;AAAA,MACP,SAAW,EAAA,aAAA;AAAA,KACZ,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,iBAAkB,CAAA;AAAA,MACrB,IAAM,EAAA,oBAAA;AAAA,MACN,KAAO,EAAA,MAAA;AAAA,MACP,SAAW,EAAA,oBAAA;AAAA,QACT,MAAM,OAAO,uCAA8B,CAAA;AAAA,OAC7C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
|
|
@@ -17,6 +17,6 @@ export declare class ConfigForm extends DataForm<Config> implements ITypeResolve
|
|
|
17
17
|
handleTypeChange(data: Config | null): void;
|
|
18
18
|
formatItem(item: Config): Config;
|
|
19
19
|
formatSubmitData(data: any): any;
|
|
20
|
-
resolveType(type: string): "MKConfigInputNumber" | "MKConfigInput";
|
|
21
|
-
resolveItemType(config: Config): "MKConfigInputNumber" | "MKConfigInput";
|
|
20
|
+
resolveType(type: string): "MKConfigInputNumber" | "MKConfigJsonEditor" | "MKConfigInput";
|
|
21
|
+
resolveItemType(config: Config): "MKConfigInputNumber" | "MKConfigJsonEditor" | "MKConfigInput";
|
|
22
22
|
}
|
|
@@ -30,7 +30,8 @@ class ConfigForm extends DataForm {
|
|
|
30
30
|
componentProps: {
|
|
31
31
|
options: [
|
|
32
32
|
{ value: "string", label: "\u5B57\u7B26\u4E32" },
|
|
33
|
-
{ value: "int", label: "\u6574\u6570" }
|
|
33
|
+
{ value: "int", label: "\u6574\u6570" },
|
|
34
|
+
{ value: "json", label: "JSON" }
|
|
34
35
|
],
|
|
35
36
|
onChange: () => {
|
|
36
37
|
this.handleTypeChange(this.data);
|
|
@@ -45,6 +46,20 @@ class ConfigForm extends DataForm {
|
|
|
45
46
|
label: "\u914D\u7F6E\u503C",
|
|
46
47
|
required: true,
|
|
47
48
|
defaultValue: null,
|
|
49
|
+
rules: [
|
|
50
|
+
{
|
|
51
|
+
validator: (rule, value, callback) => {
|
|
52
|
+
if (this.data?.type === "json") {
|
|
53
|
+
try {
|
|
54
|
+
JSON.parse(value);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
callback(new Error("JSON\u683C\u5F0F\u9519\u8BEF"));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
callback();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
],
|
|
48
63
|
componentInfo: this.resolveType(defaultType)
|
|
49
64
|
})
|
|
50
65
|
]);
|
|
@@ -61,19 +76,26 @@ class ConfigForm extends DataForm {
|
|
|
61
76
|
}
|
|
62
77
|
formatItem(item) {
|
|
63
78
|
let value = item.value;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
if (item.type !== "json") {
|
|
80
|
+
try {
|
|
81
|
+
value = JSON.parse(item.value);
|
|
82
|
+
} catch (e) {
|
|
83
|
+
}
|
|
67
84
|
}
|
|
68
85
|
return { ...item, value };
|
|
69
86
|
}
|
|
70
87
|
formatSubmitData(data) {
|
|
71
|
-
return {
|
|
88
|
+
return {
|
|
89
|
+
...data,
|
|
90
|
+
value: data.type === "json" ? data.value : JSON.stringify(data.value)
|
|
91
|
+
};
|
|
72
92
|
}
|
|
73
93
|
resolveType(type) {
|
|
74
94
|
switch (type) {
|
|
75
95
|
case "int":
|
|
76
96
|
return "MKConfigInputNumber";
|
|
97
|
+
case "json":
|
|
98
|
+
return "MKConfigJsonEditor";
|
|
77
99
|
default:
|
|
78
100
|
return "MKConfigInput";
|
|
79
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigForm.js","sources":["../../../../src/dataview/config/ConfigForm.ts"],"sourcesContent":["import {\n DataForm,\n DataFormOptions,\n FormColumn,\n IComponents,\n} from \"@maketribe/dm\";\nimport { defineDataForm } from \"../../define-data-form\";\nimport { ConfigComponents, ITypeResolver } from \"../../core\";\n\nexport type Config<T = any> = {\n id: string;\n key: string;\n type: string;\n value: T;\n};\n\nexport type ConfigFormOptions = DataFormOptions & {\n typeResolver?: ITypeResolver<Config>;\n configComponent?: IComponents;\n};\n\nexport class ConfigForm\n extends DataForm<Config>\n implements ITypeResolver<Config>\n{\n configComponent: IComponents;\n\n constructor(options: ConfigFormOptions = {}) {\n super({ name: \"ms-cfg\", ...options });\n\n this.configComponent = options.configComponent ?? new ConfigComponents();\n }\n\n protected async initialize() {\n await super.initialize();\n\n const defaultType = \"string\";\n this.setColumns([\n new FormColumn({ name: \"id\", label: \"编号\" }),\n new FormColumn({ name: \"key\", label: \"配置键\", required: true }),\n new FormColumn({\n name: \"type\",\n label: \"类型\",\n componentInfo: \"MKFormDataSelect\",\n defaultValue: defaultType,\n required: true,\n componentProps: {\n options: [\n { value: \"string\", label: \"字符串\" },\n { value: \"int\", label: \"整数\" },\n ],\n onChange: () => {\n this.handleTypeChange(this.data);\n\n if (this.data) {\n this.data.value = null;\n }\n },\n },\n }),\n new FormColumn({\n name: \"value\",\n label: \"配置值\",\n required: true,\n defaultValue: null,\n componentInfo: this.resolveType(defaultType),\n }),\n ]);\n\n this.dataChangeEvent.on(({ data }) => {\n this.handleTypeChange(data);\n });\n }\n\n handleTypeChange(data: Config | null) {\n if (!data) {\n return;\n }\n\n const valueFormColumn = this.getColumn(\"value\")!;\n valueFormColumn.componentInfo =\n this.configComponent.resolveComponent(this.resolveItemType(data!)) ||\n this.configComponent.resolveComponent(\"MKFormInput\")!;\n }\n\n formatItem(item: Config): Config {\n let value = item.value;\n\n try {\n
|
|
1
|
+
{"version":3,"file":"ConfigForm.js","sources":["../../../../src/dataview/config/ConfigForm.ts"],"sourcesContent":["import {\n DataForm,\n DataFormOptions,\n FormColumn,\n IComponents,\n} from \"@maketribe/dm\";\nimport { defineDataForm } from \"../../define-data-form\";\nimport { ConfigComponents, ITypeResolver } from \"../../core\";\n\nexport type Config<T = any> = {\n id: string;\n key: string;\n type: string;\n value: T;\n};\n\nexport type ConfigFormOptions = DataFormOptions & {\n typeResolver?: ITypeResolver<Config>;\n configComponent?: IComponents;\n};\n\nexport class ConfigForm\n extends DataForm<Config>\n implements ITypeResolver<Config>\n{\n configComponent: IComponents;\n\n constructor(options: ConfigFormOptions = {}) {\n super({ name: \"ms-cfg\", ...options });\n\n this.configComponent = options.configComponent ?? new ConfigComponents();\n }\n\n protected async initialize() {\n await super.initialize();\n\n const defaultType = \"string\";\n this.setColumns([\n new FormColumn({ name: \"id\", label: \"编号\" }),\n new FormColumn({ name: \"key\", label: \"配置键\", required: true }),\n new FormColumn({\n name: \"type\",\n label: \"类型\",\n componentInfo: \"MKFormDataSelect\",\n defaultValue: defaultType,\n required: true,\n componentProps: {\n options: [\n { value: \"string\", label: \"字符串\" },\n { value: \"int\", label: \"整数\" },\n { value: \"json\", label: \"JSON\" },\n ],\n onChange: () => {\n this.handleTypeChange(this.data);\n\n if (this.data) {\n this.data.value = null;\n }\n },\n },\n }),\n new FormColumn({\n name: \"value\",\n label: \"配置值\",\n required: true,\n defaultValue: null,\n rules: [\n {\n validator: (rule, value, callback) => {\n if (this.data?.type === \"json\") {\n try {\n JSON.parse(value);\n } catch (e) {\n callback(new Error(\"JSON格式错误\"));\n }\n }\n\n callback();\n },\n },\n ],\n componentInfo: this.resolveType(defaultType),\n }),\n ]);\n\n this.dataChangeEvent.on(({ data }) => {\n this.handleTypeChange(data);\n });\n }\n\n handleTypeChange(data: Config | null) {\n if (!data) {\n return;\n }\n\n const valueFormColumn = this.getColumn(\"value\")!;\n valueFormColumn.componentInfo =\n this.configComponent.resolveComponent(this.resolveItemType(data!)) ||\n this.configComponent.resolveComponent(\"MKFormInput\")!;\n }\n\n formatItem(item: Config): Config {\n let value = item.value;\n\n if (item.type !== \"json\") {\n try {\n value = JSON.parse(item.value);\n } catch (e) {}\n }\n\n return { ...item, value };\n }\n\n formatSubmitData(data: any) {\n return {\n ...data,\n value: data.type === \"json\" ? data.value : JSON.stringify(data.value),\n };\n }\n\n resolveType(type: string) {\n switch (type) {\n case \"int\":\n return \"MKConfigInputNumber\";\n case \"json\":\n return \"MKConfigJsonEditor\";\n default:\n return \"MKConfigInput\";\n }\n }\n\n resolveItemType(config: Config) {\n return this.resolveType(config.type);\n }\n}\n\ndefineDataForm(ConfigForm);\n"],"names":[],"mappings":";;;;;;;;;;;AAqBO,MAAM,mBACH,QAEV,CAAA;AAAA,EACE,eAAA,CAAA;AAAA,EAEA,WAAA,CAAY,OAA6B,GAAA,EAAI,EAAA;AAC3C,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,QAAU,EAAA,GAAG,SAAS,CAAA,CAAA;AAEpC,IAAA,IAAA,CAAK,eAAkB,GAAA,OAAA,CAAQ,eAAmB,IAAA,IAAI,gBAAiB,EAAA,CAAA;AAAA,GACzE;AAAA,EAEA,MAAgB,UAAa,GAAA;AAC3B,IAAA,MAAM,MAAM,UAAW,EAAA,CAAA;AAEvB,IAAA,MAAM,WAAc,GAAA,QAAA,CAAA;AACpB,IAAA,IAAA,CAAK,UAAW,CAAA;AAAA,MACd,IAAI,UAAW,CAAA,EAAE,MAAM,IAAM,EAAA,KAAA,EAAO,gBAAM,CAAA;AAAA,MAC1C,IAAI,WAAW,EAAE,IAAA,EAAM,OAAO,KAAO,EAAA,oBAAA,EAAO,QAAU,EAAA,IAAA,EAAM,CAAA;AAAA,MAC5D,IAAI,UAAW,CAAA;AAAA,QACb,IAAM,EAAA,MAAA;AAAA,QACN,KAAO,EAAA,cAAA;AAAA,QACP,aAAe,EAAA,kBAAA;AAAA,QACf,YAAc,EAAA,WAAA;AAAA,QACd,QAAU,EAAA,IAAA;AAAA,QACV,cAAgB,EAAA;AAAA,UACd,OAAS,EAAA;AAAA,YACP,EAAE,KAAA,EAAO,QAAU,EAAA,KAAA,EAAO,oBAAM,EAAA;AAAA,YAChC,EAAE,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,YAC5B,EAAE,KAAA,EAAO,MAAQ,EAAA,KAAA,EAAO,MAAO,EAAA;AAAA,WACjC;AAAA,UACA,UAAU,MAAM;AACd,YAAK,IAAA,CAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA,CAAA;AAE/B,YAAA,IAAI,KAAK,IAAM,EAAA;AACb,cAAA,IAAA,CAAK,KAAK,KAAQ,GAAA,IAAA,CAAA;AAAA,aACpB;AAAA,WACF;AAAA,SACF;AAAA,OACD,CAAA;AAAA,MACD,IAAI,UAAW,CAAA;AAAA,QACb,IAAM,EAAA,OAAA;AAAA,QACN,KAAO,EAAA,oBAAA;AAAA,QACP,QAAU,EAAA,IAAA;AAAA,QACV,YAAc,EAAA,IAAA;AAAA,QACd,KAAO,EAAA;AAAA,UACL;AAAA,YACE,SAAW,EAAA,CAAC,IAAM,EAAA,KAAA,EAAO,QAAa,KAAA;AACpC,cAAI,IAAA,IAAA,CAAK,IAAM,EAAA,IAAA,KAAS,MAAQ,EAAA;AAC9B,gBAAI,IAAA;AACF,kBAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,yBACT,CAAG,EAAA;AACV,kBAAS,QAAA,CAAA,IAAI,KAAM,CAAA,8BAAU,CAAC,CAAA,CAAA;AAAA,iBAChC;AAAA,eACF;AAEA,cAAS,QAAA,EAAA,CAAA;AAAA,aACX;AAAA,WACF;AAAA,SACF;AAAA,QACA,aAAA,EAAe,IAAK,CAAA,WAAA,CAAY,WAAW,CAAA;AAAA,OAC5C,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,eAAgB,CAAA,EAAA,CAAG,CAAC,EAAE,MAAW,KAAA;AACpC,MAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,iBAAiB,IAAqB,EAAA;AACpC,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAC9C,IAAA,eAAA,CAAgB,aACd,GAAA,IAAA,CAAK,eAAgB,CAAA,gBAAA,CAAiB,IAAK,CAAA,eAAA,CAAgB,IAAK,CAAC,CACjE,IAAA,IAAA,CAAK,eAAgB,CAAA,gBAAA,CAAiB,aAAa,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,WAAW,IAAsB,EAAA;AAC/B,IAAA,IAAI,QAAQ,IAAK,CAAA,KAAA,CAAA;AAEjB,IAAI,IAAA,IAAA,CAAK,SAAS,MAAQ,EAAA;AACxB,MAAI,IAAA;AACF,QAAQ,KAAA,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,eACtB,CAAG,EAAA;AAAA,OAAC;AAAA,KACf;AAEA,IAAO,OAAA,EAAE,GAAG,IAAA,EAAM,KAAM,EAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,iBAAiB,IAAW,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,GAAG,IAAA;AAAA,MACH,KAAA,EAAO,KAAK,IAAS,KAAA,MAAA,GAAS,KAAK,KAAQ,GAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA;AAAA,KACtE,CAAA;AAAA,GACF;AAAA,EAEA,YAAY,IAAc,EAAA;AACxB,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,KAAA;AACH,QAAO,OAAA,qBAAA,CAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAO,OAAA,oBAAA,CAAA;AAAA,MACT;AACE,QAAO,OAAA,eAAA,CAAA;AAAA,KACX;AAAA,GACF;AAAA,EAEA,gBAAgB,MAAgB,EAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,WAAY,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,GACrC;AACF,CAAA;AAEA,cAAA,CAAe,UAAU,CAAA;;;;"}
|
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
24
|
* SOFTWARE.
|
|
25
25
|
*
|
|
26
|
-
*/.vditor{--border-color:#d1d5da;--second-color:rgba(88, 96, 105, 0.36);--panel-background-color:#fff;--panel-shadow:0 1px 2px rgba(0, 0, 0, 0.2);--toolbar-background-color:#f6f8fa;--toolbar-icon-color:#586069;--toolbar-icon-hover-color:#4285f4;--toolbar-height:35px;--toolbar-divider-margin-top:8px;--textarea-background-color:#fafbfc;--textarea-text-color:#24292e;--resize-icon-color:var(--toolbar-icon-color);--resize-background-color:var(--toolbar-background-color);--resize-hover-icon-color:var(--panel-background-color);--resize-hover-background-color:var(--toolbar-icon-hover-color);--count-background-color:rgba(27, 31, 35, 0.05);--heading-border-color:#eaecef;--blockquote-color:#6a737d;--ir-heading-color:#660e7a;--ir-title-color:#808080;--ir-bi-color:#0033b3;--ir-link-color:#008000;--ir-bracket-color:#0000ff;--ir-paren-color:#008000}.vditor--dark{--border-color:#141414;--second-color:rgba(185, 185, 185, 0.36);--panel-background-color:#24292e;--panel-shadow:0 1px 2px rgba(255, 255, 255, 0.2);--toolbar-background-color:#1d2125;--toolbar-icon-color:#b9b9b9;--toolbar-icon-hover-color:#fff;--textarea-background-color:#2f363d;--textarea-text-color:#d1d5da;--resize-icon-color:var(--border-color);--resize-background-color:var(--second-color);--resize-hover-icon-color:var(--toolbar-icon-hover-color);--resize-hover-background-color:rgba(185, 185, 185, 0.86);--count-background-color:rgba(66, 133, 244, 0.36);--heading-border-color:var(--textarea-text-color);--blockquote-color:var(--toolbar-icon-color);--ir-heading-color:#9876aa;--ir-title-color:#808080;--ir-bi-color:#cc7832;--ir-link-color:#ffc66d;--ir-bracket-color:#287bde;--ir-paren-color:#6a8759}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.vditor-tooltipped{position:relative;cursor:pointer}.vditor-tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font-size:11px;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:#3b3e43;border-radius:3px;line-height:16px;opacity:0}.vditor-tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#3b3e43;pointer-events:none;content:"";border:5px solid transparent;opacity:0}.vditor-tooltipped--hover::after,.vditor-tooltipped--hover::before,.vditor-tooltipped:active::after,.vditor-tooltipped:active::before,.vditor-tooltipped:focus::after,.vditor-tooltipped:focus::before,.vditor-tooltipped:hover::after,.vditor-tooltipped:hover::before{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.15s;animation-fill-mode:forwards;animation-timing-function:ease-in}.vditor-tooltipped__s::after,.vditor-tooltipped__se::after,.vditor-tooltipped__sw::after{top:100%;right:50%;margin-top:5px}.vditor-tooltipped__s::before,.vditor-tooltipped__se::before,.vditor-tooltipped__sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:#3b3e43}.vditor-tooltipped__se::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__sw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__ne::after,.vditor-tooltipped__nw::after{right:50%;bottom:100%;margin-bottom:5px}.vditor-tooltipped__n::before,.vditor-tooltipped__ne::before,.vditor-tooltipped__nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:#3b3e43}.vditor-tooltipped__ne::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__nw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__s::after{transform:translateX(50%)}.vditor-tooltipped__w::after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.vditor-tooltipped__w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:#3b3e43}.vditor-tooltipped__e::after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.vditor-tooltipped__e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:#3b3e43}@media screen and (max-width:520px){.vditor-tooltipped:after,.vditor-tooltipped:before{content:none}}@keyframes scale-in{0%{opacity:0;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}.vditor-panel{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px;z-index:3;font-size:14px;display:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:320px;min-width:80px;animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);color:var(--toolbar-icon-color)}.vditor-panel--none{padding:0;animation:none;min-width:auto;max-width:none;white-space:nowrap;opacity:.86}.vditor-panel--arrow:before{position:absolute;width:0;height:0;pointer-events:none;content:" ";border:7px solid transparent;top:-14px;left:5px;border-bottom-color:var(--panel-background-color)}.vditor-panel--left{right:0}.vditor-panel--left.vditor-panel--arrow:before{right:5px;left:auto}.vditor-input{border:0;padding:3px 5px;background-color:var(--panel-background-color);font-size:12px;color:var(--textarea-text-color)}.vditor-input:focus{background-color:var(--toolbar-background-color);outline:0}.vditor-icon{color:var(--toolbar-icon-color);cursor:pointer;float:left;padding:4px 5px;height:21px;width:23px;background-color:transparent;border:0;box-sizing:border-box}.vditor-icon--current,.vditor-icon:hover{color:var(--toolbar-icon-hover-color);background-color:transparent}.vditor-icon:focus{outline:0}.vditor-icon svg{height:13px!important;width:13px!important;float:left;fill:currentColor;pointer-events:none}.vditor-toolbar{background-color:var(--toolbar-background-color);border-bottom:1px solid var(--border-color);padding:0 5px;line-height:1}.vditor-toolbar--pin{position:sticky;top:0;z-index:1}.vditor-toolbar--hide{transition:all .15s ease-in-out;height:5px;overflow:hidden}.vditor-toolbar--hide:hover{background-color:var(--toolbar-background-color);height:auto;overflow:visible}.vditor-toolbar__item{float:left;position:relative}.vditor-toolbar__item .vditor-tooltipped{color:var(--toolbar-icon-color);border:0;padding:10px 5px;background-color:transparent;height:var(--toolbar-height);width:25px;box-sizing:border-box;font-size:0}.vditor-toolbar__item .vditor-tooltipped:focus{outline:0}.vditor-toolbar__item .vditor-tooltipped:focus{cursor:pointer;color:var(--toolbar-icon-hover-color)}.vditor-toolbar__item svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:15px;height:15px}.vditor-toolbar__item input{position:absolute;width:25px;height:var(--toolbar-height);top:0;left:0;cursor:pointer;opacity:.001;overflow:hidden}.vditor-toolbar__divider{float:left;height:calc(var(--toolbar-height) - var(--toolbar-divider-margin-top) * 2);border-left:1px solid var(--second-color);margin:var(--toolbar-divider-margin-top) 8px}.vditor-toolbar__br{width:100%;padding:0!important;height:0!important}.vditor-menu--current{color:var(--toolbar-icon-hover-color)!important}.vditor-menu--disabled{color:var(--second-color)!important;cursor:not-allowed!important}.vditor-emojis{display:inline-block;overflow:auto}.vditor-emojis::-webkit-scrollbar{display:none}.vditor-emojis__tip{flex:1;min-width:1px;width:200px;margin-right:10px;color:var(--toolbar-icon-color);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-emojis__tail{margin-top:5px;font-size:12px;color:var(--toolbar-icon-color);display:flex}.vditor-emojis__tail a{text-decoration:none;color:var(--toolbar-icon-color)}.vditor-emojis__tail a:hover{color:var(--toolbar-icon-hover-color)}.vditor-emojis button{cursor:pointer;border-radius:3px;float:left;height:30px;width:30px;text-align:center;line-height:26px;padding:3px;box-sizing:border-box;font-size:16px;transition:all .15s ease-in-out;border:0;margin:0;background-color:transparent;overflow:hidden}.vditor-emojis button:focus{outline:0}.vditor-emojis button:hover .vditor-emojis__icon{display:inline-block;transform:scale(1.2)}.vditor-emojis img{height:20px;width:20px;float:left;margin:3px 0 0 3px}@media screen and (max-width:520px){.vditor-toolbar__item{padding:0 12px}.vditor-panel--left.vditor-panel--arrow:before{right:17px}}@media (hover:hover) and (pointer:fine){.vditor-toolbar__item .vditor-tooltipped:hover{color:var(--toolbar-icon-hover-color)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.vditor{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:3px;box-sizing:border-box;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols}.vditor .vditor-copy{z-index:auto}.vditor--fullscreen{position:fixed;top:0;width:100%!important;left:0;height:100vh!important;z-index:90;border-radius:0}.vditor-content{display:flex;min-height:60px;flex:1;min-width:1px;position:relative}.vditor-preview{flex:1;min-width:1px;overflow:auto;margin-left:-1px;border-left:1px solid var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;background-color:var(--textarea-background-color)}.vditor-preview::-webkit-scrollbar{display:none}.vditor-preview__action{text-align:center;padding:10px;background-color:var(--toolbar-background-color)}.vditor-preview__action button{background-color:var(--toolbar-background-color);color:var(--toolbar-icon-color);line-height:20px;border:0;margin:0 10px;cursor:pointer;padding:0 7px;font-size:12px}.vditor-preview__action button.vditor-preview__action--current,.vditor-preview__action button:hover{color:var(--toolbar-icon-hover-color);background-color:var(--toolbar-background-color)}.vditor-preview__action button:focus{outline:0}.vditor-preview__action button svg{fill:currentColor;height:15px;width:15px;vertical-align:middle}.vditor-preview>.vditor-reset{padding:10px;margin:0 auto}.vditor-preview img:not(.emoji){cursor:pointer}.vditor-devtools{display:none;background-color:var(--textarea-background-color);overflow:auto;flex:1;min-width:1px;box-shadow:inset 1px 0 var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;padding:10px}.vditor-counter{padding:3px;color:var(--toolbar-icon-color);background-color:var(--count-background-color);border-radius:3px;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none;float:right;margin:8px 3px 0 0}.vditor-counter--error{color:#d23f31;background-color:rgba(210,63,49,.1)}.vditor-resize{padding:3px 0;cursor:row-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;width:100%}.vditor-resize--top{top:-3px}.vditor-resize--bottom{bottom:-3px}.vditor-resize>div{height:3px;background-color:var(--resize-background-color);transition:all .15s ease-in-out}.vditor-resize--selected>div,.vditor-resize:hover>div{background-color:var(--resize-hover-background-color)}.vditor-resize--selected svg,.vditor-resize:hover svg{color:var(--resize-hover-icon-color)}.vditor-resize svg{fill:currentColor;stroke-width:0;stroke:currentColor;width:13px;height:3px;display:block;margin:0 auto;color:var(--resize-icon-color)}.vditor-upload{position:absolute;height:3px;left:0;top:-2px;transition:all .15s ease-in-out;background-color:#4285f4}.vditor-tip{position:absolute;font-size:12px;top:10px;animation-duration:.15s;animation-fill-mode:both;left:50%;z-index:5}.vditor-tip--show{display:block;animation-name:slideInDown}.vditor-tip__content{text-align:left;display:inline-block;line-height:16px;padding:3px 10px;border-radius:3px;background:var(--toolbar-background-color);position:relative;margin-left:-50%;color:var(--toolbar-icon-color);max-width:100%;box-shadow:var(--panel-shadow)}.vditor-tip__content ul{margin:2px 0;padding:0 0 0 18px}.vditor-tip__content a{color:#4285f4}.vditor-tip__close{position:absolute;color:var(--toolbar-icon-color);top:-7px;right:-15px;font-weight:700;cursor:pointer}.vditor-tip__close:hover{color:var(--toolbar-icon-hover-color)}.vditor-img{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;z-index:100}.vditor-img__bar{border-bottom:1px solid var(--border-color);background-color:var(--toolbar-background-color);text-align:center;height:36px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.vditor-img__btn{display:flex;align-items:center;cursor:pointer;margin-left:24px;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--toolbar-icon-color)}.vditor-img__btn:hover{color:var(--toolbar-icon-hover-color)}.vditor-img__btn svg{height:14px;width:14px;margin-right:8px;fill:currentColor}.vditor-img__img{flex:1;background-color:var(--textarea-background-color);overflow:auto;cursor:zoom-out}.vditor-img__img img{max-width:none}.vditor-hint{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px 0;z-index:4;line-height:20px;list-style:none;font-size:12px;margin:0;max-width:250px;min-width:80px;display:none}.vditor-hint .vditor-hint{margin-top:-31px;left:100%;right:auto}.vditor-hint .vditor-hint.vditor-panel--left{right:100%;left:auto}.vditor-hint button{color:var(--toolbar-icon-color);display:block;padding:3px 10px;border:0;border-radius:0;line-height:20px;width:100%;box-sizing:border-box;text-align:left;margin:0;background-color:transparent;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-hint button:focus{outline:0}.vditor-hint button:not(.vditor-menu--disabled):hover,.vditor-hint--current{background-color:var(--toolbar-background-color)!important;color:var(--toolbar-icon-hover-color)!important}.vditor-hint__emoji{font-size:16px;float:left;margin-right:3px}.vditor-hint img{height:20px;width:20px;float:left;margin-right:3px}.vditor-reset{color:#24292e;font-variant-ligatures:no-common-ligatures;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-wrap:break-word;overflow:auto;line-height:1.5;font-size:16px;word-break:break-word}.vditor-reset--anchor{padding-left:20px}.vditor-reset--error{color:#d23f31;font-size:12px;display:block;line-height:16px}.vditor-reset ul ul ul{list-style-type:square}.vditor-reset ul ul{list-style-type:circle}.vditor-reset ul{list-style-type:disc}.vditor-reset ol,.vditor-reset ul{padding-left:2em;margin-top:0;margin-bottom:16px}.vditor-reset li+li{margin-top:.25em}.vditor-reset audio{max-width:100%}.vditor-reset audio:focus{outline:0}.vditor-reset video{max-height:90vh;max-width:100%}.vditor-reset img{max-width:100%}.vditor-reset img.emoji{cursor:auto;max-width:20px;vertical-align:sub}.vditor-reset h1,.vditor-reset h2,.vditor-reset h3,.vditor-reset h4,.vditor-reset h5,.vditor-reset h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.vditor-reset h1:hover .vditor-anchor svg,.vditor-reset h2:hover .vditor-anchor svg,.vditor-reset h3:hover .vditor-anchor svg,.vditor-reset h4:hover .vditor-anchor svg,.vditor-reset h5:hover .vditor-anchor svg,.vditor-reset h6:hover .vditor-anchor svg{visibility:visible}.vditor-reset h1{font-size:1.75em}.vditor-reset h2{font-size:1.55em}.vditor-reset h3{font-size:1.38em}.vditor-reset h4{font-size:1.25em}.vditor-reset h5{font-size:1.13em}.vditor-reset h6{font-size:1em}.vditor-reset hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.vditor-reset p{margin-top:0;margin-bottom:16px}.vditor-reset blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #eaecef;margin:0 0 16px 0}.vditor-reset blockquote>:first-child{margin-top:0}.vditor-reset blockquote>:last-child{margin-bottom:0}.vditor-reset ins>iframe{border:0}.vditor-reset iframe{border:1px solid #d1d5da;max-width:100%;box-sizing:border-box}.vditor-reset iframe.iframe__video{min-width:80%;min-height:36vh}.vditor-reset table{border-collapse:collapse;empty-cells:show;margin-bottom:16px;overflow:auto;border-spacing:0;display:block;word-break:keep-all;width:100%}.vditor-reset table tr{background-color:#fafbfc;border-top:1px solid #c6cbd1}.vditor-reset table td,.vditor-reset table th{padding:6px 13px;border:1px solid #dfe2e5;word-break:normal;white-space:nowrap}.vditor-reset table td:first-child::after,.vditor-reset table th:first-child::after{content:"";display:inline-block;vertical-align:top;min-height:24px}.vditor-reset table th{font-weight:600}.vditor-reset table tbody tr:nth-child(2n){background-color:#fff}.vditor-reset code:not(.hljs):not(.highlight-chroma){padding:.2em .4em;margin:0;font-size:85%;border-radius:3px;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-break:break-word;background-size:20px 20px;white-space:pre-wrap}.vditor-reset pre{margin:1em 0}.vditor-reset pre>code{margin:0;font-size:85%;padding:.5em;border-radius:5px;display:block;overflow:auto;white-space:pre;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;background-size:20px 20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);word-break:initial;word-wrap:normal}.vditor-reset pre:hover div.vditor-copy{display:block}.vditor-reset .language-abc,.vditor-reset .language-echarts,.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-math,.vditor-reset .language-mermaid,.vditor-reset .language-mindmap,.vditor-reset .language-plantuml{margin-bottom:16px}.vditor-reset .language-math mjx-container:focus{outline:0;cursor:context-menu}.vditor-reset .language-echarts,.vditor-reset .language-mindmap{overflow:hidden;height:420px}.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-mermaid{text-align:center}.vditor-reset .language-graphviz parsererror{overflow:auto}.vditor-reset kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#24292e;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.vditor-reset summary{cursor:pointer}.vditor-reset summary:focus{outline:0}.vditor-reset svg{height:auto;width:auto;stroke-width:initial}.vditor-reset blockquote:last-child,.vditor-reset hr:last-child,.vditor-reset ol:last-child,.vditor-reset p:last-child,.vditor-reset pre:last-child,.vditor-reset ul:last-child{margin-bottom:0}.vditor-comment{border-bottom:2px solid #f8e6ab}.vditor-comment--focus,.vditor-comment--hover{background-color:#faf1d1;border-bottom:2px solid #ffc60a}.vditor-comment--focus .vditor-comment,.vditor-comment--hover .vditor-comment{border-bottom:2px solid #ffc60a}.vditor-task{list-style:none!important;word-break:break-all}.vditor-task input{margin:0 .2em .25em -1.6em;font-size:12px;vertical-align:middle}.vditor-copy{position:relative;display:none;z-index:1}.vditor-copy textarea{position:absolute;left:-100000px;height:10px}.vditor-copy span{cursor:pointer;position:absolute;right:15px;top:.5em}.vditor-copy svg{color:#586069;height:14px;width:14px!important;display:block;fill:currentColor}.vditor-linenumber{padding-left:4em!important;position:relative}.vditor-linenumber__rows{position:absolute;pointer-events:none;top:.5em;left:0;width:3em;-webkit-user-select:none;-moz-user-select:none;user-select:none;counter-reset:linenumber}.vditor-linenumber__rows>span{pointer-events:none;display:block}.vditor-linenumber__rows>span::before{counter-increment:linenumber;content:counter(linenumber);color:rgba(158,150,150,.38);display:block;padding-right:1em;text-align:right}.vditor-speech{position:absolute;display:none;background-color:#f6f8fa;border:1px solid #d1d5da;border-radius:3px;padding:3px;cursor:pointer;color:#586069}.vditor-speech--current,.vditor-speech:hover{color:#4285f4}.vditor-speech svg{height:14px;width:14px;fill:currentColor;display:block;stroke-width:0;stroke:currentColor}.vditor-anchor{margin-left:5px}.vditor-anchor--left{float:left;padding-right:4px;margin-left:-20px}.vditor-anchor svg{visibility:hidden}.vditor-anchor:hover svg{visibility:visible}.vditor-anchor:focus{outline:0}.vditor-linkcard{margin:31px auto 16px;transition:all .15s ease-in-out;cursor:pointer;max-width:768px;padding:0 10px}.vditor-linkcard a{border-radius:3px;background-color:#f6f8fa;overflow:hidden;max-height:250px;display:flex;text-decoration:none;flex-wrap:wrap-reverse;box-shadow:0 1px 2px rgba(0,0,0,.2)}.vditor-linkcard a:hover{box-shadow:0 0 3px rgba(0,0,0,.13),0 3px 6px rgba(0,0,0,.26);text-decoration:none}.vditor-linkcard a:visited .vditor-linkcard__abstract{color:rgba(88,96,105,.36)}.vditor-linkcard__info{padding:10px;min-width:200px;box-sizing:border-box;flex:1}.vditor-linkcard__title{font-size:14px;font-weight:400;color:#24292e;display:flex;align-items:center}.vditor-linkcard__title img{cursor:pointer;height:20px;width:20px;border-radius:3px;flex-shrink:0;margin-right:5px}.vditor-linkcard__abstract{word-wrap:break-word;word-break:break-all;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;font-size:13px;color:#586069;margin:5px 0}.vditor-linkcard__site{font-size:12px;color:#4285f4}.vditor-linkcard__image{background-size:cover;background-repeat:no-repeat;background-position:center center;max-width:250px;min-width:126px;cursor:pointer;background-color:rgba(88,96,105,.36)}.vditor-footnotes__goto-ref{text-decoration:none}.vditor-toc{margin-bottom:16px;-webkit-user-select:text;-moz-user-select:text;user-select:text;color:#4285f4}.vditor-toc .vditor-outline__action{display:none}.vditor-toc ul{list-style:none!important;padding-left:1em}.vditor-toc>ul{padding-left:0}.vditor-toc span{cursor:pointer}.vditor-toc li>span>svg{width:0;height:0}.vditor-outline{width:250px;border-right:1px solid var(--border-color);background-color:var(--panel-background-color);display:none;overflow:auto}.vditor-outline--right{border-right:0;border-left:1px solid var(--border-color)}.vditor-outline::-webkit-scrollbar{display:none}.vditor-outline ul{list-style:none!important;padding-left:1em;margin:0}.vditor-outline__content>ul{padding-left:0}.vditor-outline li>span{display:flex;align-items:center;padding:5px 10px;cursor:pointer;color:var(--textarea-text-color)}.vditor-outline li>span>svg{height:10px;width:10px}.vditor-outline li>span:hover{color:var(--toolbar-icon-hover-color)}.vditor-outline li>span>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vditor-outline__title{border-bottom:1px dashed var(--border-color);padding:5px 10px;color:var(--toolbar-icon-color);font-size:12px}.vditor-outline__action{transition:all .15s ease-in-out;fill:currentColor;margin-right:5px;flex-shrink:0}.vditor-outline__action--close{transform:rotate(-90deg)}.vditor-wysiwyg{box-sizing:border-box;flex:1;position:relative;width:100%;min-width:1px}.vditor-wysiwyg pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-wysiwyg pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-wysiwyg pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-wysiwyg pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-wysiwyg pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-wysiwyg blockquote:empty::before,.vditor-wysiwyg h1:empty::after,.vditor-wysiwyg h2:empty::after,.vditor-wysiwyg h3:empty::after,.vditor-wysiwyg h4:empty::after,.vditor-wysiwyg h5:empty::after,.vditor-wysiwyg h6:empty::after,.vditor-wysiwyg p:empty::before,.vditor-wysiwyg pre>code:empty::before{content:" "}.vditor-wysiwyg code[data-marker="`"]{padding-left:0!important;padding-right:0!important}.vditor-wysiwyg__block pre:first-child{margin-bottom:-1em}.vditor-wysiwyg__block pre:first-child code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-wysiwyg__block pre:last-child{margin-bottom:1em}.vditor-wysiwyg__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg>.vditor-reset>h1:before,.vditor-wysiwyg>.vditor-reset>h2:before,.vditor-wysiwyg>.vditor-reset>h3:before,.vditor-wysiwyg>.vditor-reset>h4:before,.vditor-wysiwyg>.vditor-reset>h5:before,.vditor-wysiwyg>.vditor-reset>h6:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-wysiwyg>.vditor-reset>h2:before{content:"H2"}.vditor-wysiwyg>.vditor-reset>h3:before{content:"H3"}.vditor-wysiwyg>.vditor-reset>h4:before{content:"H4"}.vditor-wysiwyg>.vditor-reset>h5:before{content:"H5"}.vditor-wysiwyg>.vditor-reset>h6:before{content:"H6"}.vditor-wysiwyg div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-wysiwyg div[data-type=footnotes-block]:before{content:"^F"}.vditor-wysiwyg div.vditor-wysiwyg__block:before{content:"</>"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=yaml-front-matter]:before{content:"F"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=math-block]:before{content:"$$"}.vditor-wysiwyg .vditor-toc:before{content:"ToC"}.vditor-wysiwyg hr{display:inline-block;margin:12px 0;width:100%}.vditor-wysiwyg details{white-space:initial}.vditor-wysiwyg a{cursor:pointer}.vditor-wysiwyg span[data-type=backslash]>span{display:none;color:var(--second-color)}.vditor-wysiwyg span[data-type=link-ref],.vditor-wysiwyg sup[data-type=footnotes-ref]{color:#4285f4}.vditor-wysiwyg span[data-type=toc-h]{color:#4285f4;text-decoration:underline}.vditor-wysiwyg div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-wysiwyg div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}@media screen and (max-width:520px){.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg h1:before,.vditor-wysiwyg h2:before,.vditor-wysiwyg h3:before,.vditor-wysiwyg h4:before,.vditor-wysiwyg h5:before,.vditor-wysiwyg h6:before{content:none}}.vditor-ir{box-sizing:border-box;flex:1;min-width:1px;position:relative;width:100%}.vditor-ir__node[data-type=code-block]:after,.vditor-ir__node[data-type=code-block]:before,.vditor-ir__node[data-type=math-block]:after,.vditor-ir__node[data-type=math-block]:before,.vditor-ir__node[data-type=yaml-front-matter]:after,.vditor-ir__node[data-type=yaml-front-matter]:before{content:" ";color:var(--second-color)}.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker{padding:0!important}.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=a]{cursor:pointer}.vditor-ir__node[data-type=footnotes-ref],.vditor-ir__node[data-type=link-ref]{color:#4285f4}.vditor-ir__node[data-type=html-block]{margin-bottom:1em}.vditor-ir__node .vditor-ir__marker{width:0;overflow:hidden;display:inline-block;height:0;transition:all .15s ease-in-out}.vditor-ir__node--hidden .vditor-ir__marker{visibility:hidden}.vditor-ir__node--expand .vditor-ir__marker{color:var(--second-color);display:inline;height:auto;width:auto}.vditor-ir__node--expand .vditor-ir__marker--hide{display:none}.vditor-ir__node--expand .vditor-ir__marker--heading{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--bi{color:var(--ir-bi-color)}.vditor-ir__node--expand .vditor-ir__marker--link{color:var(--ir-link-color)}.vditor-ir__node--expand .vditor-ir__marker--title{color:var(--ir-title-color)}.vditor-ir__node--expand .vditor-ir__marker--bracket{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir__node--expand .vditor-ir__marker--paren{color:var(--ir-paren-color)}.vditor-ir__node--expand .vditor-ir__marker--info{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--pre code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-ir__node--expand[data-type=code-block]:after,.vditor-ir__node--expand[data-type=code-block]:before{content:"```"}.vditor-ir__node--expand[data-type=yaml-front-matter]:after,.vditor-ir__node--expand[data-type=yaml-front-matter]:before{content:"---"}.vditor-ir__node--expand[data-type=math-block]:after,.vditor-ir__node--expand[data-type=math-block]:before{content:"$$"}.vditor-ir__node span[data-type=code-block-close-marker],.vditor-ir__node span[data-type=code-block-open-marker],.vditor-ir__node span[data-type=math-block-close-marker],.vditor-ir__node span[data-type=math-block-open-marker],.vditor-ir__node span[data-type=yaml-front-matter-close-marker],.vditor-ir__node span[data-type=yaml-front-matter-open-marker]{display:none}.vditor-ir__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-ir__link{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-ir pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-ir pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-ir pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-ir pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-ir pre.vditor-reset pre{margin:0}.vditor-ir hr{display:inline-block;margin:12px 0;width:100%}.vditor-ir blockquote:empty::before,.vditor-ir h1:empty::after,.vditor-ir h2:empty::after,.vditor-ir h3:empty::after,.vditor-ir h4:empty::after,.vditor-ir h5:empty::after,.vditor-ir h6:empty::after,.vditor-ir p:empty::before,.vditor-ir pre>code:empty::before{content:" "}.vditor-ir .vditor-reset>h1:before,.vditor-ir .vditor-reset>h2:before,.vditor-ir .vditor-reset>h3:before,.vditor-ir .vditor-reset>h4:before,.vditor-ir .vditor-reset>h5:before,.vditor-ir .vditor-reset>h6:before,.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-ir .vditor-reset>h2:before{content:"H2"}.vditor-ir .vditor-reset>h3:before{content:"H3"}.vditor-ir .vditor-reset>h4:before{content:"H4"}.vditor-ir .vditor-reset>h5:before{content:"H5"}.vditor-ir .vditor-reset>h6:before{content:"H6"}.vditor-ir div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}.vditor-ir div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-ir div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-ir div[data-type=footnotes-block]:before{content:"^F"}.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>blockquote,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>hr,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ol,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>p,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>pre,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>table,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ul{margin-left:8px}.vditor-ir .vditor-toc:before{content:"ToC"}.vditor-ir .vditor-toc span[data-type=toc-h]{color:#4285f4;text-decoration:underline}@media screen and (max-width:520px){.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before,.vditor-ir h1:before,.vditor-ir h2:before,.vditor-ir h3:before,.vditor-ir h4:before,.vditor-ir h5:before,.vditor-ir h6:before{content:none}}.vditor-sv{font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;margin:0 1px 0 0;overflow:auto;width:100%;flex:1;min-width:1px;border:0;resize:none;padding:10px 9px 10px 10px;box-sizing:border-box;background-color:var(--panel-background-color);outline:0 none;font-size:16px;line-height:22px;color:var(--textarea-text-color);border-radius:0 0 3px 3px;font-variant-ligatures:no-common-ligatures;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}.vditor-sv[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-sv:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-sv:focus{background-color:var(--textarea-background-color)}.vditor-sv:after{content:"";height:var(--editor-bottom);display:block}.vditor-sv span[data-type=newline]+span[data-type=text]:empty{display:inherit}.vditor-sv .sup{vertical-align:super;font-size:smaller}.vditor-sv .strong{font-weight:700}.vditor-sv .em{font-style:italic}.vditor-sv .s{text-decoration:line-through}.vditor-sv .mark:not(.vditor-sv__marker){background-color:#ff0;color:#000}.vditor-sv .h1{font-size:1.75em;line-height:44px}.vditor-sv .h2{font-size:1.55em;line-height:38px}.vditor-sv .h3{font-size:1.38em;line-height:27px}.vditor-sv .h4{font-size:1.25em;line-height:25px}.vditor-sv .h5{font-size:1.13em}.vditor-sv .h6{font-size:1em}.vditor-sv__marker{color:var(--second-color)}.vditor-sv__marker--heading{color:var(--ir-heading-color)}.vditor-sv__marker--bi{color:var(--ir-bi-color)}.vditor-sv__marker--link{color:var(--ir-link-color)}.vditor-sv__marker--title{color:var(--ir-title-color)}.vditor-sv__marker--bracket{color:var(--ir-bracket-color)}.vditor-sv__marker--paren{color:var(--ir-paren-color)}.vditor-sv__marker--info{color:var(--ir-heading-color)}.vditor-sv__marker--strong{font-weight:700}:root{--el-aside-width:auto;--mk-line-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.12),0 0 3px 0 rgba(0, 0, 0, 0.04);--mk-sidebar-collpase-width:calc(
|
|
26
|
+
*/.vditor{--border-color:#d1d5da;--second-color:rgba(88, 96, 105, 0.36);--panel-background-color:#fff;--panel-shadow:0 1px 2px rgba(0, 0, 0, 0.2);--toolbar-background-color:#f6f8fa;--toolbar-icon-color:#586069;--toolbar-icon-hover-color:#4285f4;--toolbar-height:35px;--toolbar-divider-margin-top:8px;--textarea-background-color:#fafbfc;--textarea-text-color:#24292e;--resize-icon-color:var(--toolbar-icon-color);--resize-background-color:var(--toolbar-background-color);--resize-hover-icon-color:var(--panel-background-color);--resize-hover-background-color:var(--toolbar-icon-hover-color);--count-background-color:rgba(27, 31, 35, 0.05);--heading-border-color:#eaecef;--blockquote-color:#6a737d;--ir-heading-color:#660e7a;--ir-title-color:#808080;--ir-bi-color:#0033b3;--ir-link-color:#008000;--ir-bracket-color:#0000ff;--ir-paren-color:#008000}.vditor--dark{--border-color:#141414;--second-color:rgba(185, 185, 185, 0.36);--panel-background-color:#24292e;--panel-shadow:0 1px 2px rgba(255, 255, 255, 0.2);--toolbar-background-color:#1d2125;--toolbar-icon-color:#b9b9b9;--toolbar-icon-hover-color:#fff;--textarea-background-color:#2f363d;--textarea-text-color:#d1d5da;--resize-icon-color:var(--border-color);--resize-background-color:var(--second-color);--resize-hover-icon-color:var(--toolbar-icon-hover-color);--resize-hover-background-color:rgba(185, 185, 185, 0.86);--count-background-color:rgba(66, 133, 244, 0.36);--heading-border-color:var(--textarea-text-color);--blockquote-color:var(--toolbar-icon-color);--ir-heading-color:#9876aa;--ir-title-color:#808080;--ir-bi-color:#cc7832;--ir-link-color:#ffc66d;--ir-bracket-color:#287bde;--ir-paren-color:#6a8759}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.vditor-tooltipped{position:relative;cursor:pointer}.vditor-tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font-size:11px;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:#3b3e43;border-radius:3px;line-height:16px;opacity:0}.vditor-tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#3b3e43;pointer-events:none;content:"";border:5px solid transparent;opacity:0}.vditor-tooltipped--hover::after,.vditor-tooltipped--hover::before,.vditor-tooltipped:active::after,.vditor-tooltipped:active::before,.vditor-tooltipped:focus::after,.vditor-tooltipped:focus::before,.vditor-tooltipped:hover::after,.vditor-tooltipped:hover::before{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.15s;animation-fill-mode:forwards;animation-timing-function:ease-in}.vditor-tooltipped__s::after,.vditor-tooltipped__se::after,.vditor-tooltipped__sw::after{top:100%;right:50%;margin-top:5px}.vditor-tooltipped__s::before,.vditor-tooltipped__se::before,.vditor-tooltipped__sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:#3b3e43}.vditor-tooltipped__se::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__sw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__ne::after,.vditor-tooltipped__nw::after{right:50%;bottom:100%;margin-bottom:5px}.vditor-tooltipped__n::before,.vditor-tooltipped__ne::before,.vditor-tooltipped__nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:#3b3e43}.vditor-tooltipped__ne::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__nw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__s::after{transform:translateX(50%)}.vditor-tooltipped__w::after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.vditor-tooltipped__w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:#3b3e43}.vditor-tooltipped__e::after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.vditor-tooltipped__e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:#3b3e43}@media screen and (max-width:520px){.vditor-tooltipped:after,.vditor-tooltipped:before{content:none}}@keyframes scale-in{0%{opacity:0;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}.vditor-panel{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px;z-index:3;font-size:14px;display:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:320px;min-width:80px;animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);color:var(--toolbar-icon-color)}.vditor-panel--none{padding:0;animation:none;min-width:auto;max-width:none;white-space:nowrap;opacity:.86}.vditor-panel--arrow:before{position:absolute;width:0;height:0;pointer-events:none;content:" ";border:7px solid transparent;top:-14px;left:5px;border-bottom-color:var(--panel-background-color)}.vditor-panel--left{right:0}.vditor-panel--left.vditor-panel--arrow:before{right:5px;left:auto}.vditor-input{border:0;padding:3px 5px;background-color:var(--panel-background-color);font-size:12px;color:var(--textarea-text-color)}.vditor-input:focus{background-color:var(--toolbar-background-color);outline:0}.vditor-icon{color:var(--toolbar-icon-color);cursor:pointer;float:left;padding:4px 5px;height:21px;width:23px;background-color:transparent;border:0;box-sizing:border-box}.vditor-icon--current,.vditor-icon:hover{color:var(--toolbar-icon-hover-color);background-color:transparent}.vditor-icon:focus{outline:0}.vditor-icon svg{height:13px!important;width:13px!important;float:left;fill:currentColor;pointer-events:none}.vditor-toolbar{background-color:var(--toolbar-background-color);border-bottom:1px solid var(--border-color);padding:0 5px;line-height:1}.vditor-toolbar--pin{position:sticky;top:0;z-index:1}.vditor-toolbar--hide{transition:all .15s ease-in-out;height:5px;overflow:hidden}.vditor-toolbar--hide:hover{background-color:var(--toolbar-background-color);height:auto;overflow:visible}.vditor-toolbar__item{float:left;position:relative}.vditor-toolbar__item .vditor-tooltipped{color:var(--toolbar-icon-color);border:0;padding:10px 5px;background-color:transparent;height:var(--toolbar-height);width:25px;box-sizing:border-box;font-size:0}.vditor-toolbar__item .vditor-tooltipped:focus{outline:0}.vditor-toolbar__item .vditor-tooltipped:focus{cursor:pointer;color:var(--toolbar-icon-hover-color)}.vditor-toolbar__item svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:15px;height:15px}.vditor-toolbar__item input{position:absolute;width:25px;height:var(--toolbar-height);top:0;left:0;cursor:pointer;opacity:.001;overflow:hidden}.vditor-toolbar__divider{float:left;height:calc(var(--toolbar-height) - var(--toolbar-divider-margin-top) * 2);border-left:1px solid var(--second-color);margin:var(--toolbar-divider-margin-top) 8px}.vditor-toolbar__br{width:100%;padding:0!important;height:0!important}.vditor-menu--current{color:var(--toolbar-icon-hover-color)!important}.vditor-menu--disabled{color:var(--second-color)!important;cursor:not-allowed!important}.vditor-emojis{display:inline-block;overflow:auto}.vditor-emojis::-webkit-scrollbar{display:none}.vditor-emojis__tip{flex:1;min-width:1px;width:200px;margin-right:10px;color:var(--toolbar-icon-color);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-emojis__tail{margin-top:5px;font-size:12px;color:var(--toolbar-icon-color);display:flex}.vditor-emojis__tail a{text-decoration:none;color:var(--toolbar-icon-color)}.vditor-emojis__tail a:hover{color:var(--toolbar-icon-hover-color)}.vditor-emojis button{cursor:pointer;border-radius:3px;float:left;height:30px;width:30px;text-align:center;line-height:26px;padding:3px;box-sizing:border-box;font-size:16px;transition:all .15s ease-in-out;border:0;margin:0;background-color:transparent;overflow:hidden}.vditor-emojis button:focus{outline:0}.vditor-emojis button:hover .vditor-emojis__icon{display:inline-block;transform:scale(1.2)}.vditor-emojis img{height:20px;width:20px;float:left;margin:3px 0 0 3px}@media screen and (max-width:520px){.vditor-toolbar__item{padding:0 12px}.vditor-panel--left.vditor-panel--arrow:before{right:17px}}@media (hover:hover) and (pointer:fine){.vditor-toolbar__item .vditor-tooltipped:hover{color:var(--toolbar-icon-hover-color)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.vditor{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:3px;box-sizing:border-box;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols}.vditor .vditor-copy{z-index:auto}.vditor--fullscreen{position:fixed;top:0;width:100%!important;left:0;height:100vh!important;z-index:90;border-radius:0}.vditor-content{display:flex;min-height:60px;flex:1;min-width:1px;position:relative}.vditor-preview{flex:1;min-width:1px;overflow:auto;margin-left:-1px;border-left:1px solid var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;background-color:var(--textarea-background-color)}.vditor-preview::-webkit-scrollbar{display:none}.vditor-preview__action{text-align:center;padding:10px;background-color:var(--toolbar-background-color)}.vditor-preview__action button{background-color:var(--toolbar-background-color);color:var(--toolbar-icon-color);line-height:20px;border:0;margin:0 10px;cursor:pointer;padding:0 7px;font-size:12px}.vditor-preview__action button.vditor-preview__action--current,.vditor-preview__action button:hover{color:var(--toolbar-icon-hover-color);background-color:var(--toolbar-background-color)}.vditor-preview__action button:focus{outline:0}.vditor-preview__action button svg{fill:currentColor;height:15px;width:15px;vertical-align:middle}.vditor-preview>.vditor-reset{padding:10px;margin:0 auto}.vditor-preview img:not(.emoji){cursor:pointer}.vditor-devtools{display:none;background-color:var(--textarea-background-color);overflow:auto;flex:1;min-width:1px;box-shadow:inset 1px 0 var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;padding:10px}.vditor-counter{padding:3px;color:var(--toolbar-icon-color);background-color:var(--count-background-color);border-radius:3px;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none;float:right;margin:8px 3px 0 0}.vditor-counter--error{color:#d23f31;background-color:rgba(210,63,49,.1)}.vditor-resize{padding:3px 0;cursor:row-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;width:100%}.vditor-resize--top{top:-3px}.vditor-resize--bottom{bottom:-3px}.vditor-resize>div{height:3px;background-color:var(--resize-background-color);transition:all .15s ease-in-out}.vditor-resize--selected>div,.vditor-resize:hover>div{background-color:var(--resize-hover-background-color)}.vditor-resize--selected svg,.vditor-resize:hover svg{color:var(--resize-hover-icon-color)}.vditor-resize svg{fill:currentColor;stroke-width:0;stroke:currentColor;width:13px;height:3px;display:block;margin:0 auto;color:var(--resize-icon-color)}.vditor-upload{position:absolute;height:3px;left:0;top:-2px;transition:all .15s ease-in-out;background-color:#4285f4}.vditor-tip{position:absolute;font-size:12px;top:10px;animation-duration:.15s;animation-fill-mode:both;left:50%;z-index:5}.vditor-tip--show{display:block;animation-name:slideInDown}.vditor-tip__content{text-align:left;display:inline-block;line-height:16px;padding:3px 10px;border-radius:3px;background:var(--toolbar-background-color);position:relative;margin-left:-50%;color:var(--toolbar-icon-color);max-width:100%;box-shadow:var(--panel-shadow)}.vditor-tip__content ul{margin:2px 0;padding:0 0 0 18px}.vditor-tip__content a{color:#4285f4}.vditor-tip__close{position:absolute;color:var(--toolbar-icon-color);top:-7px;right:-15px;font-weight:700;cursor:pointer}.vditor-tip__close:hover{color:var(--toolbar-icon-hover-color)}.vditor-img{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;z-index:100}.vditor-img__bar{border-bottom:1px solid var(--border-color);background-color:var(--toolbar-background-color);text-align:center;height:36px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.vditor-img__btn{display:flex;align-items:center;cursor:pointer;margin-left:24px;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--toolbar-icon-color)}.vditor-img__btn:hover{color:var(--toolbar-icon-hover-color)}.vditor-img__btn svg{height:14px;width:14px;margin-right:8px;fill:currentColor}.vditor-img__img{flex:1;background-color:var(--textarea-background-color);overflow:auto;cursor:zoom-out}.vditor-img__img img{max-width:none}.vditor-hint{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px 0;z-index:4;line-height:20px;list-style:none;font-size:12px;margin:0;max-width:250px;min-width:80px;display:none}.vditor-hint .vditor-hint{margin-top:-31px;left:100%;right:auto}.vditor-hint .vditor-hint.vditor-panel--left{right:100%;left:auto}.vditor-hint button{color:var(--toolbar-icon-color);display:block;padding:3px 10px;border:0;border-radius:0;line-height:20px;width:100%;box-sizing:border-box;text-align:left;margin:0;background-color:transparent;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-hint button:focus{outline:0}.vditor-hint button:not(.vditor-menu--disabled):hover,.vditor-hint--current{background-color:var(--toolbar-background-color)!important;color:var(--toolbar-icon-hover-color)!important}.vditor-hint__emoji{font-size:16px;float:left;margin-right:3px}.vditor-hint img{height:20px;width:20px;float:left;margin-right:3px}.vditor-reset{color:#24292e;font-variant-ligatures:no-common-ligatures;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-wrap:break-word;overflow:auto;line-height:1.5;font-size:16px;word-break:break-word}.vditor-reset--anchor{padding-left:20px}.vditor-reset--error{color:#d23f31;font-size:12px;display:block;line-height:16px}.vditor-reset ul ul ul{list-style-type:square}.vditor-reset ul ul{list-style-type:circle}.vditor-reset ul{list-style-type:disc}.vditor-reset ol,.vditor-reset ul{padding-left:2em;margin-top:0;margin-bottom:16px}.vditor-reset li+li{margin-top:.25em}.vditor-reset audio{max-width:100%}.vditor-reset audio:focus{outline:0}.vditor-reset video{max-height:90vh;max-width:100%}.vditor-reset img{max-width:100%}.vditor-reset img.emoji{cursor:auto;max-width:20px;vertical-align:sub}.vditor-reset h1,.vditor-reset h2,.vditor-reset h3,.vditor-reset h4,.vditor-reset h5,.vditor-reset h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.vditor-reset h1:hover .vditor-anchor svg,.vditor-reset h2:hover .vditor-anchor svg,.vditor-reset h3:hover .vditor-anchor svg,.vditor-reset h4:hover .vditor-anchor svg,.vditor-reset h5:hover .vditor-anchor svg,.vditor-reset h6:hover .vditor-anchor svg{visibility:visible}.vditor-reset h1{font-size:1.75em}.vditor-reset h2{font-size:1.55em}.vditor-reset h3{font-size:1.38em}.vditor-reset h4{font-size:1.25em}.vditor-reset h5{font-size:1.13em}.vditor-reset h6{font-size:1em}.vditor-reset hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.vditor-reset p{margin-top:0;margin-bottom:16px}.vditor-reset blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #eaecef;margin:0 0 16px 0}.vditor-reset blockquote>:first-child{margin-top:0}.vditor-reset blockquote>:last-child{margin-bottom:0}.vditor-reset ins>iframe{border:0}.vditor-reset iframe{border:1px solid #d1d5da;max-width:100%;box-sizing:border-box}.vditor-reset iframe.iframe__video{min-width:80%;min-height:36vh}.vditor-reset table{border-collapse:collapse;empty-cells:show;margin-bottom:16px;overflow:auto;border-spacing:0;display:block;word-break:keep-all;width:100%}.vditor-reset table tr{background-color:#fafbfc;border-top:1px solid #c6cbd1}.vditor-reset table td,.vditor-reset table th{padding:6px 13px;border:1px solid #dfe2e5;word-break:normal;white-space:nowrap}.vditor-reset table td:first-child::after,.vditor-reset table th:first-child::after{content:"";display:inline-block;vertical-align:top;min-height:24px}.vditor-reset table th{font-weight:600}.vditor-reset table tbody tr:nth-child(2n){background-color:#fff}.vditor-reset code:not(.hljs):not(.highlight-chroma){padding:.2em .4em;margin:0;font-size:85%;border-radius:3px;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-break:break-word;background-size:20px 20px;white-space:pre-wrap}.vditor-reset pre{margin:1em 0}.vditor-reset pre>code{margin:0;font-size:85%;padding:.5em;border-radius:5px;display:block;overflow:auto;white-space:pre;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;background-size:20px 20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);word-break:initial;word-wrap:normal}.vditor-reset pre:hover div.vditor-copy{display:block}.vditor-reset .language-abc,.vditor-reset .language-echarts,.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-math,.vditor-reset .language-mermaid,.vditor-reset .language-mindmap,.vditor-reset .language-plantuml{margin-bottom:16px}.vditor-reset .language-math mjx-container:focus{outline:0;cursor:context-menu}.vditor-reset .language-echarts,.vditor-reset .language-mindmap{overflow:hidden;height:420px}.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-mermaid{text-align:center}.vditor-reset .language-graphviz parsererror{overflow:auto}.vditor-reset kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#24292e;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.vditor-reset summary{cursor:pointer}.vditor-reset summary:focus{outline:0}.vditor-reset svg{height:auto;width:auto;stroke-width:initial}.vditor-reset blockquote:last-child,.vditor-reset hr:last-child,.vditor-reset ol:last-child,.vditor-reset p:last-child,.vditor-reset pre:last-child,.vditor-reset ul:last-child{margin-bottom:0}.vditor-comment{border-bottom:2px solid #f8e6ab}.vditor-comment--focus,.vditor-comment--hover{background-color:#faf1d1;border-bottom:2px solid #ffc60a}.vditor-comment--focus .vditor-comment,.vditor-comment--hover .vditor-comment{border-bottom:2px solid #ffc60a}.vditor-task{list-style:none!important;word-break:break-all}.vditor-task input{margin:0 .2em .25em -1.6em;font-size:12px;vertical-align:middle}.vditor-copy{position:relative;display:none;z-index:1}.vditor-copy textarea{position:absolute;left:-100000px;height:10px}.vditor-copy span{cursor:pointer;position:absolute;right:15px;top:.5em}.vditor-copy svg{color:#586069;height:14px;width:14px!important;display:block;fill:currentColor}.vditor-linenumber{padding-left:4em!important;position:relative}.vditor-linenumber__rows{position:absolute;pointer-events:none;top:.5em;left:0;width:3em;-webkit-user-select:none;-moz-user-select:none;user-select:none;counter-reset:linenumber}.vditor-linenumber__rows>span{pointer-events:none;display:block}.vditor-linenumber__rows>span::before{counter-increment:linenumber;content:counter(linenumber);color:rgba(158,150,150,.38);display:block;padding-right:1em;text-align:right}.vditor-speech{position:absolute;display:none;background-color:#f6f8fa;border:1px solid #d1d5da;border-radius:3px;padding:3px;cursor:pointer;color:#586069}.vditor-speech--current,.vditor-speech:hover{color:#4285f4}.vditor-speech svg{height:14px;width:14px;fill:currentColor;display:block;stroke-width:0;stroke:currentColor}.vditor-anchor{margin-left:5px}.vditor-anchor--left{float:left;padding-right:4px;margin-left:-20px}.vditor-anchor svg{visibility:hidden}.vditor-anchor:hover svg{visibility:visible}.vditor-anchor:focus{outline:0}.vditor-linkcard{margin:31px auto 16px;transition:all .15s ease-in-out;cursor:pointer;max-width:768px;padding:0 10px}.vditor-linkcard a{border-radius:3px;background-color:#f6f8fa;overflow:hidden;max-height:250px;display:flex;text-decoration:none;flex-wrap:wrap-reverse;box-shadow:0 1px 2px rgba(0,0,0,.2)}.vditor-linkcard a:hover{box-shadow:0 0 3px rgba(0,0,0,.13),0 3px 6px rgba(0,0,0,.26);text-decoration:none}.vditor-linkcard a:visited .vditor-linkcard__abstract{color:rgba(88,96,105,.36)}.vditor-linkcard__info{padding:10px;min-width:200px;box-sizing:border-box;flex:1}.vditor-linkcard__title{font-size:14px;font-weight:400;color:#24292e;display:flex;align-items:center}.vditor-linkcard__title img{cursor:pointer;height:20px;width:20px;border-radius:3px;flex-shrink:0;margin-right:5px}.vditor-linkcard__abstract{word-wrap:break-word;word-break:break-all;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;font-size:13px;color:#586069;margin:5px 0}.vditor-linkcard__site{font-size:12px;color:#4285f4}.vditor-linkcard__image{background-size:cover;background-repeat:no-repeat;background-position:center center;max-width:250px;min-width:126px;cursor:pointer;background-color:rgba(88,96,105,.36)}.vditor-footnotes__goto-ref{text-decoration:none}.vditor-toc{margin-bottom:16px;-webkit-user-select:text;-moz-user-select:text;user-select:text;color:#4285f4}.vditor-toc .vditor-outline__action{display:none}.vditor-toc ul{list-style:none!important;padding-left:1em}.vditor-toc>ul{padding-left:0}.vditor-toc span{cursor:pointer}.vditor-toc li>span>svg{width:0;height:0}.vditor-outline{width:250px;border-right:1px solid var(--border-color);background-color:var(--panel-background-color);display:none;overflow:auto}.vditor-outline--right{border-right:0;border-left:1px solid var(--border-color)}.vditor-outline::-webkit-scrollbar{display:none}.vditor-outline ul{list-style:none!important;padding-left:1em;margin:0}.vditor-outline__content>ul{padding-left:0}.vditor-outline li>span{display:flex;align-items:center;padding:5px 10px;cursor:pointer;color:var(--textarea-text-color)}.vditor-outline li>span>svg{height:10px;width:10px}.vditor-outline li>span:hover{color:var(--toolbar-icon-hover-color)}.vditor-outline li>span>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vditor-outline__title{border-bottom:1px dashed var(--border-color);padding:5px 10px;color:var(--toolbar-icon-color);font-size:12px}.vditor-outline__action{transition:all .15s ease-in-out;fill:currentColor;margin-right:5px;flex-shrink:0}.vditor-outline__action--close{transform:rotate(-90deg)}.vditor-wysiwyg{box-sizing:border-box;flex:1;position:relative;width:100%;min-width:1px}.vditor-wysiwyg pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-wysiwyg pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-wysiwyg pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-wysiwyg pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-wysiwyg pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-wysiwyg blockquote:empty::before,.vditor-wysiwyg h1:empty::after,.vditor-wysiwyg h2:empty::after,.vditor-wysiwyg h3:empty::after,.vditor-wysiwyg h4:empty::after,.vditor-wysiwyg h5:empty::after,.vditor-wysiwyg h6:empty::after,.vditor-wysiwyg p:empty::before,.vditor-wysiwyg pre>code:empty::before{content:" "}.vditor-wysiwyg code[data-marker="`"]{padding-left:0!important;padding-right:0!important}.vditor-wysiwyg__block pre:first-child{margin-bottom:-1em}.vditor-wysiwyg__block pre:first-child code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-wysiwyg__block pre:last-child{margin-bottom:1em}.vditor-wysiwyg__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg>.vditor-reset>h1:before,.vditor-wysiwyg>.vditor-reset>h2:before,.vditor-wysiwyg>.vditor-reset>h3:before,.vditor-wysiwyg>.vditor-reset>h4:before,.vditor-wysiwyg>.vditor-reset>h5:before,.vditor-wysiwyg>.vditor-reset>h6:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-wysiwyg>.vditor-reset>h2:before{content:"H2"}.vditor-wysiwyg>.vditor-reset>h3:before{content:"H3"}.vditor-wysiwyg>.vditor-reset>h4:before{content:"H4"}.vditor-wysiwyg>.vditor-reset>h5:before{content:"H5"}.vditor-wysiwyg>.vditor-reset>h6:before{content:"H6"}.vditor-wysiwyg div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-wysiwyg div[data-type=footnotes-block]:before{content:"^F"}.vditor-wysiwyg div.vditor-wysiwyg__block:before{content:"</>"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=yaml-front-matter]:before{content:"F"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=math-block]:before{content:"$$"}.vditor-wysiwyg .vditor-toc:before{content:"ToC"}.vditor-wysiwyg hr{display:inline-block;margin:12px 0;width:100%}.vditor-wysiwyg details{white-space:initial}.vditor-wysiwyg a{cursor:pointer}.vditor-wysiwyg span[data-type=backslash]>span{display:none;color:var(--second-color)}.vditor-wysiwyg span[data-type=link-ref],.vditor-wysiwyg sup[data-type=footnotes-ref]{color:#4285f4}.vditor-wysiwyg span[data-type=toc-h]{color:#4285f4;text-decoration:underline}.vditor-wysiwyg div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-wysiwyg div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}@media screen and (max-width:520px){.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg h1:before,.vditor-wysiwyg h2:before,.vditor-wysiwyg h3:before,.vditor-wysiwyg h4:before,.vditor-wysiwyg h5:before,.vditor-wysiwyg h6:before{content:none}}.vditor-ir{box-sizing:border-box;flex:1;min-width:1px;position:relative;width:100%}.vditor-ir__node[data-type=code-block]:after,.vditor-ir__node[data-type=code-block]:before,.vditor-ir__node[data-type=math-block]:after,.vditor-ir__node[data-type=math-block]:before,.vditor-ir__node[data-type=yaml-front-matter]:after,.vditor-ir__node[data-type=yaml-front-matter]:before{content:" ";color:var(--second-color)}.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker{padding:0!important}.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=a]{cursor:pointer}.vditor-ir__node[data-type=footnotes-ref],.vditor-ir__node[data-type=link-ref]{color:#4285f4}.vditor-ir__node[data-type=html-block]{margin-bottom:1em}.vditor-ir__node .vditor-ir__marker{width:0;overflow:hidden;display:inline-block;height:0;transition:all .15s ease-in-out}.vditor-ir__node--hidden .vditor-ir__marker{visibility:hidden}.vditor-ir__node--expand .vditor-ir__marker{color:var(--second-color);display:inline;height:auto;width:auto}.vditor-ir__node--expand .vditor-ir__marker--hide{display:none}.vditor-ir__node--expand .vditor-ir__marker--heading{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--bi{color:var(--ir-bi-color)}.vditor-ir__node--expand .vditor-ir__marker--link{color:var(--ir-link-color)}.vditor-ir__node--expand .vditor-ir__marker--title{color:var(--ir-title-color)}.vditor-ir__node--expand .vditor-ir__marker--bracket{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir__node--expand .vditor-ir__marker--paren{color:var(--ir-paren-color)}.vditor-ir__node--expand .vditor-ir__marker--info{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--pre code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-ir__node--expand[data-type=code-block]:after,.vditor-ir__node--expand[data-type=code-block]:before{content:"```"}.vditor-ir__node--expand[data-type=yaml-front-matter]:after,.vditor-ir__node--expand[data-type=yaml-front-matter]:before{content:"---"}.vditor-ir__node--expand[data-type=math-block]:after,.vditor-ir__node--expand[data-type=math-block]:before{content:"$$"}.vditor-ir__node span[data-type=code-block-close-marker],.vditor-ir__node span[data-type=code-block-open-marker],.vditor-ir__node span[data-type=math-block-close-marker],.vditor-ir__node span[data-type=math-block-open-marker],.vditor-ir__node span[data-type=yaml-front-matter-close-marker],.vditor-ir__node span[data-type=yaml-front-matter-open-marker]{display:none}.vditor-ir__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-ir__link{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-ir pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-ir pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-ir pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-ir pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-ir pre.vditor-reset pre{margin:0}.vditor-ir hr{display:inline-block;margin:12px 0;width:100%}.vditor-ir blockquote:empty::before,.vditor-ir h1:empty::after,.vditor-ir h2:empty::after,.vditor-ir h3:empty::after,.vditor-ir h4:empty::after,.vditor-ir h5:empty::after,.vditor-ir h6:empty::after,.vditor-ir p:empty::before,.vditor-ir pre>code:empty::before{content:" "}.vditor-ir .vditor-reset>h1:before,.vditor-ir .vditor-reset>h2:before,.vditor-ir .vditor-reset>h3:before,.vditor-ir .vditor-reset>h4:before,.vditor-ir .vditor-reset>h5:before,.vditor-ir .vditor-reset>h6:before,.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-ir .vditor-reset>h2:before{content:"H2"}.vditor-ir .vditor-reset>h3:before{content:"H3"}.vditor-ir .vditor-reset>h4:before{content:"H4"}.vditor-ir .vditor-reset>h5:before{content:"H5"}.vditor-ir .vditor-reset>h6:before{content:"H6"}.vditor-ir div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}.vditor-ir div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-ir div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-ir div[data-type=footnotes-block]:before{content:"^F"}.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>blockquote,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>hr,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ol,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>p,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>pre,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>table,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ul{margin-left:8px}.vditor-ir .vditor-toc:before{content:"ToC"}.vditor-ir .vditor-toc span[data-type=toc-h]{color:#4285f4;text-decoration:underline}@media screen and (max-width:520px){.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before,.vditor-ir h1:before,.vditor-ir h2:before,.vditor-ir h3:before,.vditor-ir h4:before,.vditor-ir h5:before,.vditor-ir h6:before{content:none}}.vditor-sv{font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;margin:0 1px 0 0;overflow:auto;width:100%;flex:1;min-width:1px;border:0;resize:none;padding:10px 9px 10px 10px;box-sizing:border-box;background-color:var(--panel-background-color);outline:0 none;font-size:16px;line-height:22px;color:var(--textarea-text-color);border-radius:0 0 3px 3px;font-variant-ligatures:no-common-ligatures;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}.vditor-sv[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-sv:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-sv:focus{background-color:var(--textarea-background-color)}.vditor-sv:after{content:"";height:var(--editor-bottom);display:block}.vditor-sv span[data-type=newline]+span[data-type=text]:empty{display:inherit}.vditor-sv .sup{vertical-align:super;font-size:smaller}.vditor-sv .strong{font-weight:700}.vditor-sv .em{font-style:italic}.vditor-sv .s{text-decoration:line-through}.vditor-sv .mark:not(.vditor-sv__marker){background-color:#ff0;color:#000}.vditor-sv .h1{font-size:1.75em;line-height:44px}.vditor-sv .h2{font-size:1.55em;line-height:38px}.vditor-sv .h3{font-size:1.38em;line-height:27px}.vditor-sv .h4{font-size:1.25em;line-height:25px}.vditor-sv .h5{font-size:1.13em}.vditor-sv .h6{font-size:1em}.vditor-sv__marker{color:var(--second-color)}.vditor-sv__marker--heading{color:var(--ir-heading-color)}.vditor-sv__marker--bi{color:var(--ir-bi-color)}.vditor-sv__marker--link{color:var(--ir-link-color)}.vditor-sv__marker--title{color:var(--ir-title-color)}.vditor-sv__marker--bracket{color:var(--ir-bracket-color)}.vditor-sv__marker--paren{color:var(--ir-paren-color)}.vditor-sv__marker--info{color:var(--ir-heading-color)}.vditor-sv__marker--strong{font-weight:700}.mk-json-editor{--mk-json-editor-height:400px}.mk-json-editor .cm-editor{width:100%;height:var(--mk-json-editor-height)}:root{--el-aside-width:auto;--mk-line-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.12),0 0 3px 0 rgba(0, 0, 0, 0.04);--mk-sidebar-collpase-width:calc(
|
|
27
27
|
var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2
|
|
28
28
|
);--mk-menu-font-size:14px;--mk-menu-bg-color:var(--mk-sidebar-bg-color);--mk-menu-sub-menu-bg-color:#001529;--mk-menu-hover-text-color:#ffffff;--mk-menu-text-color:#ffffff;--mk-menu-hover-bg-color:#2e8cf0;--mk-menu-active-color:#ffffff;--mk-menu-active-bg-color:var(--mk-menu-hover-bg-color);--mk-menu-icon-width:var(--mk-menu-font-size)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mk-json-editor{--mk-json-editor-height:400px}.mk-json-editor .cm-editor{width:100%;height:var(--mk-json-editor-height)}
|
package/dist/style/index.css
CHANGED
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
24
|
* SOFTWARE.
|
|
25
25
|
*
|
|
26
|
-
*/.vditor{--border-color:#d1d5da;--second-color:rgba(88, 96, 105, 0.36);--panel-background-color:#fff;--panel-shadow:0 1px 2px rgba(0, 0, 0, 0.2);--toolbar-background-color:#f6f8fa;--toolbar-icon-color:#586069;--toolbar-icon-hover-color:#4285f4;--toolbar-height:35px;--toolbar-divider-margin-top:8px;--textarea-background-color:#fafbfc;--textarea-text-color:#24292e;--resize-icon-color:var(--toolbar-icon-color);--resize-background-color:var(--toolbar-background-color);--resize-hover-icon-color:var(--panel-background-color);--resize-hover-background-color:var(--toolbar-icon-hover-color);--count-background-color:rgba(27, 31, 35, 0.05);--heading-border-color:#eaecef;--blockquote-color:#6a737d;--ir-heading-color:#660e7a;--ir-title-color:#808080;--ir-bi-color:#0033b3;--ir-link-color:#008000;--ir-bracket-color:#0000ff;--ir-paren-color:#008000}.vditor--dark{--border-color:#141414;--second-color:rgba(185, 185, 185, 0.36);--panel-background-color:#24292e;--panel-shadow:0 1px 2px rgba(255, 255, 255, 0.2);--toolbar-background-color:#1d2125;--toolbar-icon-color:#b9b9b9;--toolbar-icon-hover-color:#fff;--textarea-background-color:#2f363d;--textarea-text-color:#d1d5da;--resize-icon-color:var(--border-color);--resize-background-color:var(--second-color);--resize-hover-icon-color:var(--toolbar-icon-hover-color);--resize-hover-background-color:rgba(185, 185, 185, 0.86);--count-background-color:rgba(66, 133, 244, 0.36);--heading-border-color:var(--textarea-text-color);--blockquote-color:var(--toolbar-icon-color);--ir-heading-color:#9876aa;--ir-title-color:#808080;--ir-bi-color:#cc7832;--ir-link-color:#ffc66d;--ir-bracket-color:#287bde;--ir-paren-color:#6a8759}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.vditor-tooltipped{position:relative;cursor:pointer}.vditor-tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font-size:11px;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:#3b3e43;border-radius:3px;line-height:16px;opacity:0}.vditor-tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#3b3e43;pointer-events:none;content:"";border:5px solid transparent;opacity:0}.vditor-tooltipped--hover::after,.vditor-tooltipped--hover::before,.vditor-tooltipped:active::after,.vditor-tooltipped:active::before,.vditor-tooltipped:focus::after,.vditor-tooltipped:focus::before,.vditor-tooltipped:hover::after,.vditor-tooltipped:hover::before{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.15s;animation-fill-mode:forwards;animation-timing-function:ease-in}.vditor-tooltipped__s::after,.vditor-tooltipped__se::after,.vditor-tooltipped__sw::after{top:100%;right:50%;margin-top:5px}.vditor-tooltipped__s::before,.vditor-tooltipped__se::before,.vditor-tooltipped__sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:#3b3e43}.vditor-tooltipped__se::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__sw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__ne::after,.vditor-tooltipped__nw::after{right:50%;bottom:100%;margin-bottom:5px}.vditor-tooltipped__n::before,.vditor-tooltipped__ne::before,.vditor-tooltipped__nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:#3b3e43}.vditor-tooltipped__ne::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__nw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__s::after{transform:translateX(50%)}.vditor-tooltipped__w::after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.vditor-tooltipped__w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:#3b3e43}.vditor-tooltipped__e::after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.vditor-tooltipped__e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:#3b3e43}@media screen and (max-width:520px){.vditor-tooltipped:after,.vditor-tooltipped:before{content:none}}@keyframes scale-in{0%{opacity:0;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}.vditor-panel{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px;z-index:3;font-size:14px;display:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:320px;min-width:80px;animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);color:var(--toolbar-icon-color)}.vditor-panel--none{padding:0;animation:none;min-width:auto;max-width:none;white-space:nowrap;opacity:.86}.vditor-panel--arrow:before{position:absolute;width:0;height:0;pointer-events:none;content:" ";border:7px solid transparent;top:-14px;left:5px;border-bottom-color:var(--panel-background-color)}.vditor-panel--left{right:0}.vditor-panel--left.vditor-panel--arrow:before{right:5px;left:auto}.vditor-input{border:0;padding:3px 5px;background-color:var(--panel-background-color);font-size:12px;color:var(--textarea-text-color)}.vditor-input:focus{background-color:var(--toolbar-background-color);outline:0}.vditor-icon{color:var(--toolbar-icon-color);cursor:pointer;float:left;padding:4px 5px;height:21px;width:23px;background-color:transparent;border:0;box-sizing:border-box}.vditor-icon--current,.vditor-icon:hover{color:var(--toolbar-icon-hover-color);background-color:transparent}.vditor-icon:focus{outline:0}.vditor-icon svg{height:13px!important;width:13px!important;float:left;fill:currentColor;pointer-events:none}.vditor-toolbar{background-color:var(--toolbar-background-color);border-bottom:1px solid var(--border-color);padding:0 5px;line-height:1}.vditor-toolbar--pin{position:sticky;top:0;z-index:1}.vditor-toolbar--hide{transition:all .15s ease-in-out;height:5px;overflow:hidden}.vditor-toolbar--hide:hover{background-color:var(--toolbar-background-color);height:auto;overflow:visible}.vditor-toolbar__item{float:left;position:relative}.vditor-toolbar__item .vditor-tooltipped{color:var(--toolbar-icon-color);border:0;padding:10px 5px;background-color:transparent;height:var(--toolbar-height);width:25px;box-sizing:border-box;font-size:0}.vditor-toolbar__item .vditor-tooltipped:focus{outline:0}.vditor-toolbar__item .vditor-tooltipped:focus{cursor:pointer;color:var(--toolbar-icon-hover-color)}.vditor-toolbar__item svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:15px;height:15px}.vditor-toolbar__item input{position:absolute;width:25px;height:var(--toolbar-height);top:0;left:0;cursor:pointer;opacity:.001;overflow:hidden}.vditor-toolbar__divider{float:left;height:calc(var(--toolbar-height) - var(--toolbar-divider-margin-top) * 2);border-left:1px solid var(--second-color);margin:var(--toolbar-divider-margin-top) 8px}.vditor-toolbar__br{width:100%;padding:0!important;height:0!important}.vditor-menu--current{color:var(--toolbar-icon-hover-color)!important}.vditor-menu--disabled{color:var(--second-color)!important;cursor:not-allowed!important}.vditor-emojis{display:inline-block;overflow:auto}.vditor-emojis::-webkit-scrollbar{display:none}.vditor-emojis__tip{flex:1;min-width:1px;width:200px;margin-right:10px;color:var(--toolbar-icon-color);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-emojis__tail{margin-top:5px;font-size:12px;color:var(--toolbar-icon-color);display:flex}.vditor-emojis__tail a{text-decoration:none;color:var(--toolbar-icon-color)}.vditor-emojis__tail a:hover{color:var(--toolbar-icon-hover-color)}.vditor-emojis button{cursor:pointer;border-radius:3px;float:left;height:30px;width:30px;text-align:center;line-height:26px;padding:3px;box-sizing:border-box;font-size:16px;transition:all .15s ease-in-out;border:0;margin:0;background-color:transparent;overflow:hidden}.vditor-emojis button:focus{outline:0}.vditor-emojis button:hover .vditor-emojis__icon{display:inline-block;transform:scale(1.2)}.vditor-emojis img{height:20px;width:20px;float:left;margin:3px 0 0 3px}@media screen and (max-width:520px){.vditor-toolbar__item{padding:0 12px}.vditor-panel--left.vditor-panel--arrow:before{right:17px}}@media (hover:hover) and (pointer:fine){.vditor-toolbar__item .vditor-tooltipped:hover{color:var(--toolbar-icon-hover-color)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.vditor{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:3px;box-sizing:border-box;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols}.vditor .vditor-copy{z-index:auto}.vditor--fullscreen{position:fixed;top:0;width:100%!important;left:0;height:100vh!important;z-index:90;border-radius:0}.vditor-content{display:flex;min-height:60px;flex:1;min-width:1px;position:relative}.vditor-preview{flex:1;min-width:1px;overflow:auto;margin-left:-1px;border-left:1px solid var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;background-color:var(--textarea-background-color)}.vditor-preview::-webkit-scrollbar{display:none}.vditor-preview__action{text-align:center;padding:10px;background-color:var(--toolbar-background-color)}.vditor-preview__action button{background-color:var(--toolbar-background-color);color:var(--toolbar-icon-color);line-height:20px;border:0;margin:0 10px;cursor:pointer;padding:0 7px;font-size:12px}.vditor-preview__action button.vditor-preview__action--current,.vditor-preview__action button:hover{color:var(--toolbar-icon-hover-color);background-color:var(--toolbar-background-color)}.vditor-preview__action button:focus{outline:0}.vditor-preview__action button svg{fill:currentColor;height:15px;width:15px;vertical-align:middle}.vditor-preview>.vditor-reset{padding:10px;margin:0 auto}.vditor-preview img:not(.emoji){cursor:pointer}.vditor-devtools{display:none;background-color:var(--textarea-background-color);overflow:auto;flex:1;min-width:1px;box-shadow:inset 1px 0 var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;padding:10px}.vditor-counter{padding:3px;color:var(--toolbar-icon-color);background-color:var(--count-background-color);border-radius:3px;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none;float:right;margin:8px 3px 0 0}.vditor-counter--error{color:#d23f31;background-color:rgba(210,63,49,.1)}.vditor-resize{padding:3px 0;cursor:row-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;width:100%}.vditor-resize--top{top:-3px}.vditor-resize--bottom{bottom:-3px}.vditor-resize>div{height:3px;background-color:var(--resize-background-color);transition:all .15s ease-in-out}.vditor-resize--selected>div,.vditor-resize:hover>div{background-color:var(--resize-hover-background-color)}.vditor-resize--selected svg,.vditor-resize:hover svg{color:var(--resize-hover-icon-color)}.vditor-resize svg{fill:currentColor;stroke-width:0;stroke:currentColor;width:13px;height:3px;display:block;margin:0 auto;color:var(--resize-icon-color)}.vditor-upload{position:absolute;height:3px;left:0;top:-2px;transition:all .15s ease-in-out;background-color:#4285f4}.vditor-tip{position:absolute;font-size:12px;top:10px;animation-duration:.15s;animation-fill-mode:both;left:50%;z-index:5}.vditor-tip--show{display:block;animation-name:slideInDown}.vditor-tip__content{text-align:left;display:inline-block;line-height:16px;padding:3px 10px;border-radius:3px;background:var(--toolbar-background-color);position:relative;margin-left:-50%;color:var(--toolbar-icon-color);max-width:100%;box-shadow:var(--panel-shadow)}.vditor-tip__content ul{margin:2px 0;padding:0 0 0 18px}.vditor-tip__content a{color:#4285f4}.vditor-tip__close{position:absolute;color:var(--toolbar-icon-color);top:-7px;right:-15px;font-weight:700;cursor:pointer}.vditor-tip__close:hover{color:var(--toolbar-icon-hover-color)}.vditor-img{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;z-index:100}.vditor-img__bar{border-bottom:1px solid var(--border-color);background-color:var(--toolbar-background-color);text-align:center;height:36px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.vditor-img__btn{display:flex;align-items:center;cursor:pointer;margin-left:24px;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--toolbar-icon-color)}.vditor-img__btn:hover{color:var(--toolbar-icon-hover-color)}.vditor-img__btn svg{height:14px;width:14px;margin-right:8px;fill:currentColor}.vditor-img__img{flex:1;background-color:var(--textarea-background-color);overflow:auto;cursor:zoom-out}.vditor-img__img img{max-width:none}.vditor-hint{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px 0;z-index:4;line-height:20px;list-style:none;font-size:12px;margin:0;max-width:250px;min-width:80px;display:none}.vditor-hint .vditor-hint{margin-top:-31px;left:100%;right:auto}.vditor-hint .vditor-hint.vditor-panel--left{right:100%;left:auto}.vditor-hint button{color:var(--toolbar-icon-color);display:block;padding:3px 10px;border:0;border-radius:0;line-height:20px;width:100%;box-sizing:border-box;text-align:left;margin:0;background-color:transparent;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-hint button:focus{outline:0}.vditor-hint button:not(.vditor-menu--disabled):hover,.vditor-hint--current{background-color:var(--toolbar-background-color)!important;color:var(--toolbar-icon-hover-color)!important}.vditor-hint__emoji{font-size:16px;float:left;margin-right:3px}.vditor-hint img{height:20px;width:20px;float:left;margin-right:3px}.vditor-reset{color:#24292e;font-variant-ligatures:no-common-ligatures;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-wrap:break-word;overflow:auto;line-height:1.5;font-size:16px;word-break:break-word}.vditor-reset--anchor{padding-left:20px}.vditor-reset--error{color:#d23f31;font-size:12px;display:block;line-height:16px}.vditor-reset ul ul ul{list-style-type:square}.vditor-reset ul ul{list-style-type:circle}.vditor-reset ul{list-style-type:disc}.vditor-reset ol,.vditor-reset ul{padding-left:2em;margin-top:0;margin-bottom:16px}.vditor-reset li+li{margin-top:.25em}.vditor-reset audio{max-width:100%}.vditor-reset audio:focus{outline:0}.vditor-reset video{max-height:90vh;max-width:100%}.vditor-reset img{max-width:100%}.vditor-reset img.emoji{cursor:auto;max-width:20px;vertical-align:sub}.vditor-reset h1,.vditor-reset h2,.vditor-reset h3,.vditor-reset h4,.vditor-reset h5,.vditor-reset h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.vditor-reset h1:hover .vditor-anchor svg,.vditor-reset h2:hover .vditor-anchor svg,.vditor-reset h3:hover .vditor-anchor svg,.vditor-reset h4:hover .vditor-anchor svg,.vditor-reset h5:hover .vditor-anchor svg,.vditor-reset h6:hover .vditor-anchor svg{visibility:visible}.vditor-reset h1{font-size:1.75em}.vditor-reset h2{font-size:1.55em}.vditor-reset h3{font-size:1.38em}.vditor-reset h4{font-size:1.25em}.vditor-reset h5{font-size:1.13em}.vditor-reset h6{font-size:1em}.vditor-reset hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.vditor-reset p{margin-top:0;margin-bottom:16px}.vditor-reset blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #eaecef;margin:0 0 16px 0}.vditor-reset blockquote>:first-child{margin-top:0}.vditor-reset blockquote>:last-child{margin-bottom:0}.vditor-reset ins>iframe{border:0}.vditor-reset iframe{border:1px solid #d1d5da;max-width:100%;box-sizing:border-box}.vditor-reset iframe.iframe__video{min-width:80%;min-height:36vh}.vditor-reset table{border-collapse:collapse;empty-cells:show;margin-bottom:16px;overflow:auto;border-spacing:0;display:block;word-break:keep-all;width:100%}.vditor-reset table tr{background-color:#fafbfc;border-top:1px solid #c6cbd1}.vditor-reset table td,.vditor-reset table th{padding:6px 13px;border:1px solid #dfe2e5;word-break:normal;white-space:nowrap}.vditor-reset table td:first-child::after,.vditor-reset table th:first-child::after{content:"";display:inline-block;vertical-align:top;min-height:24px}.vditor-reset table th{font-weight:600}.vditor-reset table tbody tr:nth-child(2n){background-color:#fff}.vditor-reset code:not(.hljs):not(.highlight-chroma){padding:.2em .4em;margin:0;font-size:85%;border-radius:3px;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-break:break-word;background-size:20px 20px;white-space:pre-wrap}.vditor-reset pre{margin:1em 0}.vditor-reset pre>code{margin:0;font-size:85%;padding:.5em;border-radius:5px;display:block;overflow:auto;white-space:pre;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;background-size:20px 20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);word-break:initial;word-wrap:normal}.vditor-reset pre:hover div.vditor-copy{display:block}.vditor-reset .language-abc,.vditor-reset .language-echarts,.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-math,.vditor-reset .language-mermaid,.vditor-reset .language-mindmap,.vditor-reset .language-plantuml{margin-bottom:16px}.vditor-reset .language-math mjx-container:focus{outline:0;cursor:context-menu}.vditor-reset .language-echarts,.vditor-reset .language-mindmap{overflow:hidden;height:420px}.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-mermaid{text-align:center}.vditor-reset .language-graphviz parsererror{overflow:auto}.vditor-reset kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#24292e;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.vditor-reset summary{cursor:pointer}.vditor-reset summary:focus{outline:0}.vditor-reset svg{height:auto;width:auto;stroke-width:initial}.vditor-reset blockquote:last-child,.vditor-reset hr:last-child,.vditor-reset ol:last-child,.vditor-reset p:last-child,.vditor-reset pre:last-child,.vditor-reset ul:last-child{margin-bottom:0}.vditor-comment{border-bottom:2px solid #f8e6ab}.vditor-comment--focus,.vditor-comment--hover{background-color:#faf1d1;border-bottom:2px solid #ffc60a}.vditor-comment--focus .vditor-comment,.vditor-comment--hover .vditor-comment{border-bottom:2px solid #ffc60a}.vditor-task{list-style:none!important;word-break:break-all}.vditor-task input{margin:0 .2em .25em -1.6em;font-size:12px;vertical-align:middle}.vditor-copy{position:relative;display:none;z-index:1}.vditor-copy textarea{position:absolute;left:-100000px;height:10px}.vditor-copy span{cursor:pointer;position:absolute;right:15px;top:.5em}.vditor-copy svg{color:#586069;height:14px;width:14px!important;display:block;fill:currentColor}.vditor-linenumber{padding-left:4em!important;position:relative}.vditor-linenumber__rows{position:absolute;pointer-events:none;top:.5em;left:0;width:3em;-webkit-user-select:none;-moz-user-select:none;user-select:none;counter-reset:linenumber}.vditor-linenumber__rows>span{pointer-events:none;display:block}.vditor-linenumber__rows>span::before{counter-increment:linenumber;content:counter(linenumber);color:rgba(158,150,150,.38);display:block;padding-right:1em;text-align:right}.vditor-speech{position:absolute;display:none;background-color:#f6f8fa;border:1px solid #d1d5da;border-radius:3px;padding:3px;cursor:pointer;color:#586069}.vditor-speech--current,.vditor-speech:hover{color:#4285f4}.vditor-speech svg{height:14px;width:14px;fill:currentColor;display:block;stroke-width:0;stroke:currentColor}.vditor-anchor{margin-left:5px}.vditor-anchor--left{float:left;padding-right:4px;margin-left:-20px}.vditor-anchor svg{visibility:hidden}.vditor-anchor:hover svg{visibility:visible}.vditor-anchor:focus{outline:0}.vditor-linkcard{margin:31px auto 16px;transition:all .15s ease-in-out;cursor:pointer;max-width:768px;padding:0 10px}.vditor-linkcard a{border-radius:3px;background-color:#f6f8fa;overflow:hidden;max-height:250px;display:flex;text-decoration:none;flex-wrap:wrap-reverse;box-shadow:0 1px 2px rgba(0,0,0,.2)}.vditor-linkcard a:hover{box-shadow:0 0 3px rgba(0,0,0,.13),0 3px 6px rgba(0,0,0,.26);text-decoration:none}.vditor-linkcard a:visited .vditor-linkcard__abstract{color:rgba(88,96,105,.36)}.vditor-linkcard__info{padding:10px;min-width:200px;box-sizing:border-box;flex:1}.vditor-linkcard__title{font-size:14px;font-weight:400;color:#24292e;display:flex;align-items:center}.vditor-linkcard__title img{cursor:pointer;height:20px;width:20px;border-radius:3px;flex-shrink:0;margin-right:5px}.vditor-linkcard__abstract{word-wrap:break-word;word-break:break-all;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;font-size:13px;color:#586069;margin:5px 0}.vditor-linkcard__site{font-size:12px;color:#4285f4}.vditor-linkcard__image{background-size:cover;background-repeat:no-repeat;background-position:center center;max-width:250px;min-width:126px;cursor:pointer;background-color:rgba(88,96,105,.36)}.vditor-footnotes__goto-ref{text-decoration:none}.vditor-toc{margin-bottom:16px;-webkit-user-select:text;-moz-user-select:text;user-select:text;color:#4285f4}.vditor-toc .vditor-outline__action{display:none}.vditor-toc ul{list-style:none!important;padding-left:1em}.vditor-toc>ul{padding-left:0}.vditor-toc span{cursor:pointer}.vditor-toc li>span>svg{width:0;height:0}.vditor-outline{width:250px;border-right:1px solid var(--border-color);background-color:var(--panel-background-color);display:none;overflow:auto}.vditor-outline--right{border-right:0;border-left:1px solid var(--border-color)}.vditor-outline::-webkit-scrollbar{display:none}.vditor-outline ul{list-style:none!important;padding-left:1em;margin:0}.vditor-outline__content>ul{padding-left:0}.vditor-outline li>span{display:flex;align-items:center;padding:5px 10px;cursor:pointer;color:var(--textarea-text-color)}.vditor-outline li>span>svg{height:10px;width:10px}.vditor-outline li>span:hover{color:var(--toolbar-icon-hover-color)}.vditor-outline li>span>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vditor-outline__title{border-bottom:1px dashed var(--border-color);padding:5px 10px;color:var(--toolbar-icon-color);font-size:12px}.vditor-outline__action{transition:all .15s ease-in-out;fill:currentColor;margin-right:5px;flex-shrink:0}.vditor-outline__action--close{transform:rotate(-90deg)}.vditor-wysiwyg{box-sizing:border-box;flex:1;position:relative;width:100%;min-width:1px}.vditor-wysiwyg pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-wysiwyg pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-wysiwyg pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-wysiwyg pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-wysiwyg pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-wysiwyg blockquote:empty::before,.vditor-wysiwyg h1:empty::after,.vditor-wysiwyg h2:empty::after,.vditor-wysiwyg h3:empty::after,.vditor-wysiwyg h4:empty::after,.vditor-wysiwyg h5:empty::after,.vditor-wysiwyg h6:empty::after,.vditor-wysiwyg p:empty::before,.vditor-wysiwyg pre>code:empty::before{content:" "}.vditor-wysiwyg code[data-marker="`"]{padding-left:0!important;padding-right:0!important}.vditor-wysiwyg__block pre:first-child{margin-bottom:-1em}.vditor-wysiwyg__block pre:first-child code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-wysiwyg__block pre:last-child{margin-bottom:1em}.vditor-wysiwyg__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg>.vditor-reset>h1:before,.vditor-wysiwyg>.vditor-reset>h2:before,.vditor-wysiwyg>.vditor-reset>h3:before,.vditor-wysiwyg>.vditor-reset>h4:before,.vditor-wysiwyg>.vditor-reset>h5:before,.vditor-wysiwyg>.vditor-reset>h6:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-wysiwyg>.vditor-reset>h2:before{content:"H2"}.vditor-wysiwyg>.vditor-reset>h3:before{content:"H3"}.vditor-wysiwyg>.vditor-reset>h4:before{content:"H4"}.vditor-wysiwyg>.vditor-reset>h5:before{content:"H5"}.vditor-wysiwyg>.vditor-reset>h6:before{content:"H6"}.vditor-wysiwyg div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-wysiwyg div[data-type=footnotes-block]:before{content:"^F"}.vditor-wysiwyg div.vditor-wysiwyg__block:before{content:"</>"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=yaml-front-matter]:before{content:"F"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=math-block]:before{content:"$$"}.vditor-wysiwyg .vditor-toc:before{content:"ToC"}.vditor-wysiwyg hr{display:inline-block;margin:12px 0;width:100%}.vditor-wysiwyg details{white-space:initial}.vditor-wysiwyg a{cursor:pointer}.vditor-wysiwyg span[data-type=backslash]>span{display:none;color:var(--second-color)}.vditor-wysiwyg span[data-type=link-ref],.vditor-wysiwyg sup[data-type=footnotes-ref]{color:#4285f4}.vditor-wysiwyg span[data-type=toc-h]{color:#4285f4;text-decoration:underline}.vditor-wysiwyg div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-wysiwyg div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}@media screen and (max-width:520px){.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg h1:before,.vditor-wysiwyg h2:before,.vditor-wysiwyg h3:before,.vditor-wysiwyg h4:before,.vditor-wysiwyg h5:before,.vditor-wysiwyg h6:before{content:none}}.vditor-ir{box-sizing:border-box;flex:1;min-width:1px;position:relative;width:100%}.vditor-ir__node[data-type=code-block]:after,.vditor-ir__node[data-type=code-block]:before,.vditor-ir__node[data-type=math-block]:after,.vditor-ir__node[data-type=math-block]:before,.vditor-ir__node[data-type=yaml-front-matter]:after,.vditor-ir__node[data-type=yaml-front-matter]:before{content:" ";color:var(--second-color)}.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker{padding:0!important}.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=a]{cursor:pointer}.vditor-ir__node[data-type=footnotes-ref],.vditor-ir__node[data-type=link-ref]{color:#4285f4}.vditor-ir__node[data-type=html-block]{margin-bottom:1em}.vditor-ir__node .vditor-ir__marker{width:0;overflow:hidden;display:inline-block;height:0;transition:all .15s ease-in-out}.vditor-ir__node--hidden .vditor-ir__marker{visibility:hidden}.vditor-ir__node--expand .vditor-ir__marker{color:var(--second-color);display:inline;height:auto;width:auto}.vditor-ir__node--expand .vditor-ir__marker--hide{display:none}.vditor-ir__node--expand .vditor-ir__marker--heading{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--bi{color:var(--ir-bi-color)}.vditor-ir__node--expand .vditor-ir__marker--link{color:var(--ir-link-color)}.vditor-ir__node--expand .vditor-ir__marker--title{color:var(--ir-title-color)}.vditor-ir__node--expand .vditor-ir__marker--bracket{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir__node--expand .vditor-ir__marker--paren{color:var(--ir-paren-color)}.vditor-ir__node--expand .vditor-ir__marker--info{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--pre code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-ir__node--expand[data-type=code-block]:after,.vditor-ir__node--expand[data-type=code-block]:before{content:"```"}.vditor-ir__node--expand[data-type=yaml-front-matter]:after,.vditor-ir__node--expand[data-type=yaml-front-matter]:before{content:"---"}.vditor-ir__node--expand[data-type=math-block]:after,.vditor-ir__node--expand[data-type=math-block]:before{content:"$$"}.vditor-ir__node span[data-type=code-block-close-marker],.vditor-ir__node span[data-type=code-block-open-marker],.vditor-ir__node span[data-type=math-block-close-marker],.vditor-ir__node span[data-type=math-block-open-marker],.vditor-ir__node span[data-type=yaml-front-matter-close-marker],.vditor-ir__node span[data-type=yaml-front-matter-open-marker]{display:none}.vditor-ir__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-ir__link{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-ir pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-ir pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-ir pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-ir pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-ir pre.vditor-reset pre{margin:0}.vditor-ir hr{display:inline-block;margin:12px 0;width:100%}.vditor-ir blockquote:empty::before,.vditor-ir h1:empty::after,.vditor-ir h2:empty::after,.vditor-ir h3:empty::after,.vditor-ir h4:empty::after,.vditor-ir h5:empty::after,.vditor-ir h6:empty::after,.vditor-ir p:empty::before,.vditor-ir pre>code:empty::before{content:" "}.vditor-ir .vditor-reset>h1:before,.vditor-ir .vditor-reset>h2:before,.vditor-ir .vditor-reset>h3:before,.vditor-ir .vditor-reset>h4:before,.vditor-ir .vditor-reset>h5:before,.vditor-ir .vditor-reset>h6:before,.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-ir .vditor-reset>h2:before{content:"H2"}.vditor-ir .vditor-reset>h3:before{content:"H3"}.vditor-ir .vditor-reset>h4:before{content:"H4"}.vditor-ir .vditor-reset>h5:before{content:"H5"}.vditor-ir .vditor-reset>h6:before{content:"H6"}.vditor-ir div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}.vditor-ir div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-ir div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-ir div[data-type=footnotes-block]:before{content:"^F"}.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>blockquote,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>hr,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ol,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>p,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>pre,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>table,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ul{margin-left:8px}.vditor-ir .vditor-toc:before{content:"ToC"}.vditor-ir .vditor-toc span[data-type=toc-h]{color:#4285f4;text-decoration:underline}@media screen and (max-width:520px){.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before,.vditor-ir h1:before,.vditor-ir h2:before,.vditor-ir h3:before,.vditor-ir h4:before,.vditor-ir h5:before,.vditor-ir h6:before{content:none}}.vditor-sv{font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;margin:0 1px 0 0;overflow:auto;width:100%;flex:1;min-width:1px;border:0;resize:none;padding:10px 9px 10px 10px;box-sizing:border-box;background-color:var(--panel-background-color);outline:0 none;font-size:16px;line-height:22px;color:var(--textarea-text-color);border-radius:0 0 3px 3px;font-variant-ligatures:no-common-ligatures;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}.vditor-sv[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-sv:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-sv:focus{background-color:var(--textarea-background-color)}.vditor-sv:after{content:"";height:var(--editor-bottom);display:block}.vditor-sv span[data-type=newline]+span[data-type=text]:empty{display:inherit}.vditor-sv .sup{vertical-align:super;font-size:smaller}.vditor-sv .strong{font-weight:700}.vditor-sv .em{font-style:italic}.vditor-sv .s{text-decoration:line-through}.vditor-sv .mark:not(.vditor-sv__marker){background-color:#ff0;color:#000}.vditor-sv .h1{font-size:1.75em;line-height:44px}.vditor-sv .h2{font-size:1.55em;line-height:38px}.vditor-sv .h3{font-size:1.38em;line-height:27px}.vditor-sv .h4{font-size:1.25em;line-height:25px}.vditor-sv .h5{font-size:1.13em}.vditor-sv .h6{font-size:1em}.vditor-sv__marker{color:var(--second-color)}.vditor-sv__marker--heading{color:var(--ir-heading-color)}.vditor-sv__marker--bi{color:var(--ir-bi-color)}.vditor-sv__marker--link{color:var(--ir-link-color)}.vditor-sv__marker--title{color:var(--ir-title-color)}.vditor-sv__marker--bracket{color:var(--ir-bracket-color)}.vditor-sv__marker--paren{color:var(--ir-paren-color)}.vditor-sv__marker--info{color:var(--ir-heading-color)}.vditor-sv__marker--strong{font-weight:700}:root{--el-aside-width:auto;--mk-line-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.12),0 0 3px 0 rgba(0, 0, 0, 0.04);--mk-sidebar-collpase-width:calc(
|
|
26
|
+
*/.vditor{--border-color:#d1d5da;--second-color:rgba(88, 96, 105, 0.36);--panel-background-color:#fff;--panel-shadow:0 1px 2px rgba(0, 0, 0, 0.2);--toolbar-background-color:#f6f8fa;--toolbar-icon-color:#586069;--toolbar-icon-hover-color:#4285f4;--toolbar-height:35px;--toolbar-divider-margin-top:8px;--textarea-background-color:#fafbfc;--textarea-text-color:#24292e;--resize-icon-color:var(--toolbar-icon-color);--resize-background-color:var(--toolbar-background-color);--resize-hover-icon-color:var(--panel-background-color);--resize-hover-background-color:var(--toolbar-icon-hover-color);--count-background-color:rgba(27, 31, 35, 0.05);--heading-border-color:#eaecef;--blockquote-color:#6a737d;--ir-heading-color:#660e7a;--ir-title-color:#808080;--ir-bi-color:#0033b3;--ir-link-color:#008000;--ir-bracket-color:#0000ff;--ir-paren-color:#008000}.vditor--dark{--border-color:#141414;--second-color:rgba(185, 185, 185, 0.36);--panel-background-color:#24292e;--panel-shadow:0 1px 2px rgba(255, 255, 255, 0.2);--toolbar-background-color:#1d2125;--toolbar-icon-color:#b9b9b9;--toolbar-icon-hover-color:#fff;--textarea-background-color:#2f363d;--textarea-text-color:#d1d5da;--resize-icon-color:var(--border-color);--resize-background-color:var(--second-color);--resize-hover-icon-color:var(--toolbar-icon-hover-color);--resize-hover-background-color:rgba(185, 185, 185, 0.86);--count-background-color:rgba(66, 133, 244, 0.36);--heading-border-color:var(--textarea-text-color);--blockquote-color:var(--toolbar-icon-color);--ir-heading-color:#9876aa;--ir-title-color:#808080;--ir-bi-color:#cc7832;--ir-link-color:#ffc66d;--ir-bracket-color:#287bde;--ir-paren-color:#6a8759}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.vditor-tooltipped{position:relative;cursor:pointer}.vditor-tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font-size:11px;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:#3b3e43;border-radius:3px;line-height:16px;opacity:0}.vditor-tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#3b3e43;pointer-events:none;content:"";border:5px solid transparent;opacity:0}.vditor-tooltipped--hover::after,.vditor-tooltipped--hover::before,.vditor-tooltipped:active::after,.vditor-tooltipped:active::before,.vditor-tooltipped:focus::after,.vditor-tooltipped:focus::before,.vditor-tooltipped:hover::after,.vditor-tooltipped:hover::before{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.15s;animation-fill-mode:forwards;animation-timing-function:ease-in}.vditor-tooltipped__s::after,.vditor-tooltipped__se::after,.vditor-tooltipped__sw::after{top:100%;right:50%;margin-top:5px}.vditor-tooltipped__s::before,.vditor-tooltipped__se::before,.vditor-tooltipped__sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:#3b3e43}.vditor-tooltipped__se::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__sw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__ne::after,.vditor-tooltipped__nw::after{right:50%;bottom:100%;margin-bottom:5px}.vditor-tooltipped__n::before,.vditor-tooltipped__ne::before,.vditor-tooltipped__nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:#3b3e43}.vditor-tooltipped__ne::after{right:auto;left:50%;margin-left:-15px}.vditor-tooltipped__nw::after{margin-right:-15px}.vditor-tooltipped__n::after,.vditor-tooltipped__s::after{transform:translateX(50%)}.vditor-tooltipped__w::after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.vditor-tooltipped__w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:#3b3e43}.vditor-tooltipped__e::after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.vditor-tooltipped__e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:#3b3e43}@media screen and (max-width:520px){.vditor-tooltipped:after,.vditor-tooltipped:before{content:none}}@keyframes scale-in{0%{opacity:0;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}.vditor-panel{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px;z-index:3;font-size:14px;display:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:320px;min-width:80px;animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);color:var(--toolbar-icon-color)}.vditor-panel--none{padding:0;animation:none;min-width:auto;max-width:none;white-space:nowrap;opacity:.86}.vditor-panel--arrow:before{position:absolute;width:0;height:0;pointer-events:none;content:" ";border:7px solid transparent;top:-14px;left:5px;border-bottom-color:var(--panel-background-color)}.vditor-panel--left{right:0}.vditor-panel--left.vditor-panel--arrow:before{right:5px;left:auto}.vditor-input{border:0;padding:3px 5px;background-color:var(--panel-background-color);font-size:12px;color:var(--textarea-text-color)}.vditor-input:focus{background-color:var(--toolbar-background-color);outline:0}.vditor-icon{color:var(--toolbar-icon-color);cursor:pointer;float:left;padding:4px 5px;height:21px;width:23px;background-color:transparent;border:0;box-sizing:border-box}.vditor-icon--current,.vditor-icon:hover{color:var(--toolbar-icon-hover-color);background-color:transparent}.vditor-icon:focus{outline:0}.vditor-icon svg{height:13px!important;width:13px!important;float:left;fill:currentColor;pointer-events:none}.vditor-toolbar{background-color:var(--toolbar-background-color);border-bottom:1px solid var(--border-color);padding:0 5px;line-height:1}.vditor-toolbar--pin{position:sticky;top:0;z-index:1}.vditor-toolbar--hide{transition:all .15s ease-in-out;height:5px;overflow:hidden}.vditor-toolbar--hide:hover{background-color:var(--toolbar-background-color);height:auto;overflow:visible}.vditor-toolbar__item{float:left;position:relative}.vditor-toolbar__item .vditor-tooltipped{color:var(--toolbar-icon-color);border:0;padding:10px 5px;background-color:transparent;height:var(--toolbar-height);width:25px;box-sizing:border-box;font-size:0}.vditor-toolbar__item .vditor-tooltipped:focus{outline:0}.vditor-toolbar__item .vditor-tooltipped:focus{cursor:pointer;color:var(--toolbar-icon-hover-color)}.vditor-toolbar__item svg{fill:currentColor;display:inline-block;stroke-width:0;stroke:currentColor;width:15px;height:15px}.vditor-toolbar__item input{position:absolute;width:25px;height:var(--toolbar-height);top:0;left:0;cursor:pointer;opacity:.001;overflow:hidden}.vditor-toolbar__divider{float:left;height:calc(var(--toolbar-height) - var(--toolbar-divider-margin-top) * 2);border-left:1px solid var(--second-color);margin:var(--toolbar-divider-margin-top) 8px}.vditor-toolbar__br{width:100%;padding:0!important;height:0!important}.vditor-menu--current{color:var(--toolbar-icon-hover-color)!important}.vditor-menu--disabled{color:var(--second-color)!important;cursor:not-allowed!important}.vditor-emojis{display:inline-block;overflow:auto}.vditor-emojis::-webkit-scrollbar{display:none}.vditor-emojis__tip{flex:1;min-width:1px;width:200px;margin-right:10px;color:var(--toolbar-icon-color);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-emojis__tail{margin-top:5px;font-size:12px;color:var(--toolbar-icon-color);display:flex}.vditor-emojis__tail a{text-decoration:none;color:var(--toolbar-icon-color)}.vditor-emojis__tail a:hover{color:var(--toolbar-icon-hover-color)}.vditor-emojis button{cursor:pointer;border-radius:3px;float:left;height:30px;width:30px;text-align:center;line-height:26px;padding:3px;box-sizing:border-box;font-size:16px;transition:all .15s ease-in-out;border:0;margin:0;background-color:transparent;overflow:hidden}.vditor-emojis button:focus{outline:0}.vditor-emojis button:hover .vditor-emojis__icon{display:inline-block;transform:scale(1.2)}.vditor-emojis img{height:20px;width:20px;float:left;margin:3px 0 0 3px}@media screen and (max-width:520px){.vditor-toolbar__item{padding:0 12px}.vditor-panel--left.vditor-panel--arrow:before{right:17px}}@media (hover:hover) and (pointer:fine){.vditor-toolbar__item .vditor-tooltipped:hover{color:var(--toolbar-icon-hover-color)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.vditor{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:3px;box-sizing:border-box;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols}.vditor .vditor-copy{z-index:auto}.vditor--fullscreen{position:fixed;top:0;width:100%!important;left:0;height:100vh!important;z-index:90;border-radius:0}.vditor-content{display:flex;min-height:60px;flex:1;min-width:1px;position:relative}.vditor-preview{flex:1;min-width:1px;overflow:auto;margin-left:-1px;border-left:1px solid var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;background-color:var(--textarea-background-color)}.vditor-preview::-webkit-scrollbar{display:none}.vditor-preview__action{text-align:center;padding:10px;background-color:var(--toolbar-background-color)}.vditor-preview__action button{background-color:var(--toolbar-background-color);color:var(--toolbar-icon-color);line-height:20px;border:0;margin:0 10px;cursor:pointer;padding:0 7px;font-size:12px}.vditor-preview__action button.vditor-preview__action--current,.vditor-preview__action button:hover{color:var(--toolbar-icon-hover-color);background-color:var(--toolbar-background-color)}.vditor-preview__action button:focus{outline:0}.vditor-preview__action button svg{fill:currentColor;height:15px;width:15px;vertical-align:middle}.vditor-preview>.vditor-reset{padding:10px;margin:0 auto}.vditor-preview img:not(.emoji){cursor:pointer}.vditor-devtools{display:none;background-color:var(--textarea-background-color);overflow:auto;flex:1;min-width:1px;box-shadow:inset 1px 0 var(--border-color);box-sizing:border-box;border-radius:0 0 3px 0;padding:10px}.vditor-counter{padding:3px;color:var(--toolbar-icon-color);background-color:var(--count-background-color);border-radius:3px;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none;float:right;margin:8px 3px 0 0}.vditor-counter--error{color:#d23f31;background-color:rgba(210,63,49,.1)}.vditor-resize{padding:3px 0;cursor:row-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;width:100%}.vditor-resize--top{top:-3px}.vditor-resize--bottom{bottom:-3px}.vditor-resize>div{height:3px;background-color:var(--resize-background-color);transition:all .15s ease-in-out}.vditor-resize--selected>div,.vditor-resize:hover>div{background-color:var(--resize-hover-background-color)}.vditor-resize--selected svg,.vditor-resize:hover svg{color:var(--resize-hover-icon-color)}.vditor-resize svg{fill:currentColor;stroke-width:0;stroke:currentColor;width:13px;height:3px;display:block;margin:0 auto;color:var(--resize-icon-color)}.vditor-upload{position:absolute;height:3px;left:0;top:-2px;transition:all .15s ease-in-out;background-color:#4285f4}.vditor-tip{position:absolute;font-size:12px;top:10px;animation-duration:.15s;animation-fill-mode:both;left:50%;z-index:5}.vditor-tip--show{display:block;animation-name:slideInDown}.vditor-tip__content{text-align:left;display:inline-block;line-height:16px;padding:3px 10px;border-radius:3px;background:var(--toolbar-background-color);position:relative;margin-left:-50%;color:var(--toolbar-icon-color);max-width:100%;box-shadow:var(--panel-shadow)}.vditor-tip__content ul{margin:2px 0;padding:0 0 0 18px}.vditor-tip__content a{color:#4285f4}.vditor-tip__close{position:absolute;color:var(--toolbar-icon-color);top:-7px;right:-15px;font-weight:700;cursor:pointer}.vditor-tip__close:hover{color:var(--toolbar-icon-hover-color)}.vditor-img{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;z-index:100}.vditor-img__bar{border-bottom:1px solid var(--border-color);background-color:var(--toolbar-background-color);text-align:center;height:36px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.vditor-img__btn{display:flex;align-items:center;cursor:pointer;margin-left:24px;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--toolbar-icon-color)}.vditor-img__btn:hover{color:var(--toolbar-icon-hover-color)}.vditor-img__btn svg{height:14px;width:14px;margin-right:8px;fill:currentColor}.vditor-img__img{flex:1;background-color:var(--textarea-background-color);overflow:auto;cursor:zoom-out}.vditor-img__img img{max-width:none}.vditor-hint{background-color:var(--panel-background-color);position:absolute;box-shadow:var(--panel-shadow);border-radius:3px;padding:5px 0;z-index:4;line-height:20px;list-style:none;font-size:12px;margin:0;max-width:250px;min-width:80px;display:none}.vditor-hint .vditor-hint{margin-top:-31px;left:100%;right:auto}.vditor-hint .vditor-hint.vditor-panel--left{right:100%;left:auto}.vditor-hint button{color:var(--toolbar-icon-color);display:block;padding:3px 10px;border:0;border-radius:0;line-height:20px;width:100%;box-sizing:border-box;text-align:left;margin:0;background-color:transparent;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vditor-hint button:focus{outline:0}.vditor-hint button:not(.vditor-menu--disabled):hover,.vditor-hint--current{background-color:var(--toolbar-background-color)!important;color:var(--toolbar-icon-hover-color)!important}.vditor-hint__emoji{font-size:16px;float:left;margin-right:3px}.vditor-hint img{height:20px;width:20px;float:left;margin-right:3px}.vditor-reset{color:#24292e;font-variant-ligatures:no-common-ligatures;font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-wrap:break-word;overflow:auto;line-height:1.5;font-size:16px;word-break:break-word}.vditor-reset--anchor{padding-left:20px}.vditor-reset--error{color:#d23f31;font-size:12px;display:block;line-height:16px}.vditor-reset ul ul ul{list-style-type:square}.vditor-reset ul ul{list-style-type:circle}.vditor-reset ul{list-style-type:disc}.vditor-reset ol,.vditor-reset ul{padding-left:2em;margin-top:0;margin-bottom:16px}.vditor-reset li+li{margin-top:.25em}.vditor-reset audio{max-width:100%}.vditor-reset audio:focus{outline:0}.vditor-reset video{max-height:90vh;max-width:100%}.vditor-reset img{max-width:100%}.vditor-reset img.emoji{cursor:auto;max-width:20px;vertical-align:sub}.vditor-reset h1,.vditor-reset h2,.vditor-reset h3,.vditor-reset h4,.vditor-reset h5,.vditor-reset h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.vditor-reset h1:hover .vditor-anchor svg,.vditor-reset h2:hover .vditor-anchor svg,.vditor-reset h3:hover .vditor-anchor svg,.vditor-reset h4:hover .vditor-anchor svg,.vditor-reset h5:hover .vditor-anchor svg,.vditor-reset h6:hover .vditor-anchor svg{visibility:visible}.vditor-reset h1{font-size:1.75em}.vditor-reset h2{font-size:1.55em}.vditor-reset h3{font-size:1.38em}.vditor-reset h4{font-size:1.25em}.vditor-reset h5{font-size:1.13em}.vditor-reset h6{font-size:1em}.vditor-reset hr{height:2px;padding:0;margin:24px 0;background-color:#eaecef;border:0}.vditor-reset p{margin-top:0;margin-bottom:16px}.vditor-reset blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #eaecef;margin:0 0 16px 0}.vditor-reset blockquote>:first-child{margin-top:0}.vditor-reset blockquote>:last-child{margin-bottom:0}.vditor-reset ins>iframe{border:0}.vditor-reset iframe{border:1px solid #d1d5da;max-width:100%;box-sizing:border-box}.vditor-reset iframe.iframe__video{min-width:80%;min-height:36vh}.vditor-reset table{border-collapse:collapse;empty-cells:show;margin-bottom:16px;overflow:auto;border-spacing:0;display:block;word-break:keep-all;width:100%}.vditor-reset table tr{background-color:#fafbfc;border-top:1px solid #c6cbd1}.vditor-reset table td,.vditor-reset table th{padding:6px 13px;border:1px solid #dfe2e5;word-break:normal;white-space:nowrap}.vditor-reset table td:first-child::after,.vditor-reset table th:first-child::after{content:"";display:inline-block;vertical-align:top;min-height:24px}.vditor-reset table th{font-weight:600}.vditor-reset table tbody tr:nth-child(2n){background-color:#fff}.vditor-reset code:not(.hljs):not(.highlight-chroma){padding:.2em .4em;margin:0;font-size:85%;border-radius:3px;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;word-break:break-word;background-size:20px 20px;white-space:pre-wrap}.vditor-reset pre{margin:1em 0}.vditor-reset pre>code{margin:0;font-size:85%;padding:.5em;border-radius:5px;display:block;overflow:auto;white-space:pre;font-family:mononoki,Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;background-size:20px 20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);word-break:initial;word-wrap:normal}.vditor-reset pre:hover div.vditor-copy{display:block}.vditor-reset .language-abc,.vditor-reset .language-echarts,.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-math,.vditor-reset .language-mermaid,.vditor-reset .language-mindmap,.vditor-reset .language-plantuml{margin-bottom:16px}.vditor-reset .language-math mjx-container:focus{outline:0;cursor:context-menu}.vditor-reset .language-echarts,.vditor-reset .language-mindmap{overflow:hidden;height:420px}.vditor-reset .language-flowchart,.vditor-reset .language-graphviz,.vditor-reset .language-markmap,.vditor-reset .language-mermaid{text-align:center}.vditor-reset .language-graphviz parsererror{overflow:auto}.vditor-reset kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#24292e;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.vditor-reset summary{cursor:pointer}.vditor-reset summary:focus{outline:0}.vditor-reset svg{height:auto;width:auto;stroke-width:initial}.vditor-reset blockquote:last-child,.vditor-reset hr:last-child,.vditor-reset ol:last-child,.vditor-reset p:last-child,.vditor-reset pre:last-child,.vditor-reset ul:last-child{margin-bottom:0}.vditor-comment{border-bottom:2px solid #f8e6ab}.vditor-comment--focus,.vditor-comment--hover{background-color:#faf1d1;border-bottom:2px solid #ffc60a}.vditor-comment--focus .vditor-comment,.vditor-comment--hover .vditor-comment{border-bottom:2px solid #ffc60a}.vditor-task{list-style:none!important;word-break:break-all}.vditor-task input{margin:0 .2em .25em -1.6em;font-size:12px;vertical-align:middle}.vditor-copy{position:relative;display:none;z-index:1}.vditor-copy textarea{position:absolute;left:-100000px;height:10px}.vditor-copy span{cursor:pointer;position:absolute;right:15px;top:.5em}.vditor-copy svg{color:#586069;height:14px;width:14px!important;display:block;fill:currentColor}.vditor-linenumber{padding-left:4em!important;position:relative}.vditor-linenumber__rows{position:absolute;pointer-events:none;top:.5em;left:0;width:3em;-webkit-user-select:none;-moz-user-select:none;user-select:none;counter-reset:linenumber}.vditor-linenumber__rows>span{pointer-events:none;display:block}.vditor-linenumber__rows>span::before{counter-increment:linenumber;content:counter(linenumber);color:rgba(158,150,150,.38);display:block;padding-right:1em;text-align:right}.vditor-speech{position:absolute;display:none;background-color:#f6f8fa;border:1px solid #d1d5da;border-radius:3px;padding:3px;cursor:pointer;color:#586069}.vditor-speech--current,.vditor-speech:hover{color:#4285f4}.vditor-speech svg{height:14px;width:14px;fill:currentColor;display:block;stroke-width:0;stroke:currentColor}.vditor-anchor{margin-left:5px}.vditor-anchor--left{float:left;padding-right:4px;margin-left:-20px}.vditor-anchor svg{visibility:hidden}.vditor-anchor:hover svg{visibility:visible}.vditor-anchor:focus{outline:0}.vditor-linkcard{margin:31px auto 16px;transition:all .15s ease-in-out;cursor:pointer;max-width:768px;padding:0 10px}.vditor-linkcard a{border-radius:3px;background-color:#f6f8fa;overflow:hidden;max-height:250px;display:flex;text-decoration:none;flex-wrap:wrap-reverse;box-shadow:0 1px 2px rgba(0,0,0,.2)}.vditor-linkcard a:hover{box-shadow:0 0 3px rgba(0,0,0,.13),0 3px 6px rgba(0,0,0,.26);text-decoration:none}.vditor-linkcard a:visited .vditor-linkcard__abstract{color:rgba(88,96,105,.36)}.vditor-linkcard__info{padding:10px;min-width:200px;box-sizing:border-box;flex:1}.vditor-linkcard__title{font-size:14px;font-weight:400;color:#24292e;display:flex;align-items:center}.vditor-linkcard__title img{cursor:pointer;height:20px;width:20px;border-radius:3px;flex-shrink:0;margin-right:5px}.vditor-linkcard__abstract{word-wrap:break-word;word-break:break-all;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;font-size:13px;color:#586069;margin:5px 0}.vditor-linkcard__site{font-size:12px;color:#4285f4}.vditor-linkcard__image{background-size:cover;background-repeat:no-repeat;background-position:center center;max-width:250px;min-width:126px;cursor:pointer;background-color:rgba(88,96,105,.36)}.vditor-footnotes__goto-ref{text-decoration:none}.vditor-toc{margin-bottom:16px;-webkit-user-select:text;-moz-user-select:text;user-select:text;color:#4285f4}.vditor-toc .vditor-outline__action{display:none}.vditor-toc ul{list-style:none!important;padding-left:1em}.vditor-toc>ul{padding-left:0}.vditor-toc span{cursor:pointer}.vditor-toc li>span>svg{width:0;height:0}.vditor-outline{width:250px;border-right:1px solid var(--border-color);background-color:var(--panel-background-color);display:none;overflow:auto}.vditor-outline--right{border-right:0;border-left:1px solid var(--border-color)}.vditor-outline::-webkit-scrollbar{display:none}.vditor-outline ul{list-style:none!important;padding-left:1em;margin:0}.vditor-outline__content>ul{padding-left:0}.vditor-outline li>span{display:flex;align-items:center;padding:5px 10px;cursor:pointer;color:var(--textarea-text-color)}.vditor-outline li>span>svg{height:10px;width:10px}.vditor-outline li>span:hover{color:var(--toolbar-icon-hover-color)}.vditor-outline li>span>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vditor-outline__title{border-bottom:1px dashed var(--border-color);padding:5px 10px;color:var(--toolbar-icon-color);font-size:12px}.vditor-outline__action{transition:all .15s ease-in-out;fill:currentColor;margin-right:5px;flex-shrink:0}.vditor-outline__action--close{transform:rotate(-90deg)}.vditor-wysiwyg{box-sizing:border-box;flex:1;position:relative;width:100%;min-width:1px}.vditor-wysiwyg pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-wysiwyg pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-wysiwyg pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-wysiwyg pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-wysiwyg pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-wysiwyg blockquote:empty::before,.vditor-wysiwyg h1:empty::after,.vditor-wysiwyg h2:empty::after,.vditor-wysiwyg h3:empty::after,.vditor-wysiwyg h4:empty::after,.vditor-wysiwyg h5:empty::after,.vditor-wysiwyg h6:empty::after,.vditor-wysiwyg p:empty::before,.vditor-wysiwyg pre>code:empty::before{content:" "}.vditor-wysiwyg code[data-marker="`"]{padding-left:0!important;padding-right:0!important}.vditor-wysiwyg__block pre:first-child{margin-bottom:-1em}.vditor-wysiwyg__block pre:first-child code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-wysiwyg__block pre:last-child{margin-bottom:1em}.vditor-wysiwyg__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg>.vditor-reset>h1:before,.vditor-wysiwyg>.vditor-reset>h2:before,.vditor-wysiwyg>.vditor-reset>h3:before,.vditor-wysiwyg>.vditor-reset>h4:before,.vditor-wysiwyg>.vditor-reset>h5:before,.vditor-wysiwyg>.vditor-reset>h6:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-wysiwyg>.vditor-reset>h2:before{content:"H2"}.vditor-wysiwyg>.vditor-reset>h3:before{content:"H3"}.vditor-wysiwyg>.vditor-reset>h4:before{content:"H4"}.vditor-wysiwyg>.vditor-reset>h5:before{content:"H5"}.vditor-wysiwyg>.vditor-reset>h6:before{content:"H6"}.vditor-wysiwyg div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-wysiwyg div[data-type=footnotes-block]:before{content:"^F"}.vditor-wysiwyg div.vditor-wysiwyg__block:before{content:"</>"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=yaml-front-matter]:before{content:"F"}.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=math-block]:before{content:"$$"}.vditor-wysiwyg .vditor-toc:before{content:"ToC"}.vditor-wysiwyg hr{display:inline-block;margin:12px 0;width:100%}.vditor-wysiwyg details{white-space:initial}.vditor-wysiwyg a{cursor:pointer}.vditor-wysiwyg span[data-type=backslash]>span{display:none;color:var(--second-color)}.vditor-wysiwyg span[data-type=link-ref],.vditor-wysiwyg sup[data-type=footnotes-ref]{color:#4285f4}.vditor-wysiwyg span[data-type=toc-h]{color:#4285f4;text-decoration:underline}.vditor-wysiwyg div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-wysiwyg div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}@media screen and (max-width:520px){.vditor-wysiwyg .vditor-toc:before,.vditor-wysiwyg div.vditor-wysiwyg__block:before,.vditor-wysiwyg div[data-type=footnotes-block]:before,.vditor-wysiwyg div[data-type=link-ref-defs-block]:before,.vditor-wysiwyg h1:before,.vditor-wysiwyg h2:before,.vditor-wysiwyg h3:before,.vditor-wysiwyg h4:before,.vditor-wysiwyg h5:before,.vditor-wysiwyg h6:before{content:none}}.vditor-ir{box-sizing:border-box;flex:1;min-width:1px;position:relative;width:100%}.vditor-ir__node[data-type=code-block]:after,.vditor-ir__node[data-type=code-block]:before,.vditor-ir__node[data-type=math-block]:after,.vditor-ir__node[data-type=math-block]:before,.vditor-ir__node[data-type=yaml-front-matter]:after,.vditor-ir__node[data-type=yaml-front-matter]:before{content:" ";color:var(--second-color)}.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker{padding:0!important}.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=a]{cursor:pointer}.vditor-ir__node[data-type=footnotes-ref],.vditor-ir__node[data-type=link-ref]{color:#4285f4}.vditor-ir__node[data-type=html-block]{margin-bottom:1em}.vditor-ir__node .vditor-ir__marker{width:0;overflow:hidden;display:inline-block;height:0;transition:all .15s ease-in-out}.vditor-ir__node--hidden .vditor-ir__marker{visibility:hidden}.vditor-ir__node--expand .vditor-ir__marker{color:var(--second-color);display:inline;height:auto;width:auto}.vditor-ir__node--expand .vditor-ir__marker--hide{display:none}.vditor-ir__node--expand .vditor-ir__marker--heading{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--bi{color:var(--ir-bi-color)}.vditor-ir__node--expand .vditor-ir__marker--link{color:var(--ir-link-color)}.vditor-ir__node--expand .vditor-ir__marker--title{color:var(--ir-title-color)}.vditor-ir__node--expand .vditor-ir__marker--bracket{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir__node--expand .vditor-ir__marker--paren{color:var(--ir-paren-color)}.vditor-ir__node--expand .vditor-ir__marker--info{color:var(--ir-heading-color)}.vditor-ir__node--expand .vditor-ir__marker--pre code{color:var(--textarea-text-color);height:auto;text-align:left}.vditor-ir__node--expand[data-type=code-block]:after,.vditor-ir__node--expand[data-type=code-block]:before{content:"```"}.vditor-ir__node--expand[data-type=yaml-front-matter]:after,.vditor-ir__node--expand[data-type=yaml-front-matter]:before{content:"---"}.vditor-ir__node--expand[data-type=math-block]:after,.vditor-ir__node--expand[data-type=math-block]:before{content:"$$"}.vditor-ir__node span[data-type=code-block-close-marker],.vditor-ir__node span[data-type=code-block-open-marker],.vditor-ir__node span[data-type=math-block-close-marker],.vditor-ir__node span[data-type=math-block-open-marker],.vditor-ir__node span[data-type=yaml-front-matter-close-marker],.vditor-ir__node span[data-type=yaml-front-matter-open-marker]{display:none}.vditor-ir__preview{cursor:pointer;white-space:initial;min-height:27px}.vditor-ir__link{color:var(--ir-bracket-color);text-decoration:underline}.vditor-ir pre.vditor-reset{background-color:var(--panel-background-color);margin:0;white-space:pre-wrap;height:100%;box-sizing:border-box}.vditor-ir pre.vditor-reset[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-ir pre.vditor-reset:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-ir pre.vditor-reset:focus{outline:0;background-color:var(--textarea-background-color)}.vditor-ir pre.vditor-reset:after{content:"";height:var(--editor-bottom);display:block}.vditor-ir pre.vditor-reset pre{margin:0}.vditor-ir hr{display:inline-block;margin:12px 0;width:100%}.vditor-ir blockquote:empty::before,.vditor-ir h1:empty::after,.vditor-ir h2:empty::after,.vditor-ir h3:empty::after,.vditor-ir h4:empty::after,.vditor-ir h5:empty::after,.vditor-ir h6:empty::after,.vditor-ir p:empty::before,.vditor-ir pre>code:empty::before{content:" "}.vditor-ir .vditor-reset>h1:before,.vditor-ir .vditor-reset>h2:before,.vditor-ir .vditor-reset>h3:before,.vditor-ir .vditor-reset>h4:before,.vditor-ir .vditor-reset>h5:before,.vditor-ir .vditor-reset>h6:before,.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before{float:left;padding-right:4px;margin-left:-29px;content:"H1";font-size:.85rem;font-weight:400;color:var(--second-color)}.vditor-ir .vditor-reset>h2:before{content:"H2"}.vditor-ir .vditor-reset>h3:before{content:"H3"}.vditor-ir .vditor-reset>h4:before{content:"H4"}.vditor-ir .vditor-reset>h5:before{content:"H5"}.vditor-ir .vditor-reset>h6:before{content:"H6"}.vditor-ir div[data-type=link-ref-defs-block]{color:var(--blockquote-color)}.vditor-ir div[data-type=link-ref-defs-block]:before{content:'"A"'}.vditor-ir div[data-type=footnotes-block]{border-top:2px solid var(--heading-border-color);padding-top:24px;margin-top:24px}.vditor-ir div[data-type=footnotes-block]:before{content:"^F"}.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>blockquote,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>hr,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ol,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>p,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>pre,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>table,.vditor-ir div[data-type=footnotes-block]>div[data-type=footnotes-def]>ul{margin-left:8px}.vditor-ir .vditor-toc:before{content:"ToC"}.vditor-ir .vditor-toc span[data-type=toc-h]{color:#4285f4;text-decoration:underline}@media screen and (max-width:520px){.vditor-ir .vditor-toc:before,.vditor-ir div[data-type=footnotes-block]:before,.vditor-ir div[data-type=link-ref-defs-block]:before,.vditor-ir h1:before,.vditor-ir h2:before,.vditor-ir h3:before,.vditor-ir h4:before,.vditor-ir h5:before,.vditor-ir h6:before{content:none}}.vditor-sv{font-family:"Helvetica Neue","Luxi Sans","DejaVu Sans","Hiragino Sans GB","Microsoft Yahei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols;margin:0 1px 0 0;overflow:auto;width:100%;flex:1;min-width:1px;border:0;resize:none;padding:10px 9px 10px 10px;box-sizing:border-box;background-color:var(--panel-background-color);outline:0 none;font-size:16px;line-height:22px;color:var(--textarea-text-color);border-radius:0 0 3px 3px;font-variant-ligatures:no-common-ligatures;white-space:pre-wrap;word-break:break-word;word-wrap:break-word}.vditor-sv[contenteditable=false]{opacity:.3;cursor:not-allowed}.vditor-sv:empty::before{content:attr(placeholder);color:var(--second-color)}.vditor-sv:focus{background-color:var(--textarea-background-color)}.vditor-sv:after{content:"";height:var(--editor-bottom);display:block}.vditor-sv span[data-type=newline]+span[data-type=text]:empty{display:inherit}.vditor-sv .sup{vertical-align:super;font-size:smaller}.vditor-sv .strong{font-weight:700}.vditor-sv .em{font-style:italic}.vditor-sv .s{text-decoration:line-through}.vditor-sv .mark:not(.vditor-sv__marker){background-color:#ff0;color:#000}.vditor-sv .h1{font-size:1.75em;line-height:44px}.vditor-sv .h2{font-size:1.55em;line-height:38px}.vditor-sv .h3{font-size:1.38em;line-height:27px}.vditor-sv .h4{font-size:1.25em;line-height:25px}.vditor-sv .h5{font-size:1.13em}.vditor-sv .h6{font-size:1em}.vditor-sv__marker{color:var(--second-color)}.vditor-sv__marker--heading{color:var(--ir-heading-color)}.vditor-sv__marker--bi{color:var(--ir-bi-color)}.vditor-sv__marker--link{color:var(--ir-link-color)}.vditor-sv__marker--title{color:var(--ir-title-color)}.vditor-sv__marker--bracket{color:var(--ir-bracket-color)}.vditor-sv__marker--paren{color:var(--ir-paren-color)}.vditor-sv__marker--info{color:var(--ir-heading-color)}.vditor-sv__marker--strong{font-weight:700}.mk-json-editor{--mk-json-editor-height:400px}.mk-json-editor .cm-editor{width:100%;height:var(--mk-json-editor-height)}:root{--el-aside-width:auto;--mk-line-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.12),0 0 3px 0 rgba(0, 0, 0, 0.04);--mk-sidebar-collpase-width:calc(
|
|
27
27
|
var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2
|
|
28
28
|
);--mk-menu-font-size:14px;--mk-menu-bg-color:var(--mk-sidebar-bg-color);--mk-menu-sub-menu-bg-color:#001529;--mk-menu-hover-text-color:#ffffff;--mk-menu-text-color:#ffffff;--mk-menu-hover-bg-color:#2e8cf0;--mk-menu-active-color:#ffffff;--mk-menu-active-bg-color:var(--mk-menu-hover-bg-color);--mk-menu-icon-width:var(--mk-menu-font-size)}.mk-lock{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1999}.mk-lock__overlay{width:100%;height:100%}.mk-lock-entry{position:absolute;top:50%;left:50%;width:260px;transform:translate(-50%,-50%)}.mk-lock-entry__footer{display:flex;justify-content:space-between;margin-top:6px}.mk-bar{display:flex;flex-direction:column;width:80px;height:100%;background-color:#001428;color:#fff}.mk-bar__logo{overflow:hidden;width:64px;height:64px;border-radius:4px;margin:8px auto}.mk-bar__items{flex:1}.mk-bar__footer{font-size:18px;display:flex;align-items:center;justify-content:center}.mk-bar__item{position:relative;display:flex;align-items:center;justify-content:center;width:64px;margin:0 auto;flex-direction:column;cursor:pointer;margin-top:10px;padding:8px 0}.mk-bar__item-button{display:flex;align-items:center;justify-content:center;width:25px;height:25px;background-color:#9d9d9d;border-radius:4px}.mk-bar__item-title{font-size:12px;padding:5px 5px 0 5px;overflow:hidden;text-overflow:clip;white-space:normal;width:100%;box-sizing:border-box;text-align:center}.mk-bar__item.is-active{background:#fff;border-radius:4px}.mk-bar__item.is-active .mk-bar__item-button{background-color:#ff844b}.mk-bar__item.is-active .mk-bar__item-title{color:#333}.mk-bar__item.is-active.has-children{border-top-right-radius:0;border-bottom-right-radius:0}.mk-bar__item.is-active.has-children::after{content:"";position:absolute;left:100%;height:100%;width:8px;background-color:#fff}.mk-bar .mk-logo{width:65px;height:65px;margin:0 auto;background-size:contain;background-position:center center}.mk-bar-settings__icon{cursor:pointer}.mk-bar-settings__item{display:flex;padding:5px 3px;align-items:center;cursor:pointer}.mk-bar-settings__item-icon{margin-right:10px}.mk-bar-settings__item:hover{background-color:#ecf5ff}.mk-menu{--el-menu-active-color:rgba(0, 98, 255, 1);--el-menu-text-color:rgba(23, 23, 37, 1);width:200px;height:100%;background-color:#fff}.mk-menu .el-menu{border:none}.mk-menu-item__icon{margin-right:10px}.mk-header{display:flex;height:56px}.mk-header__main{flex:1}.mk-header-tools{height:100%}.mk-header-tools__item{cursor:pointer;padding:0 10px;height:100%;display:flex;align-items:center}.mk-header-tools__item:hover{background-color:#f5f5f5}.mk-header-tools__user{height:100%}.mk-header-tools__user-info{height:100%;display:flex;align-items:center;outline:0}.mk-header-tools__avatar{height:28px;border-radius:50%;overflow:hidden}.mk-header-tools__nickName{margin-left:5px}.mk-layout-default{height:100%;background-color:#ebeced}.mk-layout-default>.el-main{--el-main-padding:0px}.mk-layout-default__body{height:100%}.mk-layout-default__body>.el-main{--el-main-padding:0px}.mk-layout-default__header{box-sizing:content-box;--el-header-height:56px;background-color:#fff;border-bottom:1px solid #e2e2ea}.mk-layout-default__main{height:100%}.mk-layout-default__main>.el-main{--el-main-padding:0px}.mk-layout-default__menu{border-right:1px solid #e2e2ea}.mk-local-log__main{height:100%}.mk-local-log__log{white-space:pre}.mk-local-log__dialog{height:80%}.login-wrap{position:fixed;top:0;left:0;bottom:0;right:0;overflow:auto;z-index:9}.login-wrap>.login-bg{background-color:#fcfcfc;position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;overflow:hidden}.login-wrap>.login-bg>.login-bg-block{width:80vh;height:200%;background-color:#0078f5;position:absolute;top:0}.login-wrap>.login-bg>.login-bg-block:nth-child(1){left:100%;transform-origin:0 50%;transform:rotate(-30deg) translate(0,-50%)}.login-wrap>.login-bg>.login-bg-block:nth-child(2){right:100%;transform-origin:0 0;transform:rotate(-30deg) translate(-10%,0)}.login-wrap .operaBtn{color:#0078f5}.login-wrap .notify{color:#202d40;display:flex;align-items:center}.login-root{position:relative;display:flex;justify-content:center;width:100%;min-height:100%;align-items:center;background-color:initial;z-index:1;padding:5%;box-sizing:border-box}.login-main{position:relative;width:100%;min-width:320px}.form-container{transform-origin:top;display:flex;justify-content:center}.form-wrap{width:440px;max-width:calc(100vw - 28px);padding:30px;position:relative;overflow:hidden;background:hsla(0,0%,95%,.5);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px)}.form-title{display:flex;align-items:center;justify-content:space-between;height:33px;margin:0 0 30px;color:#202d40;font-size:20px;font-weight:600}.form-title span{height:20px;color:#8592a5;font-size:14px;font-weight:400}.form-title a{color:#06f}:root{--mk-spacing-small:5px;--mk-spacing-middle:10px;--mk-spacing-large:15px;--mk-border-color:#cccccc;--mk-border:1px solid var(--mk-border-color);--mk-mask-background-color:rgba(0, 0, 0, 0.1)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@use "./local-log.scss";
|
|
1
|
+
@use "./local-log.scss";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maketribe/ms-app",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.23",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"files": [
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"vue-codemirror": "^6.1.1",
|
|
22
22
|
"vue-router": "^4.2.4",
|
|
23
23
|
"@maketribe/dm": "^3.0.10",
|
|
24
|
-
"@maketribe/request": "^1.1.
|
|
25
|
-
"@maketribe/
|
|
26
|
-
"@maketribe/
|
|
24
|
+
"@maketribe/request": "^1.1.12",
|
|
25
|
+
"@maketribe/utils": "^1.1.4",
|
|
26
|
+
"@maketribe/locale": "^1.0.5"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "npm run clean && npm run build:js && npm run build:type && npm run build:style",
|
|
@@ -4,18 +4,19 @@ import { json } from "@codemirror/lang-json";
|
|
|
4
4
|
import { jsonEditorEmits, jsonEditorProps } from "./json-editor-options";
|
|
5
5
|
|
|
6
6
|
export default defineComponent({
|
|
7
|
-
name: "
|
|
7
|
+
name: "MKJsonEditor",
|
|
8
8
|
props: jsonEditorProps,
|
|
9
9
|
emits: jsonEditorEmits,
|
|
10
10
|
setup(props, { emit }) {
|
|
11
11
|
const modelValue = computed({
|
|
12
|
-
get: () => props.modelValue,
|
|
12
|
+
get: () => (props.modelValue as string) || "",
|
|
13
13
|
set: (v: string) => emit("update:model-value", v),
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
return () => {
|
|
17
17
|
return (
|
|
18
18
|
<Codemirror
|
|
19
|
+
class="mk-json-editor"
|
|
19
20
|
modelValue={unref(modelValue)}
|
|
20
21
|
onUpdate:modelValue={(v: string) => (modelValue.value = v)}
|
|
21
22
|
disabled={props.disabled}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defineAsyncComponent } from "vue";
|
|
1
2
|
import { ElInput, ElInputNumber } from "element-plus";
|
|
2
3
|
import { Components } from "@maketribe/dm";
|
|
3
4
|
|
|
@@ -19,5 +20,13 @@ export class ConfigComponents extends Components {
|
|
|
19
20
|
title: "数值输入框",
|
|
20
21
|
component: ElInputNumber,
|
|
21
22
|
});
|
|
23
|
+
|
|
24
|
+
this.registerComponent({
|
|
25
|
+
name: "MKConfigJsonEditor",
|
|
26
|
+
title: "JSON",
|
|
27
|
+
component: defineAsyncComponent(
|
|
28
|
+
() => import("../../components/json-editor")
|
|
29
|
+
),
|
|
30
|
+
});
|
|
22
31
|
}
|
|
23
32
|
}
|
|
@@ -48,6 +48,7 @@ export class ConfigForm
|
|
|
48
48
|
options: [
|
|
49
49
|
{ value: "string", label: "字符串" },
|
|
50
50
|
{ value: "int", label: "整数" },
|
|
51
|
+
{ value: "json", label: "JSON" },
|
|
51
52
|
],
|
|
52
53
|
onChange: () => {
|
|
53
54
|
this.handleTypeChange(this.data);
|
|
@@ -63,6 +64,21 @@ export class ConfigForm
|
|
|
63
64
|
label: "配置值",
|
|
64
65
|
required: true,
|
|
65
66
|
defaultValue: null,
|
|
67
|
+
rules: [
|
|
68
|
+
{
|
|
69
|
+
validator: (rule, value, callback) => {
|
|
70
|
+
if (this.data?.type === "json") {
|
|
71
|
+
try {
|
|
72
|
+
JSON.parse(value);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
callback(new Error("JSON格式错误"));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
callback();
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
],
|
|
66
82
|
componentInfo: this.resolveType(defaultType),
|
|
67
83
|
}),
|
|
68
84
|
]);
|
|
@@ -86,21 +102,28 @@ export class ConfigForm
|
|
|
86
102
|
formatItem(item: Config): Config {
|
|
87
103
|
let value = item.value;
|
|
88
104
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
105
|
+
if (item.type !== "json") {
|
|
106
|
+
try {
|
|
107
|
+
value = JSON.parse(item.value);
|
|
108
|
+
} catch (e) {}
|
|
109
|
+
}
|
|
92
110
|
|
|
93
111
|
return { ...item, value };
|
|
94
112
|
}
|
|
95
113
|
|
|
96
114
|
formatSubmitData(data: any) {
|
|
97
|
-
return {
|
|
115
|
+
return {
|
|
116
|
+
...data,
|
|
117
|
+
value: data.type === "json" ? data.value : JSON.stringify(data.value),
|
|
118
|
+
};
|
|
98
119
|
}
|
|
99
120
|
|
|
100
121
|
resolveType(type: string) {
|
|
101
122
|
switch (type) {
|
|
102
123
|
case "int":
|
|
103
124
|
return "MKConfigInputNumber";
|
|
125
|
+
case "json":
|
|
126
|
+
return "MKConfigJsonEditor";
|
|
104
127
|
default:
|
|
105
128
|
return "MKConfigInput";
|
|
106
129
|
}
|