quikdown 1.2.12 → 1.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/quikdown.cjs +3 -3
  2. package/dist/quikdown.dark.css +1 -1
  3. package/dist/quikdown.esm.js +3 -3
  4. package/dist/quikdown.esm.min.js +2 -2
  5. package/dist/quikdown.esm.min.js.gz +0 -0
  6. package/dist/quikdown.esm.min.js.map +1 -1
  7. package/dist/quikdown.light.css +1 -1
  8. package/dist/quikdown.umd.js +3 -3
  9. package/dist/quikdown.umd.min.js +2 -2
  10. package/dist/quikdown.umd.min.js.gz +0 -0
  11. package/dist/quikdown.umd.min.js.map +1 -1
  12. package/dist/quikdown_ast.cjs +9 -5
  13. package/dist/quikdown_ast.esm.js +9 -5
  14. package/dist/quikdown_ast.esm.min.js +2 -2
  15. package/dist/quikdown_ast.esm.min.js.gz +0 -0
  16. package/dist/quikdown_ast.esm.min.js.map +1 -1
  17. package/dist/quikdown_ast.umd.js +9 -5
  18. package/dist/quikdown_ast.umd.min.js +2 -2
  19. package/dist/quikdown_ast.umd.min.js.gz +0 -0
  20. package/dist/quikdown_ast.umd.min.js.map +1 -1
  21. package/dist/quikdown_ast_html.cjs +10 -6
  22. package/dist/quikdown_ast_html.esm.js +10 -6
  23. package/dist/quikdown_ast_html.esm.min.js +2 -2
  24. package/dist/quikdown_ast_html.esm.min.js.gz +0 -0
  25. package/dist/quikdown_ast_html.esm.min.js.map +1 -1
  26. package/dist/quikdown_ast_html.umd.js +10 -6
  27. package/dist/quikdown_ast_html.umd.min.js +2 -2
  28. package/dist/quikdown_ast_html.umd.min.js.gz +0 -0
  29. package/dist/quikdown_ast_html.umd.min.js.map +1 -1
  30. package/dist/quikdown_bd.cjs +3 -3
  31. package/dist/quikdown_bd.esm.js +3 -3
  32. package/dist/quikdown_bd.esm.min.js +2 -2
  33. package/dist/quikdown_bd.esm.min.js.gz +0 -0
  34. package/dist/quikdown_bd.esm.min.js.map +1 -1
  35. package/dist/quikdown_bd.umd.js +3 -3
  36. package/dist/quikdown_bd.umd.min.js +2 -2
  37. package/dist/quikdown_bd.umd.min.js.gz +0 -0
  38. package/dist/quikdown_bd.umd.min.js.map +1 -1
  39. package/dist/quikdown_edit.cjs +26 -43
  40. package/dist/quikdown_edit.esm.js +26 -43
  41. package/dist/quikdown_edit.esm.min.js +3 -3
  42. package/dist/quikdown_edit.esm.min.js.gz +0 -0
  43. package/dist/quikdown_edit.esm.min.js.map +1 -1
  44. package/dist/quikdown_edit.umd.js +26 -43
  45. package/dist/quikdown_edit.umd.min.js +3 -3
  46. package/dist/quikdown_edit.umd.min.js.gz +0 -0
  47. package/dist/quikdown_edit.umd.min.js.map +1 -1
  48. package/dist/quikdown_json.cjs +10 -6
  49. package/dist/quikdown_json.esm.js +10 -6
  50. package/dist/quikdown_json.esm.min.js +2 -2
  51. package/dist/quikdown_json.esm.min.js.gz +0 -0
  52. package/dist/quikdown_json.esm.min.js.map +1 -1
  53. package/dist/quikdown_json.umd.js +10 -6
  54. package/dist/quikdown_json.umd.min.js +2 -2
  55. package/dist/quikdown_json.umd.min.js.gz +0 -0
  56. package/dist/quikdown_json.umd.min.js.map +1 -1
  57. package/dist/quikdown_yaml.cjs +10 -6
  58. package/dist/quikdown_yaml.esm.js +10 -6
  59. package/dist/quikdown_yaml.esm.min.js +2 -2
  60. package/dist/quikdown_yaml.esm.min.js.gz +0 -0
  61. package/dist/quikdown_yaml.esm.min.js.map +1 -1
  62. package/dist/quikdown_yaml.umd.js +10 -6
  63. package/dist/quikdown_yaml.umd.min.js +2 -2
  64. package/dist/quikdown_yaml.umd.min.js.gz +0 -0
  65. package/dist/quikdown_yaml.umd.min.js.map +1 -1
  66. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Quikdown Editor - Drop-in Markdown Parser
3
- * @version 1.2.12
3
+ * @version 1.2.13
4
4
  * @license BSD-2-Clause
5
5
  * @copyright DeftIO 2025
6
6
  */
@@ -222,7 +222,7 @@ function looksLikeTableRow(line) {
222
222
  // ────────────────────────────────────────────────────────────────────
223
223
 
224
224
  /** Build-time version stamp (injected by tools/updateVersion) */
225
- const quikdownVersion = '1.2.12';
225
+ const quikdownVersion = '1.2.13';
226
226
 
227
227
  /** CSS class prefix used for all generated elements */
228
228
  const CLASS_PREFIX = 'quikdown-';
@@ -584,7 +584,7 @@ function quikdown(markdown, options = {}) {
584
584
  [/\*\*(.+?)\*\*/g, 'strong', '**'],
585
585
  [/__(.+?)__/g, 'strong', '__'],
586
586
  [/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, 'em', '*'],
587
- [/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g, 'em', '_'],
587
+ [/(?<![A-Za-z0-9_])_(?![_\s])(.+?)(?<![\s_])_(?![A-Za-z0-9_])/g, 'em', '_'],
588
588
  [/~~(.+?)~~/g, 'del', '~~']
589
589
  ];
590
590
  inlinePatterns.forEach(([pattern, tag, marker]) => {
@@ -1571,6 +1571,19 @@ function getPlatform() {
1571
1571
  return 'unknown';
1572
1572
  }
1573
1573
 
1574
+ const COPY_HEADING_STYLES = {
1575
+ h1: { fontSize: '24pt', marginTop: '0.6em', marginBottom: '0.35em' },
1576
+ h2: { fontSize: '18pt', marginTop: '0.55em', marginBottom: '0.3em' },
1577
+ h3: { fontSize: '15pt', marginTop: '0.5em', marginBottom: '0.25em' },
1578
+ h4: { fontSize: '13pt', marginTop: '0.45em', marginBottom: '0.25em' },
1579
+ h5: { fontSize: '11pt', marginTop: '0.4em', marginBottom: '0.2em' },
1580
+ h6: { fontSize: '10pt', marginTop: '0.35em', marginBottom: '0.2em' }
1581
+ };
1582
+
1583
+ const COPY_HEADING_CSS = Object.entries(COPY_HEADING_STYLES)
1584
+ .map(([tag, style]) => `${tag} { font-size:${style.fontSize}; font-weight:bold; line-height:1.25; margin:${style.marginTop} 0 ${style.marginBottom}; }`)
1585
+ .join('\n ');
1586
+
1574
1587
  /**
1575
1588
  * Copy to clipboard using HTML selection fallback (for Safari)
1576
1589
  * Uses div with selection to preserve HTML formatting
@@ -1902,46 +1915,14 @@ async function getRenderedContent(previewPanel) {
1902
1915
  });
1903
1916
 
1904
1917
  // 1.2 Block elements - add inline styles
1905
- clone.querySelectorAll('h1').forEach(el => {
1906
- el.style.fontSize = '2em';
1907
- el.style.fontWeight = 'bold';
1908
- el.style.marginTop = '0.67em';
1909
- el.style.marginBottom = '0.67em';
1910
- });
1911
-
1912
- clone.querySelectorAll('h2').forEach(el => {
1913
- el.style.fontSize = '1.5em';
1914
- el.style.fontWeight = 'bold';
1915
- el.style.marginTop = '0.83em';
1916
- el.style.marginBottom = '0.83em';
1917
- });
1918
-
1919
- clone.querySelectorAll('h3').forEach(el => {
1920
- el.style.fontSize = '1.17em';
1921
- el.style.fontWeight = 'bold';
1922
- el.style.marginTop = '1em';
1923
- el.style.marginBottom = '1em';
1924
- });
1925
-
1926
- clone.querySelectorAll('h4').forEach(el => {
1927
- el.style.fontSize = '1em';
1928
- el.style.fontWeight = 'bold';
1929
- el.style.marginTop = '1.33em';
1930
- el.style.marginBottom = '1.33em';
1931
- });
1932
-
1933
- clone.querySelectorAll('h5').forEach(el => {
1934
- el.style.fontSize = '0.83em';
1935
- el.style.fontWeight = 'bold';
1936
- el.style.marginTop = '1.67em';
1937
- el.style.marginBottom = '1.67em';
1938
- });
1939
-
1940
- clone.querySelectorAll('h6').forEach(el => {
1941
- el.style.fontSize = '0.67em';
1942
- el.style.fontWeight = 'bold';
1943
- el.style.marginTop = '2.33em';
1944
- el.style.marginBottom = '2.33em';
1918
+ Object.entries(COPY_HEADING_STYLES).forEach(([tag, style]) => {
1919
+ clone.querySelectorAll(tag).forEach(el => {
1920
+ el.style.fontSize = style.fontSize;
1921
+ el.style.fontWeight = 'bold';
1922
+ el.style.lineHeight = '1.25';
1923
+ el.style.marginTop = style.marginTop;
1924
+ el.style.marginBottom = style.marginBottom;
1925
+ });
1945
1926
  });
1946
1927
 
1947
1928
  clone.querySelectorAll('blockquote').forEach(el => {
@@ -2923,6 +2904,8 @@ async function getRenderedContent(previewPanel) {
2923
2904
  <head>
2924
2905
  <meta charset="utf-8">
2925
2906
  <style>
2907
+ ${COPY_HEADING_CSS}
2908
+
2926
2909
  /* Table styling */
2927
2910
  table { border-collapse: collapse; width: 100%; margin-bottom: 1em; }
2928
2911
  th, td { border: 1px solid #ccc; padding: 8px; text-align: left; }