11import React , { Children , FC } from 'react'
2- import MarkdownComponent from 'markdown-to-jsx'
2+ import MarkdownComponent , { MarkdownOptions } from 'markdown-to-jsx'
33import { Paragraph , Heading , Text } from '../typography'
44import { Link } from '../link'
55import { List } from '../list'
@@ -8,6 +8,7 @@ import {styled, Box, Image} from '@qiwi/pijma-core'
88export interface MarkdownProps {
99 size ?: 's' | 'm' | 'l'
1010 children : string
11+ overrides ?: { [ tag : string ] : FC < any > }
1112}
1213
1314const MarkdownBox = styled ( Box ) ( {
@@ -127,7 +128,7 @@ const ol: FC<NumericListProps> = ({size, start, children}) => (
127128 </ MarkdownBox >
128129)
129130
130- const overrides : { [ tag : string ] : FC < any > } = {
131+ const defaultOverrides : MarkdownProps [ 'overrides' ] = {
131132 p,
132133 h1,
133134 h2,
@@ -143,21 +144,24 @@ const overrides: {[tag: string]: FC<any>} = {
143144 img,
144145}
145146
146- export const Markdown : FC < MarkdownProps > = ( { size = 'm' , children} ) => (
147- < MarkdownComponent
148- children = { children }
149- options = { {
150- overrides : Object . keys ( overrides ) . reduce ( ( prev , tag ) => ( {
151- ...prev ,
152- ...{
153- [ tag ] : {
154- component : overrides [ tag ] ,
155- props : {
156- size,
147+ export const Markdown : FC < MarkdownProps > = ( { size = 'm' , children, overrides = { } } ) => {
148+ const allOverrides = { ...defaultOverrides , ...overrides }
149+ return (
150+ < MarkdownComponent
151+ children = { children }
152+ options = { {
153+ overrides : Object . keys ( allOverrides ) . reduce < MarkdownOptions [ 'overrides' ] > ( ( prev , tag ) => ( {
154+ ...prev ,
155+ ...{
156+ [ tag ] : {
157+ component : allOverrides [ tag ] ,
158+ props : {
159+ size,
160+ } ,
157161 } ,
158162 } ,
159- } ,
160- } ) , { } ) ,
161- } }
162- />
163- )
163+ } ) , { } ) ,
164+ } }
165+ />
166+ )
167+ }
0 commit comments