@memberjunction/ng-markdown 6.1.4 → 6.2.0-edge.1

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.
@@ -29,13 +29,177 @@ import * as i2 from "../services/markdown.service";
29
29
  * ```
30
30
  */
31
31
  export class MarkdownComponent {
32
+ /** @deprecated Use {@link Data}. */
33
+ set data(value) {
34
+ this.Data = value;
35
+ }
36
+ /** @deprecated Use {@link Data}. */
37
+ get data() {
38
+ return this.Data;
39
+ }
40
+ /** @deprecated Use {@link EnableHighlight}. */
41
+ set enableHighlight(value) {
42
+ this.EnableHighlight = value;
43
+ }
44
+ /** @deprecated Use {@link EnableHighlight}. */
45
+ get enableHighlight() {
46
+ return this.EnableHighlight;
47
+ }
48
+ /** @deprecated Use {@link EnableMermaid}. */
49
+ set enableMermaid(value) {
50
+ this.EnableMermaid = value;
51
+ }
52
+ /** @deprecated Use {@link EnableMermaid}. */
53
+ get enableMermaid() {
54
+ return this.EnableMermaid;
55
+ }
56
+ /** @deprecated Use {@link EnableCodeCopy}. */
57
+ set enableCodeCopy(value) {
58
+ this.EnableCodeCopy = value;
59
+ }
60
+ /** @deprecated Use {@link EnableCodeCopy}. */
61
+ get enableCodeCopy() {
62
+ return this.EnableCodeCopy;
63
+ }
64
+ /** @deprecated Use {@link EnableCollapsibleHeadings}. */
65
+ set enableCollapsibleHeadings(value) {
66
+ this.EnableCollapsibleHeadings = value;
67
+ }
68
+ /** @deprecated Use {@link EnableCollapsibleHeadings}. */
69
+ get enableCollapsibleHeadings() {
70
+ return this.EnableCollapsibleHeadings;
71
+ }
72
+ /** @deprecated Use {@link CollapsibleHeadingLevel}. */
73
+ set collapsibleHeadingLevel(value) {
74
+ this.CollapsibleHeadingLevel = value;
75
+ }
76
+ /** @deprecated Use {@link CollapsibleHeadingLevel}. */
77
+ get collapsibleHeadingLevel() {
78
+ return this.CollapsibleHeadingLevel;
79
+ }
80
+ /** @deprecated Use {@link CollapsibleDefaultExpanded}. */
81
+ set collapsibleDefaultExpanded(value) {
82
+ this.CollapsibleDefaultExpanded = value;
83
+ }
84
+ /** @deprecated Use {@link CollapsibleDefaultExpanded}. */
85
+ get collapsibleDefaultExpanded() {
86
+ return this.CollapsibleDefaultExpanded;
87
+ }
88
+ /** @deprecated Use {@link AutoExpandLevels}. */
89
+ set autoExpandLevels(value) {
90
+ this.AutoExpandLevels = value;
91
+ }
92
+ /** @deprecated Use {@link AutoExpandLevels}. */
93
+ get autoExpandLevels() {
94
+ return this.AutoExpandLevels;
95
+ }
96
+ /** @deprecated Use {@link EnableAlerts}. */
97
+ set enableAlerts(value) {
98
+ this.EnableAlerts = value;
99
+ }
100
+ /** @deprecated Use {@link EnableAlerts}. */
101
+ get enableAlerts() {
102
+ return this.EnableAlerts;
103
+ }
104
+ /** @deprecated Use {@link EnableSmartypants}. */
105
+ set enableSmartypants(value) {
106
+ this.EnableSmartypants = value;
107
+ }
108
+ /** @deprecated Use {@link EnableSmartypants}. */
109
+ get enableSmartypants() {
110
+ return this.EnableSmartypants;
111
+ }
112
+ /** @deprecated Use {@link EnableSvgRenderer}. */
113
+ set enableSvgRenderer(value) {
114
+ this.EnableSvgRenderer = value;
115
+ }
116
+ /** @deprecated Use {@link EnableSvgRenderer}. */
117
+ get enableSvgRenderer() {
118
+ return this.EnableSvgRenderer;
119
+ }
120
+ /** @deprecated Use {@link EnableHtml}. */
121
+ set enableHtml(value) {
122
+ this.EnableHtml = value;
123
+ }
124
+ /** @deprecated Use {@link EnableHtml}. */
125
+ get enableHtml() {
126
+ return this.EnableHtml;
127
+ }
128
+ /** @deprecated Use {@link EnableJavaScript}. */
129
+ set enableJavaScript(value) {
130
+ this.EnableJavaScript = value;
131
+ }
132
+ /** @deprecated Use {@link EnableJavaScript}. */
133
+ get enableJavaScript() {
134
+ return this.EnableJavaScript;
135
+ }
136
+ /** @deprecated Use {@link EnableHeadingIds}. */
137
+ set enableHeadingIds(value) {
138
+ this.EnableHeadingIds = value;
139
+ }
140
+ /** @deprecated Use {@link EnableHeadingIds}. */
141
+ get enableHeadingIds() {
142
+ return this.EnableHeadingIds;
143
+ }
144
+ /** @deprecated Use {@link HeadingIdPrefix}. */
145
+ set headingIdPrefix(value) {
146
+ this.HeadingIdPrefix = value;
147
+ }
148
+ /** @deprecated Use {@link HeadingIdPrefix}. */
149
+ get headingIdPrefix() {
150
+ return this.HeadingIdPrefix;
151
+ }
152
+ /** @deprecated Use {@link EnableLineNumbers}. */
153
+ set enableLineNumbers(value) {
154
+ this.EnableLineNumbers = value;
155
+ }
156
+ /** @deprecated Use {@link EnableLineNumbers}. */
157
+ get enableLineNumbers() {
158
+ return this.EnableLineNumbers;
159
+ }
160
+ /** @deprecated Use {@link ContainerClass}. */
161
+ set containerClass(value) {
162
+ this.ContainerClass = value;
163
+ }
164
+ /** @deprecated Use {@link ContainerClass}. */
165
+ get containerClass() {
166
+ return this.ContainerClass;
167
+ }
168
+ /** @deprecated Use {@link MermaidTheme}. */
169
+ set mermaidTheme(value) {
170
+ this.MermaidTheme = value;
171
+ }
172
+ /** @deprecated Use {@link MermaidTheme}. */
173
+ get mermaidTheme() {
174
+ return this.MermaidTheme;
175
+ }
176
+ /** @deprecated Use {@link Sanitize}. */
177
+ set sanitize(value) {
178
+ this.Sanitize = value;
179
+ }
180
+ /** @deprecated Use {@link Sanitize}. */
181
+ get sanitize() {
182
+ return this.Sanitize;
183
+ }
184
+ /** @deprecated Use {@link RenderedContent}. */
185
+ get renderedContent() {
186
+ return this.RenderedContent;
187
+ }
188
+ /** @deprecated Use {@link RenderedContent}. */
189
+ set renderedContent(value) {
190
+ this.RenderedContent = value;
191
+ }
32
192
  /**
33
193
  * Public accessor for the component's element reference.
34
194
  * Provided for backward compatibility with ngx-markdown API.
35
195
  */
36
- get element() {
196
+ get Element() {
37
197
  return this.elementRef;
38
198
  }
199
+ /** @deprecated Use {@link Element}. */
200
+ get element() {
201
+ return this.Element;
202
+ }
39
203
  constructor(elementRef, sanitizer, markdownService, cdr) {
40
204
  this.elementRef = elementRef;
41
205
  this.sanitizer = sanitizer;
@@ -44,95 +208,119 @@ export class MarkdownComponent {
44
208
  /**
45
209
  * The markdown content to render
46
210
  */
47
- this.data = '';
211
+ this.Data = '';
48
212
  /**
49
213
  * Enable syntax highlighting
50
214
  */
51
- this.enableHighlight = DEFAULT_MARKDOWN_CONFIG.enableHighlight;
215
+ this.EnableHighlight = DEFAULT_MARKDOWN_CONFIG.enableHighlight;
52
216
  /**
53
217
  * Enable Mermaid diagram rendering
54
218
  */
55
- this.enableMermaid = DEFAULT_MARKDOWN_CONFIG.enableMermaid;
219
+ this.EnableMermaid = DEFAULT_MARKDOWN_CONFIG.enableMermaid;
56
220
  /**
57
221
  * Enable copy button on code blocks
58
222
  */
59
- this.enableCodeCopy = DEFAULT_MARKDOWN_CONFIG.enableCodeCopy;
223
+ this.EnableCodeCopy = DEFAULT_MARKDOWN_CONFIG.enableCodeCopy;
60
224
  /**
61
225
  * Enable collapsible heading sections
62
226
  */
63
- this.enableCollapsibleHeadings = DEFAULT_MARKDOWN_CONFIG.enableCollapsibleHeadings;
227
+ this.EnableCollapsibleHeadings = DEFAULT_MARKDOWN_CONFIG.enableCollapsibleHeadings;
64
228
  /**
65
229
  * Heading level at which to start collapsing
66
230
  */
67
- this.collapsibleHeadingLevel = DEFAULT_MARKDOWN_CONFIG.collapsibleHeadingLevel;
231
+ this.CollapsibleHeadingLevel = DEFAULT_MARKDOWN_CONFIG.collapsibleHeadingLevel;
68
232
  /**
69
233
  * Whether collapsible sections should be expanded by default
70
234
  */
71
- this.collapsibleDefaultExpanded = DEFAULT_MARKDOWN_CONFIG.collapsibleDefaultExpanded;
235
+ this.CollapsibleDefaultExpanded = DEFAULT_MARKDOWN_CONFIG.collapsibleDefaultExpanded;
72
236
  /**
73
237
  * Enable GitHub-style alerts
74
238
  */
75
- this.enableAlerts = DEFAULT_MARKDOWN_CONFIG.enableAlerts;
239
+ this.EnableAlerts = DEFAULT_MARKDOWN_CONFIG.enableAlerts;
76
240
  /**
77
241
  * Enable smartypants for typography (curly quotes, em/en dashes, ellipses)
78
242
  */
79
- this.enableSmartypants = DEFAULT_MARKDOWN_CONFIG.enableSmartypants;
243
+ this.EnableSmartypants = DEFAULT_MARKDOWN_CONFIG.enableSmartypants;
80
244
  /**
81
245
  * Enable SVG code block rendering
82
246
  * When enabled, ```svg code blocks are rendered as actual SVG images
83
247
  */
84
- this.enableSvgRenderer = DEFAULT_MARKDOWN_CONFIG.enableSvgRenderer;
248
+ this.EnableSvgRenderer = DEFAULT_MARKDOWN_CONFIG.enableSvgRenderer;
85
249
  /**
86
250
  * Enable raw HTML passthrough in markdown content.
87
251
  * Scripts and event handlers are still stripped unless enableJavaScript is true.
88
252
  */
89
- this.enableHtml = DEFAULT_MARKDOWN_CONFIG.enableHtml;
253
+ this.EnableHtml = DEFAULT_MARKDOWN_CONFIG.enableHtml;
90
254
  /**
91
255
  * Enable JavaScript in HTML content (<script> tags and on* handlers).
92
256
  * WARNING: Major security risk - only enable for fully trusted content.
93
257
  */
94
- this.enableJavaScript = DEFAULT_MARKDOWN_CONFIG.enableJavaScript;
258
+ this.EnableJavaScript = DEFAULT_MARKDOWN_CONFIG.enableJavaScript;
95
259
  /**
96
260
  * Enable heading IDs for anchor links
97
261
  */
98
- this.enableHeadingIds = DEFAULT_MARKDOWN_CONFIG.enableHeadingIds;
262
+ this.EnableHeadingIds = DEFAULT_MARKDOWN_CONFIG.enableHeadingIds;
99
263
  /**
100
264
  * Prefix for heading IDs
101
265
  */
102
- this.headingIdPrefix = DEFAULT_MARKDOWN_CONFIG.headingIdPrefix;
266
+ this.HeadingIdPrefix = DEFAULT_MARKDOWN_CONFIG.headingIdPrefix;
103
267
  /**
104
268
  * Enable line numbers in code blocks
105
269
  */
106
- this.enableLineNumbers = DEFAULT_MARKDOWN_CONFIG.enableLineNumbers;
270
+ this.EnableLineNumbers = DEFAULT_MARKDOWN_CONFIG.enableLineNumbers;
107
271
  /**
108
272
  * Custom CSS class for the container
109
273
  */
110
- this.containerClass = '';
274
+ this.ContainerClass = '';
111
275
  /**
112
276
  * Mermaid theme.
113
277
  * 'auto' (default) detects light/dark from the document's data-theme attribute.
114
278
  */
115
- this.mermaidTheme = DEFAULT_MARKDOWN_CONFIG.mermaidTheme;
279
+ this.MermaidTheme = DEFAULT_MARKDOWN_CONFIG.mermaidTheme;
116
280
  /**
117
281
  * Whether to sanitize HTML output
118
282
  */
119
- this.sanitize = DEFAULT_MARKDOWN_CONFIG.sanitize;
283
+ this.Sanitize = DEFAULT_MARKDOWN_CONFIG.sanitize;
120
284
  /**
121
285
  * Emitted when rendering is complete
122
286
  */
123
- this.rendered = new EventEmitter();
287
+ this.Rendered = new EventEmitter();
288
+ /**
289
+ * @deprecated Use {@link Rendered}.
290
+ *
291
+ * The same emitter under the old binding name, so a template still binding
292
+ * (rendered) keeps working. Must stay AFTER Rendered: class fields
293
+ * initialise in order, and the other way round this captures undefined.
294
+ */
295
+ this.rendered = this.Rendered;
124
296
  /**
125
297
  * Emitted when a heading anchor is clicked
126
298
  */
127
- this.headingClick = new EventEmitter();
299
+ this.HeadingClick = new EventEmitter();
300
+ /**
301
+ * @deprecated Use {@link HeadingClick}.
302
+ *
303
+ * The same emitter under the old binding name, so a template still binding
304
+ * (headingClick) keeps working. Must stay AFTER HeadingClick: class fields
305
+ * initialise in order, and the other way round this captures undefined.
306
+ */
307
+ this.headingClick = this.HeadingClick;
128
308
  /**
129
309
  * Emitted when code is copied to clipboard
130
310
  */
131
- this.codeCopied = new EventEmitter();
311
+ this.CodeCopied = new EventEmitter();
312
+ /**
313
+ * @deprecated Use {@link CodeCopied}.
314
+ *
315
+ * The same emitter under the old binding name, so a template still binding
316
+ * (codeCopied) keeps working. Must stay AFTER CodeCopied: class fields
317
+ * initialise in order, and the other way round this captures undefined.
318
+ */
319
+ this.codeCopied = this.CodeCopied;
132
320
  /**
133
321
  * The sanitized HTML content to display
134
322
  */
135
- this.renderedContent = '';
323
+ this.RenderedContent = '';
136
324
  this.renderStartTime = 0;
137
325
  this.hasMermaid = false;
138
326
  this.hasCodeBlocks = false;
@@ -163,7 +351,7 @@ export class MarkdownComponent {
163
351
  }
164
352
  ngAfterViewInit() {
165
353
  // Initial render if data was provided
166
- if (this.data) {
354
+ if (this.Data) {
167
355
  this.postRenderProcessing();
168
356
  }
169
357
  this.setupThemeObserver();
@@ -177,42 +365,42 @@ export class MarkdownComponent {
177
365
  * Render the markdown content
178
366
  */
179
367
  render() {
180
- if (!this.data) {
181
- this.renderedContent = '';
368
+ if (!this.Data) {
369
+ this.RenderedContent = '';
182
370
  this.cdr.markForCheck();
183
371
  return;
184
372
  }
185
373
  this.renderStartTime = performance.now();
186
374
  // Build config from inputs
187
375
  const config = {
188
- enableHighlight: this.enableHighlight,
189
- enableMermaid: this.enableMermaid,
190
- enableCodeCopy: this.enableCodeCopy,
191
- enableCollapsibleHeadings: this.enableCollapsibleHeadings,
192
- collapsibleHeadingLevel: this.collapsibleHeadingLevel,
193
- collapsibleDefaultExpanded: this.collapsibleDefaultExpanded,
194
- autoExpandLevels: this.autoExpandLevels,
195
- enableAlerts: this.enableAlerts,
196
- enableSmartypants: this.enableSmartypants,
197
- enableSvgRenderer: this.enableSvgRenderer,
198
- enableHtml: this.enableHtml,
199
- enableJavaScript: this.enableJavaScript,
200
- enableHeadingIds: this.enableHeadingIds,
201
- headingIdPrefix: this.headingIdPrefix,
202
- mermaidTheme: this.mermaidTheme,
203
- sanitize: this.sanitize,
376
+ enableHighlight: this.EnableHighlight,
377
+ enableMermaid: this.EnableMermaid,
378
+ enableCodeCopy: this.EnableCodeCopy,
379
+ enableCollapsibleHeadings: this.EnableCollapsibleHeadings,
380
+ collapsibleHeadingLevel: this.CollapsibleHeadingLevel,
381
+ collapsibleDefaultExpanded: this.CollapsibleDefaultExpanded,
382
+ autoExpandLevels: this.AutoExpandLevels,
383
+ enableAlerts: this.EnableAlerts,
384
+ enableSmartypants: this.EnableSmartypants,
385
+ enableSvgRenderer: this.EnableSvgRenderer,
386
+ enableHtml: this.EnableHtml,
387
+ enableJavaScript: this.EnableJavaScript,
388
+ enableHeadingIds: this.EnableHeadingIds,
389
+ headingIdPrefix: this.HeadingIdPrefix,
390
+ mermaidTheme: this.MermaidTheme,
391
+ sanitize: this.Sanitize,
204
392
  };
205
393
  // Configure service and parse
206
394
  this.markdownService.configureMarked(config);
207
- let html = this.markdownService.parse(this.data);
395
+ let html = this.markdownService.parse(this.Data);
208
396
  // Check for mermaid and code blocks
209
397
  this.hasMermaid = html.includes('language-mermaid') || html.includes('class="mermaid"');
210
398
  this.hasCodeBlocks = html.includes('<pre>') && html.includes('<code');
211
399
  // Sanitize if enabled
212
400
  // Note: We bypass Angular's sanitizer when SVG renderer or HTML passthrough is enabled
213
401
  // because it strips SVG elements and most HTML layout tags.
214
- const bypassAngularSanitizer = this.enableSvgRenderer || this.enableHtml;
215
- if (this.sanitize && !bypassAngularSanitizer) {
402
+ const bypassAngularSanitizer = this.EnableSvgRenderer || this.EnableHtml;
403
+ if (this.Sanitize && !bypassAngularSanitizer) {
216
404
  const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, html);
217
405
  html = sanitized || '';
218
406
  }
@@ -220,7 +408,7 @@ export class MarkdownComponent {
220
408
  // MarkdownService.parse() (DOMPurify, HTML + SVG profiles) unless enableJavaScript
221
409
  // opted out. Nothing further to do here.
222
410
  // Trust the HTML for display
223
- this.renderedContent = this.sanitizer.bypassSecurityTrustHtml(html);
411
+ this.RenderedContent = this.sanitizer.bypassSecurityTrustHtml(html);
224
412
  this.cdr.markForCheck();
225
413
  // Schedule post-render processing for next tick (after DOM update)
226
414
  Promise.resolve().then(() => this.postRenderProcessing());
@@ -234,30 +422,30 @@ export class MarkdownComponent {
234
422
  if (!container)
235
423
  return;
236
424
  // Add copy buttons to code blocks
237
- if (this.enableCodeCopy && this.hasCodeBlocks) {
425
+ if (this.EnableCodeCopy && this.hasCodeBlocks) {
238
426
  this.markdownService.addCodeCopyButtons(container);
239
427
  }
240
428
  // Initialize collapsible headings
241
- if (this.enableCollapsibleHeadings) {
429
+ if (this.EnableCollapsibleHeadings) {
242
430
  this.markdownService.initializeCollapsibleHeadings(container);
243
431
  this.setupCollapsibleListeners(container);
244
432
  }
245
433
  // Render mermaid diagrams (async)
246
- if (this.enableMermaid && this.hasMermaid) {
434
+ if (this.EnableMermaid && this.hasMermaid) {
247
435
  await this.markdownService.renderMermaid(container);
248
436
  }
249
437
  // Setup heading click listeners
250
- if (this.enableHeadingIds) {
438
+ if (this.EnableHeadingIds) {
251
439
  this.setupHeadingClickListeners(container);
252
440
  }
253
441
  // Setup code copy listeners for custom event emission
254
- if (this.enableCodeCopy) {
442
+ if (this.EnableCodeCopy) {
255
443
  this.setupCodeCopyListeners(container);
256
444
  }
257
445
  // Emit rendered event
258
446
  const renderTime = performance.now() - this.renderStartTime;
259
447
  const headingIds = this.markdownService.getHeadingList();
260
- this.rendered.emit({
448
+ this.Rendered.emit({
261
449
  html: container.innerHTML,
262
450
  renderTime,
263
451
  hasMermaid: this.hasMermaid,
@@ -413,7 +601,7 @@ export class MarkdownComponent {
413
601
  const id = heading.getAttribute('id') || '';
414
602
  const text = heading.textContent || '';
415
603
  const level = parseInt(heading.tagName.charAt(1), 10);
416
- this.headingClick.emit({
604
+ this.HeadingClick.emit({
417
605
  id,
418
606
  text,
419
607
  level,
@@ -432,7 +620,7 @@ export class MarkdownComponent {
432
620
  const pre = button.closest('pre');
433
621
  const code = pre?.querySelector('code');
434
622
  if (code) {
435
- this.codeCopied.emit(code.textContent || '');
623
+ this.CodeCopied.emit(code.textContent || '');
436
624
  }
437
625
  });
438
626
  });
@@ -463,7 +651,7 @@ export class MarkdownComponent {
463
651
  * Triggers a full re-render when mermaid auto-theming is active.
464
652
  */
465
653
  onThemeAttributeChanged() {
466
- if (this.mermaidTheme === 'auto' && this.enableMermaid && this.hasMermaid && this.data) {
654
+ if (this.MermaidTheme === 'auto' && this.EnableMermaid && this.hasMermaid && this.Data) {
467
655
  this.render();
468
656
  }
469
657
  }
@@ -481,19 +669,27 @@ export class MarkdownComponent {
481
669
  /**
482
670
  * Force a re-render of the markdown content
483
671
  */
484
- refresh() {
672
+ Refresh() {
485
673
  this.render();
486
674
  }
675
+ /** @deprecated Use {@link Refresh}. */
676
+ refresh() {
677
+ return this.Refresh();
678
+ }
487
679
  /**
488
680
  * Get the current heading list (for TOC building)
489
681
  */
490
- getHeadings() {
682
+ GetHeadings() {
491
683
  return this.markdownService.getHeadingList();
492
684
  }
685
+ /** @deprecated Use {@link GetHeadings}. */
686
+ getHeadings() {
687
+ return this.GetHeadings();
688
+ }
493
689
  /**
494
690
  * Scroll to a heading by ID
495
691
  */
496
- scrollToHeading(headingId) {
692
+ ScrollToHeading(headingId) {
497
693
  const container = this.elementRef.nativeElement.querySelector('.mj-markdown-container');
498
694
  if (!container)
499
695
  return;
@@ -502,8 +698,12 @@ export class MarkdownComponent {
502
698
  heading.scrollIntoView({ behavior: 'smooth', block: 'start' });
503
699
  }
504
700
  }
701
+ /** @deprecated Use {@link ScrollToHeading}. */
702
+ scrollToHeading(headingId) {
703
+ return this.ScrollToHeading(headingId);
704
+ }
505
705
  static { this.ɵfac = function MarkdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MarkdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.DomSanitizer), i0.ɵɵdirectiveInject(i2.MarkdownService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
506
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownComponent, selectors: [["mj-markdown"]], inputs: { data: "data", enableHighlight: "enableHighlight", enableMermaid: "enableMermaid", enableCodeCopy: "enableCodeCopy", enableCollapsibleHeadings: "enableCollapsibleHeadings", collapsibleHeadingLevel: "collapsibleHeadingLevel", collapsibleDefaultExpanded: "collapsibleDefaultExpanded", autoExpandLevels: "autoExpandLevels", enableAlerts: "enableAlerts", enableSmartypants: "enableSmartypants", enableSvgRenderer: "enableSvgRenderer", enableHtml: "enableHtml", enableJavaScript: "enableJavaScript", enableHeadingIds: "enableHeadingIds", headingIdPrefix: "headingIdPrefix", enableLineNumbers: "enableLineNumbers", containerClass: "containerClass", mermaidTheme: "mermaidTheme", sanitize: "sanitize" }, outputs: { rendered: "rendered", headingClick: "headingClick", codeCopied: "codeCopied" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 3, consts: [[1, "mj-markdown-container", 3, "innerHTML"]], template: function MarkdownComponent_Template(rf, ctx) { if (rf & 1) {
706
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownComponent, selectors: [["mj-markdown"]], inputs: { Data: "Data", data: "data", EnableHighlight: "EnableHighlight", enableHighlight: "enableHighlight", EnableMermaid: "EnableMermaid", enableMermaid: "enableMermaid", EnableCodeCopy: "EnableCodeCopy", enableCodeCopy: "enableCodeCopy", EnableCollapsibleHeadings: "EnableCollapsibleHeadings", enableCollapsibleHeadings: "enableCollapsibleHeadings", CollapsibleHeadingLevel: "CollapsibleHeadingLevel", collapsibleHeadingLevel: "collapsibleHeadingLevel", CollapsibleDefaultExpanded: "CollapsibleDefaultExpanded", collapsibleDefaultExpanded: "collapsibleDefaultExpanded", AutoExpandLevels: "AutoExpandLevels", autoExpandLevels: "autoExpandLevels", EnableAlerts: "EnableAlerts", enableAlerts: "enableAlerts", EnableSmartypants: "EnableSmartypants", enableSmartypants: "enableSmartypants", EnableSvgRenderer: "EnableSvgRenderer", enableSvgRenderer: "enableSvgRenderer", EnableHtml: "EnableHtml", enableHtml: "enableHtml", EnableJavaScript: "EnableJavaScript", enableJavaScript: "enableJavaScript", EnableHeadingIds: "EnableHeadingIds", enableHeadingIds: "enableHeadingIds", HeadingIdPrefix: "HeadingIdPrefix", headingIdPrefix: "headingIdPrefix", EnableLineNumbers: "EnableLineNumbers", enableLineNumbers: "enableLineNumbers", ContainerClass: "ContainerClass", containerClass: "containerClass", MermaidTheme: "MermaidTheme", mermaidTheme: "mermaidTheme", Sanitize: "Sanitize", sanitize: "sanitize" }, outputs: { Rendered: "Rendered", rendered: "rendered", HeadingClick: "HeadingClick", headingClick: "headingClick", CodeCopied: "CodeCopied", codeCopied: "codeCopied" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 3, consts: [[1, "mj-markdown-container", 3, "innerHTML"]], template: function MarkdownComponent_Template(rf, ctx) { if (rf & 1) {
507
707
  i0.ɵɵelement(0, "div", 0);
508
708
  } if (rf & 2) {
509
709
  i0.ɵɵclassMap(ctx.containerClass);
@@ -513,48 +713,92 @@ export class MarkdownComponent {
513
713
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownComponent, [{
514
714
  type: Component,
515
715
  args: [{ selector: 'mj-markdown', standalone: false, template: ` <div class="mj-markdown-container" [class]="containerClass" [innerHTML]="renderedContent"></div> `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["/**\n * MJ Markdown Component Styles\n *\n * These styles apply to rendered markdown content.\n * Using ViewEncapsulation.None so styles penetrate into dynamically generated content.\n */\n\n/* ============================================\n Container\n ============================================ */\n.mj-markdown-container {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 15px;\n line-height: 1.6;\n color: var(--mj-text-primary);\n word-wrap: break-word;\n}\n\n/* ============================================\n Typography\n ============================================ */\n.mj-markdown-container h1,\n.mj-markdown-container h2,\n.mj-markdown-container h3,\n.mj-markdown-container h4,\n.mj-markdown-container h5,\n.mj-markdown-container h6 {\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n font-weight: 600;\n line-height: 1.25;\n color: var(--mj-text-primary);\n}\n\n.mj-markdown-container h1 { font-size: 1.75em; }\n.mj-markdown-container h2 { font-size: 1.5em; }\n.mj-markdown-container h3 { font-size: 1.25em; }\n.mj-markdown-container h4 { font-size: 1.1em; }\n.mj-markdown-container h5 { font-size: 1em; }\n.mj-markdown-container h6 { font-size: 0.9em; color: var(--mj-text-secondary); }\n\n.mj-markdown-container > h1:first-child,\n.mj-markdown-container > h2:first-child,\n.mj-markdown-container > h3:first-child {\n margin-top: 0;\n}\n\n.mj-markdown-container p {\n margin: 0 0 1em 0;\n}\n\n.mj-markdown-container > p:last-child {\n margin-bottom: 0;\n}\n\n.mj-markdown-container a {\n color: var(--mj-brand-primary);\n text-decoration: none;\n}\n\n.mj-markdown-container a:hover {\n text-decoration: underline;\n}\n\n.mj-markdown-container strong {\n font-weight: 600;\n}\n\n.mj-markdown-container em {\n font-style: italic;\n}\n\n/* ============================================\n Lists\n ============================================ */\n.mj-markdown-container ul,\n.mj-markdown-container ol {\n margin: 0 0 1em 0;\n padding-left: 2em;\n}\n\n.mj-markdown-container li {\n margin-bottom: 0.25em;\n}\n\n.mj-markdown-container li > ul,\n.mj-markdown-container li > ol {\n margin-top: 0.25em;\n margin-bottom: 0;\n}\n\n/* Task lists */\n.mj-markdown-container ul.contains-task-list {\n list-style: none;\n padding-left: 0;\n}\n\n.mj-markdown-container li.task-list-item {\n display: flex;\n align-items: flex-start;\n gap: 0.5em;\n}\n\n.mj-markdown-container li.task-list-item input[type=\"checkbox\"] {\n margin-top: 0.35em;\n}\n\n/* ============================================\n Blockquotes\n ============================================ */\n.mj-markdown-container blockquote {\n margin: 1em 0;\n padding: 0.5em 1em;\n border-left: 4px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.mj-markdown-container blockquote > p:last-child {\n margin-bottom: 0;\n}\n\n/* ============================================\n Code Blocks\n ============================================ */\n.mj-markdown-container code {\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Courier New', monospace;\n font-size: 0.9em;\n}\n\n/* Inline code */\n.mj-markdown-container :not(pre) > code {\n padding: 0.2em 0.4em;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n color: var(--mj-status-error);\n}\n\n/* Code blocks\n * design-token-exempt fallbacks: --mj-bg-code-block / --mj-text-code resolve to\n * Monaco-style dark editor colors when an app does not override them. Code\n * blocks intentionally use a fixed dark editor aesthetic (same exemption as\n * Monaco/CodeMirror), so the hex fallbacks here are deliberate. */\n.mj-markdown-container pre {\n margin: 1em 0;\n padding: 1em;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n overflow-x: auto;\n position: relative;\n}\n\n.mj-markdown-container pre code {\n background: transparent;\n padding: 0;\n color: var(--mj-text-code, #d4d4d4);\n font-size: 0.875em;\n line-height: 1.5;\n}\n\n/* ============================================\n Code Toolbar (copy button, language label)\n ============================================ */\n.mj-markdown-container .code-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n z-index: 10;\n}\n\n.mj-markdown-container .code-language-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n user-select: none;\n}\n\n.mj-markdown-container .code-copy-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.15);\n border-radius: var(--mj-radius-md);\n color: var(--mj-text-disabled);\n cursor: pointer;\n transition: all 0.2s ease;\n opacity: 0;\n}\n\n.mj-markdown-container pre:hover .code-copy-btn {\n opacity: 1;\n}\n\n.mj-markdown-container .code-copy-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n color: var(--mj-text-inverse);\n}\n\n.mj-markdown-container .code-copy-btn.copied {\n background: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-status-success);\n}\n\n.mj-markdown-container .code-copy-btn.error {\n background: color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n\n/* ============================================\n Tables\n ============================================ */\n.mj-markdown-container table {\n width: 100%;\n margin: 1em 0;\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n.mj-markdown-container th,\n.mj-markdown-container td {\n padding: 0.5em 1em;\n border: 1px solid var(--mj-border-default);\n text-align: left;\n}\n\n.mj-markdown-container th {\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n}\n\n.mj-markdown-container tr:nth-child(even) {\n background: var(--mj-bg-surface-sunken);\n}\n\n/* ============================================\n Horizontal Rule\n ============================================ */\n.mj-markdown-container hr {\n margin: 2em 0;\n border: none;\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* ============================================\n Images\n ============================================ */\n.mj-markdown-container img {\n max-width: 100%;\n height: auto;\n border-radius: 4px;\n}\n\n/* ============================================\n GitHub-style Alerts (marked-alert)\n ============================================ */\n.mj-markdown-container .markdown-alert {\n margin: 1em 0;\n padding: 1em;\n border-radius: 8px;\n border-left: 4px solid;\n}\n\n.mj-markdown-container .markdown-alert-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n margin-bottom: 0.5em;\n}\n\n.mj-markdown-container .markdown-alert > p:last-child {\n margin-bottom: 0;\n}\n\n/* Note */\n.mj-markdown-container .markdown-alert-note {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.mj-markdown-container .markdown-alert-note .markdown-alert-title {\n color: var(--mj-brand-primary);\n}\n\n/* Tip */\n.mj-markdown-container .markdown-alert-tip {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border-color: var(--mj-status-success);\n}\n\n.mj-markdown-container .markdown-alert-tip .markdown-alert-title {\n color: var(--mj-status-success);\n}\n\n/* Important */\n.mj-markdown-container .markdown-alert-important {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.mj-markdown-container .markdown-alert-important .markdown-alert-title {\n color: var(--mj-brand-primary);\n}\n\n/* Warning */\n.mj-markdown-container .markdown-alert-warning {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n}\n\n.mj-markdown-container .markdown-alert-warning .markdown-alert-title {\n color: var(--mj-status-warning);\n}\n\n/* Caution */\n.mj-markdown-container .markdown-alert-caution {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n}\n\n.mj-markdown-container .markdown-alert-caution .markdown-alert-title {\n color: var(--mj-status-error);\n}\n\n/* ============================================\n Collapsible Headings\n ============================================ */\n.mj-markdown-container .collapsible-section {\n margin: 0.75em 0;\n border-left: 2px solid transparent;\n transition: border-color 0.2s ease;\n}\n\n.mj-markdown-container .collapsible-section:hover {\n border-left-color: var(--mj-border-default);\n}\n\n/* Heading wrapper - contains toggle and heading */\n.mj-markdown-container .collapsible-heading-wrapper {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 0;\n border-radius: 4px;\n transition: background-color 0.15s ease;\n user-select: none;\n}\n\n.mj-markdown-container .collapsible-heading-wrapper:hover {\n background-color: color-mix(in srgb, var(--mj-text-primary) 3%, transparent);\n}\n\n/* The heading itself */\n.mj-markdown-container .collapsible-heading {\n margin: 0 !important;\n flex: 1;\n}\n\n/* Toggle button/icon */\n.mj-markdown-container .collapsible-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease, color 0.15s ease;\n}\n\n.mj-markdown-container .collapsible-toggle svg {\n width: 14px;\n height: 14px;\n}\n\n.mj-markdown-container .collapsible-heading-wrapper:hover .collapsible-toggle {\n color: var(--mj-text-secondary);\n}\n\n/* Expanded state - arrow points down */\n.mj-markdown-container .collapsible-section:not(.collapsed) .collapsible-toggle {\n transform: rotate(90deg);\n}\n\n/* Collapsed state - arrow points right (default SVG orientation) */\n.mj-markdown-container .collapsible-section.collapsed .collapsible-toggle {\n transform: rotate(0deg);\n}\n\n/* Content area */\n.mj-markdown-container .collapsible-content {\n padding-left: 26px;\n overflow: hidden;\n max-height: 5000px; /* Large enough for most content */\n opacity: 1;\n transition: max-height 0.3s ease-out, opacity 0.2s ease-out, padding 0.2s ease;\n}\n\n.mj-markdown-container .collapsible-section.collapsed .collapsible-content {\n max-height: 0;\n opacity: 0;\n padding-top: 0;\n padding-bottom: 0;\n visibility: hidden;\n}\n\n/* Nested sections - indent further */\n.mj-markdown-container .collapsible-section .collapsible-section {\n margin-left: 0;\n}\n\n/* Focus styles for accessibility */\n.mj-markdown-container .collapsible-heading-wrapper:focus-within {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n}\n\n.mj-markdown-container .collapsible-toggle:focus {\n outline: none;\n}\n\n/* Action buttons container - expand/collapse all */\n.mj-markdown-container .collapsible-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n margin-left: auto;\n padding-left: 12px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.mj-markdown-container .collapsible-heading-wrapper:hover .collapsible-actions {\n opacity: 1;\n}\n\n/* Individual action buttons */\n.mj-markdown-container .collapsible-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease, transform 0.1s ease;\n}\n\n.mj-markdown-container .collapsible-action-btn:hover {\n background-color: color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n color: var(--mj-text-primary);\n}\n\n.mj-markdown-container .collapsible-action-btn:active {\n transform: scale(0.92);\n}\n\n.mj-markdown-container .collapsible-action-btn svg {\n width: 14px;\n height: 14px;\n}\n\n/* Expand all button - double down chevron */\n.mj-markdown-container .collapsible-action-btn.expand-all:hover {\n color: var(--mj-status-success);\n background-color: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n}\n\n/* Collapse all button - double up chevron */\n.mj-markdown-container .collapsible-action-btn.collapse-all:hover {\n color: var(--mj-status-error);\n background-color: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n/* ============================================\n Mermaid Diagrams\n ============================================ */\n.mj-markdown-container .mermaid-diagram {\n margin: 1em 0;\n padding: 1em;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n text-align: center;\n overflow-x: auto;\n}\n\n.mj-markdown-container .mermaid-diagram svg {\n max-width: 100%;\n height: auto;\n}\n\n.mj-markdown-container .mermaid-error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n}\n\n.mj-markdown-container .mermaid-error::before {\n content: 'Diagram rendering failed';\n display: block;\n color: var(--mj-status-error);\n font-size: 12px;\n margin-bottom: 8px;\n}\n\n/* A specific reason, when we have one \u2014 e.g. the lazily-fetched diagram engine\n never arrived, which is a different problem than bad diagram source. */\n.mj-markdown-container .mermaid-error[data-mermaid-error]::before {\n content: attr(data-mermaid-error);\n}\n\n/* ============================================\n Heading Anchors\n ============================================ */\n.mj-markdown-container h1[id],\n.mj-markdown-container h2[id],\n.mj-markdown-container h3[id],\n.mj-markdown-container h4[id],\n.mj-markdown-container h5[id],\n.mj-markdown-container h6[id] {\n scroll-margin-top: 1em;\n}\n\n.mj-markdown-container h1[id]:hover,\n.mj-markdown-container h2[id]:hover,\n.mj-markdown-container h3[id]:hover,\n.mj-markdown-container h4[id]:hover,\n.mj-markdown-container h5[id]:hover,\n.mj-markdown-container h6[id]:hover {\n cursor: pointer;\n}\n\n/* Anchor link indicator on hover */\n.mj-markdown-container h1[id]::before,\n.mj-markdown-container h2[id]::before,\n.mj-markdown-container h3[id]::before,\n.mj-markdown-container h4[id]::before,\n.mj-markdown-container h5[id]::before,\n.mj-markdown-container h6[id]::before {\n content: '#';\n position: absolute;\n left: -1.5em;\n color: var(--mj-text-muted);\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.mj-markdown-container h1[id]:hover::before,\n.mj-markdown-container h2[id]:hover::before,\n.mj-markdown-container h3[id]:hover::before,\n.mj-markdown-container h4[id]:hover::before,\n.mj-markdown-container h5[id]:hover::before,\n.mj-markdown-container h6[id]:hover::before {\n opacity: 1;\n}\n\n/* ============================================\n Line Numbers (optional)\n ============================================ */\n.mj-markdown-container pre.line-numbers {\n padding-left: 3.5em;\n counter-reset: line;\n}\n\n.mj-markdown-container pre.line-numbers code {\n display: block;\n}\n\n.mj-markdown-container pre.line-numbers code .line::before {\n counter-increment: line;\n content: counter(line);\n display: inline-block;\n width: 2em;\n margin-left: -3em;\n margin-right: 1em;\n text-align: right;\n color: var(--mj-text-muted);\n user-select: none;\n}\n\n/* ============================================\n Error State\n ============================================ */\n.mj-markdown-container .markdown-error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 1em;\n border-radius: 8px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n white-space: pre-wrap;\n font-family: monospace;\n}\n\n/* Dark Mode Support \u2014 handled automatically by --mj-* semantic tokens */\n\n/* ============================================\n SVG Rendered Content\n ============================================ */\n.mj-markdown-container .svg-rendered {\n margin: 1em 0;\n padding: 1em;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n text-align: center;\n overflow: auto;\n}\n\n.mj-markdown-container .svg-rendered svg {\n max-width: 100%;\n height: auto;\n}\n\n/* Dark mode for SVG rendered content \u2014 handled automatically by --mj-* semantic tokens */\n\n/* ============================================\n Print Styles\n ============================================ */\n@media print {\n .mj-markdown-container .code-toolbar {\n display: none;\n }\n\n .mj-markdown-container .collapsible-section.collapsed .collapsible-content {\n max-height: none;\n opacity: 1;\n visibility: visible;\n }\n\n /* design-token-exempt: print always uses light background + dark text for\n paper readability, regardless of the screen theme the user is rendering from */\n .mj-markdown-container pre {\n background: #f3f4f6 !important;\n color: #1f2937 !important;\n }\n\n .mj-markdown-container pre code {\n color: #1f2937 !important;\n }\n}\n"] }]
516
- }], () => [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i2.MarkdownService }, { type: i0.ChangeDetectorRef }], { data: [{
716
+ }], () => [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i2.MarkdownService }, { type: i0.ChangeDetectorRef }], { Data: [{
717
+ type: Input
718
+ }], data: [{
719
+ type: Input
720
+ }], EnableHighlight: [{
517
721
  type: Input
518
722
  }], enableHighlight: [{
519
723
  type: Input
724
+ }], EnableMermaid: [{
725
+ type: Input
520
726
  }], enableMermaid: [{
521
727
  type: Input
728
+ }], EnableCodeCopy: [{
729
+ type: Input
522
730
  }], enableCodeCopy: [{
523
731
  type: Input
732
+ }], EnableCollapsibleHeadings: [{
733
+ type: Input
524
734
  }], enableCollapsibleHeadings: [{
525
735
  type: Input
736
+ }], CollapsibleHeadingLevel: [{
737
+ type: Input
526
738
  }], collapsibleHeadingLevel: [{
527
739
  type: Input
740
+ }], CollapsibleDefaultExpanded: [{
741
+ type: Input
528
742
  }], collapsibleDefaultExpanded: [{
529
743
  type: Input
744
+ }], AutoExpandLevels: [{
745
+ type: Input
530
746
  }], autoExpandLevels: [{
531
747
  type: Input
748
+ }], EnableAlerts: [{
749
+ type: Input
532
750
  }], enableAlerts: [{
533
751
  type: Input
752
+ }], EnableSmartypants: [{
753
+ type: Input
534
754
  }], enableSmartypants: [{
535
755
  type: Input
756
+ }], EnableSvgRenderer: [{
757
+ type: Input
536
758
  }], enableSvgRenderer: [{
537
759
  type: Input
760
+ }], EnableHtml: [{
761
+ type: Input
538
762
  }], enableHtml: [{
539
763
  type: Input
764
+ }], EnableJavaScript: [{
765
+ type: Input
540
766
  }], enableJavaScript: [{
541
767
  type: Input
768
+ }], EnableHeadingIds: [{
769
+ type: Input
542
770
  }], enableHeadingIds: [{
543
771
  type: Input
772
+ }], HeadingIdPrefix: [{
773
+ type: Input
544
774
  }], headingIdPrefix: [{
545
775
  type: Input
776
+ }], EnableLineNumbers: [{
777
+ type: Input
546
778
  }], enableLineNumbers: [{
547
779
  type: Input
780
+ }], ContainerClass: [{
781
+ type: Input
548
782
  }], containerClass: [{
549
783
  type: Input
784
+ }], MermaidTheme: [{
785
+ type: Input
550
786
  }], mermaidTheme: [{
551
787
  type: Input
788
+ }], Sanitize: [{
789
+ type: Input
552
790
  }], sanitize: [{
553
791
  type: Input
792
+ }], Rendered: [{
793
+ type: Output
554
794
  }], rendered: [{
555
795
  type: Output
796
+ }], HeadingClick: [{
797
+ type: Output
556
798
  }], headingClick: [{
557
799
  type: Output
800
+ }], CodeCopied: [{
801
+ type: Output
558
802
  }], codeCopied: [{
559
803
  type: Output
560
804
  }] }); })();