@stonedeck/html-plugin 0.7.2 → 0.7.5

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.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { StoneDeckIR, ExportPlugin } from '@stonedeck/core';
2
2
  export interface HtmlPluginOptions {
3
3
  offline?: boolean;
4
+ liveReloadPort?: number;
4
5
  }
5
6
  export declare class HtmlPlugin implements ExportPlugin {
6
7
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAA4C,YAAY,EAAoC,MAAM,iBAAiB,CAAC;AAExI,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,UAAW,YAAW,YAAY;IAC3C,IAAI,SAAiB;IACrB,OAAO,SAAW;IAEZ,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAA4C,YAAY,EAAoC,MAAM,iBAAiB,CAAC;AAExI,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,UAAW,YAAW,YAAY;IAC3C,IAAI,SAAiB;IACrB,OAAO,SAAW;IAEZ,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlG"}
package/dist/index.js CHANGED
@@ -370,6 +370,22 @@ class HtmlPluginStatic {
370
370
  if (e.key === 'Escape' && body.classList.contains('presenting')) togglePresent();
371
371
  });
372
372
  </script>
373
+ ${options?.liveReloadPort ? `
374
+ <script>
375
+ const observerPort = ${options.liveReloadPort};
376
+ console.log("📡 Live Reload enabled on port " + observerPort);
377
+ const eventSource = new EventSource("http://localhost:" + observerPort + "/live-reload");
378
+ eventSource.onmessage = (event) => {
379
+ if (event.data === "reload") {
380
+ console.log("🔄 Reloading presentation...");
381
+ window.location.reload();
382
+ }
383
+ };
384
+ eventSource.onerror = () => {
385
+ console.warn("⚠️ Live Reload connection lost. Trying to reconnect...");
386
+ };
387
+ </script>
388
+ ` : ''}
373
389
  </body>
374
390
  </html>
375
391
  `;
@@ -421,6 +437,8 @@ class HtmlPluginStatic {
421
437
  const card = style.card;
422
438
  if (card.background)
423
439
  extraStyles += `background-color: ${card.background}; `;
440
+ if (card.color)
441
+ extraStyles += `color: ${card.color}; `;
424
442
  if (card.radius)
425
443
  extraStyles += `border-radius: ${card.radius}; `;
426
444
  if (card.border)
@@ -464,27 +482,115 @@ class HtmlPluginStatic {
464
482
  }
465
483
  static parseMarkdown(raw) {
466
484
  const lines = raw.split(/\r?\n/);
467
- return lines.map(line => {
468
- const text = line.trim();
469
- if (!text)
470
- return '<div class="markdown-line">&nbsp;</div>';
471
- let processedText = text.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
472
- processedText = processedText.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
473
- if (processedText.startsWith('### '))
474
- return `<h3>${processedText.substring(4)}</h3>`;
475
- if (processedText.startsWith('## '))
476
- return `<h2>${processedText.substring(3)}</h2>`;
477
- if (processedText.startsWith('# '))
478
- return `<h1>${processedText.substring(2)}</h1>`;
479
- if (processedText.startsWith('> '))
480
- return `<blockquote style="border-left: 3px solid #ccc; margin: 0; padding-left: 10px; font-style: italic; color: #555;">${processedText.substring(2)}</blockquote>`;
481
- const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
482
- if (listMatch) {
483
- const indent = (listMatch[1].length / 2 + 1) * 20;
484
- 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>`;
485
546
  }
486
- return `<div class="markdown-line">${processedText}</div>`;
487
- }).join('');
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>`;
552
+ }
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;
488
594
  }
489
595
  // Helper to resolve image to Base64
490
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":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAA8C,SAAS,EAAkD,MAAM,iBAAiB,CAAC;AAOxI,MAAM,OAAO,UAAU;IAAvB;QACI,SAAI,GAAG,aAAa,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;IAKtB,CAAC;IAHG,KAAK,CAAC,QAAQ,CAAC,EAAe,EAAE,UAAkB,EAAE,OAA2B;QAC3E,OAAO,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACJ;AAED,MAAM,gBAAgB;IAClB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAe,EAAE,UAAkB,EAAE,OAA2B;QAClF,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,0BAA0B;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3C,qDAAqD;QACrD,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAY,EAAE,KAAa,EAAE,EAAE;YACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1F,MAAM,UAAU,GAAG,eAAe,OAAO,YAAY,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,kBAAkB,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC;YAEhJ,IAAI,YAAY,GAAG,EAAE,CAAC;YAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,YAAY,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnE,OAAO,GAAG,EAAE,CAAC;gBACjB,CAAC;YACL,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAoB,EAAE,OAAe,EAAE,EAAE;oBACjF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,OAAO,EAAE,CAAC;wBACV,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC3F,CAAC;oBACD,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACrD,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO;4CACyB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,KAAK;mDAC1C,KAAK,YAAY,UAAU;0BACpD,YAAY;;;aAGzB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhD,MAAM,IAAI,GAAG;;;;;;aAMR,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwN7C,eAAe;;;;;;;qCAOQ,EAAE,CAAC,MAAM,CAAC,MAAM;;;;;;8BAMvB,EAAE,CAAC,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsFxC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;;+BAED,OAAO,CAAC,cAAc;;;;;;;;;;;;;KAahD,CAAC,CAAC,CAAC,EAAE;;;CAGT,CAAC;QACM,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAA4B,EAAE,QAAgB,EAAE,OAAgB;QAClG,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC;QACtD,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,8BAA8B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACjE,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACvD,OAAO,QAAQ,MAAM,sBAAsB,GAAG,YAAY,CAAC;QAC/D,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,KAAa,EAAE,KAAiB;QAC/D,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,UAAU,IAAI,MAAM,CAAC;QACxD,OAAO;kGACmF,QAAQ,mBAAmB,KAAK;kBAChH,KAAK;;SAEd,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAoB,EAAE,IAAgB,EAAE,KAAiB,EAAE,EAAe,EAAE,OAAe,EAAE,SAAiB,EAAE,OAAgB;QAC5J,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;QAC7B,MAAM,WAAW,GAAG,GAAG,GAAG,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,WAAW,GAAG,KAAK,CAAC;QAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;QAEjC,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,CAAC,CAAC;YACV,UAAU,GAAG,GAAG,CAAC,CAAC,qBAAqB;YACvC,uDAAuD;YACvD,QAAQ,GAAG,8BAA8B,IAAI,CAAC,CAAC,KAAK,CAAC;QACzD,CAAC;QAED,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,IAAI,MAAM,CAAC;QAClG,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,IAAI,KAAK,CAAC;QAC7F,MAAM,SAAS,GAA2B,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACtG,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;QAEzD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACjH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU;gBAAE,WAAW,IAAI,qBAAqB,IAAI,CAAC,UAAU,IAAI,CAAC;YAC7E,IAAI,IAAI,CAAC,KAAK;gBAAE,WAAW,IAAI,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC;YACxD,IAAI,IAAI,CAAC,MAAM;gBAAE,WAAW,IAAI,kBAAkB,IAAI,CAAC,MAAM,IAAI,CAAC;YAClE,IAAI,IAAI,CAAC,MAAM;gBAAE,WAAW,IAAI,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC;YAC3D,IAAI,IAAI,CAAC,MAAM;gBAAE,WAAW,IAAI,2CAA2C,CAAC;YAC5E,WAAW,IAAI,iBAAiB,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACvB,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE;gBACnD,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;gBAC9E,OAAO,OAAO,aAAa,OAAO,CAAC;YACvC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAgB,EAAE,EAAE,CAC1D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CACzH,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElF,IAAI,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC;gBAClF,MAAM,GAAG,OAAO,CAAC;YACrB,CAAC;YACD,SAAS,GAAG,aAAa,MAAM,UAAU,OAAO,CAAC,GAAG,IAAI,EAAE,mDAAmD,MAAM,qBAAqB,CAAC;QAC7I,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACnG,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE3D,OAAO;6CAC8B,IAAI,CAAC,CAAC,YAAY,KAAK,cAAc,QAAQ,aAAa,UAAU,kBAAkB,aAAa,oBAAoB,UAAU,iBAAiB,MAAM,sBAAsB,cAAc,KAAK,WAAW;kBACvO,SAAS;;SAElB,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,GAAW;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAS,GAAe,EAAE,CAAC;QAC/B,IAAI,WAAW,GAAoB,IAAI,CAAC;QACxC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,iBAAiB;oBACjB,IAAI,IAAI,8BAA8B,YAAY,KAAK,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC;oBACnI,WAAW,GAAG,KAAK,CAAC;oBACpB,gBAAgB,GAAG,EAAE,CAAC;oBACtB,YAAY,GAAG,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,wCAAwC;oBACxC,+FAA+F;oBAC/F,qGAAqG;oBACrG,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,wBAAwB;oBACnD,gBAAgB,IAAI,OAAO,GAAG,IAAI,CAAC;gBACvC,CAAC;gBACD,SAAS;YACb,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;gBACnB,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9C,SAAS;YACb,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,2DAA2D;gBAC3D,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5G,OAAO,GAAG,IAAI,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9F,0BAA0B;oBAC1B,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACb,CAAC;qBAAM,IAAI,OAAO,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5F,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,SAAS;gBACb,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACjB,cAAc;gBACd,IAAI,IAAI,gBAAgB,CAAC,WAAW,CAAC,WAAY,EAAE,SAAS,CAAC,CAAC;gBAC9D,OAAO,GAAG,KAAK,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS,GAAG,EAAE,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,IAAI,yCAAyC,CAAC;gBAClD,SAAS;YACb,CAAC;YAED,IAAI,aAAa,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEvE,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,IAAI,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,CAAC;iBAAM,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,CAAC;iBAAM,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,CAAC;iBAAM,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,IAAI,oHAAoH,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;YAC1K,CAAC;iBAAM,CAAC;gBACJ,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC/D,IAAI,SAAS,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnD,IAAI,IAAI,gDAAgD,MAAM,+BAA+B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACtH,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,8BAA8B,aAAa,QAAQ,CAAC;gBAChE,CAAC;YACL,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,IAAI,gBAAgB,CAAC,WAAW,CAAC,WAAY,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,OAAiB,EAAE,IAAgB;QAC1D,IAAI,CAAC,GAAG,oBAAoB,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxF,CAAC,IAAI,sBAAsB,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,IAAI,MAAM,CAAC;YACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpF,CAAC,IAAI,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,CAAC,IAAI,kBAAkB,CAAC;QACxB,OAAO,CAAC,CAAC;IACb,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAY;QAC5C,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,OAAO;QACP,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QACvE,UAAU;QACV,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC3D,SAAS;QACT,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oCAAoC;IAC5B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAW,EAAE,QAAgB,EAAE,OAAgB;QACrF,IAAI,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC;gBAEzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBACnF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC;gBAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO,QAAQ,QAAQ,WAAW,MAAM,EAAE,CAAC;YAC/C,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACvJ,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO,QAAQ,QAAQ,WAAW,MAAM,EAAE,CAAC;YAC/C,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC;QACf,CAAC;IACL,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stonedeck/html-plugin",
3
- "version": "0.7.2",
3
+ "version": "0.7.5",
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
@@ -5,6 +5,7 @@ import { StoneDeckIR, SlotContent, TableCell, Slide, getLayout, ExportPlugin, La
5
5
 
6
6
  export interface HtmlPluginOptions {
7
7
  offline?: boolean;
8
+ liveReloadPort?: number;
8
9
  }
9
10
 
10
11
  export class HtmlPlugin implements ExportPlugin {
@@ -383,6 +384,22 @@ class HtmlPluginStatic {
383
384
  if (e.key === 'Escape' && body.classList.contains('presenting')) togglePresent();
384
385
  });
385
386
  </script>
387
+ ${options?.liveReloadPort ? `
388
+ <script>
389
+ const observerPort = ${options.liveReloadPort};
390
+ console.log("📡 Live Reload enabled on port " + observerPort);
391
+ const eventSource = new EventSource("http://localhost:" + observerPort + "/live-reload");
392
+ eventSource.onmessage = (event) => {
393
+ if (event.data === "reload") {
394
+ console.log("🔄 Reloading presentation...");
395
+ window.location.reload();
396
+ }
397
+ };
398
+ eventSource.onerror = () => {
399
+ console.warn("⚠️ Live Reload connection lost. Trying to reconnect...");
400
+ };
401
+ </script>
402
+ ` : ''}
386
403
  </body>
387
404
  </html>
388
405
  `;
@@ -437,6 +454,7 @@ class HtmlPluginStatic {
437
454
  if (style.card && slot.id !== 'title' && slot.id !== 'subtitle' && !(style.full_bleed && content.type === 'image')) {
438
455
  const card = style.card;
439
456
  if (card.background) extraStyles += `background-color: ${card.background}; `;
457
+ if (card.color) extraStyles += `color: ${card.color}; `;
440
458
  if (card.radius) extraStyles += `border-radius: ${card.radius}; `;
441
459
  if (card.border) extraStyles += `border: ${card.border}; `;
442
460
  if (card.shadow) extraStyles += `box-shadow: 0 4pt 12pt rgba(0,0,0,0.15); `;
@@ -480,24 +498,118 @@ class HtmlPluginStatic {
480
498
 
481
499
  private static parseMarkdown(raw: string): string {
482
500
  const lines = raw.split(/\r?\n/);
483
- return lines.map(line => {
484
- const text = line.trim();
485
- if (!text) return '<div class="markdown-line">&nbsp;</div>';
486
- let processedText = text.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
487
- processedText = processedText.replace(/!\[(.*?)\]\((.*?)\)/g, '<img src="$2" alt="$1">');
488
-
489
- if (processedText.startsWith('### ')) return `<h3>${processedText.substring(4)}</h3>`;
490
- if (processedText.startsWith('## ')) return `<h2>${processedText.substring(3)}</h2>`;
491
- if (processedText.startsWith('# ')) return `<h1>${processedText.substring(2)}</h1>`;
492
- 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>`;
493
-
494
- const listMatch = processedText.match(/^(\s*)([-*+])\s+(.*)$/);
495
- if (listMatch) {
496
- const indent = (listMatch[1]!.length / 2 + 1) * 20;
497
- 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;
498
533
  }
499
- return `<div class="markdown-line">${processedText}</div>`;
500
- }).join('');
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
+ }
580
+ }
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;
501
613
  }
502
614
 
503
615
  // Helper to resolve image to Base64