@tamagui/scroll-view 3.0.0-beta.1464.1 → 3.0.0-beta.1473.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/WebScrollView.cjs +1 -1
- package/dist/cjs/WebScrollView.native.cjs +1 -1
- package/dist/cjs/WebScrollView.native.js +1 -1
- package/dist/cjs/WebScrollView.native.js.map +1 -1
- package/dist/esm/WebScrollView.mjs +1 -1
- package/dist/esm/WebScrollView.mjs.map +1 -1
- package/dist/esm/WebScrollView.native.js +1 -1
- package/dist/esm/WebScrollView.native.js.map +1 -1
- package/dist/jsx/WebScrollView.mjs +1 -1
- package/dist/jsx/WebScrollView.mjs.map +1 -1
- package/dist/jsx/WebScrollView.native.cjs +1 -1
- package/dist/jsx/WebScrollView.native.js +1 -1
- package/dist/jsx/WebScrollView.native.js.map +1 -1
- package/package.json +3 -3
- package/src/WebScrollView.tsx +6 -0
- package/types/WebScrollView.d.ts.map +1 -1
|
@@ -120,7 +120,7 @@ const styles = {
|
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
122
|
const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
123
|
-
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
123
|
+
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
124
124
|
const scrollNodeRef = React.useRef(null);
|
|
125
125
|
const innerViewRef = React.useRef(null);
|
|
126
126
|
const scrollState = React.useRef({
|
|
@@ -148,7 +148,7 @@ var styles = {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
151
|
-
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
151
|
+
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
152
152
|
var scrollNodeRef = React.useRef(null);
|
|
153
153
|
var innerViewRef = React.useRef(null);
|
|
154
154
|
var scrollState = React.useRef({
|
|
@@ -148,7 +148,7 @@ var styles = {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
151
|
-
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
151
|
+
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
152
152
|
var scrollNodeRef = React.useRef(null);
|
|
153
153
|
var innerViewRef = React.useRef(null);
|
|
154
154
|
var scrollState = React.useRef({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.native.js","names":[],"sources":["cjs/WebScrollView.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar WebScrollView_exports = {};\n__export(WebScrollView_exports, {\n WebScrollView: () => WebScrollView\n});\nmodule.exports = __toCommonJS(WebScrollView_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_web = require(\"@tamagui/web\");\nvar React = __toESM(require(\"react\"), 1);\nvar View = import_web.View;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebScrollView.native.js","names":[],"sources":["cjs/WebScrollView.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar WebScrollView_exports = {};\n__export(WebScrollView_exports, {\n WebScrollView: () => WebScrollView\n});\nmodule.exports = __toCommonJS(WebScrollView_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_web = require(\"@tamagui/web\");\nvar React = __toESM(require(\"react\"), 1);\nvar View = import_web.View;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n // drag and momentum phases come from native gestures the web has no\n // equivalent for, so they never fire here\n onScrollBeginDrag,\n onScrollEndDrag,\n onMomentumScrollBegin,\n onMomentumScrollEnd,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ const styles = {
|
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
94
|
const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
95
|
-
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
95
|
+
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
96
96
|
const scrollNodeRef = React.useRef(null);
|
|
97
97
|
const innerViewRef = React.useRef(null);
|
|
98
98
|
const scrollState = React.useRef({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.js","names":["View","TamaguiView"],"sources":["esm/WebScrollView.js"],"sourcesContent":["import { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst View = TamaguiView;\nfunction mergeRefs(...refs) {\n return (node) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n const target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n const timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles(...inputs) {\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames(...parts) {\n const joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nconst commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nconst styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nconst WebScrollView = React.forwardRef(\n (props, forwardedRef) => {\n const {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n ...rest\n } = props;\n const scrollNodeRef = React.useRef(null);\n const innerViewRef = React.useRef(null);\n const scrollState = React.useRef({ isScrolling: false, scrollLastTick: 0 });\n const scrollTimeout = React.useRef(null);\n const scrollTo = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({ top: y, left: x, behavior: animated ? \"smooth\" : \"auto\" });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n const scrollToEnd = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const animated = (options && options.animated) !== false;\n const x = horizontal ? node.scrollWidth : 0;\n const y = horizontal ? 0 : node.scrollHeight;\n scrollTo({ x, y, animated });\n };\n const setScrollNodeRef = React.useCallback(\n (node) => {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = () => node;\n node.getScrollableNode = () => node;\n node.getInnerViewNode = () => innerViewRef.current;\n node.getInnerViewRef = () => innerViewRef.current;\n node.getNativeScrollRef = () => node;\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = () => {\n };\n }\n mergeRefs(forwardedRef)(node);\n },\n [forwardedRef, horizontal]\n );\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(() => {\n scrollState.current.isScrolling = false;\n onScroll?.(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n }\n const handleContentLayout = onContentSizeChange ? (e) => {\n const { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n const hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {\n const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n const resolvedStyle = resolveStyles(\n isSticky && styles.stickyHeader,\n pagingEnabled && styles.pagingEnabledChild\n );\n return /* @__PURE__ */ jsx(View, { style: resolvedStyle, children: child });\n }\n return child;\n }) : children;\n const contentStyle = resolveStyles(\n horizontal && styles.contentContainerHorizontal,\n centerContent && styles.contentContainerCenterContent,\n contentContainerStyle\n );\n const contentContainer = /* @__PURE__ */ jsx(View, { ref: innerViewRef, onLayout: handleContentLayout, style: contentStyle, children: renderedChildren });\n const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n const pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n const hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n const extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n const scrollStyle = resolveStyles(\n baseStyle,\n pagingEnabled && pagingEnabledStyle,\n style,\n !scrollEnabled && styles.scrollDisabled\n );\n const scrollView = /* @__PURE__ */ jsx(\n View,\n {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n }\n );\n if (refreshControl) {\n const refreshStyle = resolveStyles(baseStyle, style);\n return React.cloneElement(\n refreshControl,\n {\n style: refreshStyle\n },\n scrollView\n );\n }\n return scrollView;\n }\n);\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebScrollView.js","names":["View","TamaguiView"],"sources":["esm/WebScrollView.js"],"sourcesContent":["import { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst View = TamaguiView;\nfunction mergeRefs(...refs) {\n return (node) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n const target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n const timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles(...inputs) {\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames(...parts) {\n const joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nconst commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nconst styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nconst WebScrollView = React.forwardRef(\n (props, forwardedRef) => {\n const {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n // drag and momentum phases come from native gestures the web has no\n // equivalent for, so they never fire here\n onScrollBeginDrag,\n onScrollEndDrag,\n onMomentumScrollBegin,\n onMomentumScrollEnd,\n ...rest\n } = props;\n const scrollNodeRef = React.useRef(null);\n const innerViewRef = React.useRef(null);\n const scrollState = React.useRef({ isScrolling: false, scrollLastTick: 0 });\n const scrollTimeout = React.useRef(null);\n const scrollTo = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({ top: y, left: x, behavior: animated ? \"smooth\" : \"auto\" });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n const scrollToEnd = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const animated = (options && options.animated) !== false;\n const x = horizontal ? node.scrollWidth : 0;\n const y = horizontal ? 0 : node.scrollHeight;\n scrollTo({ x, y, animated });\n };\n const setScrollNodeRef = React.useCallback(\n (node) => {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = () => node;\n node.getScrollableNode = () => node;\n node.getInnerViewNode = () => innerViewRef.current;\n node.getInnerViewRef = () => innerViewRef.current;\n node.getNativeScrollRef = () => node;\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = () => {\n };\n }\n mergeRefs(forwardedRef)(node);\n },\n [forwardedRef, horizontal]\n );\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(() => {\n scrollState.current.isScrolling = false;\n onScroll?.(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n }\n const handleContentLayout = onContentSizeChange ? (e) => {\n const { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n const hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {\n const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n const resolvedStyle = resolveStyles(\n isSticky && styles.stickyHeader,\n pagingEnabled && styles.pagingEnabledChild\n );\n return /* @__PURE__ */ jsx(View, { style: resolvedStyle, children: child });\n }\n return child;\n }) : children;\n const contentStyle = resolveStyles(\n horizontal && styles.contentContainerHorizontal,\n centerContent && styles.contentContainerCenterContent,\n contentContainerStyle\n );\n const contentContainer = /* @__PURE__ */ jsx(View, { ref: innerViewRef, onLayout: handleContentLayout, style: contentStyle, children: renderedChildren });\n const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n const pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n const hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n const extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n const scrollStyle = resolveStyles(\n baseStyle,\n pagingEnabled && pagingEnabledStyle,\n style,\n !scrollEnabled && styles.scrollDisabled\n );\n const scrollView = /* @__PURE__ */ jsx(\n View,\n {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n }\n );\n if (refreshControl) {\n const refreshStyle = resolveStyles(baseStyle, style);\n return React.cloneElement(\n refreshControl,\n {\n style: refreshStyle\n },\n scrollView\n );\n }\n return scrollView;\n }\n);\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ var styles = {
|
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
120
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
121
|
-
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
121
|
+
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
122
122
|
var scrollNodeRef = React.useRef(null);
|
|
123
123
|
var innerViewRef = React.useRef(null);
|
|
124
124
|
var scrollState = React.useRef({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.native.js","names":["View","TamaguiView"],"sources":["esm/WebScrollView.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nvar View = TamaguiView;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ _jsx(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ _jsx(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ _jsx(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebScrollView.native.js","names":["View","TamaguiView"],"sources":["esm/WebScrollView.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nvar View = TamaguiView;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n // drag and momentum phases come from native gestures the web has no\n // equivalent for, so they never fire here\n onScrollBeginDrag,\n onScrollEndDrag,\n onMomentumScrollBegin,\n onMomentumScrollEnd,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ _jsx(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ _jsx(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ _jsx(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ const styles = {
|
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
94
|
const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
95
|
-
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
95
|
+
const { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
96
96
|
const scrollNodeRef = React.useRef(null);
|
|
97
97
|
const innerViewRef = React.useRef(null);
|
|
98
98
|
const scrollState = React.useRef({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.js","names":["View","TamaguiView"],"sources":["jsx/WebScrollView.js"],"sourcesContent":["import { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst View = TamaguiView;\nfunction mergeRefs(...refs) {\n return (node) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n const target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n const timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles(...inputs) {\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames(...parts) {\n const joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nconst commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nconst styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nconst WebScrollView = React.forwardRef(\n (props, forwardedRef) => {\n const {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n ...rest\n } = props;\n const scrollNodeRef = React.useRef(null);\n const innerViewRef = React.useRef(null);\n const scrollState = React.useRef({ isScrolling: false, scrollLastTick: 0 });\n const scrollTimeout = React.useRef(null);\n const scrollTo = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({ top: y, left: x, behavior: animated ? \"smooth\" : \"auto\" });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n const scrollToEnd = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const animated = (options && options.animated) !== false;\n const x = horizontal ? node.scrollWidth : 0;\n const y = horizontal ? 0 : node.scrollHeight;\n scrollTo({ x, y, animated });\n };\n const setScrollNodeRef = React.useCallback(\n (node) => {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = () => node;\n node.getScrollableNode = () => node;\n node.getInnerViewNode = () => innerViewRef.current;\n node.getInnerViewRef = () => innerViewRef.current;\n node.getNativeScrollRef = () => node;\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = () => {\n };\n }\n mergeRefs(forwardedRef)(node);\n },\n [forwardedRef, horizontal]\n );\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(() => {\n scrollState.current.isScrolling = false;\n onScroll?.(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n }\n const handleContentLayout = onContentSizeChange ? (e) => {\n const { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n const hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {\n const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n const resolvedStyle = resolveStyles(\n isSticky && styles.stickyHeader,\n pagingEnabled && styles.pagingEnabledChild\n );\n return /* @__PURE__ */ jsx(View, { style: resolvedStyle, children: child });\n }\n return child;\n }) : children;\n const contentStyle = resolveStyles(\n horizontal && styles.contentContainerHorizontal,\n centerContent && styles.contentContainerCenterContent,\n contentContainerStyle\n );\n const contentContainer = /* @__PURE__ */ jsx(View, { ref: innerViewRef, onLayout: handleContentLayout, style: contentStyle, children: renderedChildren });\n const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n const pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n const hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n const extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n const scrollStyle = resolveStyles(\n baseStyle,\n pagingEnabled && pagingEnabledStyle,\n style,\n !scrollEnabled && styles.scrollDisabled\n );\n const scrollView = /* @__PURE__ */ jsx(\n View,\n {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n }\n );\n if (refreshControl) {\n const refreshStyle = resolveStyles(baseStyle, style);\n return React.cloneElement(\n refreshControl,\n {\n style: refreshStyle\n },\n scrollView\n );\n }\n return scrollView;\n }\n);\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebScrollView.js","names":["View","TamaguiView"],"sources":["jsx/WebScrollView.js"],"sourcesContent":["import { View as TamaguiView } from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst View = TamaguiView;\nfunction mergeRefs(...refs) {\n return (node) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n const target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n const timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles(...inputs) {\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames(...parts) {\n const joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nconst commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nconst styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nconst WebScrollView = React.forwardRef(\n (props, forwardedRef) => {\n const {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n // drag and momentum phases come from native gestures the web has no\n // equivalent for, so they never fire here\n onScrollBeginDrag,\n onScrollEndDrag,\n onMomentumScrollBegin,\n onMomentumScrollEnd,\n ...rest\n } = props;\n const scrollNodeRef = React.useRef(null);\n const innerViewRef = React.useRef(null);\n const scrollState = React.useRef({ isScrolling: false, scrollLastTick: 0 });\n const scrollTimeout = React.useRef(null);\n const scrollTo = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({ top: y, left: x, behavior: animated ? \"smooth\" : \"auto\" });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n const scrollToEnd = (options) => {\n const node = scrollNodeRef.current;\n if (node == null) return;\n const animated = (options && options.animated) !== false;\n const x = horizontal ? node.scrollWidth : 0;\n const y = horizontal ? 0 : node.scrollHeight;\n scrollTo({ x, y, animated });\n };\n const setScrollNodeRef = React.useCallback(\n (node) => {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = () => node;\n node.getScrollableNode = () => node;\n node.getInnerViewNode = () => innerViewRef.current;\n node.getInnerViewRef = () => innerViewRef.current;\n node.getNativeScrollRef = () => node;\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = () => {\n };\n }\n mergeRefs(forwardedRef)(node);\n },\n [forwardedRef, horizontal]\n );\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(() => {\n scrollState.current.isScrolling = false;\n onScroll?.(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll?.(normalizeScrollEvent(e));\n }\n }\n const handleContentLayout = onContentSizeChange ? (e) => {\n const { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n const hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {\n const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n const resolvedStyle = resolveStyles(\n isSticky && styles.stickyHeader,\n pagingEnabled && styles.pagingEnabledChild\n );\n return /* @__PURE__ */ jsx(View, { style: resolvedStyle, children: child });\n }\n return child;\n }) : children;\n const contentStyle = resolveStyles(\n horizontal && styles.contentContainerHorizontal,\n centerContent && styles.contentContainerCenterContent,\n contentContainerStyle\n );\n const contentContainer = /* @__PURE__ */ jsx(View, { ref: innerViewRef, onLayout: handleContentLayout, style: contentStyle, children: renderedChildren });\n const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n const pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n const hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n const extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n const scrollStyle = resolveStyles(\n baseStyle,\n pagingEnabled && pagingEnabledStyle,\n style,\n !scrollEnabled && styles.scrollDisabled\n );\n const scrollView = /* @__PURE__ */ jsx(\n View,\n {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n }\n );\n if (refreshControl) {\n const refreshStyle = resolveStyles(baseStyle, style);\n return React.cloneElement(\n refreshControl,\n {\n style: refreshStyle\n },\n scrollView\n );\n }\n return scrollView;\n }\n);\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
@@ -148,7 +148,7 @@ var styles = {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
151
|
-
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
151
|
+
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
152
152
|
var scrollNodeRef = React.useRef(null);
|
|
153
153
|
var innerViewRef = React.useRef(null);
|
|
154
154
|
var scrollState = React.useRef({
|
|
@@ -148,7 +148,7 @@ var styles = {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
151
|
-
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, ...rest } = props;
|
|
151
|
+
var { children, contentContainerStyle, horizontal, onContentSizeChange, onScroll, refreshControl, stickyHeaderIndices, pagingEnabled, centerContent, scrollEnabled = true, scrollEventThrottle = 0, showsHorizontalScrollIndicator, showsVerticalScrollIndicator, style, keyboardShouldPersistTaps, keyboardDismissMode, contentOffset, contentInset, contentInsetAdjustmentBehavior, decelerationRate, directionalLockEnabled, disableIntervalMomentum, disableScrollViewPanResponder, endFillColor, fadingEdgeLength, indicatorStyle, invertStickyHeaders, maintainVisibleContentPosition, maximumZoomScale, minimumZoomScale, nestedScrollEnabled, onScrollToTop, overScrollMode, pinchGestureEnabled, removeClippedSubviews, scrollIndicatorInsets, scrollPerfTag, scrollToOverflowEnabled, snapToAlignment, snapToEnd, snapToInterval, snapToOffsets, snapToStart, bounces, onScrollBeginDrag, onScrollEndDrag, onMomentumScrollBegin, onMomentumScrollEnd, ...rest } = props;
|
|
152
152
|
var scrollNodeRef = React.useRef(null);
|
|
153
153
|
var innerViewRef = React.useRef(null);
|
|
154
154
|
var scrollState = React.useRef({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.native.js","names":[],"sources":["jsx/WebScrollView.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar WebScrollView_exports = {};\n__export(WebScrollView_exports, {\n WebScrollView: () => WebScrollView\n});\nmodule.exports = __toCommonJS(WebScrollView_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_web = require(\"@tamagui/web\");\nvar React = __toESM(require(\"react\"), 1);\nvar View = import_web.View;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebScrollView.native.js","names":[],"sources":["jsx/WebScrollView.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar WebScrollView_exports = {};\n__export(WebScrollView_exports, {\n WebScrollView: () => WebScrollView\n});\nmodule.exports = __toCommonJS(WebScrollView_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_web = require(\"@tamagui/web\");\nvar React = __toESM(require(\"react\"), 1);\nvar View = import_web.View;\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return function(node) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = refs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ref = _step.value;\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else ref.current = node;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n}\nfunction normalizeScrollEvent(e) {\n var target = e.target;\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return target.scrollLeft;\n },\n get y() {\n return target.scrollTop;\n }\n },\n contentSize: {\n get height() {\n return target.scrollHeight;\n },\n get width() {\n return target.scrollWidth;\n }\n },\n layoutMeasurement: {\n get height() {\n return target.offsetHeight;\n },\n get width() {\n return target.offsetWidth;\n }\n }\n },\n timeStamp: Date.now()\n };\n}\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\nfunction resolveStyles() {\n for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {\n inputs[_key] = arguments[_key];\n }\n return inputs.flat(Infinity).filter(Boolean);\n}\nfunction joinClassNames() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n var joined = parts.filter(Boolean).join(\" \").trim();\n return joined || void 0;\n}\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1\n};\nvar styles = {\n baseVertical: {\n ...commonStyle,\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"auto\"\n },\n baseHorizontal: {\n ...commonStyle,\n flexDirection: \"row\",\n overflowX: \"auto\",\n overflowY: \"hidden\"\n },\n contentContainerHorizontal: {\n flexDirection: \"row\"\n },\n contentContainerCenterContent: {\n justifyContent: \"center\",\n flexGrow: 1\n },\n stickyHeader: {\n position: \"sticky\",\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: \"x mandatory\"\n },\n pagingEnabledVertical: {\n scrollSnapType: \"y mandatory\"\n },\n pagingEnabledChild: {\n scrollSnapAlign: \"start\"\n },\n scrollDisabled: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n touchAction: \"none\"\n }\n};\nvar WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {\n var {\n children,\n contentContainerStyle,\n horizontal,\n onContentSizeChange,\n onScroll,\n refreshControl,\n stickyHeaderIndices,\n pagingEnabled,\n centerContent,\n scrollEnabled = true,\n scrollEventThrottle = 0,\n showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator,\n style,\n // strip react-native-only props that shouldn't reach the DOM\n keyboardShouldPersistTaps,\n keyboardDismissMode,\n contentOffset,\n contentInset,\n contentInsetAdjustmentBehavior,\n decelerationRate,\n directionalLockEnabled,\n disableIntervalMomentum,\n disableScrollViewPanResponder,\n endFillColor,\n fadingEdgeLength,\n indicatorStyle,\n invertStickyHeaders,\n maintainVisibleContentPosition,\n maximumZoomScale,\n minimumZoomScale,\n nestedScrollEnabled,\n onScrollToTop,\n overScrollMode,\n pinchGestureEnabled,\n removeClippedSubviews,\n scrollIndicatorInsets,\n scrollPerfTag,\n scrollToOverflowEnabled,\n snapToAlignment,\n snapToEnd,\n snapToInterval,\n snapToOffsets,\n snapToStart,\n bounces,\n // drag and momentum phases come from native gestures the web has no\n // equivalent for, so they never fire here\n onScrollBeginDrag,\n onScrollEndDrag,\n onMomentumScrollBegin,\n onMomentumScrollEnd,\n ...rest\n } = props;\n var scrollNodeRef = React.useRef(null);\n var innerViewRef = React.useRef(null);\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollTo = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var { x = 0, y = 0, animated = true } = options || {};\n if (typeof node.scroll === \"function\") {\n node.scroll({\n top: y,\n left: x,\n behavior: animated ? \"smooth\" : \"auto\"\n });\n } else {\n node.scrollLeft = x;\n node.scrollTop = y;\n }\n };\n var scrollToEnd = function(options) {\n var node = scrollNodeRef.current;\n if (node == null) return;\n var animated = (options && options.animated) !== false;\n var x = horizontal ? node.scrollWidth : 0;\n var y = horizontal ? 0 : node.scrollHeight;\n scrollTo({\n x,\n y,\n animated\n });\n };\n var setScrollNodeRef = React.useCallback(function(node) {\n scrollNodeRef.current = node;\n if (node != null) {\n node.getScrollResponder = function() {\n return node;\n };\n node.getScrollableNode = function() {\n return node;\n };\n node.getInnerViewNode = function() {\n return innerViewRef.current;\n };\n node.getInnerViewRef = function() {\n return innerViewRef.current;\n };\n node.getNativeScrollRef = function() {\n return node;\n };\n node.scrollTo = scrollTo;\n node.scrollToEnd = scrollToEnd;\n node.flashScrollIndicators = function() {\n };\n }\n mergeRefs(forwardedRef)(node);\n }, [\n forwardedRef,\n horizontal\n ]);\n function handleScroll(e) {\n e.stopPropagation();\n if (e.target !== scrollNodeRef.current) return;\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n scrollTimeout.current = setTimeout(function() {\n scrollState.current.isScrolling = false;\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }, 100);\n if (scrollState.current.isScrolling) {\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n } else {\n scrollState.current.isScrolling = true;\n scrollState.current.scrollLastTick = Date.now();\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(normalizeScrollEvent(e));\n }\n }\n var handleContentLayout = onContentSizeChange ? function(e) {\n var { width, height } = e.nativeEvent.layout;\n onContentSizeChange(width, height);\n } : void 0;\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n if (child != null && (isSticky || pagingEnabled)) {\n var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n style: resolvedStyle,\n children: child\n });\n }\n return child;\n }) : children;\n var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);\n var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentStyle,\n children: renderedChildren\n });\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;\n var hideVerticalScrollbar = showsVerticalScrollIndicator === false;\n var extraClassName = (hideHorizontalScrollbar ? \" _hsb-x\" : \"\") + (hideVerticalScrollbar ? \" _hsb-y\" : \"\");\n var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ...rest,\n className: joinClassNames(rest.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollStyle,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshStyle = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshStyle\n }, scrollView);\n }\n return scrollView;\n});\nWebScrollView.displayName = \"ScrollView\";\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/scroll-view",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.1473.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"files": [
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"clean:build": "tamagui-build clean:build"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@tamagui/web": "3.0.0-beta.
|
|
47
|
+
"@tamagui/web": "3.0.0-beta.1473.1"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@tamagui/build": "3.0.0-beta.
|
|
50
|
+
"@tamagui/build": "3.0.0-beta.1473.1",
|
|
51
51
|
"react": "19.2.3",
|
|
52
52
|
"react-native": "0.86.2"
|
|
53
53
|
},
|
package/src/WebScrollView.tsx
CHANGED
|
@@ -180,6 +180,12 @@ export const WebScrollView = React.forwardRef<ScrollViewRef, WebScrollViewProps>
|
|
|
180
180
|
snapToOffsets,
|
|
181
181
|
snapToStart,
|
|
182
182
|
bounces,
|
|
183
|
+
// drag and momentum phases come from native gestures the web has no
|
|
184
|
+
// equivalent for, so they never fire here
|
|
185
|
+
onScrollBeginDrag,
|
|
186
|
+
onScrollEndDrag,
|
|
187
|
+
onMomentumScrollBegin,
|
|
188
|
+
onMomentumScrollEnd,
|
|
183
189
|
...rest
|
|
184
190
|
} = props
|
|
185
191
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebScrollView.d.ts","sourceRoot":"","sources":["../src/WebScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,GAAG,CAAA;IAC7B,iBAAiB,EAAE,MAAM,WAAW,CAAA;IACpC,gBAAgB,EAAE,MAAM,WAAW,CAAA;IACnC,eAAe,EAAE,MAAM,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,WAAW,CAAA;IACrC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACvD,qBAAqB,EAAE,MAAM,IAAI,CAAA;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qBAAqB,CAAC,EAAE,UAAU,CAAA;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAyGD,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"WebScrollView.d.ts","sourceRoot":"","sources":["../src/WebScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,GAAG,CAAA;IAC7B,iBAAiB,EAAE,MAAM,WAAW,CAAA;IACpC,gBAAgB,EAAE,MAAM,WAAW,CAAA;IACnC,eAAe,EAAE,MAAM,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,WAAW,CAAA;IACrC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACvD,qBAAqB,EAAE,MAAM,IAAI,CAAA;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qBAAqB,CAAC,EAAE,UAAU,CAAA;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAyGD,eAAO,MAAM,aAAa,uGAyMzB,CAAA"}
|