markstream-vue2 0.0.45 → 0.0.46
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/chunks/{index-b8d5777d.cjs → index-11432088.cjs} +1 -1
- package/dist/chunks/{index-87cdc60f.js → index-12ec401a.js} +1 -0
- package/dist/chunks/{index-292bb72c.js → index-40b64c02.js} +1 -0
- package/dist/chunks/index-6013a5b2.cjs +1 -0
- package/dist/chunks/{index-e0a22210.js → index-6ae3630b.js} +1 -0
- package/dist/chunks/{index-2a7bea2c.js → index-754b8598.js} +1 -0
- package/dist/chunks/{index-42252d16.js → index-8dc37342.js} +1 -0
- package/dist/chunks/{index-8693b3db.cjs → index-a4867ea2.cjs} +1 -1
- package/dist/chunks/index-e0125777.cjs +1 -0
- package/dist/chunks/{index-91325ae4.cjs → index-fb457079.cjs} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +2289 -1399
- package/dist/index.px.css +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/tailwind.ts +1 -1
- package/dist/types/components/CodeBlockNode/CodeBlockNode.vue.d.ts +5 -5
- package/dist/types/components/D2BlockNode/D2BlockNode.vue.d.ts +1 -1
- package/dist/types/components/ImageNode/ImageNode.vue.d.ts +1 -1
- package/dist/types/components/InfographicBlockNode/InfographicBlockNode.vue.d.ts +1 -1
- package/dist/types/components/MarkdownCodeBlockNode/MarkdownCodeBlockNode.vue.d.ts +48 -9
- package/dist/types/components/MarkdownRenderCompat.vue.d.ts +13 -2
- package/dist/types/components/MermaidBlockNode/MermaidBlockNode.vue.d.ts +5 -1
- package/dist/types/components/NodeRenderer/LegacyNodesRenderer.vue.d.ts +23 -3
- package/dist/types/components/NodeRenderer/NodeRenderer.vue.d.ts +39 -4
- package/dist/types/components/PreCodeNode/PreCodeNode.vue.d.ts +2 -0
- package/dist/types/components/TextNode/streamingTextState.d.ts +2 -11
- package/dist/types/composables/useSmoothMarkdownStream.d.ts +21 -0
- package/dist/types/exports.d.ts +5 -3
- package/dist/types/types/component-props.d.ts +17 -4
- package/dist/types/utils/codeBlockExtraProps.d.ts +4 -0
- package/dist/types/utils/devEnv.d.ts +1 -0
- package/package.json +9 -6
- package/dist/chunks/cssMode-58e68511.cjs +0 -1
- package/dist/chunks/cssMode-60d93f28.js +0 -2044
- package/dist/chunks/htmlMode-87a75897.cjs +0 -1
- package/dist/chunks/htmlMode-8d468223.js +0 -2060
- package/dist/chunks/index-c6f74f2d.cjs +0 -1
- package/dist/chunks/index-e1315bc2.cjs +0 -1
- package/dist/chunks/index.legacy-010f0006.js +0 -126308
- package/dist/chunks/index.legacy-e02dc92b.cjs +0 -1
- package/dist/chunks/jsonMode-2a97b947.cjs +0 -1
- package/dist/chunks/jsonMode-307a9a02.js +0 -2759
- package/dist/chunks/tsMode-4f227d36.js +0 -1315
- package/dist/chunks/tsMode-b1f6e7cb.cjs +0 -1
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
import { PropType } from 'vue-demi';
|
|
1
2
|
import { MarkdownCodeBlockPreviewPayload } from '../../types/component-props';
|
|
3
|
+
interface MarkdownCodeBlockNodeProps {
|
|
4
|
+
node: {
|
|
5
|
+
type: 'code_block';
|
|
6
|
+
language: string;
|
|
7
|
+
code: string;
|
|
8
|
+
raw: string;
|
|
9
|
+
diff?: boolean;
|
|
10
|
+
originalCode?: string;
|
|
11
|
+
updatedCode?: string;
|
|
12
|
+
};
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
stream?: boolean;
|
|
15
|
+
darkTheme?: string;
|
|
16
|
+
lightTheme?: string;
|
|
17
|
+
isDark?: boolean;
|
|
18
|
+
isShowPreview?: boolean;
|
|
19
|
+
enableFontSizeControl?: boolean;
|
|
20
|
+
minWidth?: string | number;
|
|
21
|
+
maxWidth?: string | number;
|
|
22
|
+
themes?: readonly string[];
|
|
23
|
+
langs?: readonly string[];
|
|
24
|
+
showHeader?: boolean;
|
|
25
|
+
showCopyButton?: boolean;
|
|
26
|
+
showExpandButton?: boolean;
|
|
27
|
+
showPreviewButton?: boolean;
|
|
28
|
+
showCollapseButton?: boolean;
|
|
29
|
+
showFontSizeButtons?: boolean;
|
|
30
|
+
showTooltips?: boolean;
|
|
31
|
+
}
|
|
2
32
|
declare function __VLS_template(): {
|
|
3
33
|
attrs: Partial<{}>;
|
|
4
34
|
slots: {
|
|
@@ -19,7 +49,7 @@ declare function __VLS_template(): {
|
|
|
19
49
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
20
50
|
declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
21
51
|
node: {
|
|
22
|
-
type:
|
|
52
|
+
type: PropType<MarkdownCodeBlockNodeProps["node"]>;
|
|
23
53
|
required: true;
|
|
24
54
|
};
|
|
25
55
|
loading: {
|
|
@@ -59,7 +89,11 @@ declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
|
59
89
|
default: any;
|
|
60
90
|
};
|
|
61
91
|
themes: {
|
|
62
|
-
type:
|
|
92
|
+
type: PropType<readonly string[]>;
|
|
93
|
+
default: any;
|
|
94
|
+
};
|
|
95
|
+
langs: {
|
|
96
|
+
type: PropType<readonly string[]>;
|
|
63
97
|
default: any;
|
|
64
98
|
};
|
|
65
99
|
showHeader: {
|
|
@@ -95,7 +129,7 @@ declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
|
95
129
|
copy: (code: string) => void;
|
|
96
130
|
}, string, Readonly<import('vue-demi').ExtractPropTypes<{
|
|
97
131
|
node: {
|
|
98
|
-
type:
|
|
132
|
+
type: PropType<MarkdownCodeBlockNodeProps["node"]>;
|
|
99
133
|
required: true;
|
|
100
134
|
};
|
|
101
135
|
loading: {
|
|
@@ -135,7 +169,11 @@ declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
|
135
169
|
default: any;
|
|
136
170
|
};
|
|
137
171
|
themes: {
|
|
138
|
-
type:
|
|
172
|
+
type: PropType<readonly string[]>;
|
|
173
|
+
default: any;
|
|
174
|
+
};
|
|
175
|
+
langs: {
|
|
176
|
+
type: PropType<readonly string[]>;
|
|
139
177
|
default: any;
|
|
140
178
|
};
|
|
141
179
|
showHeader: {
|
|
@@ -167,8 +205,8 @@ declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
|
167
205
|
default: any;
|
|
168
206
|
};
|
|
169
207
|
}>>, {
|
|
170
|
-
themes:
|
|
171
|
-
|
|
208
|
+
themes: readonly string[];
|
|
209
|
+
langs: readonly string[];
|
|
172
210
|
isDark: boolean;
|
|
173
211
|
loading: boolean;
|
|
174
212
|
stream: boolean;
|
|
@@ -178,12 +216,13 @@ declare const __VLS_component: import('vue-demi').DefineComponent<{
|
|
|
178
216
|
enableFontSizeControl: boolean;
|
|
179
217
|
minWidth: string | number;
|
|
180
218
|
maxWidth: string | number;
|
|
181
|
-
showHeader: boolean;
|
|
182
|
-
showCopyButton: boolean;
|
|
183
|
-
showExpandButton: boolean;
|
|
184
219
|
showPreviewButton: boolean;
|
|
185
220
|
showCollapseButton: boolean;
|
|
186
221
|
showFontSizeButtons: boolean;
|
|
222
|
+
showTooltips: boolean;
|
|
223
|
+
showHeader: boolean;
|
|
224
|
+
showCopyButton: boolean;
|
|
225
|
+
showExpandButton: boolean;
|
|
187
226
|
}>;
|
|
188
227
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
189
228
|
export default _default;
|
|
@@ -22,10 +22,15 @@ declare const _default: import('vue-demi').DefineComponent<{
|
|
|
22
22
|
codeBlockProps: () => Record<string, any> | undefined;
|
|
23
23
|
showTooltips: BooleanConstructor;
|
|
24
24
|
themes: () => string[] | undefined;
|
|
25
|
+
langs: () => string[] | undefined;
|
|
25
26
|
isDark: BooleanConstructor;
|
|
26
27
|
customId: (NumberConstructor | StringConstructor)[];
|
|
27
28
|
indexKey: (NumberConstructor | StringConstructor)[];
|
|
28
29
|
typewriter: BooleanConstructor;
|
|
30
|
+
fade: {
|
|
31
|
+
type: BooleanConstructor;
|
|
32
|
+
default: boolean;
|
|
33
|
+
};
|
|
29
34
|
batchRendering: BooleanConstructor;
|
|
30
35
|
initialRenderBatchSize: NumberConstructor;
|
|
31
36
|
renderBatchSize: NumberConstructor;
|
|
@@ -64,10 +69,15 @@ declare const _default: import('vue-demi').DefineComponent<{
|
|
|
64
69
|
codeBlockProps: () => Record<string, any> | undefined;
|
|
65
70
|
showTooltips: BooleanConstructor;
|
|
66
71
|
themes: () => string[] | undefined;
|
|
72
|
+
langs: () => string[] | undefined;
|
|
67
73
|
isDark: BooleanConstructor;
|
|
68
74
|
customId: (NumberConstructor | StringConstructor)[];
|
|
69
75
|
indexKey: (NumberConstructor | StringConstructor)[];
|
|
70
76
|
typewriter: BooleanConstructor;
|
|
77
|
+
fade: {
|
|
78
|
+
type: BooleanConstructor;
|
|
79
|
+
default: boolean;
|
|
80
|
+
};
|
|
71
81
|
batchRendering: BooleanConstructor;
|
|
72
82
|
initialRenderBatchSize: NumberConstructor;
|
|
73
83
|
renderBatchSize: NumberConstructor;
|
|
@@ -78,13 +88,14 @@ declare const _default: import('vue-demi').DefineComponent<{
|
|
|
78
88
|
maxLiveNodes: NumberConstructor;
|
|
79
89
|
liveNodeBuffer: NumberConstructor;
|
|
80
90
|
}>>, {
|
|
81
|
-
|
|
91
|
+
isDark: boolean;
|
|
82
92
|
showTooltips: boolean;
|
|
93
|
+
codeBlockStream: boolean;
|
|
83
94
|
typewriter: boolean;
|
|
95
|
+
fade: boolean;
|
|
84
96
|
codeBlockDarkTheme: any;
|
|
85
97
|
codeBlockLightTheme: any;
|
|
86
98
|
renderCodeBlocksAsPre: boolean;
|
|
87
|
-
isDark: boolean;
|
|
88
99
|
batchRendering: boolean;
|
|
89
100
|
debugPerformance: boolean;
|
|
90
101
|
deferNodesUntilVisible: boolean;
|
|
@@ -22,6 +22,7 @@ interface MermaidBlockNodeProps {
|
|
|
22
22
|
showZoomControls?: boolean;
|
|
23
23
|
enableWheelZoom?: boolean;
|
|
24
24
|
isStrict?: boolean;
|
|
25
|
+
enableMermaidInteractions?: boolean;
|
|
25
26
|
onRenderError?: (error: unknown, code: string, container: HTMLElement) => boolean | void;
|
|
26
27
|
}
|
|
27
28
|
declare function __VLS_template(): {
|
|
@@ -61,6 +62,7 @@ declare const __VLS_component: import('vue-demi').DefineComponent<__VLS_WithDefa
|
|
|
61
62
|
showZoomControls: boolean;
|
|
62
63
|
enableWheelZoom: boolean;
|
|
63
64
|
isStrict: boolean;
|
|
65
|
+
enableMermaidInteractions: boolean;
|
|
64
66
|
}>, {}, {}, {}, {}, import('vue-demi').ComponentOptionsMixin, import('vue-demi').ComponentOptionsMixin, {
|
|
65
67
|
copy: (...args: any[]) => void;
|
|
66
68
|
export: (...args: any[]) => void;
|
|
@@ -87,11 +89,12 @@ declare const __VLS_component: import('vue-demi').DefineComponent<__VLS_WithDefa
|
|
|
87
89
|
showZoomControls: boolean;
|
|
88
90
|
enableWheelZoom: boolean;
|
|
89
91
|
isStrict: boolean;
|
|
92
|
+
enableMermaidInteractions: boolean;
|
|
90
93
|
}>>>, {
|
|
91
94
|
loading: boolean;
|
|
95
|
+
showCollapseButton: boolean;
|
|
92
96
|
showHeader: boolean;
|
|
93
97
|
showCopyButton: boolean;
|
|
94
|
-
showCollapseButton: boolean;
|
|
95
98
|
maxHeight: string | null;
|
|
96
99
|
workerTimeoutMs: number;
|
|
97
100
|
parseTimeoutMs: number;
|
|
@@ -108,6 +111,7 @@ declare const __VLS_component: import('vue-demi').DefineComponent<__VLS_WithDefa
|
|
|
108
111
|
showZoomControls: boolean;
|
|
109
112
|
enableWheelZoom: boolean;
|
|
110
113
|
isStrict: boolean;
|
|
114
|
+
enableMermaidInteractions: boolean;
|
|
111
115
|
}>;
|
|
112
116
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
113
117
|
export default _default;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { BaseNode, HtmlPolicy } from 'stream-markdown-parser';
|
|
2
|
-
import { CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockNodeProps, CodeBlockPreviewPayload } from '../../types/component-props';
|
|
2
|
+
import { CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockNodeProps, CodeBlockPreviewPayload, ShikiCodeBlockProps } from '../../types/component-props';
|
|
3
|
+
type NodeRendererCodeBlockThemes = CodeBlockNodeProps['themes'] | ShikiCodeBlockProps['themes'];
|
|
4
|
+
type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node' | 'themes'>> & Partial<Omit<ShikiCodeBlockProps, 'themes'>> & {
|
|
5
|
+
themes?: NodeRendererCodeBlockThemes;
|
|
6
|
+
} & Record<string, unknown>;
|
|
3
7
|
type __VLS_Props = {
|
|
4
8
|
nodes?: BaseNode[];
|
|
5
9
|
customId?: string;
|
|
6
10
|
indexKey?: number | string;
|
|
7
11
|
typewriter?: boolean;
|
|
12
|
+
fade?: boolean;
|
|
8
13
|
showTooltips?: boolean;
|
|
9
14
|
codeBlockStream?: boolean;
|
|
10
15
|
codeBlockDarkTheme?: CodeBlockMonacoTheme;
|
|
@@ -12,9 +17,21 @@ type __VLS_Props = {
|
|
|
12
17
|
codeBlockMonacoOptions?: CodeBlockMonacoOptions;
|
|
13
18
|
codeBlockMinWidth?: string | number;
|
|
14
19
|
codeBlockMaxWidth?: string | number;
|
|
15
|
-
codeBlockProps?:
|
|
20
|
+
codeBlockProps?: NodeRendererCodeBlockProps;
|
|
16
21
|
renderCodeBlocksAsPre?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Theme names or theme objects preloaded for Monaco-backed code blocks.
|
|
24
|
+
* When Shiki code blocks are used, only string theme names are forwarded to
|
|
25
|
+
* MarkdownCodeBlockNode / stream-markdown; theme objects are ignored.
|
|
26
|
+
*/
|
|
17
27
|
themes?: CodeBlockMonacoTheme[];
|
|
28
|
+
/**
|
|
29
|
+
* Shiki language preload list forwarded to MarkdownCodeBlockNode.
|
|
30
|
+
*
|
|
31
|
+
* Vue2's default code block renderer is Monaco-backed. This prop is used
|
|
32
|
+
* when a custom `code_block` or language renderer uses MarkdownCodeBlockNode.
|
|
33
|
+
*/
|
|
34
|
+
langs?: readonly string[];
|
|
18
35
|
isDark?: boolean;
|
|
19
36
|
customHtmlTags?: readonly string[];
|
|
20
37
|
htmlPolicy?: HtmlPolicy;
|
|
@@ -23,6 +40,7 @@ declare const _default: import('vue-demi').DefineComponent<__VLS_WithDefaults<__
|
|
|
23
40
|
codeBlockStream: boolean;
|
|
24
41
|
showTooltips: boolean;
|
|
25
42
|
typewriter: boolean;
|
|
43
|
+
fade: boolean;
|
|
26
44
|
}>, {}, {}, {}, {}, import('vue-demi').ComponentOptionsMixin, import('vue-demi').ComponentOptionsMixin, {
|
|
27
45
|
copy: (code: string) => void;
|
|
28
46
|
handleArtifactClick: (payload: CodeBlockPreviewPayload) => void;
|
|
@@ -31,10 +49,12 @@ declare const _default: import('vue-demi').DefineComponent<__VLS_WithDefaults<__
|
|
|
31
49
|
codeBlockStream: boolean;
|
|
32
50
|
showTooltips: boolean;
|
|
33
51
|
typewriter: boolean;
|
|
52
|
+
fade: boolean;
|
|
34
53
|
}>>>, {
|
|
35
|
-
codeBlockStream: boolean;
|
|
36
54
|
showTooltips: boolean;
|
|
55
|
+
codeBlockStream: boolean;
|
|
37
56
|
typewriter: boolean;
|
|
57
|
+
fade: boolean;
|
|
38
58
|
}>;
|
|
39
59
|
export default _default;
|
|
40
60
|
type __VLS_WithDefaults<P, D> = {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { BaseNode, HtmlPolicy, MarkdownIt, ParseOptions } from 'stream-markdown-parser';
|
|
2
|
-
import {
|
|
2
|
+
import { SmoothMarkdownStreamOptions } from '../../composables/useSmoothMarkdownStream';
|
|
3
|
+
import { CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockNodeProps, CodeBlockPreviewPayload, D2BlockNodeProps, InfographicBlockNodeProps, MermaidBlockNodeProps, ShikiCodeBlockProps } from '../../types/component-props';
|
|
4
|
+
type NodeRendererCodeBlockThemes = CodeBlockNodeProps['themes'] | ShikiCodeBlockProps['themes'];
|
|
5
|
+
type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node' | 'themes'>> & Partial<Omit<ShikiCodeBlockProps, 'themes'>> & {
|
|
6
|
+
themes?: NodeRendererCodeBlockThemes;
|
|
7
|
+
} & Record<string, unknown>;
|
|
3
8
|
export interface NodeRendererProps {
|
|
4
9
|
content?: string;
|
|
5
10
|
nodes?: BaseNode[];
|
|
@@ -37,7 +42,7 @@ export interface NodeRendererProps {
|
|
|
37
42
|
/** Maximum width forwarded to CodeBlockNode (px or CSS unit) */
|
|
38
43
|
codeBlockMaxWidth?: string | number;
|
|
39
44
|
/** Arbitrary props to forward to every CodeBlockNode */
|
|
40
|
-
codeBlockProps?:
|
|
45
|
+
codeBlockProps?: NodeRendererCodeBlockProps;
|
|
41
46
|
/** Props forwarded to MermaidBlockNode for mermaid fences */
|
|
42
47
|
mermaidProps?: Partial<Omit<MermaidBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
|
|
43
48
|
/** Props forwarded to D2BlockNode for d2/d2lang fences */
|
|
@@ -46,12 +51,36 @@ export interface NodeRendererProps {
|
|
|
46
51
|
infographicProps?: Partial<Omit<InfographicBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
|
|
47
52
|
/** Global tooltip toggle for link/code-block renderers (default: true) */
|
|
48
53
|
showTooltips?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Theme names or theme objects preloaded for Monaco-backed code blocks.
|
|
56
|
+
* When Shiki code blocks are used, only string theme names are forwarded to
|
|
57
|
+
* MarkdownCodeBlockNode / stream-markdown; theme objects are ignored.
|
|
58
|
+
*/
|
|
49
59
|
themes?: CodeBlockMonacoTheme[];
|
|
60
|
+
/**
|
|
61
|
+
* Shiki language preload list forwarded to MarkdownCodeBlockNode.
|
|
62
|
+
*
|
|
63
|
+
* Vue2's default code block renderer is Monaco-backed. This prop is used
|
|
64
|
+
* when a custom `code_block` or language renderer uses MarkdownCodeBlockNode.
|
|
65
|
+
*/
|
|
66
|
+
langs?: readonly string[];
|
|
50
67
|
isDark?: boolean;
|
|
51
68
|
customId?: string;
|
|
52
69
|
indexKey?: number | string;
|
|
53
|
-
/** Enable/disable the
|
|
70
|
+
/** Enable/disable the typewriter cursor (blinking cursor at stream end). Default: false */
|
|
54
71
|
typewriter?: boolean;
|
|
72
|
+
/** Enable/disable the non-code-node enter transition (fade animation). Default: true */
|
|
73
|
+
fade?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Enable built-in smooth pacing for streaming `content` updates.
|
|
76
|
+
* - true: force-enable smooth streaming
|
|
77
|
+
* - false: force-disable smooth streaming
|
|
78
|
+
* - 'auto': enable when typewriter/incremental mode is active
|
|
79
|
+
* Applies to content mode only, not nodes mode.
|
|
80
|
+
*/
|
|
81
|
+
smoothStreaming?: boolean | 'auto';
|
|
82
|
+
/** Options forwarded to the built-in smooth streaming controller. Read once when the renderer is created. */
|
|
83
|
+
smoothStreamingOptions?: SmoothMarkdownStreamOptions;
|
|
55
84
|
/** Enable incremental/batched rendering of nodes to avoid large single flush costs. Default: true */
|
|
56
85
|
batchRendering?: boolean;
|
|
57
86
|
/** How many nodes to render immediately before batching kicks in. Default: 40 */
|
|
@@ -75,6 +104,8 @@ declare const _default: import('../../../vue-demi').DefineComponent<__VLS_WithDe
|
|
|
75
104
|
codeBlockStream: boolean;
|
|
76
105
|
showTooltips: boolean;
|
|
77
106
|
typewriter: boolean;
|
|
107
|
+
fade: boolean;
|
|
108
|
+
smoothStreaming: string;
|
|
78
109
|
batchRendering: boolean;
|
|
79
110
|
debugPerformance: boolean;
|
|
80
111
|
initialRenderBatchSize: number;
|
|
@@ -95,6 +126,8 @@ declare const _default: import('../../../vue-demi').DefineComponent<__VLS_WithDe
|
|
|
95
126
|
codeBlockStream: boolean;
|
|
96
127
|
showTooltips: boolean;
|
|
97
128
|
typewriter: boolean;
|
|
129
|
+
fade: boolean;
|
|
130
|
+
smoothStreaming: string;
|
|
98
131
|
batchRendering: boolean;
|
|
99
132
|
debugPerformance: boolean;
|
|
100
133
|
initialRenderBatchSize: number;
|
|
@@ -106,9 +139,11 @@ declare const _default: import('../../../vue-demi').DefineComponent<__VLS_WithDe
|
|
|
106
139
|
maxLiveNodes: number;
|
|
107
140
|
liveNodeBuffer: number;
|
|
108
141
|
}>>>, {
|
|
109
|
-
codeBlockStream: boolean;
|
|
110
142
|
showTooltips: boolean;
|
|
143
|
+
codeBlockStream: boolean;
|
|
111
144
|
typewriter: boolean;
|
|
145
|
+
fade: boolean;
|
|
146
|
+
smoothStreaming: boolean | "auto";
|
|
112
147
|
batchRendering: boolean;
|
|
113
148
|
debugPerformance: boolean;
|
|
114
149
|
initialRenderBatchSize: number;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
interface PreCodeNodeProps {
|
|
2
2
|
node: any;
|
|
3
|
+
showLineNumbers?: boolean;
|
|
4
|
+
diffInline?: boolean;
|
|
3
5
|
}
|
|
4
6
|
declare const _default: import('vue-demi').DefineComponent<__VLS_TypePropsToOption<PreCodeNodeProps>, {}, {}, {}, {}, import('vue-demi').ComponentOptionsMixin, import('vue-demi').ComponentOptionsMixin, {}, string, Readonly<import('vue-demi').ExtractPropTypes<__VLS_TypePropsToOption<PreCodeNodeProps>>>, {}>;
|
|
5
7
|
export default _default;
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
previousContent: string;
|
|
4
|
-
typewriterEnabled: boolean;
|
|
5
|
-
}
|
|
6
|
-
export interface StreamingTextStateResult {
|
|
7
|
-
settledContent: string;
|
|
8
|
-
streamedDelta: string;
|
|
9
|
-
appended: boolean;
|
|
10
|
-
}
|
|
11
|
-
export declare function resolveStreamingTextState({ nextContent, previousContent, typewriterEnabled, }: ResolveStreamingTextStateOptions): StreamingTextStateResult;
|
|
1
|
+
export { resolveStreamingTextState } from 'markstream-core';
|
|
2
|
+
export type { ResolveStreamingTextStateOptions, StreamingTextStateResult } from 'markstream-core';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SmoothMarkdownStreamOptions } from 'markstream-core';
|
|
2
|
+
import { ComputedRef, Ref } from 'vue-demi';
|
|
3
|
+
export type { SmoothMarkdownStreamOptions };
|
|
4
|
+
export interface SmoothMarkdownStreamControllerVue2 {
|
|
5
|
+
source: Ref<string>;
|
|
6
|
+
visible: Ref<string>;
|
|
7
|
+
done: Ref<boolean>;
|
|
8
|
+
final: ComputedRef<boolean>;
|
|
9
|
+
caughtUp: ComputedRef<boolean>;
|
|
10
|
+
pendingChars: ComputedRef<number>;
|
|
11
|
+
enqueue: (chunk: string) => void;
|
|
12
|
+
finish: (options?: {
|
|
13
|
+
flush?: boolean;
|
|
14
|
+
}) => void;
|
|
15
|
+
flush: () => void;
|
|
16
|
+
reset: (initialMarkdown?: string) => void;
|
|
17
|
+
pause: () => void;
|
|
18
|
+
resume: () => void;
|
|
19
|
+
}
|
|
20
|
+
export type SmoothMarkdownStreamController = SmoothMarkdownStreamControllerVue2;
|
|
21
|
+
export declare function useSmoothMarkdownStream(options?: SmoothMarkdownStreamOptions): SmoothMarkdownStreamControllerVue2;
|
package/dist/types/exports.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { MathOptions } from 'stream-markdown-parser';
|
|
1
2
|
import { Component } from 'vue-demi';
|
|
2
3
|
import { CustomComponents as MarkstreamCustomComponents } from './types';
|
|
3
|
-
import { MathOptions } from 'stream-markdown-parser';
|
|
4
4
|
import { LanguageIconResolver } from './utils/languageIcon';
|
|
5
5
|
import { default as AdmonitionNode } from './components/AdmonitionNode';
|
|
6
6
|
import { default as BlockquoteNode } from './components/BlockquoteNode';
|
|
@@ -47,12 +47,14 @@ import { default as ThematicBreakNode } from './components/ThematicBreakNode';
|
|
|
47
47
|
import { default as Tooltip } from './components/Tooltip';
|
|
48
48
|
import { default as VmrContainerNode } from './components/VmrContainerNode';
|
|
49
49
|
import { setDefaultI18nMap } from './composables/useSafeI18n';
|
|
50
|
+
import { useSmoothMarkdownStream } from './composables/useSmoothMarkdownStream';
|
|
50
51
|
import { clearGlobalCustomComponents, getCustomNodeComponents, removeCustomComponents, setCustomComponents } from './utils/nodeComponents';
|
|
51
52
|
export type { D2Loader } from './components/D2BlockNode/d2';
|
|
52
53
|
export type { KatexLoader } from './components/MathInlineNode/katex';
|
|
53
54
|
export type { MermaidLoader } from './components/MermaidBlockNode/mermaid';
|
|
54
55
|
export type { NodeRendererProps } from './components/NodeRenderer/NodeRenderer.vue';
|
|
55
|
-
export type {
|
|
56
|
+
export type { SmoothMarkdownStreamController, SmoothMarkdownStreamControllerVue2, SmoothMarkdownStreamOptions, } from './composables/useSmoothMarkdownStream';
|
|
57
|
+
export type { CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNodeProps, CodeBlockPreviewPayload, D2BlockNodeProps, ImageNodeProps, InfographicBlockNodeProps, LinkNodeProps, MarkdownCodeBlockPreviewPayload, MathBlockNodeProps, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNodeProps, PreCodeNodeProps, ShikiCodeBlockProps, } from './types/component-props';
|
|
56
58
|
export * from './utils';
|
|
57
59
|
export * from './workers/katexCdnWorker';
|
|
58
60
|
export * from './workers/katexWorkerClient';
|
|
@@ -80,7 +82,7 @@ interface Vue2ConstructorLike {
|
|
|
80
82
|
__compositionApiInstalled?: boolean;
|
|
81
83
|
__markstreamVue2SetupProxyPatched?: boolean;
|
|
82
84
|
}
|
|
83
|
-
export { AdmonitionNode, BlockquoteNode, CheckboxNode, clearGlobalCustomComponents, CodeBlockNode, D2BlockNode, DefinitionListNode, disableD2, disableKatex, disableMermaid, EmojiNode, EmphasisNode, enableD2, enableKatex, enableMermaid, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, getCustomNodeComponents, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, ImageNode, InfographicBlockNode, InlineCodeNode, InsertNode, isD2Enabled, isKatexEnabled, isMermaidEnabled, LinkNode, ListItemNode, ListNode, MarkdownCodeBlockNode, MarkdownRender, MathBlockNode, MathInlineNode, MermaidBlockNode, NestedRenderer, ParagraphNode, PreCodeNode, ReferenceNode, removeCustomComponents, setCustomComponents, setD2Loader, setDefaultI18nMap, setKatexLoader, setMermaidLoader, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, VmrContainerNode, };
|
|
85
|
+
export { AdmonitionNode, BlockquoteNode, CheckboxNode, clearGlobalCustomComponents, CodeBlockNode, D2BlockNode, DefinitionListNode, disableD2, disableKatex, disableMermaid, EmojiNode, EmphasisNode, enableD2, enableKatex, enableMermaid, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, getCustomNodeComponents, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, ImageNode, InfographicBlockNode, InlineCodeNode, InsertNode, isD2Enabled, isKatexEnabled, isMermaidEnabled, LinkNode, ListItemNode, ListNode, MarkdownCodeBlockNode, MarkdownRender, MathBlockNode, MathInlineNode, MermaidBlockNode, NestedRenderer, ParagraphNode, PreCodeNode, ReferenceNode, removeCustomComponents, setCustomComponents, setD2Loader, setDefaultI18nMap, setKatexLoader, setMermaidLoader, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, useSmoothMarkdownStream, VmrContainerNode, };
|
|
84
86
|
export default MarkdownRender;
|
|
85
87
|
export declare const VueRendererMarkdown: {
|
|
86
88
|
install(Vue: Vue2ConstructorLike, options?: MarkstreamVue2PluginOptions): void;
|
|
@@ -9,6 +9,19 @@ export interface CodeBlockMonacoThemeObject {
|
|
|
9
9
|
}
|
|
10
10
|
export type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
|
|
11
11
|
export type CodeBlockMonacoLanguage = string | ((...args: unknown[]) => unknown);
|
|
12
|
+
export interface CommonCodeBlockProps {
|
|
13
|
+
showHeader?: boolean;
|
|
14
|
+
showCopyButton?: boolean;
|
|
15
|
+
showExpandButton?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface ShikiCodeBlockProps extends CommonCodeBlockProps {
|
|
18
|
+
themes?: readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* Shiki language preload request forwarded to stream-markdown's registerHighlight().
|
|
21
|
+
* This is not a rendering allow-list; already available Shiki languages may still highlight.
|
|
22
|
+
*/
|
|
23
|
+
langs?: readonly string[];
|
|
24
|
+
}
|
|
12
25
|
export interface CodeBlockDiffHideUnchangedRegionsOptions {
|
|
13
26
|
enabled?: boolean;
|
|
14
27
|
contextLineCount?: number;
|
|
@@ -64,7 +77,7 @@ export interface CodeBlockMonacoOptions {
|
|
|
64
77
|
scrollbar?: Record<string, unknown>;
|
|
65
78
|
[key: string]: unknown;
|
|
66
79
|
}
|
|
67
|
-
export interface CodeBlockNodeProps {
|
|
80
|
+
export interface CodeBlockNodeProps extends CommonCodeBlockProps {
|
|
68
81
|
node: CodeBlockNode;
|
|
69
82
|
isDark?: boolean;
|
|
70
83
|
loading?: boolean;
|
|
@@ -77,9 +90,6 @@ export interface CodeBlockNodeProps {
|
|
|
77
90
|
minWidth?: string | number;
|
|
78
91
|
maxWidth?: string | number;
|
|
79
92
|
themes?: CodeBlockMonacoTheme[];
|
|
80
|
-
showHeader?: boolean;
|
|
81
|
-
showCopyButton?: boolean;
|
|
82
|
-
showExpandButton?: boolean;
|
|
83
93
|
showPreviewButton?: boolean;
|
|
84
94
|
showCollapseButton?: boolean;
|
|
85
95
|
showFontSizeButtons?: boolean;
|
|
@@ -128,6 +138,8 @@ export interface LinkNodeProps {
|
|
|
128
138
|
}
|
|
129
139
|
export interface PreCodeNodeProps {
|
|
130
140
|
node: CodeBlockNode;
|
|
141
|
+
showLineNumbers?: boolean;
|
|
142
|
+
diffInline?: boolean;
|
|
131
143
|
}
|
|
132
144
|
export interface MermaidBlockNodeProps {
|
|
133
145
|
node: CodeBlockNode;
|
|
@@ -153,6 +165,7 @@ export interface MermaidBlockNodeProps {
|
|
|
153
165
|
showZoomControls?: boolean;
|
|
154
166
|
enableWheelZoom?: boolean;
|
|
155
167
|
isStrict?: boolean;
|
|
168
|
+
enableMermaidInteractions?: boolean;
|
|
156
169
|
showTooltips?: boolean;
|
|
157
170
|
onRenderError?: (error: unknown, code: string, container: HTMLElement) => boolean | void;
|
|
158
171
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isDevEnvironment(): boolean;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "markstream-vue2",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.46",
|
|
5
5
|
"description": "Vue 2 Markdown renderer optimized for large documents with progressive Mermaid rendering, streaming diff code blocks, and fast real-time preview. Perfect for documentation sites, AI chat interfaces, and content management systems.",
|
|
6
6
|
"author": "Simon He",
|
|
7
7
|
"license": "MIT",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"@vue/composition-api": ">=1.7.2",
|
|
85
85
|
"katex": ">=0.16.22",
|
|
86
86
|
"mermaid": ">=11",
|
|
87
|
-
"stream-markdown": ">=0.0.
|
|
88
|
-
"stream-monaco": ">=0.0.
|
|
87
|
+
"stream-markdown": ">=0.0.16",
|
|
88
|
+
"stream-monaco": ">=0.0.41",
|
|
89
89
|
"vue": ">=2.6.14 <3",
|
|
90
90
|
"vue-i18n": ">=9"
|
|
91
91
|
},
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"dependencies": {
|
|
119
119
|
"@floating-ui/dom": "^1.7.6",
|
|
120
120
|
"vue-demi": "^0.14.10",
|
|
121
|
-
"
|
|
121
|
+
"markstream-core": "1.0.3",
|
|
122
|
+
"stream-markdown-parser": "1.0.5"
|
|
122
123
|
},
|
|
123
124
|
"devDependencies": {
|
|
124
125
|
"@vitejs/plugin-vue2": "^2.3.4",
|
|
@@ -132,11 +133,13 @@
|
|
|
132
133
|
"vue-tsc": "^2.2.12"
|
|
133
134
|
},
|
|
134
135
|
"scripts": {
|
|
135
|
-
"build": "vite build -c vite.config.ts --mode npm && vite build -c vite.config.tailwind.ts --mode npm && node ./scripts/copy-tailwind-css.mjs && node ../../scripts/generate-px-css.mjs && pnpm run build:dts && pnpm run validate:dist",
|
|
136
|
+
"build": "pnpm --dir ../markstream-core build && vite build -c vite.config.ts --mode npm && vite build -c vite.config.tailwind.ts --mode npm && node ./scripts/copy-tailwind-css.mjs && node ../../scripts/generate-px-css.mjs && pnpm run build:dts && pnpm run validate:dist",
|
|
136
137
|
"build:analyze": "ANALYZE=true pnpm build",
|
|
137
138
|
"build:dts": "rollup -c ./scripts/rollup.dts.config.mjs && node ./scripts/clean-dts.cjs",
|
|
138
139
|
"validate:dist": "node ./scripts/validate-dist-entries.mjs",
|
|
139
140
|
"size:check": "MAX_PACK_UNPACKED_BYTES=800000 node ../../scripts/check-package-size.mjs",
|
|
140
|
-
"
|
|
141
|
+
"check:core-published": "node ../../scripts/check-core-published.mjs --package-json package.json --core-package-json ../markstream-core/package.json",
|
|
142
|
+
"check:workspace-deps-published": "node ../../scripts/check-workspace-deps-published.mjs --package-json package.json",
|
|
143
|
+
"release": "pnpm run check:workspace-deps-published && bumpp --commit --no-tag --no-push && pnpm publish --access public && node ../../scripts/tag-package.mjs --package-json package.json --push"
|
|
141
144
|
}
|
|
142
145
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.legacy-e02dc92b.cjs");require("shiki");var t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o=(e,o,a,s)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let u of r(o))i.call(e,u)||u===a||t(e,u,{get:()=>o[u],enumerable:!(s=n(o,u))||s.enumerable});return e},a={};o(a,e.monaco_editor_core_star,"default");var s,u,c,d,l,g,f,p,h,m,v,b,_,x,k,y,w,I,E,A,C,S,R,L,T,M,D,P,F,j,N,U,V,O,K,W,H,X,z,$,q,B,Q,G,J,Y,Z,ee,te,ne,re,ie,oe,ae,se,ue,ce,de,le,ge,fe,pe,he,me,ve,be,_e,xe,ke,ye,we,Ie,Ee,Ae,Ce,Se,Re,Le,Te,Me,De,Pe,Fe,je,Ne,Ue,Ve,Oe,Ke,We,He,Xe,ze,$e,qe,Be,Qe,Ge,Je,Ye,Ze,et,tt,nt,rt,it,ot,at,st,ut,ct,dt,lt,gt,ft,pt,ht,mt,vt,bt,_t,xt,kt,yt,wt,It,Et,At,Ct,St,Rt,Lt,Tt,Mt=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>12e4&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=a.editor.createWebWorker({moduleId:"vs/language/css/cssWorker",label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}};(s||(s={})).is=function(e){return"string"==typeof e},(u||(u={})).is=function(e){return"string"==typeof e},(d=c||(c={})).MIN_VALUE=-2147483648,d.MAX_VALUE=2147483647,d.is=function(e){return"number"==typeof e&&d.MIN_VALUE<=e&&e<=d.MAX_VALUE},(g=l||(l={})).MIN_VALUE=0,g.MAX_VALUE=2147483647,g.is=function(e){return"number"==typeof e&&g.MIN_VALUE<=e&&e<=g.MAX_VALUE},(p=f||(f={})).create=function(e,t){return e===Number.MAX_VALUE&&(e=l.MAX_VALUE),t===Number.MAX_VALUE&&(t=l.MAX_VALUE),{line:e,character:t}},p.is=function(e){let t=e;return Dt.objectLiteral(t)&&Dt.uinteger(t.line)&&Dt.uinteger(t.character)},(m=h||(h={})).create=function(e,t,n,r){if(Dt.uinteger(e)&&Dt.uinteger(t)&&Dt.uinteger(n)&&Dt.uinteger(r))return{start:f.create(e,t),end:f.create(n,r)};if(f.is(e)&&f.is(t))return{start:e,end:t};throw new Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)},m.is=function(e){let t=e;return Dt.objectLiteral(t)&&f.is(t.start)&&f.is(t.end)},(b=v||(v={})).create=function(e,t){return{uri:e,range:t}},b.is=function(e){let t=e;return Dt.objectLiteral(t)&&h.is(t.range)&&(Dt.string(t.uri)||Dt.undefined(t.uri))},(x=_||(_={})).create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},x.is=function(e){let t=e;return Dt.objectLiteral(t)&&h.is(t.targetRange)&&Dt.string(t.targetUri)&&h.is(t.targetSelectionRange)&&(h.is(t.originSelectionRange)||Dt.undefined(t.originSelectionRange))},(y=k||(k={})).create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},y.is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.numberRange(t.red,0,1)&&Dt.numberRange(t.green,0,1)&&Dt.numberRange(t.blue,0,1)&&Dt.numberRange(t.alpha,0,1)},(I=w||(w={})).create=function(e,t){return{range:e,color:t}},I.is=function(e){const t=e;return Dt.objectLiteral(t)&&h.is(t.range)&&k.is(t.color)},(A=E||(E={})).create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},A.is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.string(t.label)&&(Dt.undefined(t.textEdit)||W.is(t))&&(Dt.undefined(t.additionalTextEdits)||Dt.typedArray(t.additionalTextEdits,W.is))},(S=C||(C={})).Comment="comment",S.Imports="imports",S.Region="region",(L=R||(R={})).create=function(e,t,n,r,i,o){const a={startLine:e,endLine:t};return Dt.defined(n)&&(a.startCharacter=n),Dt.defined(r)&&(a.endCharacter=r),Dt.defined(i)&&(a.kind=i),Dt.defined(o)&&(a.collapsedText=o),a},L.is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.uinteger(t.startLine)&&Dt.uinteger(t.startLine)&&(Dt.undefined(t.startCharacter)||Dt.uinteger(t.startCharacter))&&(Dt.undefined(t.endCharacter)||Dt.uinteger(t.endCharacter))&&(Dt.undefined(t.kind)||Dt.string(t.kind))},(M=T||(T={})).create=function(e,t){return{location:e,message:t}},M.is=function(e){let t=e;return Dt.defined(t)&&v.is(t.location)&&Dt.string(t.message)},(P=D||(D={})).Error=1,P.Warning=2,P.Information=3,P.Hint=4,(j=F||(F={})).Unnecessary=1,j.Deprecated=2,(N||(N={})).is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.string(t.href)},(V=U||(U={})).create=function(e,t,n,r,i,o){let a={range:e,message:t};return Dt.defined(n)&&(a.severity=n),Dt.defined(r)&&(a.code=r),Dt.defined(i)&&(a.source=i),Dt.defined(o)&&(a.relatedInformation=o),a},V.is=function(e){var t;let n=e;return Dt.defined(n)&&h.is(n.range)&&Dt.string(n.message)&&(Dt.number(n.severity)||Dt.undefined(n.severity))&&(Dt.integer(n.code)||Dt.string(n.code)||Dt.undefined(n.code))&&(Dt.undefined(n.codeDescription)||Dt.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(Dt.string(n.source)||Dt.undefined(n.source))&&(Dt.undefined(n.relatedInformation)||Dt.typedArray(n.relatedInformation,T.is))},(K=O||(O={})).create=function(e,t,...n){let r={title:e,command:t};return Dt.defined(n)&&n.length>0&&(r.arguments=n),r},K.is=function(e){let t=e;return Dt.defined(t)&&Dt.string(t.title)&&Dt.string(t.command)},(H=W||(W={})).replace=function(e,t){return{range:e,newText:t}},H.insert=function(e,t){return{range:{start:e,end:e},newText:t}},H.del=function(e){return{range:e,newText:""}},H.is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.string(t.newText)&&h.is(t.range)},(z=X||(X={})).create=function(e,t,n){const r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},z.is=function(e){const t=e;return Dt.objectLiteral(t)&&Dt.string(t.label)&&(Dt.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Dt.string(t.description)||void 0===t.description)},($||($={})).is=function(e){const t=e;return Dt.string(t)},(B=q||(q={})).replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},B.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},B.del=function(e,t){return{range:e,newText:"",annotationId:t}},B.is=function(e){const t=e;return W.is(t)&&(X.is(t.annotationId)||$.is(t.annotationId))},(G=Q||(Q={})).create=function(e,t){return{textDocument:e,edits:t}},G.is=function(e){let t=e;return Dt.defined(t)&&ue.is(t.textDocument)&&Array.isArray(t.edits)},(Y=J||(J={})).create=function(e,t,n){let r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},Y.is=function(e){let t=e;return t&&"create"===t.kind&&Dt.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Dt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Dt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||$.is(t.annotationId))},(ee=Z||(Z={})).create=function(e,t,n,r){let i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},ee.is=function(e){let t=e;return t&&"rename"===t.kind&&Dt.string(t.oldUri)&&Dt.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Dt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Dt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||$.is(t.annotationId))},(ne=te||(te={})).create=function(e,t,n){let r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},ne.is=function(e){let t=e;return t&&"delete"===t.kind&&Dt.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Dt.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Dt.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||$.is(t.annotationId))},(re||(re={})).is=function(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(e=>Dt.string(e.kind)?J.is(e)||Z.is(e)||te.is(e):Q.is(e)))},(oe=ie||(ie={})).create=function(e){return{uri:e}},oe.is=function(e){let t=e;return Dt.defined(t)&&Dt.string(t.uri)},(se=ae||(ae={})).create=function(e,t){return{uri:e,version:t}},se.is=function(e){let t=e;return Dt.defined(t)&&Dt.string(t.uri)&&Dt.integer(t.version)},(ce=ue||(ue={})).create=function(e,t){return{uri:e,version:t}},ce.is=function(e){let t=e;return Dt.defined(t)&&Dt.string(t.uri)&&(null===t.version||Dt.integer(t.version))},(le=de||(de={})).create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},le.is=function(e){let t=e;return Dt.defined(t)&&Dt.string(t.uri)&&Dt.string(t.languageId)&&Dt.integer(t.version)&&Dt.string(t.text)},(fe=ge||(ge={})).PlainText="plaintext",fe.Markdown="markdown",fe.is=function(e){const t=e;return t===fe.PlainText||t===fe.Markdown},(pe||(pe={})).is=function(e){const t=e;return Dt.objectLiteral(e)&&ge.is(t.kind)&&Dt.string(t.value)},(me=he||(he={})).Text=1,me.Method=2,me.Function=3,me.Constructor=4,me.Field=5,me.Variable=6,me.Class=7,me.Interface=8,me.Module=9,me.Property=10,me.Unit=11,me.Value=12,me.Enum=13,me.Keyword=14,me.Snippet=15,me.Color=16,me.File=17,me.Reference=18,me.Folder=19,me.EnumMember=20,me.Constant=21,me.Struct=22,me.Event=23,me.Operator=24,me.TypeParameter=25,(be=ve||(ve={})).PlainText=1,be.Snippet=2,(_e||(_e={})).Deprecated=1,(ke=xe||(xe={})).create=function(e,t,n){return{newText:e,insert:t,replace:n}},ke.is=function(e){const t=e;return t&&Dt.string(t.newText)&&h.is(t.insert)&&h.is(t.replace)},(we=ye||(ye={})).asIs=1,we.adjustIndentation=2,(Ie||(Ie={})).is=function(e){const t=e;return t&&(Dt.string(t.detail)||void 0===t.detail)&&(Dt.string(t.description)||void 0===t.description)},(Ee||(Ee={})).create=function(e){return{label:e}},(Ae||(Ae={})).create=function(e,t){return{items:e||[],isIncomplete:!!t}},(Se=Ce||(Ce={})).fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},Se.is=function(e){const t=e;return Dt.string(t)||Dt.objectLiteral(t)&&Dt.string(t.language)&&Dt.string(t.value)},(Re||(Re={})).is=function(e){let t=e;return!!t&&Dt.objectLiteral(t)&&(pe.is(t.contents)||Ce.is(t.contents)||Dt.typedArray(t.contents,Ce.is))&&(void 0===e.range||h.is(e.range))},(Le||(Le={})).create=function(e,t){return t?{label:e,documentation:t}:{label:e}},(Te||(Te={})).create=function(e,t,...n){let r={label:e};return Dt.defined(t)&&(r.documentation=t),Dt.defined(n)?r.parameters=n:r.parameters=[],r},(De=Me||(Me={})).Text=1,De.Read=2,De.Write=3,(Pe||(Pe={})).create=function(e,t){let n={range:e};return Dt.number(t)&&(n.kind=t),n},(je=Fe||(Fe={})).File=1,je.Module=2,je.Namespace=3,je.Package=4,je.Class=5,je.Method=6,je.Property=7,je.Field=8,je.Constructor=9,je.Enum=10,je.Interface=11,je.Function=12,je.Variable=13,je.Constant=14,je.String=15,je.Number=16,je.Boolean=17,je.Array=18,je.Object=19,je.Key=20,je.Null=21,je.EnumMember=22,je.Struct=23,je.Event=24,je.Operator=25,je.TypeParameter=26,(Ne||(Ne={})).Deprecated=1,(Ue||(Ue={})).create=function(e,t,n,r,i){let o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o},(Ve||(Ve={})).create=function(e,t,n,r){return void 0!==r?{name:e,kind:t,location:{uri:n,range:r}}:{name:e,kind:t,location:{uri:n}}},(Ke=Oe||(Oe={})).create=function(e,t,n,r,i,o){let a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(a.children=o),a},Ke.is=function(e){let t=e;return t&&Dt.string(t.name)&&Dt.number(t.kind)&&h.is(t.range)&&h.is(t.selectionRange)&&(void 0===t.detail||Dt.string(t.detail))&&(void 0===t.deprecated||Dt.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))},(He=We||(We={})).Empty="",He.QuickFix="quickfix",He.Refactor="refactor",He.RefactorExtract="refactor.extract",He.RefactorInline="refactor.inline",He.RefactorRewrite="refactor.rewrite",He.Source="source",He.SourceOrganizeImports="source.organizeImports",He.SourceFixAll="source.fixAll",(ze=Xe||(Xe={})).Invoked=1,ze.Automatic=2,(qe=$e||($e={})).create=function(e,t,n){let r={diagnostics:e};return null!=t&&(r.only=t),null!=n&&(r.triggerKind=n),r},qe.is=function(e){let t=e;return Dt.defined(t)&&Dt.typedArray(t.diagnostics,U.is)&&(void 0===t.only||Dt.typedArray(t.only,Dt.string))&&(void 0===t.triggerKind||t.triggerKind===Xe.Invoked||t.triggerKind===Xe.Automatic)},(Qe=Be||(Be={})).create=function(e,t,n){let r={title:e},i=!0;return"string"==typeof t?(i=!1,r.kind=t):O.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},Qe.is=function(e){let t=e;return t&&Dt.string(t.title)&&(void 0===t.diagnostics||Dt.typedArray(t.diagnostics,U.is))&&(void 0===t.kind||Dt.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||O.is(t.command))&&(void 0===t.isPreferred||Dt.boolean(t.isPreferred))&&(void 0===t.edit||re.is(t.edit))},(Je=Ge||(Ge={})).create=function(e,t){let n={range:e};return Dt.defined(t)&&(n.data=t),n},Je.is=function(e){let t=e;return Dt.defined(t)&&h.is(t.range)&&(Dt.undefined(t.command)||O.is(t.command))},(Ze=Ye||(Ye={})).create=function(e,t){return{tabSize:e,insertSpaces:t}},Ze.is=function(e){let t=e;return Dt.defined(t)&&Dt.uinteger(t.tabSize)&&Dt.boolean(t.insertSpaces)},(tt=et||(et={})).create=function(e,t,n){return{range:e,target:t,data:n}},tt.is=function(e){let t=e;return Dt.defined(t)&&h.is(t.range)&&(Dt.undefined(t.target)||Dt.string(t.target))},(rt=nt||(nt={})).create=function(e,t){return{range:e,parent:t}},rt.is=function(e){let t=e;return Dt.objectLiteral(t)&&h.is(t.range)&&(void 0===t.parent||rt.is(t.parent))},(ot=it||(it={})).namespace="namespace",ot.type="type",ot.class="class",ot.enum="enum",ot.interface="interface",ot.struct="struct",ot.typeParameter="typeParameter",ot.parameter="parameter",ot.variable="variable",ot.property="property",ot.enumMember="enumMember",ot.event="event",ot.function="function",ot.method="method",ot.macro="macro",ot.keyword="keyword",ot.modifier="modifier",ot.comment="comment",ot.string="string",ot.number="number",ot.regexp="regexp",ot.operator="operator",ot.decorator="decorator",(st=at||(at={})).declaration="declaration",st.definition="definition",st.readonly="readonly",st.static="static",st.deprecated="deprecated",st.abstract="abstract",st.async="async",st.modification="modification",st.documentation="documentation",st.defaultLibrary="defaultLibrary",(ut||(ut={})).is=function(e){const t=e;return Dt.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])},(dt=ct||(ct={})).create=function(e,t){return{range:e,text:t}},dt.is=function(e){const t=e;return null!=t&&h.is(t.range)&&Dt.string(t.text)},(gt=lt||(lt={})).create=function(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}},gt.is=function(e){const t=e;return null!=t&&h.is(t.range)&&Dt.boolean(t.caseSensitiveLookup)&&(Dt.string(t.variableName)||void 0===t.variableName)},(pt=ft||(ft={})).create=function(e,t){return{range:e,expression:t}},pt.is=function(e){const t=e;return null!=t&&h.is(t.range)&&(Dt.string(t.expression)||void 0===t.expression)},(mt=ht||(ht={})).create=function(e,t){return{frameId:e,stoppedLocation:t}},mt.is=function(e){const t=e;return Dt.defined(t)&&h.is(e.stoppedLocation)},(bt=vt||(vt={})).Type=1,bt.Parameter=2,bt.is=function(e){return 1===e||2===e},(xt=_t||(_t={})).create=function(e){return{value:e}},xt.is=function(e){const t=e;return Dt.objectLiteral(t)&&(void 0===t.tooltip||Dt.string(t.tooltip)||pe.is(t.tooltip))&&(void 0===t.location||v.is(t.location))&&(void 0===t.command||O.is(t.command))},(yt=kt||(kt={})).create=function(e,t,n){const r={position:e,label:t};return void 0!==n&&(r.kind=n),r},yt.is=function(e){const t=e;return Dt.objectLiteral(t)&&f.is(t.position)&&(Dt.string(t.label)||Dt.typedArray(t.label,_t.is))&&(void 0===t.kind||vt.is(t.kind))&&void 0===t.textEdits||Dt.typedArray(t.textEdits,W.is)&&(void 0===t.tooltip||Dt.string(t.tooltip)||pe.is(t.tooltip))&&(void 0===t.paddingLeft||Dt.boolean(t.paddingLeft))&&(void 0===t.paddingRight||Dt.boolean(t.paddingRight))},(wt||(wt={})).createSnippet=function(e){return{kind:"snippet",value:e}},(It||(It={})).create=function(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}},(Et||(Et={})).create=function(e){return{items:e}},(Ct=At||(At={})).Invoked=0,Ct.Automatic=1,(St||(St={})).create=function(e,t){return{range:e,text:t}},(Rt||(Rt={})).create=function(e,t){return{triggerKind:e,selectedCompletionInfo:t}},(Lt||(Lt={})).is=function(e){const t=e;return Dt.objectLiteral(t)&&u.is(t.uri)&&Dt.string(t.name)},function(e){function t(e,n){if(e.length<=1)return e;const r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);let a=0,s=0,u=0;for(;a<i.length&&s<o.length;){let t=n(i[a],o[s]);e[u++]=t<=0?i[a++]:o[s++]}for(;a<i.length;)e[u++]=i[a++];for(;s<o.length;)e[u++]=o[s++];return e}e.create=function(e,t,n,r){return new Pt(e,t,n,r)},e.is=function(e){let t=e;return!!(Dt.defined(t)&&Dt.string(t.uri)&&(Dt.undefined(t.languageId)||Dt.string(t.languageId))&&Dt.uinteger(t.lineCount)&&Dt.func(t.getText)&&Dt.func(t.positionAt)&&Dt.func(t.offsetAt))},e.applyEdits=function(e,n){let r=e.getText(),i=t(n,(e,t)=>{let n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}),o=r.length;for(let t=i.length-1;t>=0;t--){let n=i[t],a=e.offsetAt(n.range.start),s=e.offsetAt(n.range.end);if(!(s<=o))throw new Error("Overlapping edit");r=r.substring(0,a)+n.newText+r.substring(s,r.length),o=a}return r}}(Tt||(Tt={}));var Dt,Pt=class{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&(e.push(r),n=!1);let i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return f.create(0,e);for(;n<r;){let i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}let i=n-1;return f.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)}get lineCount(){return this.getLineOffsets().length}};!function(e){const t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(Dt||(Dt={}));var Ft=class{constructor(e,t,n){this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);const r=e=>{let t,n=e.getLanguageId();n===this._languageId&&(this._listener[e.uri.toString()]=e.onDidChangeContent(()=>{window.clearTimeout(t),t=window.setTimeout(()=>this._doValidate(e.uri,n),500)}),this._doValidate(e.uri,n))},i=e=>{a.editor.setModelMarkers(e,this._languageId,[]);let t=e.uri.toString(),n=this._listener[t];n&&(n.dispose(),delete this._listener[t])};this._disposables.push(a.editor.onDidCreateModel(r)),this._disposables.push(a.editor.onWillDisposeModel(i)),this._disposables.push(a.editor.onDidChangeModelLanguage(e=>{i(e.model),r(e.model)})),this._disposables.push(n(e=>{a.editor.getModels().forEach(e=>{e.getLanguageId()===this._languageId&&(i(e),r(e))})})),this._disposables.push({dispose:()=>{a.editor.getModels().forEach(i);for(let e in this._listener)this._listener[e].dispose()}}),a.editor.getModels().forEach(r)}dispose(){this._disposables.forEach(e=>e&&e.dispose()),this._disposables.length=0}_doValidate(e,t){this._worker(e).then(t=>t.doValidation(e.toString())).then(n=>{const r=n.map(e=>function(e,t){let n="number"==typeof t.code?String(t.code):t.code;return{severity:jt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}(0,e));let i=a.editor.getModel(e);i&&i.getLanguageId()===t&&a.editor.setModelMarkers(i,t,r)}).then(void 0,e=>{console.error(e)})}};function jt(e){switch(e){case D.Error:return a.MarkerSeverity.Error;case D.Warning:return a.MarkerSeverity.Warning;case D.Information:return a.MarkerSeverity.Info;case D.Hint:return a.MarkerSeverity.Hint;default:return a.MarkerSeverity.Info}}var Nt=class{constructor(e,t){this._worker=e,this._triggerCharacters=t}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(e,t,n,r){const i=e.uri;return this._worker(i).then(e=>e.doComplete(i.toString(),Ut(t))).then(n=>{if(!n)return;const r=e.getWordUntilPosition(t),i=new a.Range(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),o=n.items.map(e=>{const t={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,command:(n=e.command,n&&"editor.action.triggerSuggest"===n.command?{id:n.command,title:n.title,arguments:n.arguments}:void 0),range:i,kind:Kt(e.kind)};var n,r;return e.textEdit&&(void 0!==(r=e.textEdit).insert&&void 0!==r.replace?t.range={insert:Ot(e.textEdit.insert),replace:Ot(e.textEdit.replace)}:t.range=Ot(e.textEdit.range),t.insertText=e.textEdit.newText),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(Wt)),e.insertTextFormat===ve.Snippet&&(t.insertTextRules=a.languages.CompletionItemInsertTextRule.InsertAsSnippet),t});return{isIncomplete:n.isIncomplete,suggestions:o}})}};function Ut(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Vt(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function Ot(e){if(e)return new a.Range(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Kt(e){const t=a.languages.CompletionItemKind;switch(e){case he.Text:return t.Text;case he.Method:return t.Method;case he.Function:return t.Function;case he.Constructor:return t.Constructor;case he.Field:return t.Field;case he.Variable:return t.Variable;case he.Class:return t.Class;case he.Interface:return t.Interface;case he.Module:return t.Module;case he.Property:return t.Property;case he.Unit:return t.Unit;case he.Value:return t.Value;case he.Enum:return t.Enum;case he.Keyword:return t.Keyword;case he.Snippet:return t.Snippet;case he.Color:return t.Color;case he.File:return t.File;case he.Reference:return t.Reference}return t.Property}function Wt(e){if(e)return{range:Ot(e.range),text:e.newText}}var Ht=class{constructor(e){this._worker=e}provideHover(e,t,n){let r=e.uri;return this._worker(r).then(e=>e.doHover(r.toString(),Ut(t))).then(e=>{if(e)return{range:Ot(e.range),contents:zt(e.contents)}})}};function Xt(e){return"string"==typeof e?{value:e}:(t=e)&&"object"==typeof t&&"string"==typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function zt(e){if(e)return Array.isArray(e)?e.map(Xt):[Xt(e)]}var $t=class{constructor(e){this._worker=e}provideDocumentHighlights(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.findDocumentHighlights(r.toString(),Ut(t))).then(e=>{if(e)return e.map(e=>({range:Ot(e.range),kind:qt(e.kind)}))})}};function qt(e){switch(e){case Me.Read:return a.languages.DocumentHighlightKind.Read;case Me.Write:return a.languages.DocumentHighlightKind.Write;case Me.Text:return a.languages.DocumentHighlightKind.Text}return a.languages.DocumentHighlightKind.Text}var Bt=class{constructor(e){this._worker=e}provideDefinition(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.findDefinition(r.toString(),Ut(t))).then(e=>{if(e)return[Qt(e)]})}};function Qt(e){return{uri:a.Uri.parse(e.uri),range:Ot(e.range)}}var Gt=class{constructor(e){this._worker=e}provideReferences(e,t,n,r){const i=e.uri;return this._worker(i).then(e=>e.findReferences(i.toString(),Ut(t))).then(e=>{if(e)return e.map(Qt)})}},Jt=class{constructor(e){this._worker=e}provideRenameEdits(e,t,n,r){const i=e.uri;return this._worker(i).then(e=>e.doRename(i.toString(),Ut(t),n)).then(e=>function(e){if(!e||!e.changes)return;let t=[];for(let n in e.changes){const r=a.Uri.parse(n);for(let i of e.changes[n])t.push({resource:r,versionId:void 0,textEdit:{range:Ot(i.range),text:i.newText}})}return{edits:t}}(e))}},Yt=class{constructor(e){this._worker=e}provideDocumentSymbols(e,t){const n=e.uri;return this._worker(n).then(e=>e.findDocumentSymbols(n.toString())).then(e=>{if(e)return e.map(e=>"children"in e?Zt(e):{name:e.name,detail:"",containerName:e.containerName,kind:en(e.kind),range:Ot(e.location.range),selectionRange:Ot(e.location.range),tags:[]})})}};function Zt(e){var t,n,r;return{name:e.name,detail:null!=(t=e.detail)?t:"",kind:en(e.kind),range:Ot(e.range),selectionRange:Ot(e.selectionRange),tags:null!=(n=e.tags)?n:[],children:(null!=(r=e.children)?r:[]).map(e=>Zt(e))}}function en(e){let t=a.languages.SymbolKind;switch(e){case Fe.File:return t.File;case Fe.Module:return t.Module;case Fe.Namespace:return t.Namespace;case Fe.Package:return t.Package;case Fe.Class:return t.Class;case Fe.Method:return t.Method;case Fe.Property:return t.Property;case Fe.Field:return t.Field;case Fe.Constructor:return t.Constructor;case Fe.Enum:return t.Enum;case Fe.Interface:return t.Interface;case Fe.Function:return t.Function;case Fe.Variable:return t.Variable;case Fe.Constant:return t.Constant;case Fe.String:return t.String;case Fe.Number:return t.Number;case Fe.Boolean:return t.Boolean;case Fe.Array:return t.Array}return t.Function}var tn=class{constructor(e){this._worker=e}provideDocumentFormattingEdits(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.format(r.toString(),null,rn(t)).then(e=>{if(e&&0!==e.length)return e.map(Wt)}))}},nn=class{constructor(e){this._worker=e,this.canFormatMultipleRanges=!1}provideDocumentRangeFormattingEdits(e,t,n,r){const i=e.uri;return this._worker(i).then(e=>e.format(i.toString(),Vt(t),rn(n)).then(e=>{if(e&&0!==e.length)return e.map(Wt)}))}};function rn(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var on=class{constructor(e){this._worker=e}provideDocumentColors(e,t){const n=e.uri;return this._worker(n).then(e=>e.findDocumentColors(n.toString())).then(e=>{if(e)return e.map(e=>({color:e.color,range:Ot(e.range)}))})}provideColorPresentations(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.getColorPresentations(r.toString(),t.color,Vt(t.range))).then(e=>{if(e)return e.map(e=>{let t={label:e.label};return e.textEdit&&(t.textEdit=Wt(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(Wt)),t})})}},an=class{constructor(e){this._worker=e}provideFoldingRanges(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.getFoldingRanges(r.toString(),t)).then(e=>{if(e)return e.map(e=>{const t={start:e.startLine+1,end:e.endLine+1};return void 0!==e.kind&&(t.kind=function(e){switch(e){case C.Comment:return a.languages.FoldingRangeKind.Comment;case C.Imports:return a.languages.FoldingRangeKind.Imports;case C.Region:return a.languages.FoldingRangeKind.Region}}(e.kind)),t})})}},sn=class{constructor(e){this._worker=e}provideSelectionRanges(e,t,n){const r=e.uri;return this._worker(r).then(e=>e.getSelectionRanges(r.toString(),t.map(Ut))).then(e=>{if(e)return e.map(e=>{const t=[];for(;e;)t.push({range:Ot(e.range)}),e=e.parent;return t})})}};function un(e){return{dispose:()=>cn(e)}}function cn(e){for(;e.length;)e.pop().dispose()}exports.CompletionAdapter=Nt,exports.DefinitionAdapter=Bt,exports.DiagnosticsAdapter=Ft,exports.DocumentColorAdapter=on,exports.DocumentFormattingEditProvider=tn,exports.DocumentHighlightAdapter=$t,exports.DocumentLinkAdapter=class{constructor(e){this._worker=e}provideLinks(e,t){const n=e.uri;return this._worker(n).then(e=>e.findDocumentLinks(n.toString())).then(e=>{if(e)return{links:e.map(e=>({range:Ot(e.range),url:e.target}))}})}},exports.DocumentRangeFormattingEditProvider=nn,exports.DocumentSymbolAdapter=Yt,exports.FoldingRangeAdapter=an,exports.HoverAdapter=Ht,exports.ReferenceAdapter=Gt,exports.RenameAdapter=Jt,exports.SelectionRangeAdapter=sn,exports.WorkerManager=Mt,exports.fromPosition=Ut,exports.fromRange=Vt,exports.setupMode=function(e){const t=[],n=[],r=new Mt(e);t.push(r);const i=(...e)=>r.getLanguageServiceWorker(...e);return function(){const{languageId:t,modeConfiguration:r}=e;cn(n),r.completionItems&&n.push(a.languages.registerCompletionItemProvider(t,new Nt(i,["/","-",":"]))),r.hovers&&n.push(a.languages.registerHoverProvider(t,new Ht(i))),r.documentHighlights&&n.push(a.languages.registerDocumentHighlightProvider(t,new $t(i))),r.definitions&&n.push(a.languages.registerDefinitionProvider(t,new Bt(i))),r.references&&n.push(a.languages.registerReferenceProvider(t,new Gt(i))),r.documentSymbols&&n.push(a.languages.registerDocumentSymbolProvider(t,new Yt(i))),r.rename&&n.push(a.languages.registerRenameProvider(t,new Jt(i))),r.colors&&n.push(a.languages.registerColorProvider(t,new on(i))),r.foldingRanges&&n.push(a.languages.registerFoldingRangeProvider(t,new an(i))),r.diagnostics&&n.push(new Ft(t,i,e.onDidChange)),r.selectionRanges&&n.push(a.languages.registerSelectionRangeProvider(t,new sn(i))),r.documentFormattingEdits&&n.push(a.languages.registerDocumentFormattingEditProvider(t,new tn(i))),r.documentRangeFormattingEdits&&n.push(a.languages.registerDocumentRangeFormattingEditProvider(t,new nn(i)))}(),t.push(un(n)),un(t)},exports.toRange=Ot,exports.toTextEdit=Wt;
|