File tree Expand file tree Collapse file tree 6 files changed +20
-7
lines changed
Expand file tree Collapse file tree 6 files changed +20
-7
lines changed Original file line number Diff line number Diff line change 7171 </tbody >
7272 </table >
7373{:else if node .type === ' html' }
74- <HtmlViewer value ={node .value } />
74+ <HtmlViewer value ={node .value } { plugins } />
7575{/if }
Original file line number Diff line number Diff line change 66 </script >
77
88{#each nodes as node }
9- <Element {node } {plugins } plugin ={plugins .find (p => p .shouldTransformElement (node ))} />
9+ <Element {node } {plugins } plugin ={plugins .find (p => p .shouldTransformElement && p . shouldTransformElement (node ))} />
1010{/each }
Original file line number Diff line number Diff line change 11<script >
22 import HtmlElements from ' ./HtmlElements.svelte'
33 export let node
4+ export let plugins
45 </script >
56
67{#if node .type === ' text' }
78 {node .value }
89{:else if node .type === ' element' }
910 {#if node .tagName === ' p' }
10- <p align ={node .properties .align }><HtmlElements nodes ={node .children } /></p >
11+ <p align ={node .properties .align }><HtmlElements nodes ={node .children } { plugins } /></p >
1112 {:else if node .tagName === ' img' }
1213 <img src ={node .properties .src } alt ={node .properties .alt } width ={node .properties .width } height ={node .properties .height } />
1314 {:else if node .tagName === ' a' }
14- <a href ={node .properties .href }><HtmlElements nodes ={node .children } /></a >
15+ <a href ={node .properties .href }><HtmlElements nodes ={node .children } { plugins } /></a >
1516 {/if }
1617{/if }
Original file line number Diff line number Diff line change 11<script >
22 import HtmlElement from ' ./HtmlElement.svelte'
33 export let nodes;
4+ export let plugins;
5+
6+ $: findPlugin = (node ) => {
7+ return plugins .find (p => p .shouldTransformHtmlElement && p .shouldTransformHtmlElement (node))
8+ }
49 </script >
510
611{#each nodes as node }
7- <HtmlElement {node } />
12+ {#if findPlugin (node )}
13+ <svelte:component this ={findPlugin (node ).component } {...node }></svelte:component >
14+ {:else }
15+ <HtmlElement {node } {plugins } />
16+ {/if }
817{/each }
Original file line number Diff line number Diff line change 44 import HtmlElements from ' ./HtmlElements.svelte' ;
55
66 export let value;
7+ export let plugins;
8+
79 const parser = unified ().use (html, { fragment: true });
810 $: ast = parser .parse (value);
911 // $: console.log(ast);
1012 </script >
1113
12- <HtmlElements nodes ={ast .children } />
14+ <HtmlElements nodes ={ast .children } { plugins } />
Original file line number Diff line number Diff line change @@ -3,7 +3,8 @@ import { Node } from 'unist';
33import { SvelteComponent } from 'svelte' ;
44
55export interface Plugin {
6- shouldTransformElement ( node : Node ) : boolean ;
6+ shouldTransformElement ?( node : Node ) : boolean ;
7+ shouldTransformHtmlElement ?( node : Node ) : boolean ;
78 component : typeof SvelteComponent ;
89}
910
You can’t perform that action at this time.
0 commit comments