@stonedeck/html-plugin 0.7.3 → 0.7.6

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/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # @stonedeck/html-plugin
2
+
3
+ > Export StoneDeck presentations to HTML
4
+
5
+ ## What is this?
6
+
7
+ This package takes a StoneDeck presentation and turns it into interactive HTML slides - no internet required, works in any browser.
8
+
9
+ **You probably don't need to use this directly** - the [@stonedeck/cli](../cli) already includes this.
10
+
11
+ ## When to use this
12
+
13
+ Use this package if you're building custom tooling and need to programmatically generate HTML from StoneDeck presentations.
14
+
15
+ ## Quick Example
16
+
17
+ ```typescript
18
+ import { processStoneDeck } from '@stonedeck/core';
19
+ import { HtmlPlugin } from '@stonedeck/html-plugin';
20
+ import * as fs from 'fs';
21
+
22
+ // 1. Process your markdown
23
+ const markdown = fs.readFileSync('slides.md', 'utf-8');
24
+ const presentation = processStoneDeck(markdown, 'slides.md');
25
+
26
+ // 2. Convert to HTML
27
+ const plugin = new HtmlPlugin();
28
+ const html = plugin.export(presentation);
29
+
30
+ // 3. Save it
31
+ fs.writeFileSync('slides.html', html);
32
+ ```
33
+
34
+ ## What you get
35
+
36
+ The HTML file includes:
37
+ - All your slides, ready to present
38
+ - Navigation buttons (Previous/Next)
39
+ - Keyboard controls (arrow keys work!)
40
+ - Print-friendly styles for PDF export
41
+ - Everything embedded (no internet needed)
42
+
43
+ ## Creating PDFs
44
+
45
+ 1. Open the HTML file in Chrome/Firefox/Edge
46
+ 2. Press Ctrl+P (or Cmd+P on Mac)
47
+ 3. Choose "Save as PDF"
48
+ 4. Make sure "Background graphics" is enabled
49
+ 5. Save!
50
+
51
+ ## Need help?
52
+
53
+ Check the main [StoneDeck documentation](../../README.md)
54
+
55
+ ## Repository
56
+
57
+ [https://github.com/matheuspellisoli/StoneDeck](https://github.com/matheuspellisoli/StoneDeck)
58
+
59
+ ## License
60
+
61
+ MIT
package/dist/index.js CHANGED
@@ -437,6 +437,8 @@ class HtmlPluginStatic {
437
437
  const card = style.card;
438
438
  if (card.background)
439
439
  extraStyles += `background-color: ${card.background}; `;
440
+ if (card.color)
441
+ extraStyles += `color: ${card.color}; `;
440
442
  if (card.radius)
441
443
  extraStyles += `border-radius: ${card.radius}; `;
442
444
  if (card.border)
@@ -480,27 +482,115 @@ class HtmlPluginStatic {
480
482
  }
481
483
  static parseMarkdown(raw) {
482
484
  const lines = raw.split(/\r?\n/);
483
- return lines.map(line => {
484
- const text = line.trim();
485
- if (!text)
486
- return '<div class="markdown-line">&nbsp;</div>';
487
- let processedText = text.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
488
- processedText = processedText.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
489
- if (processedText.startsWith('### '))
490
- return `<h3>${processedText.substring(4)}</h3>`;
491
- if (processedText.startsWith('## '))
492
- return `<h2>${processedText.substring(3)}</h2>`;
493
- if (processedText.startsWith('# '))
494
- return `<h1>${processedText.substring(2)}</h1>`;
495
- if (processedText.startsWith('> '))
496
- return `<blockquote style="border-left: 3px solid #ccc; margin: 0; padding-left: 10px; font-style: italic; color: #555;">${processedText.substring(2)}</blockquote>`;
497
- const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
498
- if (listMatch) {
499
- const indent = (listMatch[1].length / 2 + 1) * 20;
500
- return `<div style="display: list-item; margin-left: ${indent}pt; list-style-type: disc;">${listMatch[3]}</div>`;
485
+ let html = '';
486
+ let inTable = false;
487
+ let tableRows = [];
488
+ let tableHeader = null;
489
+ let inCodeBlock = false;
490
+ let codeBlockContent = '';
491
+ let codeLanguage = '';
492
+ for (let i = 0; i < lines.length; i++) {
493
+ const line = lines[i].trim();
494
+ if (inCodeBlock) {
495
+ if (line.startsWith('```')) {
496
+ // End code block
497
+ html += `<pre><code class="language-${codeLanguage}">${codeBlockContent.replace(/</g, '&lt;').replace(/>/g, '&gt;')}</code></pre>`;
498
+ inCodeBlock = false;
499
+ codeBlockContent = '';
500
+ codeLanguage = '';
501
+ }
502
+ else {
503
+ // Preserve indentation for code blocks?
504
+ // The line is trimmed above. If we want to preserve indentation we should not trim `lines[i]`.
505
+ // But for now let's stick to trimmed to match the rest of the logic, or maybe use raw line for code.
506
+ const rawLine = lines[i]; // Don't trim code lines
507
+ codeBlockContent += rawLine + '\n';
508
+ }
509
+ continue;
510
+ }
511
+ if (line.startsWith('```')) {
512
+ inCodeBlock = true;
513
+ codeLanguage = line.replace('```', '').trim();
514
+ continue;
515
+ }
516
+ // Table Detection
517
+ if (line.startsWith('|')) {
518
+ // Check if this is a header row (look ahead for separator)
519
+ if (!inTable && i + 1 < lines.length && lines[i + 1].trim().startsWith('|') && lines[i + 1].includes('---')) {
520
+ inTable = true;
521
+ tableHeader = line.split('|').filter(c => c.trim().length > 0 || c === '').map(c => c.trim());
522
+ // Skip the separator line
523
+ i++;
524
+ continue;
525
+ }
526
+ else if (inTable) {
527
+ const row = line.split('|').filter(c => c.trim().length > 0 || c === '').map(c => c.trim());
528
+ tableRows.push(row);
529
+ continue;
530
+ }
531
+ }
532
+ else if (inTable) {
533
+ // Table ended
534
+ html += HtmlPluginStatic.renderTable(tableHeader, tableRows);
535
+ inTable = false;
536
+ tableHeader = null;
537
+ tableRows = [];
538
+ }
539
+ if (!line) {
540
+ html += '<div class="markdown-line">&nbsp;</div>';
541
+ continue;
542
+ }
543
+ let processedText = HtmlPluginStatic.formatInlineMarkdown(line.trim());
544
+ if (processedText.startsWith('### ')) {
545
+ html += `<h3>${processedText.substring(4)}</h3>`;
546
+ }
547
+ else if (processedText.startsWith('## ')) {
548
+ html += `<h2>${processedText.substring(3)}</h2>`;
549
+ }
550
+ else if (processedText.startsWith('# ')) {
551
+ html += `<h1>${processedText.substring(2)}</h1>`;
501
552
  }
502
- return `<div class="markdown-line">${processedText}</div>`;
503
- }).join('');
553
+ else if (processedText.startsWith('> ')) {
554
+ html += `<blockquote style="border-left: 3px solid #ccc; margin: 0; padding-left: 10px; font-style: italic; color: #555;">${processedText.substring(2)}</blockquote>`;
555
+ }
556
+ else {
557
+ const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
558
+ if (listMatch) {
559
+ const indent = (listMatch[1].length / 2 + 1) * 20;
560
+ html += `<div style="display: list-item; margin-left: ${indent}pt; list-style-type: disc;">${listMatch[3]}</div>`;
561
+ }
562
+ else {
563
+ html += `<div class="markdown-line">${processedText}</div>`;
564
+ }
565
+ }
566
+ }
567
+ // Flush remaining table if file ends with table
568
+ if (inTable) {
569
+ html += HtmlPluginStatic.renderTable(tableHeader, tableRows);
570
+ }
571
+ return html;
572
+ }
573
+ static renderTable(headers, rows) {
574
+ let h = '<table><thead><tr>';
575
+ headers.forEach(head => h += `<th>${HtmlPluginStatic.formatInlineMarkdown(head)}</th>`);
576
+ h += '</tr></thead><tbody>';
577
+ rows.forEach(row => {
578
+ h += '<tr>';
579
+ row.forEach(cell => h += `<td>${HtmlPluginStatic.formatInlineMarkdown(cell)}</td>`);
580
+ h += '</tr>';
581
+ });
582
+ h += '</tbody></table>';
583
+ return h;
584
+ }
585
+ static formatInlineMarkdown(text) {
586
+ let processed = text;
587
+ // Bold
588
+ processed = processed.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
589
+ // Italics
590
+ processed = processed.replace(/\*(.*?)\*/g, '<em>$1</em>');
591
+ // Images
592
+ processed = processed.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
593
+ return processed;
504
594
  }
505
595
  // Helper to resolve image to Base64
506
596
  static async resolveImageAsBase64(src, basePath, offline) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stonedeck/html-plugin",
3
- "version": "0.7.3",
3
+ "version": "0.7.6",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,7 +15,7 @@
15
15
  "build": "tsc -b"
16
16
  },
17
17
  "dependencies": {
18
- "@stonedeck/core": "^0.7.2"
18
+ "@stonedeck/core": "^0.7.5"
19
19
  },
20
20
  "devDependencies": {
21
21
  "typescript": "^5.0.0",
package/src/index.ts CHANGED
@@ -454,6 +454,7 @@ class HtmlPluginStatic {
454
454
  if (style.card && slot.id !== 'title' && slot.id !== 'subtitle' && !(style.full_bleed && content.type === 'image')) {
455
455
  const card = style.card;
456
456
  if (card.background) extraStyles += `background-color: ${card.background}; `;
457
+ if (card.color) extraStyles += `color: ${card.color}; `;
457
458
  if (card.radius) extraStyles += `border-radius: ${card.radius}; `;
458
459
  if (card.border) extraStyles += `border: ${card.border}; `;
459
460
  if (card.shadow) extraStyles += `box-shadow: 0 4pt 12pt rgba(0,0,0,0.15); `;
@@ -497,24 +498,118 @@ class HtmlPluginStatic {
497
498
 
498
499
  private static parseMarkdown(raw: string): string {
499
500
  const lines = raw.split(/\r?\n/);
500
- return lines.map(line => {
501
- const text = line.trim();
502
- if (!text) return '<div class="markdown-line">&nbsp;</div>';
503
- let processedText = text.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
504
- processedText = processedText.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
505
-
506
- if (processedText.startsWith('### ')) return `<h3>${processedText.substring(4)}</h3>`;
507
- if (processedText.startsWith('## ')) return `<h2>${processedText.substring(3)}</h2>`;
508
- if (processedText.startsWith('# ')) return `<h1>${processedText.substring(2)}</h1>`;
509
- if (processedText.startsWith('> ')) return `<blockquote style="border-left: 3px solid #ccc; margin: 0; padding-left: 10px; font-style: italic; color: #555;">${processedText.substring(2)}</blockquote>`;
510
-
511
- const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
512
- if (listMatch) {
513
- const indent = (listMatch[1]!.length / 2 + 1) * 20;
514
- return `<div style="display: list-item; margin-left: ${indent}pt; list-style-type: disc;">${listMatch[3]}</div>`;
501
+ let html = '';
502
+ let inTable = false;
503
+ let tableRows: string[][] = [];
504
+ let tableHeader: string[] | null = null;
505
+ let inCodeBlock = false;
506
+ let codeBlockContent = '';
507
+ let codeLanguage = '';
508
+
509
+ for (let i = 0; i < lines.length; i++) {
510
+ const line = lines[i]!.trim();
511
+
512
+ if (inCodeBlock) {
513
+ if (line.startsWith('```')) {
514
+ // End code block
515
+ html += `<pre><code class="language-${codeLanguage}">${codeBlockContent.replace(/</g, '&lt;').replace(/>/g, '&gt;')}</code></pre>`;
516
+ inCodeBlock = false;
517
+ codeBlockContent = '';
518
+ codeLanguage = '';
519
+ } else {
520
+ // Preserve indentation for code blocks?
521
+ // The line is trimmed above. If we want to preserve indentation we should not trim `lines[i]`.
522
+ // But for now let's stick to trimmed to match the rest of the logic, or maybe use raw line for code.
523
+ const rawLine = lines[i]!; // Don't trim code lines
524
+ codeBlockContent += rawLine + '\n';
525
+ }
526
+ continue;
527
+ }
528
+
529
+ if (line.startsWith('```')) {
530
+ inCodeBlock = true;
531
+ codeLanguage = line.replace('```', '').trim();
532
+ continue;
533
+ }
534
+
535
+ // Table Detection
536
+ if (line.startsWith('|')) {
537
+ // Check if this is a header row (look ahead for separator)
538
+ if (!inTable && i + 1 < lines.length && lines[i + 1]!.trim().startsWith('|') && lines[i + 1]!.includes('---')) {
539
+ inTable = true;
540
+ tableHeader = line.split('|').filter(c => c.trim().length > 0 || c === '').map(c => c.trim());
541
+ // Skip the separator line
542
+ i++;
543
+ continue;
544
+ } else if (inTable) {
545
+ const row = line.split('|').filter(c => c.trim().length > 0 || c === '').map(c => c.trim());
546
+ tableRows.push(row);
547
+ continue;
548
+ }
549
+ } else if (inTable) {
550
+ // Table ended
551
+ html += HtmlPluginStatic.renderTable(tableHeader!, tableRows);
552
+ inTable = false;
553
+ tableHeader = null;
554
+ tableRows = [];
555
+ }
556
+
557
+ if (!line) {
558
+ html += '<div class="markdown-line">&nbsp;</div>';
559
+ continue;
560
+ }
561
+
562
+ let processedText = HtmlPluginStatic.formatInlineMarkdown(line.trim());
563
+
564
+ if (processedText.startsWith('### ')) {
565
+ html += `<h3>${processedText.substring(4)}</h3>`;
566
+ } else if (processedText.startsWith('## ')) {
567
+ html += `<h2>${processedText.substring(3)}</h2>`;
568
+ } else if (processedText.startsWith('# ')) {
569
+ html += `<h1>${processedText.substring(2)}</h1>`;
570
+ } else if (processedText.startsWith('> ')) {
571
+ html += `<blockquote style="border-left: 3px solid #ccc; margin: 0; padding-left: 10px; font-style: italic; color: #555;">${processedText.substring(2)}</blockquote>`;
572
+ } else {
573
+ const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
574
+ if (listMatch) {
575
+ const indent = (listMatch[1]!.length / 2 + 1) * 20;
576
+ html += `<div style="display: list-item; margin-left: ${indent}pt; list-style-type: disc;">${listMatch[3]}</div>`;
577
+ } else {
578
+ html += `<div class="markdown-line">${processedText}</div>`;
579
+ }
515
580
  }
516
- return `<div class="markdown-line">${processedText}</div>`;
517
- }).join('');
581
+ }
582
+
583
+ // Flush remaining table if file ends with table
584
+ if (inTable) {
585
+ html += HtmlPluginStatic.renderTable(tableHeader!, tableRows);
586
+ }
587
+
588
+ return html;
589
+ }
590
+
591
+ private static renderTable(headers: string[], rows: string[][]): string {
592
+ let h = '<table><thead><tr>';
593
+ headers.forEach(head => h += `<th>${HtmlPluginStatic.formatInlineMarkdown(head)}</th>`);
594
+ h += '</tr></thead><tbody>';
595
+ rows.forEach(row => {
596
+ h += '<tr>';
597
+ row.forEach(cell => h += `<td>${HtmlPluginStatic.formatInlineMarkdown(cell)}</td>`);
598
+ h += '</tr>';
599
+ });
600
+ h += '</tbody></table>';
601
+ return h;
602
+ }
603
+
604
+ private static formatInlineMarkdown(text: string): string {
605
+ let processed = text;
606
+ // Bold
607
+ processed = processed.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
608
+ // Italics
609
+ processed = processed.replace(/\*(.*?)\*/g, '<em>$1</em>');
610
+ // Images
611
+ processed = processed.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
612
+ return processed;
518
613
  }
519
614
 
520
615
  // Helper to resolve image to Base64