mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-02-23 13:43:07 +01:00
improve element size observer hook props
This commit is contained in:
parent
3655b38dd9
commit
db3b6591d5
3 changed files with 12 additions and 9 deletions
|
@ -46,7 +46,7 @@ export function RoomCardGrid({ children }: { children: ReactNode }) {
|
|||
const gridRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
useElementSizeObserver(
|
||||
gridRef,
|
||||
useCallback(() => gridRef.current, []),
|
||||
useCallback((width, _, target) => setGridColumnCount(target, getGridColumnCount(width)), [])
|
||||
);
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
import { RefObject, useCallback } from 'react';
|
||||
import { useCallback } from 'react';
|
||||
import { getResizeObserverEntry, useResizeObserver } from './useResizeObserver';
|
||||
|
||||
export const useElementSizeObserver = <T extends Element>(
|
||||
elementRef: RefObject<T>,
|
||||
element: () => T | null,
|
||||
onResize: (width: number, height: number, element: T) => void
|
||||
) => {
|
||||
useResizeObserver(
|
||||
useCallback(
|
||||
(entries) => {
|
||||
const target = elementRef.current;
|
||||
const target = element();
|
||||
if (!target) return;
|
||||
const targetEntry = getResizeObserverEntry(target, entries);
|
||||
if (targetEntry) {
|
||||
|
@ -16,8 +16,8 @@ export const useElementSizeObserver = <T extends Element>(
|
|||
onResize(width, height, target);
|
||||
}
|
||||
},
|
||||
[elementRef, onResize]
|
||||
[element, onResize]
|
||||
),
|
||||
useCallback(() => elementRef.current, [elementRef])
|
||||
element
|
||||
);
|
||||
};
|
||||
|
|
|
@ -102,10 +102,10 @@ import {
|
|||
trimReplyFromFormattedBody,
|
||||
} from '../../utils/room';
|
||||
import { sanitizeText } from '../../utils/sanitize';
|
||||
import { useScreenSize } from '../../hooks/useScreenSize';
|
||||
import { CommandAutocomplete } from './CommandAutocomplete';
|
||||
import { Command, SHRUG, useCommands } from '../../hooks/useCommands';
|
||||
import { mobileOrTablet } from '../../utils/user-agent';
|
||||
import { useElementSizeObserver } from '../../hooks/useElementSizeObserver';
|
||||
|
||||
interface RoomInputProps {
|
||||
editor: Editor;
|
||||
|
@ -171,9 +171,12 @@ export const RoomInput = forwardRef<HTMLDivElement, RoomInputProps>(
|
|||
const pickFile = useFilePicker(handleFiles, true);
|
||||
const handlePaste = useFilePasteHandler(handleFiles);
|
||||
const dropZoneVisible = useFileDropZone(roomViewRef, handleFiles);
|
||||
const [hideStickerBtn, setHideStickerBtn] = useState(document.body.clientWidth < 500);
|
||||
|
||||
const [, screenWidth] = useScreenSize();
|
||||
const hideStickerBtn = screenWidth < 500;
|
||||
useElementSizeObserver(
|
||||
useCallback(() => document.body, []),
|
||||
useCallback((width) => setHideStickerBtn(width < 500), [])
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
Transforms.insertFragment(editor, msgDraft);
|
||||
|
|
Loading…
Reference in a new issue