[Perf] Teact: Simplify extra classes management
This commit is contained in:
parent
dfb54bfcc9
commit
590a6f5b4c
@ -152,7 +152,9 @@ function Transition({
|
|||||||
addExtraClass(el, CLASSES.slide);
|
addExtraClass(el, CLASSES.slide);
|
||||||
|
|
||||||
if (slideClassName) {
|
if (slideClassName) {
|
||||||
addExtraClass(el, slideClassName);
|
slideClassName.split(/\s+/).forEach((token) => {
|
||||||
|
addExtraClass(el, token);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -802,18 +802,7 @@ function updateStyle(element: DOMElement, value: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addExtraClass(element: DOMElement, className: string, forceSingle = false) {
|
export function addExtraClass(element: DOMElement, className: string) {
|
||||||
if (!forceSingle) {
|
|
||||||
const classNames = className.split(' ');
|
|
||||||
if (classNames.length > 1) {
|
|
||||||
for (const cn of classNames) {
|
|
||||||
addExtraClass(element, cn, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
element.classList.add(className);
|
element.classList.add(className);
|
||||||
|
|
||||||
const classList = extraClasses.get(element);
|
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) {
|
export function removeExtraClass(element: DOMElement, className: string) {
|
||||||
if (!forceSingle) {
|
|
||||||
const classNames = className.split(' ');
|
|
||||||
if (classNames.length > 1) {
|
|
||||||
for (const cn of classNames) {
|
|
||||||
removeExtraClass(element, cn, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
element.classList.remove(className);
|
element.classList.remove(className);
|
||||||
|
|
||||||
const classList = extraClasses.get(element);
|
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) {
|
export function toggleExtraClass(element: DOMElement, className: string, force?: boolean) {
|
||||||
if (!forceSingle) {
|
if (force === true) {
|
||||||
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)) {
|
|
||||||
addExtraClass(element, className);
|
addExtraClass(element, className);
|
||||||
} else {
|
} else if (force === false) {
|
||||||
removeExtraClass(element, className);
|
removeExtraClass(element, className);
|
||||||
|
} else if (extraClasses.get(element)?.has(className)) {
|
||||||
|
removeExtraClass(element, className);
|
||||||
|
} else {
|
||||||
|
addExtraClass(element, className);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user