Skip to content

Commit c5459af

Browse files
committed
Fixed anchor following not bringing last items into view
1 parent c330a08 commit c5459af

File tree

6 files changed

+25
-18
lines changed

6 files changed

+25
-18
lines changed

material/assets/javascripts/bundle.6bd5f0ae.min.js.map

-8
This file was deleted.

material/assets/javascripts/bundle.6bd5f0ae.min.js renamed to material/assets/javascripts/bundle.6df46069.min.js

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

material/assets/javascripts/bundle.6df46069.min.js.map

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

material/base.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@
240240
</script>
241241
{% endblock %}
242242
{% block scripts %}
243-
<script src="{{ 'assets/javascripts/bundle.6bd5f0ae.min.js' | url }}"></script>
243+
<script src="{{ 'assets/javascripts/bundle.6df46069.min.js' | url }}"></script>
244244
{% for path in config.extra_javascript %}
245245
<script src="{{ path | url }}"></script>
246246
{% endfor %}

src/assets/javascripts/bundle.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,9 @@ const content$ = defer(() => merge(
273273

274274
/* Table of contents */
275275
...getComponentElements("toc")
276-
.map(el => mountTableOfContents(el, { viewport$, header$, target$ })),
276+
.map(el => mountTableOfContents(el, {
277+
viewport$, header$, main$, target$
278+
})),
277279

278280
/* Back-to-top button */
279281
...getComponentElements("top")

src/assets/javascripts/components/toc/index.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import {
2424
Observable,
2525
Subject,
26+
asyncScheduler,
2627
bufferCount,
2728
combineLatestWith,
2829
debounceTime,
@@ -35,6 +36,7 @@ import {
3536
ignoreElements,
3637
map,
3738
merge,
39+
observeOn,
3840
of,
3941
repeat,
4042
scan,
@@ -64,6 +66,7 @@ import {
6466
getComponentElement
6567
} from "../_"
6668
import { Header } from "../header"
69+
import { Main } from "../main"
6770

6871
/* ----------------------------------------------------------------------------
6972
* Types
@@ -95,6 +98,7 @@ interface WatchOptions {
9598
interface MountOptions {
9699
viewport$: Observable<Viewport> /* Viewport observable */
97100
header$: Observable<Header> /* Header observable */
101+
main$: Observable<Main> /* Main area observable */
98102
target$: Observable<HTMLElement> /* Location target observable */
99103
}
100104

@@ -275,7 +279,7 @@ export function watchTableOfContents(
275279
* @returns Table of contents component observable
276280
*/
277281
export function mountTableOfContents(
278-
el: HTMLElement, { viewport$, header$, target$ }: MountOptions
282+
el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions
279283
): Observable<Component<TableOfContents>> {
280284
return defer(() => {
281285
const push$ = new Subject<TableOfContents>()
@@ -307,13 +311,14 @@ export function mountTableOfContents(
307311
viewport$.pipe(debounceTime(250), map(() => "smooth" as const))
308312
)
309313

310-
/* Bring active anchor into view */
314+
/* Bring active anchor into view */ // @todo: refactor
311315
push$
312316
.pipe(
313317
filter(({ prev }) => prev.length > 0),
318+
combineLatestWith(main$.pipe(observeOn(asyncScheduler))),
314319
withLatestFrom(smooth$)
315320
)
316-
.subscribe(([{ prev }, behavior]) => {
321+
.subscribe(([[{ prev }], behavior]) => {
317322
const [anchor] = prev[prev.length - 1]
318323
if (anchor.offsetHeight) {
319324

0 commit comments

Comments
 (0)