diff --git a/src/components/markdown-renderer/full-markdown-renderer.tsx b/src/components/markdown-renderer/full-markdown-renderer.tsx index a390765fc..62ee083c7 100644 --- a/src/components/markdown-renderer/full-markdown-renderer.tsx +++ b/src/components/markdown-renderer/full-markdown-renderer.tsx @@ -19,7 +19,7 @@ export interface FullMarkdownRendererProps { onFirstHeadingChange?: (firstHeading: string | undefined) => void onLineMarkerPositionChanged?: (lineMarkerPosition: LineMarkerPosition[]) => void onMetaDataChange?: (yamlMetaData: YAMLMetaData | undefined) => void - onTaskCheckedChange: (lineInMarkdown: number, checked: boolean) => void + onTaskCheckedChange?: (lineInMarkdown: number, checked: boolean) => void onTocChange?: (ast: TocAst) => void } diff --git a/src/components/markdown-renderer/hooks/use-replacer-instance-list-creator.ts b/src/components/markdown-renderer/hooks/use-replacer-instance-list-creator.ts index 8e64f0a21..cd9c7a5b8 100644 --- a/src/components/markdown-renderer/hooks/use-replacer-instance-list-creator.ts +++ b/src/components/markdown-renderer/hooks/use-replacer-instance-list-creator.ts @@ -21,7 +21,7 @@ import { VegaReplacer } from '../replace-components/vega-lite/vega-replacer' import { VimeoReplacer } from '../replace-components/vimeo/vimeo-replacer' import { YoutubeReplacer } from '../replace-components/youtube/youtube-replacer' -export const useReplacerInstanceListCreator = (onTaskCheckedChange: (lineInMarkdown: number, checked: boolean) => void): ()=>ComponentReplacer[] => { +export const useReplacerInstanceListCreator = (onTaskCheckedChange?: (lineInMarkdown: number, checked: boolean) => void): () => ComponentReplacer[] => { return useMemo(() => () => [ new LinemarkerReplacer(), new PossibleWiderReplacer(), diff --git a/src/components/markdown-renderer/replace-components/task-list/task-list-replacer.tsx b/src/components/markdown-renderer/replace-components/task-list/task-list-replacer.tsx index e99c37c73..254151675 100644 --- a/src/components/markdown-renderer/replace-components/task-list/task-list-replacer.tsx +++ b/src/components/markdown-renderer/replace-components/task-list/task-list-replacer.tsx @@ -1,31 +1,35 @@ -import React, { ReactElement } from 'react' import { DomElement } from 'domhandler' +import React, { ReactElement } from 'react' import { ComponentReplacer } from '../ComponentReplacer' export class TaskListReplacer extends ComponentReplacer { - onTaskCheckedChange: (lineInMarkdown: number, checked: boolean) => void + onTaskCheckedChange?: (lineInMarkdown: number, checked: boolean) => void - constructor (onTaskCheckedChange: (lineInMarkdown: number, checked: boolean) => void) { + constructor (onTaskCheckedChange?: (lineInMarkdown: number, checked: boolean) => void) { super() this.onTaskCheckedChange = onTaskCheckedChange } handleCheckboxChange = (event: React.ChangeEvent): void => { const lineNum = Number(event.currentTarget.dataset.line) - this.onTaskCheckedChange(lineNum, event.currentTarget.checked) - } - - public getReplacement (node: DomElement): (ReactElement|undefined) { - if (node.attribs?.class === 'task-list-item-checkbox') { - return ( - - ) + if (this.onTaskCheckedChange) { + this.onTaskCheckedChange(lineNum, event.currentTarget.checked) } } + + public getReplacement (node: DomElement): (ReactElement | undefined) { + if (node.attribs?.class !== 'task-list-item-checkbox') { + return + } + return ( + + ) + } }