markstream-angular 0.0.10 → 0.1.0-beta.3

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/index.css CHANGED
@@ -992,8 +992,7 @@ body > div[id^="dmermaid-"] {
992
992
  background: #0b1220;
993
993
  }
994
994
 
995
- .markstream-angular .markstream-angular-enhanced-block__body--code .monaco-editor,
996
- .markstream-angular .markstream-angular-enhanced-block__body--code .monaco-diff-editor {
995
+ .markstream-angular .markstream-angular-enhanced-block__body--code .stream-diffs-shell {
997
996
  min-height: inherit;
998
997
  }
999
998
 
@@ -1137,19 +1136,15 @@ body > div[id^="dmermaid-"] {
1137
1136
  box-shadow: 0 22px 44px -30px rgba(2, 6, 23, 0.95);
1138
1137
  }
1139
1138
 
1140
- .markstream-angular .code-block-container.is-plain-text .monaco-editor,
1141
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .monaco-editor-background,
1142
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .margin,
1143
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .lines-content {
1139
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell,
1140
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell diffs-container,
1141
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell [data-stream-diffs-state] {
1144
1142
  background: var(--vscode-editor-background, var(--markstream-code-fallback-bg)) !important;
1145
1143
  }
1146
1144
 
1147
- .markstream-angular .code-block-container.is-plain-text .monaco-editor,
1148
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .margin,
1149
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .view-lines,
1150
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .view-line,
1151
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .view-line span,
1152
- .markstream-angular .code-block-container.is-plain-text .monaco-editor .line-numbers {
1145
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell,
1146
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell diffs-container,
1147
+ .markstream-angular .code-block-container.is-plain-text .stream-diffs-shell [data-stream-diffs-state] {
1153
1148
  color: var(--vscode-editor-foreground, var(--markstream-code-fallback-fg)) !important;
1154
1149
  }
1155
1150
 
package/dist/index.d.ts CHANGED
@@ -14,16 +14,13 @@ declare function getCustomNodeComponents(customId?: string): CustomComponentMap;
14
14
  declare function removeCustomComponents(id: string): void;
15
15
  declare function clearGlobalCustomComponents(): void;
16
16
 
17
- interface CodeBlockMonacoThemeObject {
18
- name: string;
19
- base?: string;
20
- inherit?: boolean;
21
- colors?: Record<string, string>;
22
- rules?: Array<Record<string, unknown>>;
23
- [key: string]: unknown;
24
- }
25
- type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
26
- type CodeBlockMonacoLanguage = string | ((...args: unknown[]) => unknown);
17
+ interface CodeBlockThemePair {
18
+ dark: string;
19
+ light: string;
20
+ }
21
+ type CodeBlockTheme = string;
22
+ type CodeBlockThemeProp = CodeBlockTheme | CodeBlockThemePair;
23
+ type CodeBlockThemes = readonly [dark: CodeBlockTheme, light: CodeBlockTheme];
27
24
  interface CodeBlockDiffHideUnchangedRegionsOptions {
28
25
  enabled?: boolean;
29
26
  contextLineCount?: number;
@@ -31,53 +28,57 @@ interface CodeBlockDiffHideUnchangedRegionsOptions {
31
28
  revealLineCount?: number;
32
29
  }
33
30
  type CodeBlockDiffHideUnchangedRegions = boolean | CodeBlockDiffHideUnchangedRegionsOptions;
34
- type CodeBlockDiffLineStyle = 'background' | 'bar';
35
- type CodeBlockDiffAppearance = 'auto' | 'light' | 'dark';
36
- type CodeBlockDiffUnchangedRegionStyle = 'line-info' | 'line-info-basic' | 'metadata' | 'simple';
37
- type CodeBlockDiffHunkActionKind = 'revert' | 'stage';
38
- type CodeBlockDiffHunkSide = 'upper' | 'lower';
39
- interface CodeBlockDiffHunkActionContext {
40
- action: CodeBlockDiffHunkActionKind;
41
- side: CodeBlockDiffHunkSide;
42
- lineChange: unknown;
43
- originalModel: unknown;
44
- modifiedModel: unknown;
45
- }
46
- interface CodeBlockMonacoOptions {
47
- MAX_HEIGHT?: number | string;
31
+ interface CodeBlockOptions {
48
32
  fontSize?: number;
49
33
  lineHeight?: number;
50
34
  fontFamily?: string;
35
+ maxHeight?: number;
36
+ padding?: number;
51
37
  tabSize?: number;
52
- readOnly?: boolean;
53
- wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded' | string;
54
- wrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent' | string;
55
- theme?: string;
56
- themes?: CodeBlockMonacoTheme[];
57
- languages?: CodeBlockMonacoLanguage[];
58
- renderSideBySide?: boolean;
59
- useInlineViewWhenSpaceIsLimited?: boolean;
60
- enableSplitViewResizing?: boolean;
61
- ignoreTrimWhitespace?: boolean;
62
- maxComputationTime?: number;
63
- diffAlgorithm?: string;
64
- renderIndicators?: boolean;
65
- originalEditable?: boolean;
66
- revealDebounceMs?: number;
67
- revealStrategy?: 'bottom' | 'centerIfOutside' | 'center';
68
- revealBatchOnIdleMs?: number;
69
- updateThrottleMs?: number;
70
- diffUpdateThrottleMs?: number;
71
- diffAutoScroll?: boolean;
72
- diffHideUnchangedRegions?: CodeBlockDiffHideUnchangedRegions;
73
- diffLineStyle?: CodeBlockDiffLineStyle;
74
- diffAppearance?: CodeBlockDiffAppearance;
75
- diffUnchangedRegionStyle?: CodeBlockDiffUnchangedRegionStyle;
76
- diffHunkActionsOnHover?: boolean;
77
- diffHunkHoverHideDelayMs?: number;
78
- onDiffHunkAction?: (context: CodeBlockDiffHunkActionContext) => void | boolean | Promise<void | boolean>;
79
- scrollbar?: Record<string, unknown>;
80
- [key: string]: unknown;
38
+ disableLineNumbers?: boolean;
39
+ overflow?: 'scroll' | 'wrap';
40
+ disableVirtualizationBuffers?: boolean;
41
+ preferredHighlighter?: 'shiki-js' | 'shiki-wasm';
42
+ useCSSClasses?: boolean;
43
+ useTokenTransformer?: boolean;
44
+ tokenizeMaxLineLength?: number;
45
+ tokenizeMaxLength?: number;
46
+ unsafeCSS?: string;
47
+ diffStyle?: 'unified' | 'split';
48
+ diffIndicators?: 'classic' | 'bars' | 'none';
49
+ disableBackground?: boolean;
50
+ hunkSeparators?: 'simple' | 'metadata' | 'line-info' | 'line-info-basic';
51
+ expandUnchanged?: boolean;
52
+ collapsedContextThreshold?: number;
53
+ lineDiffType?: 'word-alt' | 'word' | 'char' | 'none';
54
+ maxLineDiffLength?: number;
55
+ expansionLineCount?: number;
56
+ parseDiffOptions?: Record<string, unknown>;
57
+ lineHoverHighlight?: 'disabled' | 'both' | 'number' | 'line';
58
+ enableTokenInteractionsOnWhitespace?: boolean;
59
+ enableGutterUtility?: boolean;
60
+ enableLineSelection?: boolean;
61
+ controlledSelection?: boolean;
62
+ onGutterUtilityClick?: (...args: any[]) => unknown;
63
+ onLineClick?: (...args: any[]) => unknown;
64
+ onLineNumberClick?: (...args: any[]) => unknown;
65
+ onLineEnter?: (...args: any[]) => unknown;
66
+ onLineLeave?: (...args: any[]) => unknown;
67
+ onTokenClick?: (...args: any[]) => unknown;
68
+ onTokenEnter?: (...args: any[]) => unknown;
69
+ onTokenLeave?: (...args: any[]) => unknown;
70
+ onLineSelected?: (...args: any[]) => unknown;
71
+ onLineSelectionStart?: (...args: any[]) => unknown;
72
+ onLineSelectionChange?: (...args: any[]) => unknown;
73
+ onLineSelectionEnd?: (...args: any[]) => unknown;
74
+ getLineIndex?: (...args: any[]) => unknown;
75
+ renderAnnotation?: (...args: any[]) => unknown;
76
+ renderGutterUtility?: (...args: any[]) => unknown;
77
+ onPostRender?: (...args: any[]) => unknown;
78
+ mergeConflict?: boolean;
79
+ lineAnnotations?: unknown[];
80
+ onController?: (controller: any) => void;
81
+ workerManager?: unknown;
81
82
  }
82
83
 
83
84
  type AngularRenderableNode = (ParsedNode | BaseNode) & Record<string, unknown>;
@@ -89,10 +90,10 @@ interface CodeBlockPreviewPayload {
89
90
  }
90
91
  type NodeRendererCodeBlockProps = Partial<{
91
92
  stream: boolean;
92
- darkTheme: CodeBlockMonacoTheme;
93
- lightTheme: CodeBlockMonacoTheme;
94
- themes: CodeBlockMonacoTheme[];
95
- monacoOptions: CodeBlockMonacoOptions;
93
+ theme: CodeBlockThemeProp;
94
+ darkTheme: CodeBlockTheme;
95
+ lightTheme: CodeBlockTheme;
96
+ themes: CodeBlockThemes;
96
97
  minWidth: string | number;
97
98
  maxWidth: string | number;
98
99
  isShowPreview: boolean;
@@ -103,8 +104,10 @@ type NodeRendererCodeBlockProps = Partial<{
103
104
  showPreviewButton: boolean;
104
105
  showCollapseButton: boolean;
105
106
  showFontSizeButtons: boolean;
107
+ showLineNumbers: boolean;
106
108
  htmlPreviewAllowScripts: boolean;
107
109
  htmlPreviewSandbox: string;
110
+ codeBlockOptions?: never;
108
111
  }> & Record<string, unknown>;
109
112
  type NodeRendererMermaidProps = Partial<{
110
113
  maxHeight: string | null;
@@ -160,19 +163,19 @@ interface NodeRendererProps {
160
163
  htmlPolicy?: HtmlPolicy;
161
164
  viewportPriority?: boolean;
162
165
  codeBlockStream?: boolean;
163
- codeBlockDarkTheme?: CodeBlockMonacoTheme;
164
- codeBlockLightTheme?: CodeBlockMonacoTheme;
165
- codeBlockMonacoOptions?: CodeBlockMonacoOptions;
166
+ codeBlockDarkTheme?: CodeBlockTheme;
167
+ codeBlockLightTheme?: CodeBlockTheme;
166
168
  renderCodeBlocksAsPre?: boolean;
167
169
  codeBlockMinWidth?: string | number;
168
170
  codeBlockMaxWidth?: string | number;
171
+ codeBlockOptions?: CodeBlockOptions;
169
172
  codeBlockProps?: NodeRendererCodeBlockProps;
170
173
  mermaidProps?: NodeRendererMermaidProps;
171
174
  d2Props?: NodeRendererD2Props;
172
175
  infographicProps?: NodeRendererInfographicProps;
173
176
  customComponents?: CustomComponentMap;
174
177
  showTooltips?: boolean;
175
- themes?: CodeBlockMonacoTheme[];
178
+ themes?: CodeBlockThemes;
176
179
  isDark?: boolean;
177
180
  customId?: string;
178
181
  indexKey?: number | string;
@@ -209,16 +212,16 @@ interface AngularRenderContext {
209
212
  customHtmlTags?: readonly string[];
210
213
  parseOptions?: ParseOptions;
211
214
  customMarkdownIt?: (md: MarkdownIt) => MarkdownIt;
215
+ codeBlockOptions?: CodeBlockOptions;
212
216
  codeBlockProps?: NodeRendererCodeBlockProps;
213
217
  mermaidProps?: NodeRendererMermaidProps;
214
218
  d2Props?: NodeRendererD2Props;
215
219
  infographicProps?: NodeRendererInfographicProps;
216
220
  customComponents?: CustomComponentMap;
217
221
  codeBlockThemes?: {
218
- themes?: CodeBlockMonacoTheme[];
219
- darkTheme?: CodeBlockMonacoTheme;
220
- lightTheme?: CodeBlockMonacoTheme;
221
- monacoOptions?: CodeBlockMonacoOptions;
222
+ themes?: CodeBlockThemes;
223
+ darkTheme?: CodeBlockTheme;
224
+ lightTheme?: CodeBlockTheme;
222
225
  minWidth?: string | number;
223
226
  maxWidth?: string | number;
224
227
  };
@@ -264,6 +267,7 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
264
267
  private editorHost?;
265
268
  node: AngularRenderableNode;
266
269
  context?: AngularRenderContext;
270
+ codeBlockOptions?: CodeBlockOptions;
267
271
  props?: Record<string, any>;
268
272
  useFallback: boolean;
269
273
  copied: boolean;
@@ -274,7 +278,7 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
274
278
  defaultFontSize: number;
275
279
  fontSize: number;
276
280
  private helpers;
277
- private runtimeMonacoOptions;
281
+ private runtimeOptions;
278
282
  private createPromise;
279
283
  private syncPromise;
280
284
  private editorKind;
@@ -284,14 +288,16 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
284
288
  private destroyed;
285
289
  private copyTimer;
286
290
  private deferredHeightSyncRaf;
291
+ private lastCodeBlockOptions?;
292
+ private lastRuntimeHostKey;
287
293
  get t(): (key: string) => string;
288
294
  get mergedProps(): {
289
295
  [x: string]: any;
290
296
  stream?: boolean;
291
- darkTheme?: CodeBlockMonacoTheme;
292
- lightTheme?: CodeBlockMonacoTheme;
293
- themes?: CodeBlockMonacoTheme[];
294
- monacoOptions?: markstream_angular.CodeBlockMonacoOptions;
297
+ theme?: markstream_angular.CodeBlockThemeProp;
298
+ darkTheme?: CodeBlockTheme;
299
+ lightTheme?: CodeBlockTheme;
300
+ themes?: markstream_angular.CodeBlockThemes;
295
301
  minWidth?: string | number;
296
302
  maxWidth?: string | number;
297
303
  isShowPreview?: boolean;
@@ -302,51 +308,20 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
302
308
  showPreviewButton?: boolean;
303
309
  showCollapseButton?: boolean;
304
310
  showFontSizeButtons?: boolean;
311
+ showLineNumbers?: boolean;
305
312
  htmlPreviewAllowScripts?: boolean;
306
313
  htmlPreviewSandbox?: string;
314
+ codeBlockOptions?: never;
307
315
  };
308
316
  get resolvedLoading(): boolean;
309
317
  get resolvedStream(): boolean;
310
318
  get resolvedIsDark(): boolean;
311
- get resolvedDarkTheme(): CodeBlockMonacoTheme;
312
- get resolvedLightTheme(): CodeBlockMonacoTheme;
313
- get resolvedThemes(): CodeBlockMonacoTheme[];
314
- get resolvedMonacoOptions(): {
315
- [x: string]: unknown;
316
- MAX_HEIGHT?: number | string;
317
- fontSize?: number;
318
- lineHeight?: number;
319
- fontFamily?: string;
320
- tabSize?: number;
321
- readOnly?: boolean;
322
- wordWrap?: "off" | "on" | "wordWrapColumn" | "bounded" | string;
323
- wrappingIndent?: "none" | "same" | "indent" | "deepIndent" | string;
324
- theme?: string;
325
- themes?: CodeBlockMonacoTheme[];
326
- languages?: markstream_angular.CodeBlockMonacoLanguage[];
327
- renderSideBySide?: boolean;
328
- useInlineViewWhenSpaceIsLimited?: boolean;
329
- enableSplitViewResizing?: boolean;
330
- ignoreTrimWhitespace?: boolean;
331
- maxComputationTime?: number;
332
- diffAlgorithm?: string;
333
- renderIndicators?: boolean;
334
- originalEditable?: boolean;
335
- revealDebounceMs?: number;
336
- revealStrategy?: "bottom" | "centerIfOutside" | "center";
337
- revealBatchOnIdleMs?: number;
338
- updateThrottleMs?: number;
339
- diffUpdateThrottleMs?: number;
340
- diffAutoScroll?: boolean;
341
- diffHideUnchangedRegions?: markstream_angular.CodeBlockDiffHideUnchangedRegions;
342
- diffLineStyle?: markstream_angular.CodeBlockDiffLineStyle;
343
- diffAppearance?: markstream_angular.CodeBlockDiffAppearance;
344
- diffUnchangedRegionStyle?: markstream_angular.CodeBlockDiffUnchangedRegionStyle;
345
- diffHunkActionsOnHover?: boolean;
346
- diffHunkHoverHideDelayMs?: number;
347
- onDiffHunkAction?: (context: markstream_angular.CodeBlockDiffHunkActionContext) => void | boolean | Promise<void | boolean>;
348
- scrollbar?: Record<string, unknown>;
349
- };
319
+ get resolvedDarkTheme(): string;
320
+ get resolvedLightTheme(): string;
321
+ get resolvedThemes(): [dark: string, light: string];
322
+ get resolvedCodeBlockOptions(): CodeBlockOptions;
323
+ get resolvedShowLineNumbers(): boolean;
324
+ get resolvedPreWhiteSpace(): 'pre' | 'pre-wrap';
350
325
  get resolvedEnableFontSizeControl(): boolean;
351
326
  get resolvedShowHeader(): boolean;
352
327
  get resolvedShowCopyButton(): boolean;
@@ -358,7 +333,7 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
358
333
  get resolvedIsShowPreview(): boolean;
359
334
  get rawLanguage(): string;
360
335
  get canonicalLanguage(): string;
361
- get monacoLanguage(): string;
336
+ get language(): string;
362
337
  get isPlainTextLanguage(): boolean;
363
338
  get displayLanguage(): string;
364
339
  get languageIconDataUrl(): string;
@@ -391,6 +366,7 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
391
366
  private applyInitialFontSize;
392
367
  private syncEditorState;
393
368
  private ensureHelpers;
369
+ private buildRuntimeOptions;
394
370
  private recreateEditor;
395
371
  private syncEditorGeometryVars;
396
372
  private updateEditor;
@@ -408,10 +384,11 @@ declare class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDest
408
384
  private cancelDeferredHeightSync;
409
385
  private scheduleDeferredHeightSync;
410
386
  private cleanupEditor;
387
+ private disposeRuntimeHelpers;
411
388
  private resolveCssSize;
412
389
  private copyUsingTextarea;
413
390
  static ɵfac: i0.ɵɵFactoryDeclaration<CodeBlockNodeComponent, never>;
414
- static ɵcmp: i0.ɵɵComponentDeclaration<CodeBlockNodeComponent, "markstream-angular-code-block-node", never, { "node": { "alias": "node"; "required": true; }; "context": { "alias": "context"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
391
+ static ɵcmp: i0.ɵɵComponentDeclaration<CodeBlockNodeComponent, "markstream-angular-code-block-node", never, { "node": { "alias": "node"; "required": true; }; "context": { "alias": "context"; "required": false; }; "codeBlockOptions": { "alias": "codeBlockOptions"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
415
392
  }
416
393
 
417
394
  declare class HtmlPreviewFrameComponent {
@@ -963,17 +940,17 @@ declare class NodeRendererComponent implements NodeRendererProps, OnChanges, OnI
963
940
  codeBlockStream: boolean;
964
941
  codeBlockDarkTheme?: NodeRendererProps['codeBlockDarkTheme'];
965
942
  codeBlockLightTheme?: NodeRendererProps['codeBlockLightTheme'];
966
- codeBlockMonacoOptions?: NodeRendererProps['codeBlockMonacoOptions'];
967
943
  renderCodeBlocksAsPre: boolean;
968
944
  codeBlockMinWidth?: string | number;
969
945
  codeBlockMaxWidth?: string | number;
946
+ codeBlockOptions?: NodeRendererProps['codeBlockOptions'];
970
947
  codeBlockProps?: NodeRendererProps['codeBlockProps'];
971
948
  mermaidProps?: NodeRendererProps['mermaidProps'];
972
949
  d2Props?: NodeRendererProps['d2Props'];
973
950
  infographicProps?: NodeRendererProps['infographicProps'];
974
951
  customComponents?: NodeRendererProps['customComponents'];
975
952
  showTooltips: boolean;
976
- themes?: string[];
953
+ themes?: NodeRendererProps['themes'];
977
954
  isDark: boolean;
978
955
  customId?: string;
979
956
  indexKey?: number | string;
@@ -1094,7 +1071,7 @@ declare class NodeRendererComponent implements NodeRendererProps, OnChanges, OnI
1094
1071
  private updateTypewriterCursorPosition;
1095
1072
  private updateTypewriterCursorState;
1096
1073
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeRendererComponent, never>;
1097
- static ɵcmp: i0.ɵɵComponentDeclaration<NodeRendererComponent, "markstream-angular", never, { "content": { "alias": "content"; "required": false; }; "nodes": { "alias": "nodes"; "required": false; }; "final": { "alias": "final"; "required": false; }; "parseOptions": { "alias": "parseOptions"; "required": false; }; "customMarkdownIt": { "alias": "customMarkdownIt"; "required": false; }; "debugPerformance": { "alias": "debugPerformance"; "required": false; }; "customHtmlTags": { "alias": "customHtmlTags"; "required": false; }; "htmlPolicy": { "alias": "htmlPolicy"; "required": false; }; "viewportPriority": { "alias": "viewportPriority"; "required": false; }; "codeBlockStream": { "alias": "codeBlockStream"; "required": false; }; "codeBlockDarkTheme": { "alias": "codeBlockDarkTheme"; "required": false; }; "codeBlockLightTheme": { "alias": "codeBlockLightTheme"; "required": false; }; "codeBlockMonacoOptions": { "alias": "codeBlockMonacoOptions"; "required": false; }; "renderCodeBlocksAsPre": { "alias": "renderCodeBlocksAsPre"; "required": false; }; "codeBlockMinWidth": { "alias": "codeBlockMinWidth"; "required": false; }; "codeBlockMaxWidth": { "alias": "codeBlockMaxWidth"; "required": false; }; "codeBlockProps": { "alias": "codeBlockProps"; "required": false; }; "mermaidProps": { "alias": "mermaidProps"; "required": false; }; "d2Props": { "alias": "d2Props"; "required": false; }; "infographicProps": { "alias": "infographicProps"; "required": false; }; "customComponents": { "alias": "customComponents"; "required": false; }; "showTooltips": { "alias": "showTooltips"; "required": false; }; "themes": { "alias": "themes"; "required": false; }; "isDark": { "alias": "isDark"; "required": false; }; "customId": { "alias": "customId"; "required": false; }; "indexKey": { "alias": "indexKey"; "required": false; }; "typewriter": { "alias": "typewriter"; "required": false; }; "fade": { "alias": "fade"; "required": false; }; "batchRendering": { "alias": "batchRendering"; "required": false; }; "initialRenderBatchSize": { "alias": "initialRenderBatchSize"; "required": false; }; "renderBatchSize": { "alias": "renderBatchSize"; "required": false; }; "renderBatchDelay": { "alias": "renderBatchDelay"; "required": false; }; "renderBatchBudgetMs": { "alias": "renderBatchBudgetMs"; "required": false; }; "renderBatchIdleTimeoutMs": { "alias": "renderBatchIdleTimeoutMs"; "required": false; }; "deferNodesUntilVisible": { "alias": "deferNodesUntilVisible"; "required": false; }; "maxLiveNodes": { "alias": "maxLiveNodes"; "required": false; }; "liveNodeBuffer": { "alias": "liveNodeBuffer"; "required": false; }; "allowHtml": { "alias": "allowHtml"; "required": false; }; "smoothStreaming": { "alias": "smoothStreaming"; "required": false; }; "smoothStreamingOptions": { "alias": "smoothStreamingOptions"; "required": false; }; }, { "copy": "copy"; "handleArtifactClick": "handleArtifactClick"; "click": "click"; "mouseover": "mouseover"; "mouseout": "mouseout"; }, never, never, true, never>;
1074
+ static ɵcmp: i0.ɵɵComponentDeclaration<NodeRendererComponent, "markstream-angular", never, { "content": { "alias": "content"; "required": false; }; "nodes": { "alias": "nodes"; "required": false; }; "final": { "alias": "final"; "required": false; }; "parseOptions": { "alias": "parseOptions"; "required": false; }; "customMarkdownIt": { "alias": "customMarkdownIt"; "required": false; }; "debugPerformance": { "alias": "debugPerformance"; "required": false; }; "customHtmlTags": { "alias": "customHtmlTags"; "required": false; }; "htmlPolicy": { "alias": "htmlPolicy"; "required": false; }; "viewportPriority": { "alias": "viewportPriority"; "required": false; }; "codeBlockStream": { "alias": "codeBlockStream"; "required": false; }; "codeBlockDarkTheme": { "alias": "codeBlockDarkTheme"; "required": false; }; "codeBlockLightTheme": { "alias": "codeBlockLightTheme"; "required": false; }; "renderCodeBlocksAsPre": { "alias": "renderCodeBlocksAsPre"; "required": false; }; "codeBlockMinWidth": { "alias": "codeBlockMinWidth"; "required": false; }; "codeBlockMaxWidth": { "alias": "codeBlockMaxWidth"; "required": false; }; "codeBlockOptions": { "alias": "codeBlockOptions"; "required": false; }; "codeBlockProps": { "alias": "codeBlockProps"; "required": false; }; "mermaidProps": { "alias": "mermaidProps"; "required": false; }; "d2Props": { "alias": "d2Props"; "required": false; }; "infographicProps": { "alias": "infographicProps"; "required": false; }; "customComponents": { "alias": "customComponents"; "required": false; }; "showTooltips": { "alias": "showTooltips"; "required": false; }; "themes": { "alias": "themes"; "required": false; }; "isDark": { "alias": "isDark"; "required": false; }; "customId": { "alias": "customId"; "required": false; }; "indexKey": { "alias": "indexKey"; "required": false; }; "typewriter": { "alias": "typewriter"; "required": false; }; "fade": { "alias": "fade"; "required": false; }; "batchRendering": { "alias": "batchRendering"; "required": false; }; "initialRenderBatchSize": { "alias": "initialRenderBatchSize"; "required": false; }; "renderBatchSize": { "alias": "renderBatchSize"; "required": false; }; "renderBatchDelay": { "alias": "renderBatchDelay"; "required": false; }; "renderBatchBudgetMs": { "alias": "renderBatchBudgetMs"; "required": false; }; "renderBatchIdleTimeoutMs": { "alias": "renderBatchIdleTimeoutMs"; "required": false; }; "deferNodesUntilVisible": { "alias": "deferNodesUntilVisible"; "required": false; }; "maxLiveNodes": { "alias": "maxLiveNodes"; "required": false; }; "liveNodeBuffer": { "alias": "liveNodeBuffer"; "required": false; }; "allowHtml": { "alias": "allowHtml"; "required": false; }; "smoothStreaming": { "alias": "smoothStreaming"; "required": false; }; "smoothStreamingOptions": { "alias": "smoothStreamingOptions"; "required": false; }; }, { "copy": "copy"; "handleArtifactClick": "handleArtifactClick"; "click": "click"; "mouseover": "mouseover"; "mouseout": "mouseout"; }, never, never, true, never>;
1098
1075
  }
1099
1076
 
1100
1077
  type ParagraphSegment = {
@@ -1125,6 +1102,7 @@ declare class ParagraphNodeComponent implements OnChanges {
1125
1102
  declare class PreCodeNodeComponent {
1126
1103
  node: AngularRenderableNode;
1127
1104
  showLineNumbers: boolean;
1105
+ whiteSpace: 'pre' | 'pre-wrap' | undefined;
1128
1106
  private cachedCode;
1129
1107
  private cachedCount;
1130
1108
  private textCount;
@@ -1143,7 +1121,7 @@ declare class PreCodeNodeComponent {
1143
1121
  get lineNumbersText(): string;
1144
1122
  get lineNumberLayoutStyle(): Record<string, string> | null;
1145
1123
  static ɵfac: i0.ɵɵFactoryDeclaration<PreCodeNodeComponent, never>;
1146
- static ɵcmp: i0.ɵɵComponentDeclaration<PreCodeNodeComponent, "markstream-angular-pre-code-node", never, { "node": { "alias": "node"; "required": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; }; }, {}, never, never, true, never>;
1124
+ static ɵcmp: i0.ɵɵComponentDeclaration<PreCodeNodeComponent, "markstream-angular-pre-code-node", never, { "node": { "alias": "node"; "required": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; }; "whiteSpace": { "alias": "whiteSpace"; "required": false; }; }, {}, never, never, true, never>;
1147
1125
  }
1148
1126
 
1149
1127
  declare class ReferenceNodeComponent {
@@ -1290,11 +1268,14 @@ interface EnhanceRenderedHtmlOptions {
1290
1268
  final?: boolean;
1291
1269
  isDark?: boolean;
1292
1270
  renderCodeBlocksAsPre?: boolean;
1293
- monacoOptions?: CodeBlockMonacoOptions;
1294
1271
  d2ThemeId?: number | null;
1295
1272
  d2DarkThemeId?: number | null;
1296
1273
  showTooltips?: boolean;
1274
+ codeBlockOptions?: CodeBlockOptions;
1297
1275
  codeBlockProps?: NodeRendererCodeBlockProps;
1276
+ codeBlockDarkTheme?: CodeBlockTheme;
1277
+ codeBlockLightTheme?: CodeBlockTheme;
1278
+ themes?: CodeBlockThemes;
1298
1279
  mermaidProps?: NodeRendererMermaidProps;
1299
1280
  d2Props?: NodeRendererD2Props;
1300
1281
  infographicProps?: NodeRendererInfographicProps;
@@ -1439,7 +1420,7 @@ declare class SmoothMarkdownStreamService implements OnDestroy {
1439
1420
 
1440
1421
  type LanguageIconResolver = (lang: string) => string | undefined | null;
1441
1422
  declare function normalizeLanguageIdentifier(lang?: string | null): string;
1442
- declare function resolveMonacoLanguageId(lang?: string | null): string;
1423
+ declare function resolveLanguageId(lang?: string | null): string;
1443
1424
  declare function setLanguageIconResolver(resolver?: LanguageIconResolver | null): void;
1444
1425
  declare function getLanguageIcon(lang: string): string;
1445
1426
  declare const languageMap: Record<string, string>;
@@ -1531,5 +1512,5 @@ declare function canParseOffthread(code: string, theme: Theme, timeout?: number)
1531
1512
  declare function findPrefixOffthread(code: string, theme: Theme, timeout?: number): Promise<string>;
1532
1513
  declare function terminateWorker(): void;
1533
1514
 
1534
- export { AdmonitionNodeComponent as AdmonitionNode, CodeBlockNodeComponent as AngularCodeBlockNode, BlockquoteNodeComponent as BlockquoteNode, CheckboxNodeComponent as CheckboxNode, CodeBlockNodeComponent as CodeBlockNode, D2BlockNodeComponent as D2BlockNode, DefinitionListNodeComponent as DefinitionListNode, EmojiNodeComponent as EmojiNode, EmphasisNodeComponent as EmphasisNode, FallbackComponent, FootnoteAnchorNodeComponent as FootnoteAnchorNode, FootnoteNodeComponent as FootnoteNode, FootnoteReferenceNodeComponent as FootnoteReferenceNode, HardBreakNodeComponent as HardBreakNode, HeadingNodeComponent as HeadingNode, HighlightNodeComponent as HighlightNode, HtmlBlockNodeComponent as HtmlBlockNode, HtmlInlineNodeComponent as HtmlInlineNode, HtmlPreviewFrameComponent as HtmlPreviewFrame, ImageNodeComponent as ImageNode, InfographicBlockNodeComponent as InfographicBlockNode, InlineCodeNodeComponent as InlineCodeNode, InsertNodeComponent as InsertNode, LinkNodeComponent as LinkNode, ListItemNodeComponent as ListItemNode, ListNodeComponent as ListNode, MARKSTREAM_SMOOTH_STREAMING_SCOPE, MERMAID_DISABLED_CODE, MERMAID_WORKER_BUSY_CODE, CodeBlockNodeComponent as MarkdownCodeBlockNode, NodeRendererComponent as MarkdownRenderComponent, NodeRendererComponent as MarkstreamAngularComponent, MathBlockNodeComponent as MathBlockNode, MathInlineNodeComponent as MathInlineNode, MermaidBlockNodeComponent as MermaidBlockNode, NestedRendererComponent as NestedRenderer, NodeRendererComponent as NodeRenderer, ParagraphNodeComponent as ParagraphNode, PreCodeNodeComponent as PreCodeNode, ReferenceNodeComponent as ReferenceNode, SafeAttrsDirective, SmoothMarkdownStreamService, StrikethroughNodeComponent as StrikethroughNode, StrongNodeComponent as StrongNode, SubscriptNodeComponent as SubscriptNode, SuperscriptNodeComponent as SuperscriptNode, TableNodeComponent as TableNode, TextNodeComponent as TextNode, ThematicBreakNodeComponent as ThematicBreakNode, VmrContainerNodeComponent as VmrContainerNode, WORKER_BUSY_CODE, buildKaTeXCDNWorkerSource, buildMermaidCDNWorkerSource, buildRenderContext, canParseOffthread, clearGlobalCustomComponents, clearKaTeXWorker, clearMermaidWorker, createKaTeXWorkerFromCDN, createMermaidWorkerFromCDN, disableD2, disableKatex, disableMermaid, disposeRenderedHtmlEnhancements, enableD2, enableKatex, enableMermaid, enhanceRenderedHtml, findPrefixOffthread, getCustomComponentsRevision, getCustomNodeComponents, getKaTeXBackpressureDefaults, getKaTeXWorkerLoad, getKatex, getLanguageIcon, getMermaid, getMermaidWorkerLoad, isD2Enabled, isKaTeXWorkerBusy, isKatexEnabled, isMermaidEnabled, languageMap, normalizeLanguageIdentifier, parseNestedMarkdownToNodes, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderMarkdownNodeToHtml, renderMarkdownNodesToHtml, renderMarkdownToHtml, renderNestedMarkdownToHtml, resolveMonacoLanguageId, resolveParsedNodes, sanitizeHtmlContent, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXWorker, setKaTeXWorkerDebug, setKaTeXWorkerMaxConcurrency, setKatexLoader, setLanguageIconResolver, setMermaidLoader, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, subscribeCustomComponents, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };
1535
- export type { AngularRenderContext, AngularRenderableNode, BackpressureOptions, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockPreviewPayload, CustomComponentMap, D2Loader, EnhanceRenderedHtmlOptions, KaTeXCDNWorkerHandle, KaTeXCDNWorkerMode, KaTeXCDNWorkerOptions, KatexLoader, LanguageIconResolver, NodeRendererProps as MarkstreamAngularComponentProps, MarkstreamAngularRenderOptions, MermaidCDNWorkerHandle, MermaidCDNWorkerMode, MermaidCDNWorkerOptions, MermaidLoader, NestedMarkdownHtmlInput, NestedMarkdownHtmlOptions, NestedMarkdownNodesInput, NestedMarkdownNodesOptions, NodeRendererCodeBlockProps, NodeRendererD2Props, NodeRendererEvents, NodeRendererInfographicProps, NodeRendererMermaidProps, NodeRendererProps, RenderableMarkdownNode, RenderedHtmlEnhancementHandle, SmoothStreamingScope };
1515
+ export { AdmonitionNodeComponent as AdmonitionNode, CodeBlockNodeComponent as AngularCodeBlockNode, BlockquoteNodeComponent as BlockquoteNode, CheckboxNodeComponent as CheckboxNode, CodeBlockNodeComponent as CodeBlockNode, D2BlockNodeComponent as D2BlockNode, DefinitionListNodeComponent as DefinitionListNode, EmojiNodeComponent as EmojiNode, EmphasisNodeComponent as EmphasisNode, FallbackComponent, FootnoteAnchorNodeComponent as FootnoteAnchorNode, FootnoteNodeComponent as FootnoteNode, FootnoteReferenceNodeComponent as FootnoteReferenceNode, HardBreakNodeComponent as HardBreakNode, HeadingNodeComponent as HeadingNode, HighlightNodeComponent as HighlightNode, HtmlBlockNodeComponent as HtmlBlockNode, HtmlInlineNodeComponent as HtmlInlineNode, HtmlPreviewFrameComponent as HtmlPreviewFrame, ImageNodeComponent as ImageNode, InfographicBlockNodeComponent as InfographicBlockNode, InlineCodeNodeComponent as InlineCodeNode, InsertNodeComponent as InsertNode, LinkNodeComponent as LinkNode, ListItemNodeComponent as ListItemNode, ListNodeComponent as ListNode, MARKSTREAM_SMOOTH_STREAMING_SCOPE, MERMAID_DISABLED_CODE, MERMAID_WORKER_BUSY_CODE, NodeRendererComponent as MarkdownRenderComponent, NodeRendererComponent as MarkstreamAngularComponent, MathBlockNodeComponent as MathBlockNode, MathInlineNodeComponent as MathInlineNode, MermaidBlockNodeComponent as MermaidBlockNode, NestedRendererComponent as NestedRenderer, NodeRendererComponent as NodeRenderer, ParagraphNodeComponent as ParagraphNode, PreCodeNodeComponent as PreCodeNode, ReferenceNodeComponent as ReferenceNode, SafeAttrsDirective, SmoothMarkdownStreamService, StrikethroughNodeComponent as StrikethroughNode, StrongNodeComponent as StrongNode, SubscriptNodeComponent as SubscriptNode, SuperscriptNodeComponent as SuperscriptNode, TableNodeComponent as TableNode, TextNodeComponent as TextNode, ThematicBreakNodeComponent as ThematicBreakNode, VmrContainerNodeComponent as VmrContainerNode, WORKER_BUSY_CODE, buildKaTeXCDNWorkerSource, buildMermaidCDNWorkerSource, buildRenderContext, canParseOffthread, clearGlobalCustomComponents, clearKaTeXWorker, clearMermaidWorker, createKaTeXWorkerFromCDN, createMermaidWorkerFromCDN, disableD2, disableKatex, disableMermaid, disposeRenderedHtmlEnhancements, enableD2, enableKatex, enableMermaid, enhanceRenderedHtml, findPrefixOffthread, getCustomComponentsRevision, getCustomNodeComponents, getKaTeXBackpressureDefaults, getKaTeXWorkerLoad, getKatex, getLanguageIcon, getMermaid, getMermaidWorkerLoad, isD2Enabled, isKaTeXWorkerBusy, isKatexEnabled, isMermaidEnabled, languageMap, normalizeLanguageIdentifier, parseNestedMarkdownToNodes, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderMarkdownNodeToHtml, renderMarkdownNodesToHtml, renderMarkdownToHtml, renderNestedMarkdownToHtml, resolveLanguageId, resolveParsedNodes, sanitizeHtmlContent, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXWorker, setKaTeXWorkerDebug, setKaTeXWorkerMaxConcurrency, setKatexLoader, setLanguageIconResolver, setMermaidLoader, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, subscribeCustomComponents, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };
1516
+ export type { AngularRenderContext, AngularRenderableNode, BackpressureOptions, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockOptions, CodeBlockPreviewPayload, CodeBlockTheme, CodeBlockThemePair, CodeBlockThemeProp, CodeBlockThemes, CustomComponentMap, D2Loader, EnhanceRenderedHtmlOptions, KaTeXCDNWorkerHandle, KaTeXCDNWorkerMode, KaTeXCDNWorkerOptions, KatexLoader, LanguageIconResolver, NodeRendererProps as MarkstreamAngularComponentProps, MarkstreamAngularRenderOptions, MermaidCDNWorkerHandle, MermaidCDNWorkerMode, MermaidCDNWorkerOptions, MermaidLoader, NestedMarkdownHtmlInput, NestedMarkdownHtmlOptions, NestedMarkdownNodesInput, NestedMarkdownNodesOptions, NodeRendererCodeBlockProps, NodeRendererD2Props, NodeRendererEvents, NodeRendererInfographicProps, NodeRendererMermaidProps, NodeRendererProps, RenderableMarkdownNode, RenderedHtmlEnhancementHandle, SmoothStreamingScope };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "markstream-angular",
3
3
  "type": "module",
4
- "version": "0.0.10",
5
- "description": "Angular 20+ standalone streaming Markdown renderer for AI chat, LLM token streams, SSE/WebSocket output, incomplete Markdown, Mermaid, KaTeX, Monaco-powered code blocks, and safe Angular component rendering.",
4
+ "version": "0.1.0-beta.3",
5
+ "description": "Angular 20+ standalone streaming Markdown renderer for AI chat, LLM token streams, SSE/WebSocket output, incomplete Markdown, Mermaid, KaTeX, stream-diffs powered code blocks, and safe Angular component rendering.",
6
6
  "author": "Simon He",
7
7
  "license": "MIT",
8
8
  "homepage": "https://markstream.simonhe.me/frameworks/angular",
@@ -40,7 +40,7 @@
40
40
  "streaming-mermaid",
41
41
  "katex",
42
42
  "streaming-katex",
43
- "monaco-editor",
43
+ "stream-diffs",
44
44
  "streaming-code-blocks",
45
45
  "large-documents",
46
46
  "custom-components",
@@ -66,6 +66,16 @@
66
66
  "files": [
67
67
  "dist"
68
68
  ],
69
+ "scripts": {
70
+ "build": "pnpm --dir ../markdown-parser build && pnpm --dir ../markstream-core build && ng-packagr -p ng-package.json -c tsconfig.build.json && vite build --config vite.config.workers.ts --mode npm",
71
+ "dev": "vite dev",
72
+ "preview": "vite preview",
73
+ "typecheck": "tsc --noEmit",
74
+ "prepublishOnly": "pnpm run build && pnpm run check:workspace-deps-published",
75
+ "check:core-published": "node ../../scripts/check-core-published.mjs --package-json package.json --core-package-json ../markstream-core/package.json",
76
+ "check:workspace-deps-published": "node ../../scripts/check-workspace-deps-published.mjs --package-json package.json",
77
+ "release": "pnpm run check:workspace-deps-published && bumpp --all --commit --no-tag --no-push --execute 'pnpm --workspace-root run docs:llms:generate' && DIST_TAG=\"$(node ../../scripts/dist-tag.mjs)\" && pnpm publish --access public --tag \"${DIST_TAG}\" && node ../../scripts/tag-package.mjs --package-json package.json --push"
78
+ },
69
79
  "peerDependencies": {
70
80
  "@angular/common": ">=20",
71
81
  "@angular/core": ">=20",
@@ -73,8 +83,7 @@
73
83
  "@terrastruct/d2": ">=0.1.33",
74
84
  "katex": ">=0.16.22",
75
85
  "mermaid": ">=11",
76
- "stream-diffs": ">=0.0.2",
77
- "stream-monaco": ">=0.0.48"
86
+ "stream-diffs": ">=0.0.2"
78
87
  },
79
88
  "peerDependenciesMeta": {
80
89
  "@antv/infographic": {
@@ -91,15 +100,12 @@
91
100
  },
92
101
  "stream-diffs": {
93
102
  "optional": true
94
- },
95
- "stream-monaco": {
96
- "optional": true
97
103
  }
98
104
  },
99
105
  "dependencies": {
100
106
  "@floating-ui/dom": "^1.8.0",
101
- "markstream-core": "1.0.3",
102
- "stream-markdown-parser": "1.2.3"
107
+ "markstream-core": "1.1.0-beta.2",
108
+ "stream-markdown-parser": "1.2.6-beta.1"
103
109
  },
104
110
  "devDependencies": {
105
111
  "@angular/common": "^20.3.26",
@@ -112,14 +118,5 @@
112
118
  "typescript": "^5.9.3",
113
119
  "vite": "^7.3.6",
114
120
  "vite-plugin-dts": "^4.5.4"
115
- },
116
- "scripts": {
117
- "build": "pnpm --dir ../markdown-parser build && pnpm --dir ../markstream-core build && ng-packagr -p ng-package.json -c tsconfig.build.json && vite build --config vite.config.workers.ts --mode npm",
118
- "dev": "vite dev",
119
- "preview": "vite preview",
120
- "typecheck": "tsc --noEmit",
121
- "check:core-published": "node ../../scripts/check-core-published.mjs --package-json package.json --core-package-json ../markstream-core/package.json",
122
- "check:workspace-deps-published": "node ../../scripts/check-workspace-deps-published.mjs --package-json package.json",
123
- "release": "pnpm run check:workspace-deps-published && bumpp --all --commit --no-tag --no-push --execute 'pnpm --workspace-root run docs:llms:generate' && pnpm publish --access public $(node ../../scripts/dist-tag.mjs) && node ../../scripts/tag-package.mjs --package-json package.json --push"
124
121
  }
125
- }
122
+ }