-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmarp-options.ts
38 lines (33 loc) · 952 Bytes
/
marp-options.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { MarpOptions } from '@marp-team/marp-core'
import nanoid from 'nanoid/generate'
import { useMemo } from 'react'
interface MarpReactOptions {
containerClass: string
identifier: string
marpOptions: MarpOptions
}
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
const useIdentifier = (): string => useMemo(() => nanoid(chars, 8), [])
export default function useMarpOptions(
opts: MarpOptions = {}
): MarpReactOptions {
const identifier = useIdentifier()
const containerClass = `marp-${identifier}`
return useMemo(
(): MarpReactOptions => ({
containerClass,
identifier,
marpOptions: {
...(opts || {}),
script: false,
container: false,
markdown: {
...((opts && opts.markdown) || {}),
xhtmlOut: true,
},
slideContainer: { tag: 'div', class: containerClass },
},
}),
[containerClass, identifier, opts]
)
}