@nlabs/arkhamjs-utils-react
Version:
ArkhamJS React Utilities
3 lines (2 loc) • 3.69 kB
JavaScript
import{useCallback as u,useLayoutEffect as f,useState as o}from"react";const s=e=>{if(!e)return{height:void 0,width:void 0};const{offsetHeight:i,offsetWidth:n}=e;return{height:i,width:n}},z=e=>{const[i,n]=o(()=>s(e)),t=u(()=>{e&&n(s(e))},[e]);return f(()=>{if(e){if(t(),typeof ResizeObserver=="function"){const r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}}return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)}},[e,t]),i};export{z as useComponentSize};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3VzZUNvbXBvbmVudFNpemUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIwLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGdldENvbXBvbmVudFNpemUgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gIGlmKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIHtoZWlnaHQ6IHVuZGVmaW5lZCwgd2lkdGg6IHVuZGVmaW5lZH07XG4gIH1cblxuICBjb25zdCB7b2Zmc2V0SGVpZ2h0OiBoZWlnaHQsIG9mZnNldFdpZHRoOiB3aWR0aH0gPSBlbGVtZW50O1xuICByZXR1cm4ge2hlaWdodCwgd2lkdGh9O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNvbXBvbmVudFNpemUgPSAoY29tcG9uZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgY29uc3QgW2NvbXBvbmVudFNpemUsIHNldENvbXBvbmVudFNpemVdID0gdXNlU3RhdGUoKCkgPT4gZ2V0Q29tcG9uZW50U2l6ZShjb21wb25lbnQpKTtcblxuICBjb25zdCBvblJlc2l6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZihjb21wb25lbnQpIHtcbiAgICAgIHNldENvbXBvbmVudFNpemUoZ2V0Q29tcG9uZW50U2l6ZShjb21wb25lbnQpKTtcbiAgICB9XG4gIH0sIFtjb21wb25lbnRdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmKCFjb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgb25SZXNpemUoKTtcblxuICAgIC8vIFVzZSBSZXNpemVPYnNlcnZlciBpZiBhdmFpbGFibGUgKG1vcmUgZWZmaWNpZW50IHRoYW4gd2luZG93IHJlc2l6ZSlcbiAgICBpZih0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKG9uUmVzaXplKTtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoY29tcG9uZW50KTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byB3aW5kb3cgcmVzaXplXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcbiAgfSwgW2NvbXBvbmVudCwgb25SZXNpemVdKTtcblxuICByZXR1cm4gY29tcG9uZW50U2l6ZTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLGVBQUFBLEVBQWEsbUJBQUFDLEVBQWlCLFlBQUFDLE1BQWUsUUFFckQsTUFBTUMsRUFBb0JDLEdBQWdDLENBQ3hELEdBQUcsQ0FBQ0EsRUFDRixNQUFPLENBQUMsT0FBUSxPQUFXLE1BQU8sTUFBUyxFQUc3QyxLQUFNLENBQUMsYUFBY0MsRUFBUSxZQUFhQyxDQUFLLEVBQUlGLEVBQ25ELE1BQU8sQ0FBQyxPQUFBQyxFQUFRLE1BQUFDLENBQUssQ0FDdkIsRUFFYUMsRUFBb0JDLEdBQWtDLENBQ2pFLEtBQU0sQ0FBQ0MsRUFBZUMsQ0FBZ0IsRUFBSVIsRUFBUyxJQUFNQyxFQUFpQkssQ0FBUyxDQUFDLEVBRTlFRyxFQUFXWCxFQUFZLElBQU0sQ0FDOUJRLEdBQ0RFLEVBQWlCUCxFQUFpQkssQ0FBUyxDQUFDLENBRWhELEVBQUcsQ0FBQ0EsQ0FBUyxDQUFDLEVBRWQsT0FBQVAsRUFBZ0IsSUFBTSxDQUNwQixHQUFJTyxFQU9KLElBSEFHLEVBQVMsRUFHTixPQUFPLGdCQUFtQixXQUFZLENBQ3ZDLE1BQU1DLEVBQWlCLElBQUksZUFBZUQsQ0FBUSxFQUNsRCxPQUFBQyxFQUFlLFFBQVFKLENBQVMsRUFFekIsSUFBTSxDQUNYSSxFQUFlLFdBQVcsQ0FDNUIsQ0FDRixDQUdBLGNBQU8saUJBQWlCLFNBQVVELENBQVEsRUFDbkMsSUFBTSxPQUFPLG9CQUFvQixTQUFVQSxDQUFRLEVBQzVELEVBQUcsQ0FBQ0gsRUFBV0csQ0FBUSxDQUFDLEVBRWpCRixDQUNUIiwKICAibmFtZXMiOiBbInVzZUNhbGxiYWNrIiwgInVzZUxheW91dEVmZmVjdCIsICJ1c2VTdGF0ZSIsICJnZXRDb21wb25lbnRTaXplIiwgImVsZW1lbnQiLCAiaGVpZ2h0IiwgIndpZHRoIiwgInVzZUNvbXBvbmVudFNpemUiLCAiY29tcG9uZW50IiwgImNvbXBvbmVudFNpemUiLCAic2V0Q29tcG9uZW50U2l6ZSIsICJvblJlc2l6ZSIsICJyZXNpemVPYnNlcnZlciJdCn0K