@dr-ishaan/rehype-perfect-code-blocks 1.1.6 → 1.2.0

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.
@@ -59,6 +59,29 @@ const DANGEROUS_HTML_PATTERNS = [
59
59
  /<object\b/i,
60
60
  /<embed\b/i,
61
61
  ];
62
+ /**
63
+ * Defense-in-depth check: returns `true` if the supplied HTML string is free
64
+ * of obviously dangerous patterns (`<script>`, `on*=` handlers, `javascript:`
65
+ * URLs, `<iframe>`, `<object>`, `<embed>`).
66
+ *
67
+ * Used by `buildCopyButton()` to gate both `copyIcon` (which becomes a hast
68
+ * subtree via `parseInlineHtml`) and `successIcon` (which is stored verbatim
69
+ * as a `data-success-icon` attribute and later innerHTML'd by the client
70
+ * copy-script). Without this check, `successIcon` would be a latent XSS sink.
71
+ *
72
+ * This is NOT a full HTML sanitizer. Callers MUST still ensure the input is
73
+ * developer-trusted. The check exists to fail-closed when dangerous patterns
74
+ * are detected, not to make untrusted input safe.
75
+ */
76
+ export function isSafeInlineHtml(html) {
77
+ if (!html)
78
+ return true;
79
+ for (const pattern of DANGEROUS_HTML_PATTERNS) {
80
+ if (pattern.test(html))
81
+ return false;
82
+ }
83
+ return true;
84
+ }
62
85
  function parseInlineHtml(html) {
63
86
  // Defense-in-depth: reject obviously dangerous patterns.
64
87
  for (const pattern of DANGEROUS_HTML_PATTERNS) {
@@ -135,7 +158,7 @@ const DEFAULT_MAGIC_COMMENTS = [
135
158
  block: { start: 'highlight-start', end: 'highlight-end' },
136
159
  },
137
160
  ];
138
- const DEFAULT_TERMINAL_LANGS = ['sh', 'bash', 'zsh', 'shell', 'console', 'powershell', 'bat', 'cmd', 'fish'];
161
+ const DEFAULT_TERMINAL_LANGS = ['sh', 'bash', 'zsh', 'shell', 'console', 'powershell', 'bat', 'cmd', 'fish', 'ansi'];
139
162
  export function rehypePerfectCodeBlocks(userOptions = {}) {
140
163
  const { shiki: userShiki, ...rest } = userOptions;
141
164
  const options = {
@@ -153,6 +176,8 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
153
176
  errorLevels: true,
154
177
  wrap: false,
155
178
  collapseAfter: null,
179
+ collapseRanges: null,
180
+ collapseStyle: 'github',
156
181
  showWhitespace: false,
157
182
  indentGuides: false,
158
183
  caption: true,
@@ -161,11 +186,17 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
161
186
  theme: { light: 'github-light', dark: 'github-dark' },
162
187
  langs: [],
163
188
  transformers: [],
189
+ transformerOrder: 'after',
164
190
  ...(userShiki ?? {}),
165
191
  },
166
192
  keepBackground: false,
167
193
  styleToClass: false,
168
194
  useHastApi: true,
195
+ disableAutoTransformers: false,
196
+ removeComments: false,
197
+ removeLineBreaks: false,
198
+ zeroIndexed: false,
199
+ lineOptions: [],
169
200
  customNotations: {},
170
201
  magicComments: DEFAULT_MAGIC_COMMENTS,
171
202
  inlineCode: false,
@@ -177,9 +208,12 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
177
208
  languageLabels: {},
178
209
  languageAliases: {},
179
210
  defaultBlockLang: '',
211
+ tabWidth: 0,
212
+ copyStripComments: true,
180
213
  accessibleScroll: true,
181
214
  announceCopy: true,
182
215
  hideCopyWithoutJs: true,
216
+ terminalSrOnlyTitle: true,
183
217
  rehypePlugins: [],
184
218
  filterMetaString: (s) => s,
185
219
  onVisitLine: () => { },
@@ -187,6 +221,9 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
187
221
  onVisitHighlightedChars: () => { },
188
222
  onVisitTitle: () => { },
189
223
  onVisitCaption: () => { },
224
+ texts: {},
225
+ logger: console,
226
+ cspNonce: '',
190
227
  preset: 'default',
191
228
  injectStyles: true,
192
229
  theme: 'auto',
@@ -195,6 +232,7 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
195
232
  };
196
233
  return async (tree) => {
197
234
  const visits = [];
235
+ const inlineCodes = [];
198
236
  visit(tree, 'element', (node) => {
199
237
  if (node.tagName !== 'pre')
200
238
  return;
@@ -205,14 +243,84 @@ export function rehypePerfectCodeBlocks(userOptions = {}) {
205
243
  return;
206
244
  visits.push(node);
207
245
  });
246
+ // Inline code highlighting: visit <code> elements whose parent is NOT <pre>.
247
+ // These are inline code spans like `code{:lang}` or `code{:.token}`.
248
+ if (options.inlineCode) {
249
+ visit(tree, 'element', (node, index, parent) => {
250
+ if (node.tagName !== 'code')
251
+ return;
252
+ if (!parent || parent.type !== 'element' || parent.tagName === 'pre')
253
+ return;
254
+ if (node.properties?.dataPcbDone)
255
+ return;
256
+ inlineCodes.push(node);
257
+ });
258
+ }
208
259
  for (const pre of visits) {
209
260
  const replacement = await transformPre(pre, options);
210
261
  if (replacement) {
211
262
  Object.assign(pre, replacement);
212
263
  }
213
264
  }
265
+ // Process inline code blocks (after the block-level transform).
266
+ for (const code of inlineCodes) {
267
+ transformInlineCode(code, options);
268
+ }
214
269
  };
215
270
  }
271
+ /**
272
+ * Transform an inline `<code>` element (not inside a `<pre>`).
273
+ *
274
+ * Supports two modes (matching rehype-pretty-code's syntax):
275
+ * - `inlineCode: 'lang'` or `true` — parse `code{:lang}` suffix and tokenize via Shiki
276
+ * - `inlineCode: 'token'` — parse `code{:.token}` suffix and color by VS Code token
277
+ *
278
+ * The suffix is stripped from the displayed text. The resulting tokenized
279
+ * spans are wrapped in a `<code class="pcb__inline">` element.
280
+ *
281
+ * NOTE: This function only modifies the inline `<code>` element's children
282
+ * and adds a class. Shiki tokenization happens at render time via the
283
+ * `engine: 'shiki'` path (runShikiOnRawBlocks handles `<pre><code>` only —
284
+ * inline code is styled by the CSS based on the `pcb__inline` class).
285
+ */
286
+ function transformInlineCode(code, opts) {
287
+ // Extract the text content.
288
+ const text = extractText(code);
289
+ if (!text)
290
+ return;
291
+ // Parse the `{:lang}` or `{:.token}` suffix.
292
+ // rehype-pretty-code uses `{:lang}` for language and `{:.token}` for token.
293
+ const langMatch = text.match(/\{:([a-zA-Z][\w.-]*)\}$/);
294
+ const tokenMatch = text.match(/\{:\.([\w-]+)\}$/);
295
+ let displayText = text;
296
+ let lang = null;
297
+ let token = null;
298
+ if (opts.inlineCode === 'token' && tokenMatch) {
299
+ token = tokenMatch[1];
300
+ displayText = text.slice(0, tokenMatch.index);
301
+ }
302
+ else if (opts.inlineCode === true || opts.inlineCode === 'lang') {
303
+ if (langMatch) {
304
+ lang = langMatch[1];
305
+ displayText = text.slice(0, langMatch.index);
306
+ }
307
+ else if (opts.inlineDefaultLang || opts.defaultInlineLang) {
308
+ lang = opts.inlineDefaultLang || opts.defaultInlineLang || null;
309
+ }
310
+ }
311
+ // Replace the text content with the stripped display text.
312
+ code.children = [{ type: 'text', value: displayText }];
313
+ // Add the `pcb__inline` class plus optional lang/token classes for CSS.
314
+ const cls = ['pcb__inline'];
315
+ if (lang)
316
+ cls.push(`pcb__inline--${lang}`);
317
+ if (token)
318
+ cls.push(`pcb__inline--token-${token}`);
319
+ code.properties = code.properties ?? {};
320
+ code.properties.className = cls;
321
+ // Mark as done so we don't re-process it.
322
+ code.properties.dataPcbDone = true;
323
+ }
216
324
  async function transformPre(pre, opts) {
217
325
  const codeChild = pre.children.find((c) => c.type === 'element' && c.tagName === 'code');
218
326
  if (!codeChild)
@@ -256,6 +364,11 @@ async function transformPre(pre, opts) {
256
364
  // buildCopyButton().
257
365
  const copyButtonEnabled = typeof opts.copyButton === 'object' ? true : !!opts.copyButton;
258
366
  const autoTitleBar = !!(title || effectiveLang || copyButtonEnabled);
367
+ // Distinguish whole-block collapse (collapseAfter threshold or `collapse` flag)
368
+ // from per-line collapse (collapseRanges from `collapse="N-M"` meta).
369
+ // Per-line collapse uses <details> sections INSIDE the <pre>, not around it.
370
+ const hasCollapseRanges = !!(meta.collapseRanges && meta.collapseRanges.length > 0);
371
+ const wholeBlockCollapse = !hasCollapseRanges && (meta.flags.collapse ?? (opts.collapseAfter != null ? shouldCollapse(pre, opts.collapseAfter) : false));
259
372
  const resolved = {
260
373
  language: effectiveLang,
261
374
  title,
@@ -268,7 +381,7 @@ async function transformPre(pre, opts) {
268
381
  decorations: meta.flags.decorations ?? opts.decorations,
269
382
  showLanguage: meta.flags.showLanguage ?? opts.showLanguage,
270
383
  copyButton: meta.flags.copyButton ?? copyButtonEnabled,
271
- collapse: meta.flags.collapse ?? (opts.collapseAfter != null ? shouldCollapse(pre, opts.collapseAfter) : false),
384
+ collapse: wholeBlockCollapse,
272
385
  };
273
386
  // Auto-detect terminal preset based on language.
274
387
  let presetClass = opts.preset;
@@ -290,6 +403,9 @@ async function transformPre(pre, opts) {
290
403
  const lineSpans = toLineSpans(codeChild, resolved, opts);
291
404
  // Filter out trailing empty line (from trailing newline in source).
292
405
  const filteredLines = filterTrailingEmpty(lineSpans);
406
+ // Apply per-line collapsible sections (meta `collapse="5-12,20-30"`).
407
+ // Wraps matching line ranges in <details><summary>N collapsed lines</summary>...</details>.
408
+ const collapsedLines = wrapCollapsedSections(filteredLines, meta, opts, resolved.lineNumbersStart);
293
409
  // Call onVisitLine / onVisitHighlightedLine hooks.
294
410
  filteredLines.forEach((line, i) => {
295
411
  const lineNumber = i + resolved.lineNumbersStart;
@@ -300,6 +416,9 @@ async function transformPre(pre, opts) {
300
416
  }
301
417
  });
302
418
  // data-line-numbers-max-digits attribute on <code> for CSS-driven gutter sizing.
419
+ // Uses filteredLines.length (not collapsedLines) because collapsed sections
420
+ // contain the same total number of logical lines — we just want the max
421
+ // gutter number's digit count.
303
422
  const maxDigits = String(filteredLines.length + resolved.lineNumbersStart - 1).length;
304
423
  const codeDataProps = {
305
424
  dataLineNumbersMaxDigits: String(maxDigits),
@@ -311,11 +430,36 @@ async function transformPre(pre, opts) {
311
430
  if (resolved.lineNumbers) {
312
431
  codeDataProps.dataLineNumbers = '';
313
432
  }
433
+ // Collect body-level `has-*` classes (e.g. `has-diff`, `has-focused`,
434
+ // `has-highlighted`) from the line spans. These were previously stripped —
435
+ // restoring them lets CSS target the whole <pre> when any line has a state.
436
+ const preLevelClasses = new Set();
437
+ for (const line of collapsedLines) {
438
+ // Skip <details> wrapper elements — only inspect actual line spans.
439
+ if (line.tagName !== 'span')
440
+ continue;
441
+ const lineClasses = line.properties?.className ?? [];
442
+ if (lineClasses.includes('pcb__line--add') || lineClasses.includes('pcb__line--del')) {
443
+ preLevelClasses.add('has-diff');
444
+ }
445
+ if (lineClasses.includes('pcb__line--focus')) {
446
+ preLevelClasses.add('has-focused');
447
+ }
448
+ if (lineClasses.includes('pcb__line--hl')) {
449
+ preLevelClasses.add('has-highlighted');
450
+ }
451
+ if (lineClasses.includes('pcb__line--error') || lineClasses.includes('pcb__line--warning') || lineClasses.includes('pcb__line--info')) {
452
+ preLevelClasses.add('has-error-level');
453
+ }
454
+ }
314
455
  // Build code <pre><code> with line spans.
315
456
  // When keepBackground is true, preserve Shiki's inline `style` (which includes
316
457
  // background-color + color from the theme) on the new <pre>.
317
- const newCode = h('code', codeDataProps, filteredLines);
458
+ const newCode = h('code', codeDataProps, collapsedLines);
318
459
  const newPreProps = {};
460
+ if (preLevelClasses.size > 0) {
461
+ newPreProps.className = [...preLevelClasses];
462
+ }
319
463
  if (opts.keepBackground && pre.properties?.style) {
320
464
  newPreProps.style = pre.properties.style;
321
465
  }
@@ -327,33 +471,56 @@ async function transformPre(pre, opts) {
327
471
  if (resolved.highlight.length > 0)
328
472
  bodyClasses.push('pcb__body--has-hl');
329
473
  // Accessibility: mark scrollable region so screen readers announce it (WCAG 4.1.2).
474
+ // Also add tabindex=0 for keyboard scrolling (WCAG 2.1.1).
330
475
  const bodyProps = { className: bodyClasses };
331
476
  if (opts.accessibleScroll) {
332
477
  bodyProps.role = 'region';
478
+ bodyProps.tabIndex = 0;
479
+ // i18n: allow user to override the aria-label prefix.
480
+ const ariaPrefix = opts.texts?.codeBlockAriaPrefix ?? 'Code block';
333
481
  // Escape the title/lang for use in an aria-label attribute (defense in depth:
334
482
  // prevents any <script> or other HTML from leaking into the attribute).
335
483
  const safeLabel = title
336
- ? `Code block: ${title.replace(/[<>"'&]/g, (c) => ({ '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;', '&': '&amp;' }[c] ?? c))}`
484
+ ? `${ariaPrefix}: ${title.replace(/[<>"'&]/g, (c) => ({ '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;', '&': '&amp;' }[c] ?? c))}`
337
485
  : effectiveLang
338
- ? `Code block: ${effectiveLang}`
339
- : 'Code block';
486
+ ? `${ariaPrefix}: ${effectiveLang}`
487
+ : ariaPrefix;
340
488
  bodyProps.ariaLabel = safeLabel;
341
489
  }
342
490
  const body = h('div', bodyProps, [newPre]);
491
+ // i18n: screen-reader-only title for terminal preset (improves context).
492
+ const terminalSrText = (presetClass === 'terminal' && !title && opts.terminalSrOnlyTitle !== false)
493
+ ? (opts.texts?.terminalSrOnlyTitle ?? 'Terminal window')
494
+ : null;
343
495
  // Header bar.
496
+ // Use <figcaption> when there's no separate caption (more semantic).
497
+ // When both title-bar and caption are present, use <div> for bar and
498
+ // <figcaption> for the caption (matches rehype-pretty-code).
344
499
  let bar = null;
345
500
  if (resolved.titleBar) {
346
501
  const barChildren = [];
347
502
  if (resolved.decorations)
348
503
  barChildren.push(dotsElement());
504
+ if (terminalSrText) {
505
+ barChildren.push(h('span', { className: ['pcb__sr-only'] }, [hText(terminalSrText)]));
506
+ }
349
507
  barChildren.push(h('div', { className: ['pcb__title'] }, title ? [hText(title)] : []));
350
508
  if (resolved.showLanguage && resolved.language) {
351
509
  barChildren.push(h('div', { className: ['pcb__lang'] }, [hText(languageLabel ?? resolved.language)]));
352
510
  }
353
511
  if (resolved.copyButton) {
354
- barChildren.push(buildCopyButton(opts));
512
+ const btn = buildCopyButton(opts);
513
+ // For terminal preset + copyStripComments, mark the button so the
514
+ // client script knows to strip # comments from the copied text.
515
+ if (presetClass === 'terminal' && opts.copyStripComments !== false) {
516
+ btn.properties.dataStripComments = '';
517
+ }
518
+ barChildren.push(btn);
355
519
  }
356
- bar = h('div', { className: ['pcb__bar'] }, barChildren);
520
+ // Use figcaption for the bar when there's no separate caption below
521
+ // this gives the figure an accessible name from the title.
522
+ const barTag = (!opts.caption || !meta.caption) && title ? 'figcaption' : 'div';
523
+ bar = h(barTag, { className: ['pcb__bar'] }, barChildren);
357
524
  if (title)
358
525
  opts.onVisitTitle(bar);
359
526
  }
@@ -374,6 +541,9 @@ async function transformPre(pre, opts) {
374
541
  const summaryChildren = [];
375
542
  if (resolved.decorations)
376
543
  summaryChildren.push(dotsElement());
544
+ if (terminalSrText) {
545
+ summaryChildren.push(h('span', { className: ['pcb__sr-only'] }, [hText(terminalSrText)]));
546
+ }
377
547
  summaryChildren.push(h('span', { className: ['pcb__title'] }, [hText(title ?? 'code')]));
378
548
  if (resolved.showLanguage && resolved.language) {
379
549
  summaryChildren.push(h('div', { className: ['pcb__lang'] }, [hText(languageLabel ?? resolved.language)]));
@@ -395,8 +565,13 @@ async function transformPre(pre, opts) {
395
565
  }
396
566
  /** Build the copy button based on options (legacy boolean or new object form). */
397
567
  function buildCopyButton(opts) {
398
- let label = 'copy';
399
- let doneLabel = 'copied!';
568
+ // i18n: allow user to override default UI strings via `texts` option.
569
+ const texts = opts.texts ?? {};
570
+ const defaultLabel = texts.copyLabel ?? 'copy';
571
+ const defaultDoneLabel = texts.doneLabel ?? 'copied!';
572
+ const defaultAriaLabel = texts.copyAriaLabel ?? 'Copy code';
573
+ let label = defaultLabel;
574
+ let doneLabel = defaultDoneLabel;
400
575
  let copyIcon;
401
576
  let successIcon;
402
577
  let feedbackDuration;
@@ -406,17 +581,26 @@ function buildCopyButton(opts) {
406
581
  label = opts.copyButton.label ?? null;
407
582
  }
408
583
  if ('doneLabel' in opts.copyButton) {
409
- doneLabel = opts.copyButton.doneLabel ?? 'copied!';
584
+ doneLabel = opts.copyButton.doneLabel ?? defaultDoneLabel;
410
585
  }
411
586
  copyIcon = opts.copyButton.copyIcon;
412
587
  successIcon = opts.copyButton.successIcon;
413
588
  feedbackDuration = opts.copyButton.feedbackDuration;
414
589
  }
415
- else {
416
- // Legacy: use copyButtonLabel / copyButtonDoneLabel.
417
- label = opts.copyButtonLabel;
418
- doneLabel = opts.copyButtonDoneLabel;
590
+ else if (opts.copyButton === true) {
591
+ // Legacy boolean `copyButton: true`.
592
+ // If user explicitly set copyButtonLabel/copyButtonDoneLabel (deprecated),
593
+ // honor them. Otherwise use the i18n defaults from `texts`.
594
+ // We detect "explicitly set" by checking against the defaults: 'copy' and 'copied!'.
595
+ // (This is a bit of a hack but maintains backward compat.)
596
+ if (opts.copyButtonLabel !== 'copy') {
597
+ label = opts.copyButtonLabel;
598
+ }
599
+ if (opts.copyButtonDoneLabel !== 'copied!') {
600
+ doneLabel = opts.copyButtonDoneLabel;
601
+ }
419
602
  }
603
+ // Note: when copyButton=false, buildCopyButton is never called.
420
604
  const btnChildren = [copyIconElement(copyIcon)];
421
605
  if (label) {
422
606
  btnChildren.push(h('span', { className: ['pcb__copy-label'] }, [hText(label)]));
@@ -424,13 +608,20 @@ function buildCopyButton(opts) {
424
608
  const btnProps = {
425
609
  className: ['pcb__copy'],
426
610
  type: 'button',
427
- ariaLabel: 'Copy code',
611
+ ariaLabel: defaultAriaLabel,
428
612
  dataDoneLabel: doneLabel,
429
613
  };
430
- if (successIcon)
614
+ // SECURITY: successIcon is stored verbatim as a data-* attribute and later
615
+ // innerHTML'd by the client copy-script, so it MUST pass the same
616
+ // defense-in-depth check as copyIcon. Reject dangerous patterns (issue #2).
617
+ if (successIcon && isSafeInlineHtml(successIcon)) {
431
618
  btnProps.dataSuccessIcon = successIcon;
432
- if (feedbackDuration != null)
433
- btnProps.dataFeedbackDuration = String(feedbackDuration);
619
+ }
620
+ // Always emit data-feedback-duration so the rendered HTML matches the
621
+ // documented default of 1600ms (issue #8). Previously the attribute was
622
+ // only emitted when explicitly set, causing the rendered HTML to differ
623
+ // from the docs even though the runtime behavior was correct.
624
+ btnProps.dataFeedbackDuration = String(feedbackDuration ?? 1600);
434
625
  return h('button', btnProps, btnChildren);
435
626
  }
436
627
  /** Apply Docusaurus-style magic comments by transforming them into Shiki notation comments. */
@@ -704,6 +895,59 @@ function filterTrailingEmpty(lines) {
704
895
  const hasText = extractText(codeChild).length > 0;
705
896
  return hasText ? lines : lines.slice(0, -1);
706
897
  }
898
+ /**
899
+ * Wrap per-line collapsible sections in <details><summary>…</summary>…</details>.
900
+ *
901
+ * Reads `meta.collapseRanges` (parsed from `collapse="5-12,20-30"` meta) and
902
+ * wraps matching line ranges. Lines are 1-indexed (matching the lineNumbersStart
903
+ * offset passed in).
904
+ *
905
+ * The summary element shows "N collapsed lines" (or the i18n variant).
906
+ * The details element gets class `pcb__collapse` plus a style class based on
907
+ * `opts.collapseStyle` (e.g. `pcb__collapse--github`).
908
+ *
909
+ * Lines outside any range are passed through unchanged.
910
+ */
911
+ function wrapCollapsedSections(lines, meta, opts, lineNumbersStart) {
912
+ if (!meta.collapseRanges || meta.collapseRanges.length === 0) {
913
+ return lines;
914
+ }
915
+ // Build a map of lineNumber → index in `lines`.
916
+ // Line numbers are 1-indexed starting at `lineNumbersStart`.
917
+ // Index in `lines` is 0-indexed, so line N corresponds to lines[N - lineNumbersStart].
918
+ const result = [];
919
+ let i = 0;
920
+ while (i < lines.length) {
921
+ const lineNumber = i + lineNumbersStart;
922
+ // Find a collapse range that starts at this line.
923
+ const range = meta.collapseRanges.find((r) => r.from === lineNumber);
924
+ if (range) {
925
+ const rangeSize = range.to - range.from + 1;
926
+ const sectionLines = lines.slice(i, i + rangeSize);
927
+ // i18n: customize the summary label.
928
+ const labelFn = opts.texts?.collapsedLinesLabel;
929
+ const summaryText = labelFn
930
+ ? labelFn(rangeSize)
931
+ : `${rangeSize} collapsed line${rangeSize === 1 ? '' : 's'}`;
932
+ const summary = h('summary', { className: ['pcb__collapse-summary'] }, [hText(summaryText)]);
933
+ const detailsClasses = ['pcb__collapse'];
934
+ if (opts.collapseStyle && opts.collapseStyle !== 'github') {
935
+ detailsClasses.push(`pcb__collapse--${opts.collapseStyle}`);
936
+ }
937
+ else {
938
+ detailsClasses.push('pcb__collapse--github');
939
+ }
940
+ const details = h('details', { className: detailsClasses }, [summary, ...sectionLines]);
941
+ result.push(details);
942
+ i += rangeSize;
943
+ }
944
+ else {
945
+ result.push(lines[i]);
946
+ i++;
947
+ }
948
+ }
949
+ return result;
950
+ }
707
951
  /** Walk line children and remap "highlighted-word" → "pcb__word" class. */
708
952
  function mapWordHighlights(children) {
709
953
  return children.map((child) => {
@@ -741,12 +985,16 @@ function splitCodeIntoLines(code) {
741
985
  });
742
986
  }
743
987
  // Case 2: Plain tokenized code — split on newlines in Text nodes.
988
+ //
989
+ // We split on `\n` in Text nodes; empty lines between two non-empty lines
990
+ // must be preserved (regression: previously dropped by a `sawAnyContent`
991
+ // guard that was meant to skip a *trailing* empty line but also skipped
992
+ // legitimate inter-content empty lines).
993
+ // The trailing-empty-line case is handled separately by `filterTrailingEmpty()`
994
+ // at the end of `transformPre()`, so we don't need to special-case it here.
744
995
  const lines = [];
745
996
  let current = [];
746
- let sawAnyContent = false;
747
997
  const flush = () => {
748
- if (current.length === 0 && sawAnyContent && lines.length > 0)
749
- return;
750
998
  lines.push({
751
999
  type: 'element',
752
1000
  tagName: 'span',
@@ -763,17 +1011,16 @@ function splitCodeIntoLines(code) {
763
1011
  flush();
764
1012
  if (part) {
765
1013
  current.push({ type: 'text', value: part });
766
- sawAnyContent = true;
767
1014
  }
768
1015
  });
769
1016
  }
770
1017
  else {
771
1018
  current.push(child);
772
- sawAnyContent = true;
773
1019
  }
774
1020
  }
775
- if (current.length > 0)
776
- flush();
1021
+ // Always flush the final pending line — `filterTrailingEmpty()` will drop
1022
+ // it if it ends up empty (i.e. the source had a trailing `\n`).
1023
+ flush();
777
1024
  return lines;
778
1025
  }
779
1026
  function hasClass(el, name) {
@@ -1 +1 @@
1
- {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"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"}