diff --git a/projects/ledge-render/src/lib/ledge-render.component.html b/projects/ledge-render/src/lib/ledge-render.component.html
index 5b9511c1..cf607eb5 100644
--- a/projects/ledge-render/src/lib/ledge-render.component.html
+++ b/projects/ledge-render/src/lib/ledge-render.component.html
@@ -5,7 +5,7 @@
-
+
diff --git a/projects/ledge-render/src/lib/ledge-render.component.ts b/projects/ledge-render/src/lib/ledge-render.component.ts
index 2dc8d659..0d13da7f 100644
--- a/projects/ledge-render/src/lib/ledge-render.component.ts
+++ b/projects/ledge-render/src/lib/ledge-render.component.ts
@@ -10,7 +10,7 @@ import { Token, Tokens, TokensList } from 'marked';
import marked, { Slugger } from 'marked/lib/marked';
import LedgeMarkdownConverter from './components/model/ledge-markdown-converter';
import LedgeColors from './support/ledgeColors';
-import { VirtualScrollerComponent } from 'ngx-virtual-scroller';
+import { IPageInfo, VirtualScrollerComponent } from 'ngx-virtual-scroller';
@Component({
selector: 'ledge-render',
@@ -64,7 +64,9 @@ export class LedgeRenderComponent implements OnInit, OnChanges {
if (!this.virtualScroller) {
return;
}
- this.virtualScroller.scrollToIndex(this.headingMap[this.scrollToItem], false, 66, 0);
+ this.virtualScroller.scrollToIndex(this.headingMap[this.scrollToItem], true, 0, 0, () => {
+ this.scrolling = false;
+ });
}
}
@@ -384,15 +386,9 @@ export class LedgeRenderComponent implements OnInit, OnChanges {
return JSON.stringify(str);
}
- vsUpdate($event: any[]) {
- for (const mdItem of $event) {
- if (mdItem.type === 'heading') {
- if (mdItem.headingIndex !== this.lastHeading) {
- this.lastHeading = mdItem.headingIndex;
- this.headingChange.emit(mdItem);
- }
- return;
- }
+ vsChange($event: IPageInfo) {
+ if (this.indexHeadingMap[$event.startIndex]) {
+ this.headingChange.emit(this.markdownData[$event.startIndex]);
}
}
}
diff --git a/src/app/features/markdown-render/markdown-render.component.ts b/src/app/features/markdown-render/markdown-render.component.ts
index 6d09aa8b..60153dad 100644
--- a/src/app/features/markdown-render/markdown-render.component.ts
+++ b/src/app/features/markdown-render/markdown-render.component.ts
@@ -48,7 +48,7 @@ export class MarkdownRenderComponent
toItem = 0;
tocFragmentMap = {};
- private tocIndex = 0;
+ private tocIndex = -1;
private lastTocId: string;
private scrollItems: any[] = [];
@@ -69,13 +69,15 @@ export class MarkdownRenderComponent
markedOptions
).bind(this);
if (this.virtualScroll) {
- /* this.router.events.subscribe((event: any) => {
+ this.router.events.subscribe((event: any) => {
if (event instanceof ActivationEnd) {
const activationEnd = event as ActivationEnd;
- const tocIndex = this.tocFragmentMap[encodeURIComponent(activationEnd.snapshot.fragment)];
+ const tocIndex = this.tocFragmentMap[
+ encodeURIComponent(activationEnd.snapshot.fragment)
+ ];
this.toItem = tocIndex;
}
- });*/
+ });
}
}
@@ -154,18 +156,16 @@ export class MarkdownRenderComponent
render() {
const items = this.tocify.tocItems;
- this.tocIndex = 0;
+ this.tocIndex = -1;
this.tocStr = this.renderToc(items).join('');
if (this.tocEl && this.tocEl.nativeElement) {
this.tocEl.nativeElement.innerHTML = this.tocStr;
}
- this.tocIndex = 0;
this.tocLeftStr = this.renderTocLeftPoint(items).join('');
if (this.tocLeftEl && this.tocLeftEl.nativeElement) {
this.tocLeftEl.nativeElement.innerHTML = this.tocLeftStr;
}
- this.tocIndex = 0;
this.tocify.reset();
setTimeout(() => this.startSyncMenu(), 10);
@@ -215,9 +215,12 @@ export class MarkdownRenderComponent
const link = ``;
this.tocFragmentMap[encodeURIComponent(item.anchor)] = this.tocIndex;
if (item.children) {
+ const parentIndex = JSON.stringify(this.tocIndex);
const childrenItems = this.renderToc(item.children);
- return `
-${link}
${childrenItems.join('')}
+ return `
${link}
+
${childrenItems.join('')}
`;
} else {
return `
${link}
`;