fix listScroller
This commit is contained in:
parent
bbb4baef48
commit
c0d81bfb4a
2 changed files with 35 additions and 14 deletions
|
|
@ -26,7 +26,7 @@ import { TooltipContainer as TooltipContainerComponent } from "@components/Toolt
|
|||
import { TooltipFallback } from "@components/TooltipFallback";
|
||||
import { LazyComponent } from "@utils/lazyReact";
|
||||
import * as t from "@vencord/discord-types";
|
||||
import { filters, findCssClassesLazy, mapMangledModuleLazy, waitFor } from "@webpack";
|
||||
import { filters, mapMangledCssClasses, mapMangledModuleLazy, waitFor } from "@webpack";
|
||||
|
||||
import { waitForComponent } from "./internal";
|
||||
|
||||
|
|
@ -77,18 +77,32 @@ export const UserSummaryItem = waitForComponent("UserSummaryItem", filters.compo
|
|||
|
||||
export let createScroller: (scrollbarClassName: string, fadeClassName: string, customThemeClassName: string) => t.ScrollerThin;
|
||||
export let createListScroller: (scrollBarClassName: string, fadeClassName: string, someOtherClassIdkMan: string, resizeObserverClass: typeof ResizeObserver) => t.ListScrollerThin;
|
||||
export const scrollerClasses = findCssClassesLazy("thin", "auto", "fade", "customTheme", "none");
|
||||
export let listScrollerClasses: Record<string, string>;
|
||||
|
||||
const scrollerClassnames = ["thin", "auto", "fade", "customTheme", "none"] as const;
|
||||
const listScrollerClassnames = ["thin", "auto", "fade"] as const;
|
||||
export let scrollerClasses: Record<typeof scrollerClassnames[number], string>;
|
||||
export let listScrollerClasses: Record<typeof listScrollerClassnames[number], string>;
|
||||
|
||||
waitFor(filters.byCode('="ltr",orientation:', "customTheme:", "forwardRef"), m => createScroller = m);
|
||||
waitFor(filters.byCode("getScrollerNode:", "resizeObserver:", "sectionHeight:"), m => createListScroller = m);
|
||||
waitFor(m => m.thin && m.auto && !m.customTheme, m => listScrollerClasses = m);
|
||||
|
||||
waitFor(
|
||||
filters.byClassNames(...scrollerClassnames),
|
||||
m => scrollerClasses = mapMangledCssClasses(m, scrollerClassnames)
|
||||
);
|
||||
{
|
||||
const isListScroller = filters.byClassNames(...listScrollerClassnames);
|
||||
const isNotNormalScroller = filters.byClassNames("customTheme");
|
||||
waitFor(
|
||||
m => isListScroller(m) && !isNotNormalScroller(m),
|
||||
m => listScrollerClasses = mapMangledCssClasses(m, listScrollerClassnames)
|
||||
);
|
||||
}
|
||||
|
||||
export const ScrollerNone = LazyComponent(() => createScroller(scrollerClasses.none, scrollerClasses.fade, scrollerClasses.customTheme));
|
||||
export const ScrollerThin = LazyComponent(() => createScroller(scrollerClasses.thin, scrollerClasses.fade, scrollerClasses.customTheme));
|
||||
export const ScrollerAuto = LazyComponent(() => createScroller(scrollerClasses.auto, scrollerClasses.fade, scrollerClasses.customTheme));
|
||||
|
||||
export const ListScrollerNone = LazyComponent(() => createListScroller(listScrollerClasses.none, listScrollerClasses.fade, "", ResizeObserver));
|
||||
export const ListScrollerThin = LazyComponent(() => createListScroller(listScrollerClasses.thin, listScrollerClasses.fade, "", ResizeObserver));
|
||||
export const ListScrollerAuto = LazyComponent(() => createListScroller(listScrollerClasses.auto, listScrollerClasses.fade, "", ResizeObserver));
|
||||
|
||||
|
|
|
|||
|
|
@ -578,6 +578,21 @@ export function findExportedComponentLazy<T extends object = any>(...props: Prop
|
|||
});
|
||||
}
|
||||
|
||||
export function mapMangledCssClasses<S extends string>(mappedModule: object, classes: S[] | ReadonlyArray<S>): Record<S, string> {
|
||||
const values = Object.values(mappedModule);
|
||||
const mapped = {} as Record<S, string>;
|
||||
|
||||
for (const cls of classes) {
|
||||
const re = makeClassNameRegex(cls);
|
||||
mapped[cls] = values.find(v => typeof v === "string" && re.test(v)) as string;
|
||||
|
||||
if (!mapped[cls]) // this should never happen unless this is used manually with invalid input
|
||||
throw new Error(`mapMangledCssClasses: Invalid input. ${cls} not found in module`);
|
||||
}
|
||||
|
||||
return mapped;
|
||||
}
|
||||
|
||||
export function findCssClasses<S extends string>(...classes: S[]): Record<S, string> {
|
||||
const res = find(filters.byClassNames(...classes), { isIndirect: true, topLevelOnly: true });
|
||||
|
||||
|
|
@ -586,15 +601,7 @@ export function findCssClasses<S extends string>(...classes: S[]): Record<S, str
|
|||
return {} as Record<S, string>;
|
||||
}
|
||||
|
||||
const values = Object.values(res);
|
||||
const mapped = {} as Record<S, string>;
|
||||
|
||||
for (const cls of classes) {
|
||||
const re = makeClassNameRegex(cls);
|
||||
mapped[cls] = values.find(v => typeof v === "string" && re.test(v)) as string;
|
||||
}
|
||||
|
||||
return mapped;
|
||||
return mapMangledCssClasses(res, classes);
|
||||
}
|
||||
|
||||
export function findCssClassesLazy<S extends string>(...classes: S[]) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue