Joost Klitsie
06/10/2022, 12:53 PMrocketraman
06/10/2022, 1:30 PMBig Chungus
06/10/2022, 1:53 PMCheick Kante
12/28/2022, 6:07 PM@file:JsModule("react-markdown")
@file:JsNonModule
package <http://components.blog|components.blog>
import react.ComponentClass
import react.Props
import react.PropsWithChildren
@JsName("default")
external val ReactMarkdown: ComponentClass<MarkdownProps>
external interface MarkdownProps : PropsWithChildren{
var remarkPlugins : Array<dynamic>
}
and my remark file looks like
@file:JsModule("remark-gfm")
@file:JsNonModule
package <http://components.blog|components.blog>
@JsName("default")
external val RemarkGfm: dynamic
and I hook them up as below, I get the rendered content however remark does not get applied.
ReactMarkdown {
remarkPlugins = arrayOf(RemarkGfm)
+content
}
Cheick Kante
08/21/2023, 12:05 AM@file:JsModule("react-markdown")
@file:JsNonModule
package xxxx
import react.ComponentClass
import react.Props
import react.PropsWithChildren
@JsName("default")
external val ReactMarkdown:ComponentClass<MarkdownProps>
external interface MarkdownProps : Props {
var children: String
var className: String
var allowedElements: Array<String>
var disallowedElements: Array<String>
var unwrapDisallowed: Boolean
var remarkPlugins: Array<dynamic>
var rehypePlugins : Array<dynamic>
}
the first 3 lines are all that is needed to bring remarkGfm into the kotlin/js world.
@file:JsNonModule
package xxxx
import react.ComponentClass
import react.FC
import react.Props
import react.PropsWithChildren
@JsName("default")
external val remarkGfm:ComponentClass<Props>
external interface GfmOptions {
var singleTilde: Boolean
var tableCellPadding: Boolean
var tablePipeAlign: Boolean
var stringLength: (String)-> Int
var sourcePos: Boolean
var rawSourcePos: Boolean
var skipHtml: Boolean
var includeElementIndex: Boolean
var transformLinkUri: Boolean
var linkTarget: String
var transformImageUri: () -> Unit
var components: Map<String, FC<PropsWithChildren>>
}
This is how it’ll be used with ReactMarkdown:
ReactMarkdown {
rehypePlugins = arrayOf(rehypeRaw)
remarkPlugins = arrayOf(
arrayOf(remarkGfm, (Any() as GfmOptions).apply {
singleTilde = false
})
)
children = post.contentMarkdown
}