Skip to content

Commit ad39271

Browse files
slack: initial highlight existing questions inside readmore code blocks (#1350)
1 parent 74512c6 commit ad39271

17 files changed

+877
-444
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* Add: Initial attempt to highlight Slack questions inside code snippets "read more" part
2+
* Add: Initial attempt to highlight Slack questions inside read more blocks

znai-reactjs/src/doc-elements/code-snippets/CodeSnippetWithCallouts.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ const CodeSnippetWithCallouts = ({
8282
references={mergedReferences}
8383
isPresentation={isPresentation}
8484
wrap={wrap}
85+
isHidden={false}
8586
endOfLineRender={() => {
8687
const calloutContent = callouts[lineIdx];
8788

znai-reactjs/src/doc-elements/code-snippets/LineOfTokens.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
white-space: pre;
2121
}
2222

23+
.znai-code-line.hidden {
24+
display: none;
25+
}
26+
2327
.znai-code-line.highlight {
2428
background: var(--znai-snippets-line-highlighted-background-color);
2529
margin-left: -16px;

znai-reactjs/src/doc-elements/code-snippets/LineOfTokens.jsx

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,34 +23,53 @@ import CodeToken from "./CodeToken";
2323

2424
import "./LineOfTokens.css";
2525

26-
const LineOfTokens = ({tokens, references, isHighlighted, isPrevHighlighted, isNextHighlighted, isPresentation, wrap, endOfLineRender}) => {
27-
const className = "znai-code-line"
28-
+ (isHighlighted ? " highlight" : "")
29-
+ (isHighlighted && !isPrevHighlighted ? " no-highlight-top-neighbour" : "")
30-
+ (isHighlighted && !isNextHighlighted ? " no-highlight-bottom-neighbour" : "")
31-
+ (wrap ? " wrap": "")
32-
33-
const trimmedOnRight = lineWithTokensTrimmedOnRight(tokens)
34-
const enhancedTokens = enhanceTokens(trimmedOnRight)
35-
36-
return (
37-
<span className={className}>
38-
{enhancedTokens.map((t, idx) => <CodeToken key={idx} token={t} isPresentation={isPresentation}/>)}
39-
{endOfLineRender && endOfLineRender()}
40-
<span>{"\n"}</span>
41-
</span>
42-
)
43-
44-
function enhanceTokens(tokens) {
45-
if (!references) {
46-
return tokens
47-
}
48-
49-
return enhanceMatchedTokensWithMeta(tokens, Object.keys(references), () => 'link', (referenceText) => {
50-
const reference = references[referenceText]
51-
return reference.pageUrl
52-
})
26+
const LineOfTokens = ({
27+
tokens,
28+
references,
29+
isHighlighted,
30+
isPrevHighlighted,
31+
isNextHighlighted,
32+
isPresentation,
33+
wrap,
34+
endOfLineRender,
35+
isHidden,
36+
}) => {
37+
const className =
38+
"znai-code-line" +
39+
(isHighlighted ? " highlight" : "") +
40+
(isHighlighted && !isPrevHighlighted ? " no-highlight-top-neighbour" : "") +
41+
(isHighlighted && !isNextHighlighted ? " no-highlight-bottom-neighbour" : "") +
42+
(wrap ? " wrap" : "") +
43+
(isHidden ? " hidden" : "");
44+
45+
const trimmedOnRight = lineWithTokensTrimmedOnRight(tokens);
46+
const enhancedTokens = enhanceTokens(trimmedOnRight);
47+
48+
return (
49+
<span className={className}>
50+
{enhancedTokens.map((t, idx) => (
51+
<CodeToken key={idx} token={t} isPresentation={isPresentation} />
52+
))}
53+
{endOfLineRender && endOfLineRender()}
54+
<span>{"\n"}</span>
55+
</span>
56+
);
57+
58+
function enhanceTokens(tokens) {
59+
if (!references) {
60+
return tokens;
5361
}
54-
}
5562

56-
export default LineOfTokens
63+
return enhanceMatchedTokensWithMeta(
64+
tokens,
65+
Object.keys(references),
66+
() => "link",
67+
(referenceText) => {
68+
const reference = references[referenceText];
69+
return reference.pageUrl;
70+
}
71+
);
72+
}
73+
};
74+
75+
export default LineOfTokens;

0 commit comments

Comments
 (0)