UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 2.19 kB
{"version":3,"file":"use-dimensions.cjs","names":[],"sources":["../../../src/components/OverflowList/use-dimensions.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\n\ninterface ResizeObserverDimensions {\n width: number;\n height: number;\n contentWidth: number;\n contentHeight: number;\n}\nexport function useDimensions<T extends HTMLElement | null>(\n elementRef: React.RefObject<T>\n): ResizeObserverDimensions | null {\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const [dimensions, setDimensions] = useState<ResizeObserverDimensions | null>(null);\n\n useEffect(() => {\n if (!elementRef.current) {\n return;\n }\n\n resizeObserverRef.current = new ResizeObserver((entries) => {\n if (entries[0]) {\n const entry = entries[0];\n const updateDimensions = () => {\n setDimensions({\n width: entry.borderBoxSize[0]?.inlineSize ?? entry.target.clientWidth,\n height: entry.borderBoxSize[0]?.blockSize ?? entry.target.clientHeight,\n contentWidth: entry.contentRect.width,\n contentHeight: entry.contentRect.height,\n });\n };\n\n flushSync(updateDimensions);\n }\n });\n\n resizeObserverRef.current.observe(elementRef.current);\n\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n };\n }, [elementRef.current]);\n\n return dimensions;\n}\n"],"mappings":";;;;;AASA,SAAgB,cACd,YACiC;CACjC,MAAM,qBAAA,GAAA,MAAA,QAAkD,KAAK;CAC7D,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA2D,KAAK;AAEnF,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,WAAW,QACd;AAGF,oBAAkB,UAAU,IAAI,gBAAgB,YAAY;AAC1D,OAAI,QAAQ,IAAI;IACd,MAAM,QAAQ,QAAQ;IACtB,MAAM,yBAAyB;AAC7B,mBAAc;MACZ,OAAO,MAAM,cAAc,IAAI,cAAc,MAAM,OAAO;MAC1D,QAAQ,MAAM,cAAc,IAAI,aAAa,MAAM,OAAO;MAC1D,cAAc,MAAM,YAAY;MAChC,eAAe,MAAM,YAAY;MAClC,CAAC;;AAGJ,KAAA,GAAA,UAAA,WAAU,iBAAiB;;IAE7B;AAEF,oBAAkB,QAAQ,QAAQ,WAAW,QAAQ;AAErD,eAAa;AACX,OAAI,kBAAkB,SAAS;AAC7B,sBAAkB,QAAQ,YAAY;AACtC,sBAAkB,UAAU;;;IAG/B,CAAC,WAAW,QAAQ,CAAC;AAExB,QAAO"}