{"ast":null,"code":"import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport StyleSheet from \"../StyleSheet\";\nimport View from \"../View\";\nimport useMergeRefs from \"../../modules/useMergeRefs\";\n\nfunction normalizeScrollEvent(e) {\n  return {\n    nativeEvent: {\n      contentOffset: {\n        get x() {\n          return e.target.scrollLeft;\n        },\n\n        get y() {\n          return e.target.scrollTop;\n        }\n\n      },\n      contentSize: {\n        get height() {\n          return e.target.scrollHeight;\n        },\n\n        get width() {\n          return e.target.scrollWidth;\n        }\n\n      },\n      layoutMeasurement: {\n        get height() {\n          return e.target.offsetHeight;\n        },\n\n        get width() {\n          return e.target.offsetWidth;\n        }\n\n      }\n    },\n    timeStamp: Date.now()\n  };\n}\n\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n  var timeSinceLastTick = Date.now() - lastTick;\n  return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\n\nvar ScrollViewBase = forwardRef(function (props, forwardedRef) {\n  var accessibilityLabel = props.accessibilityLabel,\n      accessibilityRole = props.accessibilityRole,\n      accessibilityState = props.accessibilityState,\n      children = props.children,\n      importantForAccessibility = props.importantForAccessibility,\n      nativeID = props.nativeID,\n      onLayout = props.onLayout,\n      onScroll = props.onScroll,\n      onTouchMove = props.onTouchMove,\n      onWheel = props.onWheel,\n      pointerEvents = props.pointerEvents,\n      _props$scrollEnabled = props.scrollEnabled,\n      scrollEnabled = _props$scrollEnabled === void 0 ? true : _props$scrollEnabled,\n      _props$scrollEventThr = props.scrollEventThrottle,\n      scrollEventThrottle = _props$scrollEventThr === void 0 ? 0 : _props$scrollEventThr,\n      showsHorizontalScrollIndicator = props.showsHorizontalScrollIndicator,\n      showsVerticalScrollIndicator = props.showsVerticalScrollIndicator,\n      style = props.style,\n      dataSet = props.dataSet,\n      testID = props.testID;\n  var scrollState = useRef({\n    isScrolling: false,\n    scrollLastTick: 0\n  });\n  var scrollTimeout = useRef(null);\n  var scrollRef = useRef(null);\n\n  function createPreventableScrollHandler(handler) {\n    return function (e) {\n      if (scrollEnabled) {\n        if (handler) {\n          handler(e);\n        }\n      }\n    };\n  }\n\n  function handleScroll(e) {\n    e.stopPropagation();\n\n    if (e.target === scrollRef.current) {\n      e.persist();\n\n      if (scrollTimeout.current != null) {\n        clearTimeout(scrollTimeout.current);\n      }\n\n      scrollTimeout.current = setTimeout(function () {\n        handleScrollEnd(e);\n      }, 100);\n\n      if (scrollState.current.isScrolling) {\n        if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n          handleScrollTick(e);\n        }\n      } else {\n        handleScrollStart(e);\n      }\n    }\n  }\n\n  function handleScrollStart(e) {\n    scrollState.current.isScrolling = true;\n    handleScrollTick(e);\n  }\n\n  function handleScrollTick(e) {\n    scrollState.current.scrollLastTick = Date.now();\n\n    if (onScroll) {\n      onScroll(normalizeScrollEvent(e));\n    }\n  }\n\n  function handleScrollEnd(e) {\n    scrollState.current.isScrolling = false;\n\n    if (onScroll) {\n      onScroll(normalizeScrollEvent(e));\n    }\n  }\n\n  var hideScrollbar = showsHorizontalScrollIndicator === false || showsVerticalScrollIndicator === false;\n  return React.createElement(View, {\n    accessibilityLabel: accessibilityLabel,\n    accessibilityRole: accessibilityRole,\n    accessibilityState: accessibilityState,\n    children: children,\n    dataSet: dataSet,\n    importantForAccessibility: importantForAccessibility,\n    nativeID: nativeID,\n    onLayout: onLayout,\n    onScroll: handleScroll,\n    onTouchMove: createPreventableScrollHandler(onTouchMove),\n    onWheel: createPreventableScrollHandler(onWheel),\n    pointerEvents: pointerEvents,\n    ref: useMergeRefs(scrollRef, forwardedRef),\n    style: [style, !scrollEnabled && styles.scrollDisabled, hideScrollbar && styles.hideScrollbar],\n    testID: testID\n  });\n});\nvar styles = StyleSheet.create({\n  scrollDisabled: {\n    overflowX: 'hidden',\n    overflowY: 'hidden',\n    touchAction: 'none'\n  },\n  hideScrollbar: {\n    scrollbarWidth: 'none'\n  }\n});\nexport default ScrollViewBase;","map":{"version":3,"sources":["/Users/nishan/Desktop/oss/responsive-breakpoints/example/node_modules/react-native-web/dist/exports/ScrollView/ScrollViewBase.js"],"names":["React","forwardRef","useRef","StyleSheet","View","useMergeRefs","normalizeScrollEvent","e","nativeEvent","contentOffset","x","target","scrollLeft","y","scrollTop","contentSize","height","scrollHeight","width","scrollWidth","layoutMeasurement","offsetHeight","offsetWidth","timeStamp","Date","now","shouldEmitScrollEvent","lastTick","eventThrottle","timeSinceLastTick","ScrollViewBase","props","forwardedRef","accessibilityLabel","accessibilityRole","accessibilityState","children","importantForAccessibility","nativeID","onLayout","onScroll","onTouchMove","onWheel","pointerEvents","_props$scrollEnabled","scrollEnabled","_props$scrollEventThr","scrollEventThrottle","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","style","dataSet","testID","scrollState","isScrolling","scrollLastTick","scrollTimeout","scrollRef","createPreventableScrollHandler","handler","handleScroll","stopPropagation","current","persist","clearTimeout","setTimeout","handleScrollEnd","handleScrollTick","handleScrollStart","hideScrollbar","createElement","ref","styles","scrollDisabled","create","overflowX","overflowY","touchAction","scrollbarWidth"],"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 * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nimport useMergeRefs from '../../modules/useMergeRefs';\n\nfunction normalizeScrollEvent(e) {\n  return {\n    nativeEvent: {\n      contentOffset: {\n        get x() {\n          return e.target.scrollLeft;\n        },\n\n        get y() {\n          return e.target.scrollTop;\n        }\n\n      },\n      contentSize: {\n        get height() {\n          return e.target.scrollHeight;\n        },\n\n        get width() {\n          return e.target.scrollWidth;\n        }\n\n      },\n      layoutMeasurement: {\n        get height() {\n          return e.target.offsetHeight;\n        },\n\n        get width() {\n          return e.target.offsetWidth;\n        }\n\n      }\n    },\n    timeStamp: Date.now()\n  };\n}\n\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n  var timeSinceLastTick = Date.now() - lastTick;\n  return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\n/**\n * Encapsulates the Web-specific scroll throttling and disabling logic\n */\n\n\nvar ScrollViewBase = forwardRef(function (props, forwardedRef) {\n  var accessibilityLabel = props.accessibilityLabel,\n      accessibilityRole = props.accessibilityRole,\n      accessibilityState = props.accessibilityState,\n      children = props.children,\n      importantForAccessibility = props.importantForAccessibility,\n      nativeID = props.nativeID,\n      onLayout = props.onLayout,\n      onScroll = props.onScroll,\n      onTouchMove = props.onTouchMove,\n      onWheel = props.onWheel,\n      pointerEvents = props.pointerEvents,\n      _props$scrollEnabled = props.scrollEnabled,\n      scrollEnabled = _props$scrollEnabled === void 0 ? true : _props$scrollEnabled,\n      _props$scrollEventThr = props.scrollEventThrottle,\n      scrollEventThrottle = _props$scrollEventThr === void 0 ? 0 : _props$scrollEventThr,\n      showsHorizontalScrollIndicator = props.showsHorizontalScrollIndicator,\n      showsVerticalScrollIndicator = props.showsVerticalScrollIndicator,\n      style = props.style,\n      dataSet = props.dataSet,\n      testID = props.testID;\n  var scrollState = useRef({\n    isScrolling: false,\n    scrollLastTick: 0\n  });\n  var scrollTimeout = useRef(null);\n  var scrollRef = useRef(null);\n\n  function createPreventableScrollHandler(handler) {\n    return function (e) {\n      if (scrollEnabled) {\n        if (handler) {\n          handler(e);\n        }\n      }\n    };\n  }\n\n  function handleScroll(e) {\n    e.stopPropagation();\n\n    if (e.target === scrollRef.current) {\n      e.persist(); // A scroll happened, so the scroll resets the scrollend timeout.\n\n      if (scrollTimeout.current != null) {\n        clearTimeout(scrollTimeout.current);\n      }\n\n      scrollTimeout.current = setTimeout(function () {\n        handleScrollEnd(e);\n      }, 100);\n\n      if (scrollState.current.isScrolling) {\n        // Scroll last tick may have changed, check if we need to notify\n        if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n          handleScrollTick(e);\n        }\n      } else {\n        // Weren't scrolling, so we must have just started\n        handleScrollStart(e);\n      }\n    }\n  }\n\n  function handleScrollStart(e) {\n    scrollState.current.isScrolling = true;\n    handleScrollTick(e);\n  }\n\n  function handleScrollTick(e) {\n    scrollState.current.scrollLastTick = Date.now();\n\n    if (onScroll) {\n      onScroll(normalizeScrollEvent(e));\n    }\n  }\n\n  function handleScrollEnd(e) {\n    scrollState.current.isScrolling = false;\n\n    if (onScroll) {\n      onScroll(normalizeScrollEvent(e));\n    }\n  }\n\n  var hideScrollbar = showsHorizontalScrollIndicator === false || showsVerticalScrollIndicator === false;\n  return React.createElement(View, {\n    accessibilityLabel: accessibilityLabel,\n    accessibilityRole: accessibilityRole,\n    accessibilityState: accessibilityState,\n    children: children,\n    dataSet: dataSet,\n    importantForAccessibility: importantForAccessibility,\n    nativeID: nativeID,\n    onLayout: onLayout,\n    onScroll: handleScroll,\n    onTouchMove: createPreventableScrollHandler(onTouchMove),\n    onWheel: createPreventableScrollHandler(onWheel),\n    pointerEvents: pointerEvents,\n    ref: useMergeRefs(scrollRef, forwardedRef),\n    style: [style, !scrollEnabled && styles.scrollDisabled, hideScrollbar && styles.hideScrollbar],\n    testID: testID\n  });\n}); // Chrome doesn't support e.preventDefault in this case; touch-action must be\n// used to disable scrolling.\n// https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\nvar styles = StyleSheet.create({\n  scrollDisabled: {\n    overflowX: 'hidden',\n    overflowY: 'hidden',\n    touchAction: 'none'\n  },\n  hideScrollbar: {\n    scrollbarWidth: 'none'\n  }\n});\nexport default ScrollViewBase;"]},"metadata":{},"sourceType":"module"}