diff --git a/web/src/scroll_util.ts b/web/src/scroll_util.ts index a4be25b85a..ded4918427 100644 --- a/web/src/scroll_util.ts +++ b/web/src/scroll_util.ts @@ -1,4 +1,5 @@ import $ from "jquery"; +import assert from "minimalistic-assert"; import SimpleBar from "simplebar"; // This type is helpful for testing, where we may have a dummy object instead of an actual jquery object. @@ -6,9 +7,10 @@ type JQueryOrZJQuery = {__zjquery?: true} & JQuery; export function get_content_element($element: JQuery): JQuery { const element = $element.expectOne()[0]; - const sb = SimpleBar.instances.get(element); + const sb: unknown = SimpleBar.instances.get(element); if (sb) { - return $(sb.getContentElement()); + assert(sb instanceof SimpleBar); // https://github.com/Grsmto/simplebar/pull/689 + return $(sb.getContentElement()!); } return $element; } @@ -20,9 +22,10 @@ export function get_scroll_element($element: JQueryOrZJQuery): JQuery { } const element = $element.expectOne()[0]; - const sb = SimpleBar.instances.get(element); + const sb: unknown = SimpleBar.instances.get(element); if (sb) { - return $(sb.getScrollElement()); + assert(sb instanceof SimpleBar); // https://github.com/Grsmto/simplebar/pull/689 + return $(sb.getScrollElement()!); } else if ("simplebar" in element.dataset) { // The SimpleBar mutation observer hasn’t processed this element yet. // Create the SimpleBar early in case we need to add event listeners. @@ -33,9 +36,10 @@ export function get_scroll_element($element: JQueryOrZJQuery): JQuery { export function reset_scrollbar($element: JQuery): void { const element = $element.expectOne()[0]; - const sb = SimpleBar.instances.get(element); + const sb: unknown = SimpleBar.instances.get(element); if (sb) { - sb.getScrollElement().scrollTop = 0; + assert(sb instanceof SimpleBar); // https://github.com/Grsmto/simplebar/pull/689 + sb.getScrollElement()!.scrollTop = 0; } else { element.scrollTop = 0; }