Skip to content

Commit bcbbd1b

Browse files
authored
Merge pull request #233 from code-hike/fix-longest-line-ref
Set `longestLineRef` once
2 parents f3fa44f + 82f2055 commit bcbbd1b

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

packages/mdx/src/smooth-code/use-dimensions.tsx

+27-24
Original file line numberDiff line numberDiff line change
@@ -56,40 +56,43 @@ function useDimensions(
5656
code.next,
5757
focus.next
5858
)
59+
5960
const lines = (code.prev || code.next!)
6061
.trimEnd()
6162
.split(newlineRe)
6263

6364
const lineCount = lines.length
6465

66+
// avod setting the ref more than once https://github.com/code-hike/codehike/issues/232
67+
let prevLineRefSet = false
6568
const element = (
6669
<code className="ch-code-scroll-parent">
6770
<br />
68-
{lines.map((line, i) => (
69-
<div
70-
ref={
71-
line === prevLongestLine
72-
? prevLineRef
73-
: undefined
74-
}
75-
key={i}
76-
>
77-
{lineNumbers ? (
78-
<span className="ch-code-line-number">
79-
_{lineCount}
80-
</span>
81-
) : undefined}
82-
<div
83-
style={{
84-
display: "inline-block",
85-
// leftPad
86-
marginLeft: 16,
87-
}}
88-
>
89-
<span>{line}</span>
71+
{lines.map((line, i) => {
72+
const ref =
73+
!prevLineRefSet && line === prevLongestLine
74+
? prevLineRef
75+
: undefined
76+
prevLineRefSet = prevLineRefSet || ref != null
77+
return (
78+
<div ref={ref} key={i}>
79+
{lineNumbers ? (
80+
<span className="ch-code-line-number">
81+
_{lineCount}
82+
</span>
83+
) : undefined}
84+
<div
85+
style={{
86+
display: "inline-block",
87+
// leftPad
88+
marginLeft: 16,
89+
}}
90+
>
91+
<span>{line}</span>
92+
</div>
9093
</div>
91-
</div>
92-
))}
94+
)
95+
})}
9396
<br />
9497
</code>
9598
)

0 commit comments

Comments
 (0)