Skip to content

Commit

Permalink
Trigger resizer when all fonts are loaded
Browse files Browse the repository at this point in the history
  • Loading branch information
ArnaudRinquin committed Feb 6, 2023
1 parent 737bddc commit f0ef52e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/tricky-jokes-wave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'react-textarea-autosize': patch
---

Support custom fonts loading
17 changes: 17 additions & 0 deletions src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,20 @@ export const useWindowResizeListener = (listener: (event: UIEvent) => any) => {
};
}, []);
};

export const useFontsLoadedListener = (listener: () => any) => {
const latestListener = useLatest(listener);

React.useLayoutEffect(() => {
const handler: typeof listener = () => {
console.log('loaded!');
latestListener.current();
};

document.fonts.addEventListener('loadingdone', handler);

return () => {
document.fonts.removeEventListener('loadingdone', handler);
};
}, []);
};
7 changes: 6 additions & 1 deletion src/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import * as React from 'react';
import calculateNodeHeight from './calculateNodeHeight';
import getSizingData, { SizingData } from './getSizingData';
import { useComposedRef, useWindowResizeListener } from './hooks';
import {
useComposedRef,
useWindowResizeListener,
useFontsLoadedListener,
} from './hooks';
import { noop } from './utils';

type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;
Expand Down Expand Up @@ -93,6 +97,7 @@ const TextareaAutosize: React.ForwardRefRenderFunction<
if (typeof document !== 'undefined') {
React.useLayoutEffect(resizeTextarea);
useWindowResizeListener(resizeTextarea);
useFontsLoadedListener(resizeTextarea);
}

return <textarea {...props} onChange={handleChange} ref={ref} />;
Expand Down

0 comments on commit f0ef52e

Please sign in to comment.