Skip to content

Commit 64d2717

Browse files
committed
Feature: optionally support line numbers in code blocks
1 parent ad5319a commit 64d2717

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

components/blocks/code.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useEffect, useRef } from "react";
22
import classNames from "classnames";
33
import Prism from "prismjs";
44
import "prismjs/plugins/line-numbers/prism-line-numbers";
5+
import "prismjs/plugins/line-numbers/prism-line-numbers.css";
56
import "prismjs/plugins/line-highlight/prism-line-highlight";
67
import "prismjs/plugins/line-highlight/prism-line-highlight.css";
78
import "prismjs/plugins/toolbar/prism-toolbar";
@@ -15,7 +16,7 @@ import styles from "./code.module.css";
1516
// Initialize the cache for imported languages.
1617
const languageImports = new Map();
1718

18-
const Code = ({ code, children, language, img, lines }) => {
19+
const Code = ({ code, children, language, img, lines, numbered }) => {
1920
// Create a ref for the code element.
2021
const codeRef = useRef(null);
2122

@@ -62,6 +63,9 @@ const Code = ({ code, children, language, img, lines }) => {
6263
let ConditionalRendering;
6364
let customCode = code !== undefined ? code : children;
6465
let languageClass = `language-${language}`;
66+
const lineNumbersClass = classNames({
67+
"line-numbers": children.props.numbered || numbered,
68+
});
6569

6670
if (children !== undefined && children.props !== undefined) {
6771
customCode = children.props.children;
@@ -72,7 +76,7 @@ const Code = ({ code, children, language, img, lines }) => {
7276
ConditionalRendering = (
7377
<section className={styles.Container}>
7478
<Image src={img} clean={true} />
75-
<pre>
79+
<pre className={lineNumbersClass}>
7680
<code ref={codeRef} className={languageClass}>
7781
{customCode}
7882
</code>
@@ -82,7 +86,7 @@ const Code = ({ code, children, language, img, lines }) => {
8286
} else if (lines) {
8387
ConditionalRendering = (
8488
<section className={classNames(styles.Container, styles.LineHighlight)}>
85-
<pre data-line={lines}>
89+
<pre className={lineNumbersClass} data-line={lines}>
8690
<code ref={codeRef} className={languageClass}>
8791
{customCode}
8892
</code>
@@ -92,7 +96,7 @@ const Code = ({ code, children, language, img, lines }) => {
9296
} else {
9397
ConditionalRendering = (
9498
<section className={styles.Container}>
95-
<pre>
99+
<pre className={lineNumbersClass}>
96100
<code ref={codeRef} className={languageClass}>
97101
{customCode}
98102
</code>

0 commit comments

Comments
 (0)