From c827cf8e7ecb04e5b1dc95f08752db19b429196f Mon Sep 17 00:00:00 2001 From: Rene Date: Sun, 18 Apr 2021 16:08:02 +0200 Subject: [PATCH] fix domobserver bug --- .../overlayscrollbars/src/observers/domObserver.ts | 13 +++++++++---- .../browser/observers/domObserver/index.browser.ts | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/overlayscrollbars/src/observers/domObserver.ts b/packages/overlayscrollbars/src/observers/domObserver.ts index ab72f03..666303c 100644 --- a/packages/overlayscrollbars/src/observers/domObserver.ts +++ b/packages/overlayscrollbars/src/observers/domObserver.ts @@ -222,8 +222,13 @@ export const createDOMObserver = ( contentChanged = contentChanged || contentFinalChanged; childListChanged = childListChanged || isChildListType; } - // else if is target observer and target attr changed - else if (attributeChanged && !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null)) { + // if is target observer and target attr changed + if ( + !isContentObserver && + targetIsMutationTarget && + attributeChanged && + !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null) + ) { push(targetChangedAttrs, attributeName!); targetStyleChanged = targetStyleChanged || styleChangingAttrChanged; } @@ -239,8 +244,8 @@ export const createDOMObserver = ( ); } - if (isContentObserver && contentChanged) { - (callback as DOMContentObserverCallback)(contentChanged); + if (isContentObserver) { + contentChanged && (callback as DOMContentObserverCallback)(contentChanged); } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) { (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged); } diff --git a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts b/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts index 12f9018..44ef84c 100644 --- a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts @@ -438,6 +438,8 @@ const addRemoveImgElmsFn = async () => { ['img', 'something2'], ['img', null], ['img', undefined], + [null, null], + [undefined, undefined], ['img', () => 'hi'], ['img', () => null], ['img', () => undefined],