{"ast":null,"code":"import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport useLayoutEffect from \"../useLayoutEffect\";\nimport UIManager from \"../../exports/UIManager\";\nvar DOM_LAYOUT_HANDLER_NAME = '__reactLayoutHandler';\nvar didWarn = !canUseDOM;\nvar resizeObserver = null;\n\nfunction getResizeObserver() {\n  if (canUseDOM && typeof window.ResizeObserver !== 'undefined') {\n    if (resizeObserver == null) {\n      resizeObserver = new window.ResizeObserver(function (entries) {\n        entries.forEach(function (entry) {\n          var node = entry.target;\n          var onLayout = node[DOM_LAYOUT_HANDLER_NAME];\n\n          if (typeof onLayout === 'function') {\n            UIManager.measure(node, function (x, y, width, height, left, top) {\n              var event = {\n                nativeEvent: {\n                  layout: {\n                    x: x,\n                    y: y,\n                    width: width,\n                    height: height,\n                    left: left,\n                    top: top\n                  }\n                },\n                timeStamp: Date.now()\n              };\n              Object.defineProperty(event.nativeEvent, 'target', {\n                enumerable: true,\n                get: function get() {\n                  return entry.target;\n                }\n              });\n              onLayout(event);\n            });\n          }\n        });\n      });\n    }\n  } else if (!didWarn) {\n    if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n      console.warn('onLayout relies on ResizeObserver which is not supported by your browser. ' + 'Please include a polyfill, e.g., https://github.com/que-etc/resize-observer-polyfill.');\n      didWarn = true;\n    }\n  }\n\n  return resizeObserver;\n}\n\nexport default function useElementLayout(ref, onLayout) {\n  var observer = getResizeObserver();\n  useLayoutEffect(function () {\n    var node = ref.current;\n\n    if (node != null) {\n      node[DOM_LAYOUT_HANDLER_NAME] = onLayout;\n    }\n  }, [ref, onLayout]);\n  useLayoutEffect(function () {\n    var node = ref.current;\n\n    if (node != null && observer != null) {\n      if (typeof node[DOM_LAYOUT_HANDLER_NAME] === 'function') {\n        observer.observe(node);\n      } else {\n        observer.unobserve(node);\n      }\n    }\n\n    return function () {\n      if (node != null && observer != null) {\n        observer.unobserve(node);\n      }\n    };\n  }, [ref, observer]);\n}","map":{"version":3,"sources":["/Users/nishan/Desktop/oss/responsive-breakpoints/example/node_modules/react-native-web/dist/modules/useElementLayout/index.js"],"names":["canUseDOM","useLayoutEffect","UIManager","DOM_LAYOUT_HANDLER_NAME","didWarn","resizeObserver","getResizeObserver","window","ResizeObserver","entries","forEach","entry","node","target","onLayout","measure","x","y","width","height","left","top","event","nativeEvent","layout","timeStamp","Date","now","Object","defineProperty","enumerable","get","process","env","NODE_ENV","console","warn","useElementLayout","ref","observer","current","observe","unobserve"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport useLayoutEffect from '../useLayoutEffect';\nimport UIManager from '../../exports/UIManager';\nvar DOM_LAYOUT_HANDLER_NAME = '__reactLayoutHandler';\nvar didWarn = !canUseDOM;\nvar resizeObserver = null;\n\nfunction getResizeObserver() {\n  if (canUseDOM && typeof window.ResizeObserver !== 'undefined') {\n    if (resizeObserver == null) {\n      resizeObserver = new window.ResizeObserver(function (entries) {\n        entries.forEach(function (entry) {\n          var node = entry.target;\n          var onLayout = node[DOM_LAYOUT_HANDLER_NAME];\n\n          if (typeof onLayout === 'function') {\n            // We still need to measure the view because browsers don't yet provide\n            // border-box dimensions in the entry\n            UIManager.measure(node, function (x, y, width, height, left, top) {\n              var event = {\n                // $FlowFixMe\n                nativeEvent: {\n                  layout: {\n                    x: x,\n                    y: y,\n                    width: width,\n                    height: height,\n                    left: left,\n                    top: top\n                  }\n                },\n                timeStamp: Date.now()\n              };\n              Object.defineProperty(event.nativeEvent, 'target', {\n                enumerable: true,\n                get: function get() {\n                  return entry.target;\n                }\n              });\n              onLayout(event);\n            });\n          }\n        });\n      });\n    }\n  } else if (!didWarn) {\n    if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n      console.warn('onLayout relies on ResizeObserver which is not supported by your browser. ' + 'Please include a polyfill, e.g., https://github.com/que-etc/resize-observer-polyfill.');\n      didWarn = true;\n    }\n  }\n\n  return resizeObserver;\n}\n\nexport default function useElementLayout(ref, onLayout) {\n  var observer = getResizeObserver();\n  useLayoutEffect(function () {\n    var node = ref.current;\n\n    if (node != null) {\n      node[DOM_LAYOUT_HANDLER_NAME] = onLayout;\n    }\n  }, [ref, onLayout]); // Observing is done in a separate effect to avoid this effect running\n  // when 'onLayout' changes.\n\n  useLayoutEffect(function () {\n    var node = ref.current;\n\n    if (node != null && observer != null) {\n      if (typeof node[DOM_LAYOUT_HANDLER_NAME] === 'function') {\n        observer.observe(node);\n      } else {\n        observer.unobserve(node);\n      }\n    }\n\n    return function () {\n      if (node != null && observer != null) {\n        observer.unobserve(node);\n      }\n    };\n  }, [ref, observer]);\n}"]},"metadata":{},"sourceType":"module"}