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.
Files changed (46) hide show
  1. package/dist/chunks/{index-b8d5777d.cjs → index-11432088.cjs} +1 -1
  2. package/dist/chunks/{index-87cdc60f.js → index-12ec401a.js} +1 -0
  3. package/dist/chunks/{index-292bb72c.js → index-40b64c02.js} +1 -0
  4. package/dist/chunks/index-6013a5b2.cjs +1 -0
  5. package/dist/chunks/{index-e0a22210.js → index-6ae3630b.js} +1 -0
  6. package/dist/chunks/{index-2a7bea2c.js → index-754b8598.js} +1 -0
  7. package/dist/chunks/{index-42252d16.js → index-8dc37342.js} +1 -0
  8. package/dist/chunks/{index-8693b3db.cjs → index-a4867ea2.cjs} +1 -1
  9. package/dist/chunks/index-e0125777.cjs +1 -0
  10. package/dist/chunks/{index-91325ae4.cjs → index-fb457079.cjs} +1 -1
  11. package/dist/index.cjs +1 -1
  12. package/dist/index.css +1 -1
  13. package/dist/index.d.ts +5 -3
  14. package/dist/index.js +2289 -1399
  15. package/dist/index.px.css +1 -1
  16. package/dist/index.tailwind.css +1 -1
  17. package/dist/tailwind.ts +1 -1
  18. package/dist/types/components/CodeBlockNode/CodeBlockNode.vue.d.ts +5 -5
  19. package/dist/types/components/D2BlockNode/D2BlockNode.vue.d.ts +1 -1
  20. package/dist/types/components/ImageNode/ImageNode.vue.d.ts +1 -1
  21. package/dist/types/components/InfographicBlockNode/InfographicBlockNode.vue.d.ts +1 -1
  22. package/dist/types/components/MarkdownCodeBlockNode/MarkdownCodeBlockNode.vue.d.ts +48 -9
  23. package/dist/types/components/MarkdownRenderCompat.vue.d.ts +13 -2
  24. package/dist/types/components/MermaidBlockNode/MermaidBlockNode.vue.d.ts +5 -1
  25. package/dist/types/components/NodeRenderer/LegacyNodesRenderer.vue.d.ts +23 -3
  26. package/dist/types/components/NodeRenderer/NodeRenderer.vue.d.ts +39 -4
  27. package/dist/types/components/PreCodeNode/PreCodeNode.vue.d.ts +2 -0
  28. package/dist/types/components/TextNode/streamingTextState.d.ts +2 -11
  29. package/dist/types/composables/useSmoothMarkdownStream.d.ts +21 -0
  30. package/dist/types/exports.d.ts +5 -3
  31. package/dist/types/types/component-props.d.ts +17 -4
  32. package/dist/types/utils/codeBlockExtraProps.d.ts +4 -0
  33. package/dist/types/utils/devEnv.d.ts +1 -0
  34. package/package.json +9 -6
  35. package/dist/chunks/cssMode-58e68511.cjs +0 -1
  36. package/dist/chunks/cssMode-60d93f28.js +0 -2044
  37. package/dist/chunks/htmlMode-87a75897.cjs +0 -1
  38. package/dist/chunks/htmlMode-8d468223.js +0 -2060
  39. package/dist/chunks/index-c6f74f2d.cjs +0 -1
  40. package/dist/chunks/index-e1315bc2.cjs +0 -1
  41. package/dist/chunks/index.legacy-010f0006.js +0 -126308
  42. package/dist/chunks/index.legacy-e02dc92b.cjs +0 -1
  43. package/dist/chunks/jsonMode-2a97b947.cjs +0 -1
  44. package/dist/chunks/jsonMode-307a9a02.js +0 -2759
  45. package/dist/chunks/tsMode-4f227d36.js +0 -1315
  46. 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: ObjectConstructor;
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: ArrayConstructor;
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: ObjectConstructor;
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: ArrayConstructor;
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: unknown[];
171
- showTooltips: boolean;
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
- codeBlockStream: boolean;
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?: Partial<Omit<CodeBlockNodeProps, 'node'>>;
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 { CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockNodeProps, CodeBlockPreviewPayload, D2BlockNodeProps, InfographicBlockNodeProps, MermaidBlockNodeProps } from '../../types/component-props';
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?: Partial<Omit<CodeBlockNodeProps, 'node'>>;
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 non-code-node enter transition (typewriter). Default: true */
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 interface ResolveStreamingTextStateOptions {
2
- nextContent: string;
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;
@@ -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 { CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNodeProps, CodeBlockPreviewPayload, D2BlockNodeProps, ImageNodeProps, InfographicBlockNodeProps, LinkNodeProps, MathBlockNodeProps, MathInlineNodeProps, MarkdownCodeBlockPreviewPayload, MermaidBlockEvent, MermaidBlockNodeProps, PreCodeNodeProps, } from './types/component-props';
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,4 @@
1
+ export interface CodeBlockExtraPropsOptions {
2
+ omit?: readonly string[];
3
+ }
4
+ export declare function getCodeBlockExtraProps(source: unknown, options?: CodeBlockExtraPropsOptions): Record<string, unknown>;
@@ -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.45",
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.15",
88
- "stream-monaco": ">=0.0.40",
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
- "stream-markdown-parser": "0.0.93"
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
- "release": "bumpp --commit --no-tag --no-push && pnpm publish --access public && node ../../scripts/tag-package.mjs --package-json package.json --push"
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;