From 49ad82b7b678cc71355baaf603a2e85e46d6b141 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Wed, 13 Jan 2021 14:09:05 +0000 Subject: [PATCH 1/6] typescript@4.2 --- .storybook/preview.tsx | 2 -- package.json | 2 +- src/hooks/useGridDimensions.ts | 19 +++---------------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 2d8e4dda81..f62520183d 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -3,8 +3,6 @@ import '../style/index.less'; import '../stories/index.less'; import { ResizeObserver as Polyfill } from '@juggle/resize-observer'; -// @ts-expect-error if (typeof ResizeObserver === 'undefined') { - // @ts-expect-error window.ResizeObserver = Polyfill; } diff --git a/package.json b/package.json index fde64b4ee8..a57694f821 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "react-select": "^3.1.1", "react-sortable-hoc": "^1.11.0", "rollup": "^2.35.1", - "typescript": "~4.1.3" + "typescript": "beta" }, "peerDependencies": { "react": "^16.14 || ^17.0", diff --git a/src/hooks/useGridDimensions.ts b/src/hooks/useGridDimensions.ts index 5c22fe4495..c4b1f73529 100644 --- a/src/hooks/useGridDimensions.ts +++ b/src/hooks/useGridDimensions.ts @@ -1,25 +1,12 @@ import { useRef, useState, useLayoutEffect } from 'react'; -// https://github.com/microsoft/TypeScript/issues/37861 -interface ResizeObserverEntry { - contentRect: { - width: number; - height: number; - }; -} - -type ResizeObserver = new (callback: (entries: readonly ResizeObserverEntry[]) => void) => { - observe: (target: Element) => void; - disconnect: () => void; -}; - -export function useGridDimensions(): [React.RefObject, number, number] { +export function useGridDimensions() { const gridRef = useRef(null); const [gridWidth, setGridWidth] = useState(1); const [gridHeight, setGridHeight] = useState(1); useLayoutEffect(() => { - const { ResizeObserver } = window as typeof window & { ResizeObserver: ResizeObserver }; + const { ResizeObserver } = window; // don't break in jest/jsdom and browsers that don't support ResizeObserver if (ResizeObserver == null) return; @@ -37,5 +24,5 @@ export function useGridDimensions(): [React.RefObject, number, n }; }, []); - return [gridRef, gridWidth, gridHeight]; + return [gridRef, gridWidth, gridHeight] as const; } From 8784636617640fe121a7eda986468292e129b6c7 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Fri, 5 Feb 2021 13:07:44 +0000 Subject: [PATCH 2/6] tweak ResizeObserver fake polyfill --- test/setup.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/test/setup.ts b/test/setup.ts index e17e632332..a6c0717b09 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,11 +1,16 @@ -// @ts-expect-error -window.ResizeObserver ??= function ResizeObserver(callback: () => void) { - callback(); +window.ResizeObserver ??= class { + callback: ResizeObserverCallback; - return { - observe() {}, - disconnect() {} - }; + constructor(callback: ResizeObserverCallback) { + this.callback = callback; + } + + observe() { + this.callback([], this); + } + + unobserve() {} + disconnect() {} }; // patch clientWidth/clientHeight to pretend we're rendering DataGrid at 1080p From e3c8b7613266d538eeada9d781f048d9a6ccd21e Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Fri, 12 Feb 2021 18:59:37 +0000 Subject: [PATCH 3/6] rc --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89695426b7..fb9a3488cd 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "react-sortable-hoc": "^1.11.0", "rollup": "^2.35.1", "rollup-plugin-postcss": "^4.0.0", - "typescript": "beta" + "typescript": "rc" }, "peerDependencies": { "react": "^16.14 || ^17.0", From fb33511f6d22634ebf1e0b475982c1bc969b8649 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Fri, 12 Feb 2021 19:01:04 +0000 Subject: [PATCH 4/6] Fix TS1208 --- test/setup.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/setup.ts b/test/setup.ts index a6c0717b09..936454735a 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -59,3 +59,5 @@ Object.defineProperties(Element.prototype, { } } }); + +export {}; From 7711adedb6ff8820e57115eaf4419ae2c5e634a5 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Fri, 12 Feb 2021 19:11:08 +0000 Subject: [PATCH 5/6] simplify --- .storybook/preview.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index f65d703fc9..820edc8ecc 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -2,9 +2,7 @@ import 'core-js/stable'; import { ResizeObserver as Polyfill } from '@juggle/resize-observer'; import { css } from '@linaria/core'; -if (typeof ResizeObserver === 'undefined') { - window.ResizeObserver = Polyfill; -} +window.ResizeObserver ??= Polyfill; css` :global() { From 41995ffb2eb085c44fe177fe250696d6440974a3 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 23 Feb 2021 22:38:11 +0000 Subject: [PATCH 6/6] stable release --- package.json | 2 +- src/hooks/useGridDimensions.ts | 2 +- test/setup.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 975ac0209a..c93854e8d1 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "react-sortable-hoc": "^1.11.0", "rollup": "^2.39.0", "rollup-plugin-postcss": "^4.0.0", - "typescript": "rc" + "typescript": "~4.2.2" }, "peerDependencies": { "react": "^16.14 || ^17.0", diff --git a/src/hooks/useGridDimensions.ts b/src/hooks/useGridDimensions.ts index 5408f54bf3..2df725fd57 100644 --- a/src/hooks/useGridDimensions.ts +++ b/src/hooks/useGridDimensions.ts @@ -27,5 +27,5 @@ export function useGridDimensions(): [ref: React.RefObject, widt }; }, []); - return [gridRef, gridWidth, gridHeight] as const; + return [gridRef, gridWidth, gridHeight]; } diff --git a/test/setup.ts b/test/setup.ts index 936454735a..6dc68048d6 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,3 +1,5 @@ +import 'core-js/stable'; + window.ResizeObserver ??= class { callback: ResizeObserverCallback; @@ -59,5 +61,3 @@ Object.defineProperties(Element.prototype, { } } }); - -export {};