Skip to content

Commit 183fb94

Browse files
TrevorBurnhamjust-boris
authored andcommitted
chore: Remove ResizeObserver polyfill (#3790)
Co-authored-by: Boris Serdiuk <[email protected]>
1 parent 7a4c143 commit 183fb94

File tree

5 files changed

+40
-6
lines changed

5 files changed

+40
-6
lines changed

__mocks__/@juggle/resize-observer.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
/* eslint-disable header/header */
33
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
44
// SPDX-License-Identifier: Apache-2.0
5-
import { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';
65

76
const callbackField = Symbol();
87

@@ -37,5 +36,33 @@ class MockResizeObserver implements ResizeObserver {
3736
}
3837
}
3938

40-
export { ResizeObserverEntry };
39+
class MockResizeObserverEntry implements ResizeObserverEntry {
40+
readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
41+
readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
42+
readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;
43+
readonly contentRect: DOMRectReadOnly;
44+
readonly target: Element;
45+
46+
constructor(target: Element) {
47+
this.target = target;
48+
const size = { inlineSize: 0, blockSize: 0 };
49+
this.borderBoxSize = [size];
50+
this.contentBoxSize = [size];
51+
this.devicePixelContentBoxSize = [size];
52+
// Create a simple DOMRectReadOnly mock for JSDOM compatibility
53+
this.contentRect = {
54+
x: 0,
55+
y: 0,
56+
width: 0,
57+
height: 0,
58+
top: 0,
59+
right: 0,
60+
bottom: 0,
61+
left: 0,
62+
toJSON: () => ({}),
63+
} as DOMRectReadOnly;
64+
}
65+
}
66+
4167
export { MockResizeObserver as ResizeObserver };
68+
export { MockResizeObserverEntry as ResizeObserverEntry };

build-tools/jest/setup.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,14 @@ if (typeof window !== 'undefined') {
77
require('@testing-library/jest-dom/extend-expect');
88
const { cleanup } = require('@testing-library/react');
99
afterEach(cleanup);
10+
11+
// Mock ResizeObserver for JSDOM environment
12+
global.ResizeObserver = class ResizeObserver {
13+
constructor(callback) {
14+
this.callback = callback;
15+
}
16+
observe() {}
17+
unobserve() {}
18+
disconnect() {}
19+
};
1020
}

package-lock.json

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
"@dnd-kit/core": "^6.0.8",
3333
"@dnd-kit/sortable": "^7.0.2",
3434
"@dnd-kit/utilities": "^3.2.1",
35-
"@juggle/resize-observer": "^3.3.1",
3635
"ace-builds": "^1.34.0",
3736
"balanced-match": "^1.0.2",
3837
"clsx": "^1.1.0",

src/table/sticky-scrollbar/use-sticky-scrollbar.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33
import { RefObject, useEffect, useState } from 'react';
4-
import { ResizeObserver } from '@juggle/resize-observer';
54

65
import { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';
76

@@ -85,7 +84,7 @@ export function useStickyScrollbar(
8584

8685
// Update scrollbar position wrapper or table size change.
8786
useEffect(() => {
88-
if (wrapperRef.current && tableRef.current) {
87+
if (wrapperRef.current && tableRef.current && typeof ResizeObserver !== 'undefined') {
8988
const observer = new ResizeObserver(() => {
9089
if (scrollbarContentRef.current) {
9190
updatePosition(

0 commit comments

Comments
 (0)