(props)
| 91 | before: string |
| 92 | after: string |
| 93 | }> = (props) => { |
| 94 | let ref!: HTMLDivElement |
| 95 | onMount(() => { |
| 96 | const [theme] = useThemeContext() |
| 97 | const view = new MergeView({ |
| 98 | parent: ref, |
| 99 | a: createConfig(props.before, theme(), props.extensions), |
| 100 | b: createConfig(props.after, theme(), props.extensions), |
| 101 | }) |
| 102 | createEffect( |
| 103 | on( |
| 104 | // Only run this effect when the theme changes |
| 105 | theme, |
| 106 | (t) => { |
| 107 | view.a.setState( |
| 108 | EditorState.create(createConfig(props.before, t, props.extensions)), |
| 109 | ) |
| 110 | view.b.setState( |
| 111 | EditorState.create(createConfig(props.after, t, props.extensions)), |
| 112 | ) |
| 113 | }, |
| 114 | { defer: true }, |
| 115 | ), |
| 116 | ) |
| 117 | onCleanup(() => { |
| 118 | view.destroy() |
| 119 | }) |
| 120 | }) |
| 121 | return <div class='max-h-[500px] resize-y overflow-auto' ref={ref} /> |
| 122 | } |
| 123 | |
| 124 | function createConfig( |
| 125 | doc: string, |
nothing calls this directly
no test coverage detected