{"version":3,"file":"useElementWidth.mjs","names":["useTheme","useLayoutEffect","useState","PropTypes","useElementWidth","ref","$","_c","theme","width","setWidth","t0","t1","resizeObserver","ResizeObserver","entries","entry","target","current","contentRect","observe","unobserve","t2","Object","keys","breakpoints","values","reduce","acc","breakpoint","currentBreakpoint","t3","breakpoint_0","index","indexOf","currentIndex","isBreakpointUp","t4","breakpoint_1","breakpoints_0","index_0","currentIndex_0","isBreakpointDown","t5","propTypes","shape","instanceOf","Element"],"sources":["../../../../../src/UI/dataDisplay/entityHeader/functions/useElementWidth.js"],"sourcesContent":["import { useTheme } from '@material-ui/core/styles';\nimport { useLayoutEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Custom hook that returns the current breakpoint of a provided element's width and helpers to compare against breakpoints.\n * @param {any} ref - The ref object whose current element will be observed for width changes.\n * @returns {{\n *   currentBreakpoint: string | null,\n *   isBreakpointUp: (breakpoint: string) => boolean,\n *   isBreakpointDown: (breakpoint: string) => boolean,\n * }}\n */\nfunction useElementWidth(ref) {\n  const theme = useTheme();\n  const [width, setWidth] = useState(null);\n\n  useLayoutEffect(() => {\n    const resizeObserver = new ResizeObserver(entries => {\n      for (let entry of entries) {\n        if (entry.target === ref.current) {\n          setWidth(entry.contentRect.width);\n        }\n      }\n    });\n\n    resizeObserver.observe(ref.current);\n\n    return () => {\n      resizeObserver.unobserve(ref.current);\n    };\n  }, [ref]);\n\n  const currentBreakpoint =\n    width !== null\n      ? Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n          if (width >= theme.breakpoints.values[breakpoint]) {\n            return breakpoint;\n          }\n          return acc;\n        }, null)\n      : null;\n\n  const isBreakpointUp = breakpoint => {\n    const breakpoints = Object.keys(theme.breakpoints.values);\n    const index = breakpoints.indexOf(breakpoint);\n    const currentIndex = breakpoints.indexOf(currentBreakpoint);\n    return index <= currentIndex;\n  };\n\n  const isBreakpointDown = breakpoint => {\n    const breakpoints = Object.keys(theme.breakpoints.values);\n    const index = breakpoints.indexOf(breakpoint);\n    const currentIndex = breakpoints.indexOf(currentBreakpoint);\n    return index >= currentIndex;\n  };\n\n  return {\n    currentBreakpoint,\n    isBreakpointUp,\n    isBreakpointDown,\n  };\n}\n\nexport { useElementWidth };\n\nuseElementWidth.propTypes = {\n  ref: PropTypes.shape({\n    current: PropTypes.instanceOf(Element),\n  }),\n};\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAAI,gBAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACE,MAAAC,QAAcR,UAAU;CACxB,MAAA,CAAAS,OAAAC,YAA0BR,SAAS,KAAK;CAAC,IAAAS;CAAA,IAAAC;AAAA,KAAAN,EAAA,OAAAD,KAAA;AAEzBM,aAAA;GACd,MAAAE,iBAAuB,IAAIC,gBAAeC,YAAA;AACxC,SAAK,MAAAC,SAAaD,QAChB,KAAIC,MAAKC,WAAYZ,IAAGa,QACtBR,UAASM,MAAKG,YAAYV,MAAO;KAGrC;AAEFI,kBAAcO,QAASf,IAAGa,QAAS;AAAA,gBAE5B;AACLL,mBAAcQ,UAAWhB,IAAGa,QAAS;;;AAEtCN,OAAA,CAACP,IAAI;AAAAC,IAAA,KAAAD;AAAAC,IAAA,KAAAK;AAAAL,IAAA,KAAAM;QAAA;AAAAD,OAAAL,EAAA;AAAAM,OAAAN,EAAA;;AAdRL,iBAAgBU,IAcbC,GAAM;CAAA,IAAAU;AAAA,KAAAhB,EAAA,OAAAE,SAAAF,EAAA,OAAAG,OAAA;AAGPa,OAAAb,UAAU,OACNc,OAAMC,KAAMhB,MAAKiB,YAAYC,OAAQ,CAAAC,QAAQC,KAAAC,eAAA;AAC3C,OAAIpB,SAASD,MAAKiB,YAAYC,OAAQG,YAAW,QACxCA;AACR,UACMD;KACN,KACC,GAPR;AAOQtB,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAgB;OAAAA,MAAAhB,EAAA;CARV,MAAAwB,oBACER;CAOS,IAAAS;AAAA,KAAAzB,EAAA,OAAAwB,qBAAAxB,EAAA,OAAAE,OAAA;AAEYuB,QAAAC,iBAAA;GACrB,MAAAP,cAAoBF,OAAMC,KAAMhB,MAAKiB,YAAYC,OAAQ;AAEG,UAD9CD,YAAWS,QAASL,aAAW,IACxBJ,YAAWS,QAASJ,kBAAkB;;AAE5DxB,IAAA,KAAAwB;AAAAxB,IAAA,KAAAE;AAAAF,IAAA,KAAAyB;OAAAA,MAAAzB,EAAA;CALD,MAAA8B,iBAAuBL;CAKrB,IAAAM;AAAA,KAAA/B,EAAA,OAAAwB,qBAAAxB,EAAA,QAAAE,OAAA;AAEuB6B,QAAAC,iBAAA;GACvB,MAAAC,gBAAoBhB,OAAMC,KAAMhB,MAAKiB,YAAYC,OAAQ;AAEG,UAD9CD,cAAWS,QAASL,aAAW,IACxBJ,cAAWS,QAASJ,kBAAkB;;AAE5DxB,IAAA,KAAAwB;AAAAxB,IAAA,MAAAE;AAAAF,IAAA,MAAA+B;OAAAA,MAAA/B,EAAA;CALD,MAAAoC,mBAAyBL;CAKvB,IAAAM;AAAA,KAAArC,EAAA,QAAAwB,qBAAAxB,EAAA,QAAAoC,oBAAApC,EAAA,QAAA8B,gBAAA;AAEKO,OAAA;GAAAb;GAAAM;GAAAM;GAIN;AAAApC,IAAA,MAAAwB;AAAAxB,IAAA,MAAAoC;AAAApC,IAAA,MAAA8B;AAAA9B,IAAA,MAAAqC;OAAAA,MAAArC,EAAA;AAAA,QAJMqC;;AASTvC,gBAAgBwC,YAAY,EAC1BvC,KAAKF,UAAU0C,MAAM,EACnB3B,SAASf,UAAU2C,WAAWC,QAAO,EACtC,CAAA,EACF"}