Skip to content

Commit 8afc8f6

Browse files
committed
fix: Removed resize-observer-polyfill in favour of @juggle/resize-observer.
The latter is better maintained, and does not include now-unnecessary ResizeObserver type definitions that also conflicts with newer Typescript versions. I consider this a breaking change because there may be unexpected differences between the polyfills. Also updated all dependencies. Removed the ResizeObserver type definition, as TS now includes it.
1 parent 10116cc commit 8afc8f6

File tree

10 files changed

+3195
-4692
lines changed

10 files changed

+3195
-4692
lines changed

.github/workflows/testing.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ jobs:
2020
node-version: '12.x'
2121
- name: Installing Dependencies
2222
run: yarn install --frozen-lockfile
23-
- name: Removing Conflicting TypeScript ResizeObserver definition
24-
# Without this, running `tsc -p tests` fails, not sure how else to fix it.
25-
run: rm node_modules/resize-observer-polyfill/src/index.d.ts
2623
- name: Checking File Size
2724
run: yarn check:size
2825
- name: Checking Types

.husky/pre-commit

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
. "$(dirname "$0")/_/husky.sh"
3+
4+
npx --no-install lint-staged

README.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,13 +241,32 @@ By default the library provides transpiled ES5 modules in CJS / ESM module forma
241241
Polyfilling is recommended to be done in the host app, and not within imported
242242
libraries, as that way consumers have control over the exact polyfills being used.
243243

244-
That said, there's a [polyfilled](https://github.com/que-etc/resize-observer-polyfill)
245-
CJS module that can be used for convenience (Not affecting globals):
244+
That said, there's a [polyfilled](https://github.com/juggle/resize-observer)
245+
CJS module that can be used for convenience:
246246

247-
```js
247+
```ts
248248
import useResizeObserver from "use-resize-observer/polyfilled";
249249
```
250250

251+
Note that using the above will use the polyfill, [even if the native ResizeObserver is available](https://github.com/juggle/resize-observer#basic-usage).
252+
253+
To use the polyfill as a fallback instead only when the native RO is unavailable, you can polyfill yourself instead,
254+
either in your app's entry file, or you could create a local useResizeObserver module, like so:
255+
256+
```ts
257+
// useResizeObserver.ts
258+
import { ResizeObserver } from "@juggle/resize-observer";
259+
import useResizeObserver from "use-resize-observer";
260+
261+
if (!window.ResizeObserver) {
262+
window.ResizeObserver = ResizeObserver;
263+
}
264+
265+
export default useResizeObserver;
266+
```
267+
268+
The same technique can also be used to provide any of your preferred ResizeObserver polyfills out there.
269+
251270
## Related
252271

253272
- [@zeecoder/container-query](https://github.com/ZeeCoder/container-query)

karma.conf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module.exports = function (karmaConfig) {
2121

2222
const config = {
2323
basePath: ".",
24-
frameworks: ["jasmine"],
24+
frameworks: ["jasmine", "webpack"],
2525
files: [
2626
{
2727
pattern: testFilePattern,

package.json

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,8 @@
4242
"karma:watch": "karma start",
4343
"prepublish": "yarn build",
4444
"test:bs:modern": "yarn karma:run --useBrowserStack",
45-
"test:bs:ie": "yarn karma:run --useBrowserStack --runIeTests"
46-
},
47-
"husky": {
48-
"hooks": {
49-
"pre-commit": "lint-staged"
50-
}
45+
"test:bs:ie": "yarn karma:run --useBrowserStack --runIeTests",
46+
"prepare": "husky install"
5147
},
5248
"lint-staged": {
5349
"*.{js,ts,md}": [
@@ -81,35 +77,35 @@
8177
"@semantic-release/github": "^7.1.1",
8278
"@semantic-release/npm": "^7.0.6",
8379
"@semantic-release/release-notes-generator": "^9.0.1",
84-
"@size-limit/preset-small-lib": "^4.4.5",
85-
"@testing-library/react": "^11.0.4",
86-
"@types/karma": "^5.0.0",
87-
"@types/karma-jasmine": "^3.1.0",
88-
"@types/react": "^16.9.34",
89-
"@types/react-dom": "^16.9.6",
80+
"@size-limit/preset-small-lib": "^5.0.1",
81+
"@testing-library/react": "^12.0.0",
82+
"@types/karma": "^6.3.1",
83+
"@types/karma-jasmine": "^4.0.1",
84+
"@types/react": "^17.0.15",
85+
"@types/react-dom": "^17.0.9",
9086
"babel-loader": "^8.1.0",
91-
"delay": "^4.1.0",
92-
"husky": "^4.2.5",
93-
"karma": "^5.0.1",
87+
"delay": "^5.0.0",
88+
"husky": "^7.0.0",
89+
"karma": "^6.3.4",
9490
"karma-browserstack-launcher": "^1.6.0",
9591
"karma-chrome-launcher": "^3.0.0",
96-
"karma-firefox-launcher": "^1.3.0",
92+
"karma-firefox-launcher": "^2.1.1",
9793
"karma-jasmine": "^4.0.1",
9894
"karma-sourcemap-loader": "^0.3.7",
9995
"karma-spec-reporter": "^0.0.32",
100-
"karma-webpack": "^4.0.2",
101-
"lint-staged": "^10.1.3",
96+
"karma-webpack": "^5.0.0",
97+
"lint-staged": "^11.1.1",
10298
"npm-run-all": "^4.1.5",
10399
"prettier": "^2.0.4",
104-
"react": "^16.9.0",
100+
"react": "^17.0.2",
105101
"react-app-polyfill": "^2.0.0",
106-
"react-dom": "^16.9.0",
102+
"react-dom": "^17.0.2",
107103
"rollup": "^2.6.1",
108104
"semantic-release": "^17.2.2",
109-
"size-limit": "^4.4.5",
105+
"size-limit": "^5.0.1",
110106
"typescript": "^4.0.3"
111107
},
112108
"dependencies": {
113-
"resize-observer-polyfill": "^1.5.1"
109+
"@juggle/resize-observer": "^3.3.1"
114110
}
115111
}

rollup.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ const getConfig = ({ polyfill = false } = {}) => {
2525
exports: "default",
2626
},
2727
];
28-
config.external.push("resize-observer-polyfill");
28+
config.external.push("@juggle/resize-observer");
2929
config.plugins.push(
3030
inject({
31-
ResizeObserver: "resize-observer-polyfill",
31+
ResizeObserver: ["@juggle/resize-observer", "ResizeObserver"],
3232
})
3333
);
3434
} else {

src/ResizeObserver.d.ts

Lines changed: 0 additions & 245 deletions
This file was deleted.

tests/ie/polyfilled.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ import {
77
render,
88
} from "../utils";
99
import useResizeObserver from "../../polyfilled";
10-
import delay from "../utils/delay";
11-
// @ts-ignore
12-
import ROP from "resize-observer-polyfill";
10+
import { ResizeObserver as ROP } from "@juggle/resize-observer";
1311
import awaitNextFrame from "../utils/awaitNextFrame";
1412

1513
/**

0 commit comments

Comments
 (0)