svmarkdown 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/README.zh-CN.md +10 -0
- package/dist/{SvmdChildren-D_VMjuB6.js → SvmdChildren-Bf8r1vF0.js} +142 -63
- package/dist/index.js +1 -1
- package/dist/internal/RenderNode.svelte.d.ts +1 -0
- package/dist/internal/RenderNodes.svelte.d.ts +1 -0
- package/package.json +1 -1
- package/src/internal/RenderNode.svelte +47 -9
- package/src/internal/RenderNodes.svelte +3 -2
package/README.md
CHANGED
|
@@ -182,6 +182,16 @@ const parseOptions: SvmdParseOptions = {
|
|
|
182
182
|
/>
|
|
183
183
|
```
|
|
184
184
|
|
|
185
|
+
### Link component layout (inline vs standalone)
|
|
186
|
+
|
|
187
|
+
```svelte
|
|
188
|
+
<!-- when overriding `a` -->
|
|
189
|
+
<script lang="ts">
|
|
190
|
+
export let linkLayout // 'inline' | 'standalone'
|
|
191
|
+
export let linkStandalone // boolean
|
|
192
|
+
</script>
|
|
193
|
+
```
|
|
194
|
+
|
|
185
195
|
### Control component inference
|
|
186
196
|
|
|
187
197
|
```svelte
|
package/README.zh-CN.md
CHANGED
|
@@ -180,6 +180,16 @@ const options: SvmdParseOptions = {
|
|
|
180
180
|
/>
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
+
### 链接组件的行内/独立布局
|
|
184
|
+
|
|
185
|
+
```svelte
|
|
186
|
+
<!-- 当覆写 `a` 时 -->
|
|
187
|
+
<script lang="ts">
|
|
188
|
+
export let linkLayout // 'inline' | 'standalone'
|
|
189
|
+
export let linkStandalone // boolean
|
|
190
|
+
</script>
|
|
191
|
+
```
|
|
192
|
+
|
|
183
193
|
### 关闭组件块自动推断
|
|
184
194
|
|
|
185
195
|
```svelte
|
|
@@ -439,6 +439,14 @@ function RenderNode($$anchor, $$props) {
|
|
|
439
439
|
function renderSoftBreak() {
|
|
440
440
|
return $$props.renderOptions?.softBreak ?? "space";
|
|
441
441
|
}
|
|
442
|
+
function linkLayout(node) {
|
|
443
|
+
if (node.name !== "a") return "inline";
|
|
444
|
+
if (!$$props.parent || $$props.parent.kind !== "element") return "inline";
|
|
445
|
+
if (!$$props.parent.block) return "inline";
|
|
446
|
+
if ($$props.parent.children.length !== 1) return "inline";
|
|
447
|
+
if ($$props.parent.children[0] !== node) return "inline";
|
|
448
|
+
return "standalone";
|
|
449
|
+
}
|
|
442
450
|
var fragment = $.comment();
|
|
443
451
|
var node_1 = $.first_child(fragment);
|
|
444
452
|
var consequent = ($$anchor$1) => {
|
|
@@ -446,7 +454,7 @@ function RenderNode($$anchor, $$props) {
|
|
|
446
454
|
$.template_effect(() => $.set_text(text, $$props.node.value));
|
|
447
455
|
$.append($$anchor$1, text);
|
|
448
456
|
};
|
|
449
|
-
var
|
|
457
|
+
var alternate_15 = ($$anchor$1) => {
|
|
450
458
|
var fragment_2 = $.comment();
|
|
451
459
|
var node_2 = $.first_child(fragment_2);
|
|
452
460
|
var consequent_4 = ($$anchor$2) => {
|
|
@@ -494,7 +502,7 @@ function RenderNode($$anchor, $$props) {
|
|
|
494
502
|
});
|
|
495
503
|
$.append($$anchor$2, fragment_3);
|
|
496
504
|
};
|
|
497
|
-
var
|
|
505
|
+
var alternate_14 = ($$anchor$2) => {
|
|
498
506
|
var fragment_8 = $.comment();
|
|
499
507
|
var node_6 = $.first_child(fragment_8);
|
|
500
508
|
var consequent_6 = ($$anchor$3) => {
|
|
@@ -517,7 +525,7 @@ function RenderNode($$anchor, $$props) {
|
|
|
517
525
|
});
|
|
518
526
|
$.append($$anchor$3, fragment_9);
|
|
519
527
|
};
|
|
520
|
-
var
|
|
528
|
+
var alternate_13 = ($$anchor$3) => {
|
|
521
529
|
var fragment_12 = $.comment();
|
|
522
530
|
var node_9 = $.first_child(fragment_12);
|
|
523
531
|
var consequent_9 = ($$anchor$4) => {
|
|
@@ -588,7 +596,7 @@ function RenderNode($$anchor, $$props) {
|
|
|
588
596
|
});
|
|
589
597
|
$.append($$anchor$4, fragment_13);
|
|
590
598
|
};
|
|
591
|
-
var
|
|
599
|
+
var alternate_12 = ($$anchor$4) => {
|
|
592
600
|
var fragment_16 = $.comment();
|
|
593
601
|
var node_13 = $.first_child(fragment_16);
|
|
594
602
|
var consequent_14 = ($$anchor$5) => {
|
|
@@ -622,6 +630,9 @@ function RenderNode($$anchor, $$props) {
|
|
|
622
630
|
},
|
|
623
631
|
get renderOptions() {
|
|
624
632
|
return $$props.renderOptions;
|
|
633
|
+
},
|
|
634
|
+
get parent() {
|
|
635
|
+
return $$props.node;
|
|
625
636
|
}
|
|
626
637
|
});
|
|
627
638
|
};
|
|
@@ -648,6 +659,9 @@ function RenderNode($$anchor, $$props) {
|
|
|
648
659
|
},
|
|
649
660
|
get renderOptions() {
|
|
650
661
|
return $$props.renderOptions;
|
|
662
|
+
},
|
|
663
|
+
get parent() {
|
|
664
|
+
return $$props.node;
|
|
651
665
|
}
|
|
652
666
|
});
|
|
653
667
|
};
|
|
@@ -680,63 +694,122 @@ function RenderNode($$anchor, $$props) {
|
|
|
680
694
|
});
|
|
681
695
|
$.append($$anchor$5, fragment_17);
|
|
682
696
|
};
|
|
683
|
-
var
|
|
697
|
+
var alternate_11 = ($$anchor$5) => {
|
|
684
698
|
const ElementRenderer = $.derived(() => components()[$$props.node.name]);
|
|
685
699
|
var fragment_24 = $.comment();
|
|
686
700
|
var node_19 = $.first_child(fragment_24);
|
|
687
|
-
var
|
|
701
|
+
var consequent_18 = ($$anchor$6) => {
|
|
688
702
|
var fragment_25 = $.comment();
|
|
689
703
|
var node_20 = $.first_child(fragment_25);
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
704
|
+
var consequent_16 = ($$anchor$7) => {
|
|
705
|
+
var fragment_26 = $.comment();
|
|
706
|
+
var node_21 = $.first_child(fragment_26);
|
|
707
|
+
{
|
|
708
|
+
let $0 = $.derived(() => linkLayout($$props.node));
|
|
709
|
+
let $1 = $.derived(() => linkLayout($$props.node) === "standalone");
|
|
710
|
+
$.component(node_21, () => $.get(ElementRenderer), ($$anchor$8, ElementRenderer_1) => {
|
|
711
|
+
ElementRenderer_1($$anchor$8, $.spread_props(() => $$props.node.attrs, {
|
|
712
|
+
get node() {
|
|
713
|
+
return $$props.node;
|
|
714
|
+
},
|
|
715
|
+
get linkLayout() {
|
|
716
|
+
return $.get($0);
|
|
717
|
+
},
|
|
718
|
+
get linkStandalone() {
|
|
719
|
+
return $.get($1);
|
|
720
|
+
},
|
|
721
|
+
children: ($$anchor$9, $$slotProps) => {
|
|
722
|
+
var fragment_27 = $.comment();
|
|
723
|
+
var node_22 = $.first_child(fragment_27);
|
|
724
|
+
var consequent_15 = ($$anchor$10) => {
|
|
725
|
+
RenderNodes($$anchor$10, {
|
|
726
|
+
get nodes() {
|
|
727
|
+
return $$props.node.children;
|
|
728
|
+
},
|
|
729
|
+
get components() {
|
|
730
|
+
return components();
|
|
731
|
+
},
|
|
732
|
+
get renderOptions() {
|
|
733
|
+
return $$props.renderOptions;
|
|
734
|
+
},
|
|
735
|
+
get parent() {
|
|
736
|
+
return $$props.node;
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
};
|
|
740
|
+
$.if(node_22, ($$render) => {
|
|
741
|
+
if ($$props.node.children.length > 0) $$render(consequent_15);
|
|
742
|
+
});
|
|
743
|
+
$.append($$anchor$9, fragment_27);
|
|
744
|
+
},
|
|
745
|
+
$$slots: { default: true }
|
|
746
|
+
}));
|
|
747
|
+
});
|
|
748
|
+
}
|
|
749
|
+
$.append($$anchor$7, fragment_26);
|
|
750
|
+
};
|
|
751
|
+
var alternate_8 = ($$anchor$7) => {
|
|
752
|
+
var fragment_29 = $.comment();
|
|
753
|
+
var node_23 = $.first_child(fragment_29);
|
|
754
|
+
$.component(node_23, () => $.get(ElementRenderer), ($$anchor$8, ElementRenderer_2) => {
|
|
755
|
+
ElementRenderer_2($$anchor$8, $.spread_props(() => $$props.node.attrs, {
|
|
756
|
+
get node() {
|
|
757
|
+
return $$props.node;
|
|
758
|
+
},
|
|
759
|
+
children: ($$anchor$9, $$slotProps) => {
|
|
760
|
+
var fragment_30 = $.comment();
|
|
761
|
+
var node_24 = $.first_child(fragment_30);
|
|
762
|
+
var consequent_17 = ($$anchor$10) => {
|
|
763
|
+
RenderNodes($$anchor$10, {
|
|
764
|
+
get nodes() {
|
|
765
|
+
return $$props.node.children;
|
|
766
|
+
},
|
|
767
|
+
get components() {
|
|
768
|
+
return components();
|
|
769
|
+
},
|
|
770
|
+
get renderOptions() {
|
|
771
|
+
return $$props.renderOptions;
|
|
772
|
+
},
|
|
773
|
+
get parent() {
|
|
774
|
+
return $$props.node;
|
|
775
|
+
}
|
|
776
|
+
});
|
|
777
|
+
};
|
|
778
|
+
$.if(node_24, ($$render) => {
|
|
779
|
+
if ($$props.node.children.length > 0) $$render(consequent_17);
|
|
709
780
|
});
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
781
|
+
$.append($$anchor$9, fragment_30);
|
|
782
|
+
},
|
|
783
|
+
$$slots: { default: true }
|
|
784
|
+
}));
|
|
785
|
+
});
|
|
786
|
+
$.append($$anchor$7, fragment_29);
|
|
787
|
+
};
|
|
788
|
+
$.if(node_20, ($$render) => {
|
|
789
|
+
if ($$props.node.name === "a") $$render(consequent_16);
|
|
790
|
+
else $$render(alternate_8, false);
|
|
718
791
|
});
|
|
719
792
|
$.append($$anchor$6, fragment_25);
|
|
720
793
|
};
|
|
721
|
-
var
|
|
722
|
-
var
|
|
723
|
-
var
|
|
724
|
-
var
|
|
725
|
-
var
|
|
726
|
-
var
|
|
727
|
-
$.element(
|
|
794
|
+
var alternate_10 = ($$anchor$6) => {
|
|
795
|
+
var fragment_32 = $.comment();
|
|
796
|
+
var node_25 = $.first_child(fragment_32);
|
|
797
|
+
var consequent_19 = ($$anchor$7) => {
|
|
798
|
+
var fragment_33 = $.comment();
|
|
799
|
+
var node_26 = $.first_child(fragment_33);
|
|
800
|
+
$.element(node_26, () => $$props.node.name, false, ($$element, $$anchor$8) => {
|
|
728
801
|
$.attribute_effect($$element, () => ({ ...$$props.node.attrs }));
|
|
729
802
|
});
|
|
730
|
-
$.append($$anchor$7,
|
|
803
|
+
$.append($$anchor$7, fragment_33);
|
|
731
804
|
};
|
|
732
|
-
var
|
|
733
|
-
var
|
|
734
|
-
var
|
|
735
|
-
$.element(
|
|
805
|
+
var alternate_9 = ($$anchor$7) => {
|
|
806
|
+
var fragment_34 = $.comment();
|
|
807
|
+
var node_27 = $.first_child(fragment_34);
|
|
808
|
+
$.element(node_27, () => $$props.node.name, false, ($$element_1, $$anchor$8) => {
|
|
736
809
|
$.attribute_effect($$element_1, () => ({ ...$$props.node.attrs }));
|
|
737
|
-
var
|
|
738
|
-
var
|
|
739
|
-
var
|
|
810
|
+
var fragment_35 = $.comment();
|
|
811
|
+
var node_28 = $.first_child(fragment_35);
|
|
812
|
+
var consequent_20 = ($$anchor$9) => {
|
|
740
813
|
RenderNodes($$anchor$9, {
|
|
741
814
|
get nodes() {
|
|
742
815
|
return $$props.node.children;
|
|
@@ -746,55 +819,58 @@ function RenderNode($$anchor, $$props) {
|
|
|
746
819
|
},
|
|
747
820
|
get renderOptions() {
|
|
748
821
|
return $$props.renderOptions;
|
|
822
|
+
},
|
|
823
|
+
get parent() {
|
|
824
|
+
return $$props.node;
|
|
749
825
|
}
|
|
750
826
|
});
|
|
751
827
|
};
|
|
752
|
-
$.if(
|
|
753
|
-
if ($$props.node.children.length > 0) $$render(
|
|
828
|
+
$.if(node_28, ($$render) => {
|
|
829
|
+
if ($$props.node.children.length > 0) $$render(consequent_20);
|
|
754
830
|
});
|
|
755
|
-
$.append($$anchor$8,
|
|
831
|
+
$.append($$anchor$8, fragment_35);
|
|
756
832
|
});
|
|
757
|
-
$.append($$anchor$7,
|
|
833
|
+
$.append($$anchor$7, fragment_34);
|
|
758
834
|
};
|
|
759
|
-
$.if(
|
|
760
|
-
if (isVoidElement($$props.node)) $$render(
|
|
761
|
-
else $$render(
|
|
835
|
+
$.if(node_25, ($$render) => {
|
|
836
|
+
if (isVoidElement($$props.node)) $$render(consequent_19);
|
|
837
|
+
else $$render(alternate_9, false);
|
|
762
838
|
}, true);
|
|
763
|
-
$.append($$anchor$6,
|
|
839
|
+
$.append($$anchor$6, fragment_32);
|
|
764
840
|
};
|
|
765
841
|
$.if(node_19, ($$render) => {
|
|
766
|
-
if ($.get(ElementRenderer)) $$render(
|
|
767
|
-
else $$render(
|
|
842
|
+
if ($.get(ElementRenderer)) $$render(consequent_18);
|
|
843
|
+
else $$render(alternate_10, false);
|
|
768
844
|
});
|
|
769
845
|
$.append($$anchor$5, fragment_24);
|
|
770
846
|
};
|
|
771
847
|
$.if(node_13, ($$render) => {
|
|
772
848
|
if ($$props.node.kind === "component") $$render(consequent_14);
|
|
773
|
-
else $$render(
|
|
849
|
+
else $$render(alternate_11, false);
|
|
774
850
|
}, true);
|
|
775
851
|
$.append($$anchor$4, fragment_16);
|
|
776
852
|
};
|
|
777
853
|
$.if(node_9, ($$render) => {
|
|
778
854
|
if ($$props.node.kind === "code") $$render(consequent_9);
|
|
779
|
-
else $$render(
|
|
855
|
+
else $$render(alternate_12, false);
|
|
780
856
|
}, true);
|
|
781
857
|
$.append($$anchor$3, fragment_12);
|
|
782
858
|
};
|
|
783
859
|
$.if(node_6, ($$render) => {
|
|
784
860
|
if ($$props.node.kind === "html") $$render(consequent_6);
|
|
785
|
-
else $$render(
|
|
861
|
+
else $$render(alternate_13, false);
|
|
786
862
|
}, true);
|
|
787
863
|
$.append($$anchor$2, fragment_8);
|
|
788
864
|
};
|
|
789
865
|
$.if(node_2, ($$render) => {
|
|
790
866
|
if ($$props.node.kind === "break") $$render(consequent_4);
|
|
791
|
-
else $$render(
|
|
867
|
+
else $$render(alternate_14, false);
|
|
792
868
|
}, true);
|
|
793
869
|
$.append($$anchor$1, fragment_2);
|
|
794
870
|
};
|
|
795
871
|
$.if(node_1, ($$render) => {
|
|
796
872
|
if ($$props.node.kind === "text") $$render(consequent);
|
|
797
|
-
else $$render(
|
|
873
|
+
else $$render(alternate_15, false);
|
|
798
874
|
});
|
|
799
875
|
$.append($$anchor, fragment);
|
|
800
876
|
$.pop();
|
|
@@ -816,6 +892,9 @@ function RenderNodes($$anchor, $$props) {
|
|
|
816
892
|
},
|
|
817
893
|
get renderOptions() {
|
|
818
894
|
return $$props.renderOptions;
|
|
895
|
+
},
|
|
896
|
+
get parent() {
|
|
897
|
+
return $$props.parent;
|
|
819
898
|
}
|
|
820
899
|
});
|
|
821
900
|
});
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as parseMarkdown, i as inferComponentBlocksFromMap, n as Markdown, r as createParser, t as SvmdChildren } from "./SvmdChildren-
|
|
1
|
+
import { a as parseMarkdown, i as inferComponentBlocksFromMap, n as Markdown, r as createParser, t as SvmdChildren } from "./SvmdChildren-Bf8r1vF0.js";
|
|
2
2
|
|
|
3
3
|
export { Markdown, SvmdChildren, createParser, inferComponentBlocksFromMap, parseMarkdown };
|
package/package.json
CHANGED
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
node: SvmdNode
|
|
30
30
|
components?: SvmdComponentMap
|
|
31
31
|
renderOptions?: SvmdRenderOptions
|
|
32
|
+
parent?: SvmdNode
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
let { node, components = {}, renderOptions }: Props = $props()
|
|
35
|
+
let { node, components = {}, renderOptions, parent }: Props = $props()
|
|
35
36
|
|
|
36
37
|
function isVoidElement(elementNode: SvmdElementNode): boolean {
|
|
37
38
|
return VOID_TAGS.has(elementNode.name)
|
|
@@ -48,6 +49,30 @@
|
|
|
48
49
|
function renderSoftBreak(): 'space' | 'newline' | 'br' {
|
|
49
50
|
return renderOptions?.softBreak ?? 'space'
|
|
50
51
|
}
|
|
52
|
+
|
|
53
|
+
function linkLayout(node: SvmdElementNode): 'inline' | 'standalone' {
|
|
54
|
+
if (node.name !== 'a') {
|
|
55
|
+
return 'inline'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!parent || parent.kind !== 'element') {
|
|
59
|
+
return 'inline'
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!parent.block) {
|
|
63
|
+
return 'inline'
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (parent.children.length !== 1) {
|
|
67
|
+
return 'inline'
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (parent.children[0] !== node) {
|
|
71
|
+
return 'inline'
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return 'standalone'
|
|
75
|
+
}
|
|
51
76
|
</script>
|
|
52
77
|
|
|
53
78
|
{#if node.kind === 'text'}
|
|
@@ -95,12 +120,12 @@
|
|
|
95
120
|
{#if ComponentRenderer}
|
|
96
121
|
<ComponentRenderer {...node.props} node={node} syntax={node.syntax} source={node.source}>
|
|
97
122
|
{#if node.children.length > 0}
|
|
98
|
-
<RenderNodes nodes={node.children} {components} {renderOptions} />
|
|
123
|
+
<RenderNodes nodes={node.children} {components} {renderOptions} parent={node} />
|
|
99
124
|
{/if}
|
|
100
125
|
</ComponentRenderer>
|
|
101
126
|
{:else}
|
|
102
127
|
{#if node.children.length > 0}
|
|
103
|
-
<RenderNodes nodes={node.children} {components} {renderOptions} />
|
|
128
|
+
<RenderNodes nodes={node.children} {components} {renderOptions} parent={node} />
|
|
104
129
|
{:else if node.source}
|
|
105
130
|
<pre><code>{node.source}</code></pre>
|
|
106
131
|
{/if}
|
|
@@ -109,17 +134,30 @@
|
|
|
109
134
|
{@const ElementRenderer = components[node.name]}
|
|
110
135
|
|
|
111
136
|
{#if ElementRenderer}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
137
|
+
{#if node.name === 'a'}
|
|
138
|
+
<ElementRenderer
|
|
139
|
+
{...node.attrs}
|
|
140
|
+
node={node}
|
|
141
|
+
linkLayout={linkLayout(node)}
|
|
142
|
+
linkStandalone={linkLayout(node) === 'standalone'}
|
|
143
|
+
>
|
|
144
|
+
{#if node.children.length > 0}
|
|
145
|
+
<RenderNodes nodes={node.children} {components} {renderOptions} parent={node} />
|
|
146
|
+
{/if}
|
|
147
|
+
</ElementRenderer>
|
|
148
|
+
{:else}
|
|
149
|
+
<ElementRenderer {...node.attrs} node={node}>
|
|
150
|
+
{#if node.children.length > 0}
|
|
151
|
+
<RenderNodes nodes={node.children} {components} {renderOptions} parent={node} />
|
|
152
|
+
{/if}
|
|
153
|
+
</ElementRenderer>
|
|
154
|
+
{/if}
|
|
117
155
|
{:else if isVoidElement(node)}
|
|
118
156
|
<svelte:element this={node.name} {...node.attrs} />
|
|
119
157
|
{:else}
|
|
120
158
|
<svelte:element this={node.name} {...node.attrs}>
|
|
121
159
|
{#if node.children.length > 0}
|
|
122
|
-
<RenderNodes nodes={node.children} {components} {renderOptions} />
|
|
160
|
+
<RenderNodes nodes={node.children} {components} {renderOptions} parent={node} />
|
|
123
161
|
{/if}
|
|
124
162
|
</svelte:element>
|
|
125
163
|
{/if}
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
nodes: SvmdNode[]
|
|
7
7
|
components?: SvmdComponentMap
|
|
8
8
|
renderOptions?: SvmdRenderOptions
|
|
9
|
+
parent?: SvmdNode
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
let { nodes, components = {}, renderOptions }: Props = $props()
|
|
12
|
+
let { nodes, components = {}, renderOptions, parent }: Props = $props()
|
|
12
13
|
</script>
|
|
13
14
|
|
|
14
15
|
{#each nodes as node (node.key)}
|
|
15
|
-
<RenderNode {node} {components} {renderOptions} />
|
|
16
|
+
<RenderNode {node} {components} {renderOptions} {parent} />
|
|
16
17
|
{/each}
|