File tree Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 1
1
import React from "react"
2
2
import { CodeAnnotation } from "@code-hike/smooth-code"
3
+ import {
4
+ getColor ,
5
+ transparent ,
6
+ ColorName ,
7
+ } from "@code-hike/utils"
3
8
4
9
export function Annotation ( ) {
5
10
return "error: code hike remark plugin not running or annotation isn't at the right place"
@@ -13,6 +18,64 @@ export const annotationsMap: Record<
13
18
bg : Background ,
14
19
label : Label ,
15
20
link : CodeLink ,
21
+ mark : Mark ,
22
+ }
23
+
24
+ function Mark ( {
25
+ children,
26
+ data,
27
+ theme,
28
+ } : {
29
+ data : any
30
+ children : React . ReactNode
31
+ theme : any
32
+ } ) {
33
+ console . log ( children )
34
+ const bg =
35
+ typeof data === "string"
36
+ ? data
37
+ : tryGuessColor ( children ) ||
38
+ transparent (
39
+ getColor ( theme , ColorName . CodeForeground ) ,
40
+ 0.2
41
+ )
42
+ return (
43
+ < span
44
+ className = "ch-code-mark-annotation"
45
+ style = { {
46
+ background : bg ,
47
+ borderRadius : "0.25rem" ,
48
+ padding : "0.2rem 0.15rem 0.1rem" ,
49
+ margin : "0 -0.15rem" ,
50
+ } }
51
+ >
52
+ { children }
53
+ </ span >
54
+ )
55
+ }
56
+
57
+ function tryGuessColor (
58
+ children : React . ReactNode
59
+ ) : string | undefined {
60
+ const child = React . Children . toArray ( children ) [ 0 ] as any
61
+
62
+ const grandChild = React . Children . toArray (
63
+ child ?. props ?. children || [ ]
64
+ ) [ 0 ] as any
65
+
66
+ const grandGrandChild = React . Children . toArray (
67
+ grandChild ?. props ?. children || [ ]
68
+ ) [ 0 ] as any
69
+
70
+ console . log ( { grandGrandChild } )
71
+
72
+ const { color } = grandGrandChild ?. props ?. style
73
+
74
+ if ( color ) {
75
+ return transparent ( color as string , 0.2 )
76
+ }
77
+
78
+ return undefined
16
79
}
17
80
18
81
function Box ( {
Original file line number Diff line number Diff line change 1
1
# Hello
2
2
3
3
Foo bar <CH.InlineCode >Hello</CH.InlineCode > foo bar
4
+
5
+ ``` js mark=1[1:12],3[17:20]
6
+ function lorem (ipsum , dolor = 1 ) {
7
+ const sit = ipsum == null ? 0 : ipsum .sit
8
+ dolor = sit - amet (dolor)
9
+ return sit
10
+ ? consectetur (ipsum, 0 , dolor < 0 ? 0 : dolor)
11
+ : []
12
+ }
13
+ ```
You can’t perform that action at this time.
0 commit comments