[Perf] Teact: Simplify extra classes management

This commit is contained in:
Alexander Zinchuk 2024-09-19 20:43:25 +02:00
parent dfb54bfcc9
commit 590a6f5b4c
2 changed files with 12 additions and 41 deletions

View File

@ -152,7 +152,9 @@ function Transition({
addExtraClass(el, CLASSES.slide);
if (slideClassName) {
addExtraClass(el, slideClassName);
slideClassName.split(/\s+/).forEach((token) => {
addExtraClass(el, token);
});
}
});

View File

@ -802,18 +802,7 @@ function updateStyle(element: DOMElement, value: string) {
}
}
export function addExtraClass(element: DOMElement, className: string, forceSingle = false) {
if (!forceSingle) {
const classNames = className.split(' ');
if (classNames.length > 1) {
for (const cn of classNames) {
addExtraClass(element, cn, true);
}
return;
}
}
export function addExtraClass(element: DOMElement, className: string) {
element.classList.add(className);
const classList = extraClasses.get(element);
@ -824,18 +813,7 @@ export function addExtraClass(element: DOMElement, className: string, forceSingl
}
}
export function removeExtraClass(element: DOMElement, className: string, forceSingle = false) {
if (!forceSingle) {
const classNames = className.split(' ');
if (classNames.length > 1) {
for (const cn of classNames) {
removeExtraClass(element, cn, true);
}
return;
}
}
export function removeExtraClass(element: DOMElement, className: string) {
element.classList.remove(className);
const classList = extraClasses.get(element);
@ -848,24 +826,15 @@ export function removeExtraClass(element: DOMElement, className: string, forceSi
}
}
export function toggleExtraClass(element: DOMElement, className: string, force?: boolean, forceSingle = false) {
if (!forceSingle) {
const classNames = className.split(' ');
if (classNames.length > 1) {
for (const cn of classNames) {
toggleExtraClass(element, cn, force, true);
}
return;
}
}
element.classList.toggle(className, force);
if (element.classList.contains(className)) {
export function toggleExtraClass(element: DOMElement, className: string, force?: boolean) {
if (force === true) {
addExtraClass(element, className);
} else {
} else if (force === false) {
removeExtraClass(element, className);
} else if (extraClasses.get(element)?.has(className)) {
removeExtraClass(element, className);
} else {
addExtraClass(element, className);
}
}