@tamagui/scroll-view 3.0.0-beta.765.1 → 3.0.0-beta.804.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 +11 -44
- package/dist/cjs/WebScrollView.native.cjs +11 -82
- package/dist/cjs/WebScrollView.native.js +11 -82
- package/dist/cjs/WebScrollView.native.js.map +1 -1
- package/dist/esm/WebScrollView.mjs +11 -44
- package/dist/esm/WebScrollView.mjs.map +1 -1
- package/dist/esm/WebScrollView.native.js +11 -82
- package/dist/esm/WebScrollView.native.js.map +1 -1
- package/dist/jsx/WebScrollView.mjs +11 -44
- package/dist/jsx/WebScrollView.mjs.map +1 -1
- package/dist/jsx/WebScrollView.native.cjs +11 -82
- package/dist/jsx/WebScrollView.native.js +11 -82
- package/dist/jsx/WebScrollView.native.js.map +1 -1
- package/package.json +3 -3
- package/src/WebScrollView.tsx +12 -64
- package/types/WebScrollView.d.ts.map +1 -1
|
@@ -77,27 +77,7 @@ function shouldEmitScrollEvent(lastTick, eventThrottle) {
|
|
|
77
77
|
return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;
|
|
78
78
|
}
|
|
79
79
|
function resolveStyles(...inputs) {
|
|
80
|
-
|
|
81
|
-
const classNames = [];
|
|
82
|
-
const walk = (s) => {
|
|
83
|
-
if (!s) return;
|
|
84
|
-
if (Array.isArray(s)) {
|
|
85
|
-
for (const item of s) walk(item);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (s.$$css) {
|
|
89
|
-
for (const k in s) {
|
|
90
|
-
if (k !== "$$css") classNames.push(s[k]);
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
Object.assign(style, s);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
for (const input of inputs) walk(input);
|
|
97
|
-
return {
|
|
98
|
-
style,
|
|
99
|
-
className: classNames.join(" ")
|
|
100
|
-
};
|
|
80
|
+
return inputs.flat(Infinity).filter(Boolean);
|
|
101
81
|
}
|
|
102
82
|
function joinClassNames(...parts) {
|
|
103
83
|
const joined = parts.filter(Boolean).join(" ").trim();
|
|
@@ -141,13 +121,6 @@ const styles = {
|
|
|
141
121
|
};
|
|
142
122
|
const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
143
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;
|
|
144
|
-
const { dataSet, ...domRest } = rest;
|
|
145
|
-
const dataAttrs = {};
|
|
146
|
-
if (dataSet) {
|
|
147
|
-
for (const key in dataSet) {
|
|
148
|
-
dataAttrs[`data-${key}`] = dataSet[key];
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
124
|
const scrollNodeRef = React.useRef(null);
|
|
152
125
|
const innerViewRef = React.useRef(null);
|
|
153
126
|
const scrollState = React.useRef({
|
|
@@ -225,21 +198,19 @@ const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
|
225
198
|
const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {
|
|
226
199
|
const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;
|
|
227
200
|
if (child != null && (isSticky || pagingEnabled)) {
|
|
228
|
-
const
|
|
201
|
+
const resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);
|
|
229
202
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
230
|
-
style:
|
|
231
|
-
className: joinClassNames(resolved.className),
|
|
203
|
+
style: resolvedStyle,
|
|
232
204
|
children: child
|
|
233
205
|
});
|
|
234
206
|
}
|
|
235
207
|
return child;
|
|
236
208
|
}) : children;
|
|
237
|
-
const
|
|
209
|
+
const contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);
|
|
238
210
|
const contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
239
211
|
ref: innerViewRef,
|
|
240
212
|
onLayout: handleContentLayout,
|
|
241
|
-
style:
|
|
242
|
-
className: joinClassNames(contentResolved.className),
|
|
213
|
+
style: contentStyle,
|
|
243
214
|
children: renderedChildren
|
|
244
215
|
});
|
|
245
216
|
const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;
|
|
@@ -247,22 +218,18 @@ const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
|
247
218
|
const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;
|
|
248
219
|
const hideVerticalScrollbar = showsVerticalScrollIndicator === false;
|
|
249
220
|
const extraClassName = (hideHorizontalScrollbar ? " _hsb-x" : "") + (hideVerticalScrollbar ? " _hsb-y" : "");
|
|
250
|
-
const
|
|
221
|
+
const scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);
|
|
251
222
|
const scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
252
|
-
...
|
|
253
|
-
|
|
254
|
-
className: joinClassNames(domRest.className, scrollResolved.className, extraClassName),
|
|
223
|
+
...rest,
|
|
224
|
+
className: joinClassNames(rest.className, extraClassName),
|
|
255
225
|
ref: setScrollNodeRef,
|
|
256
226
|
onScroll: handleScroll,
|
|
257
|
-
style:
|
|
227
|
+
style: scrollStyle,
|
|
258
228
|
children: contentContainer
|
|
259
229
|
});
|
|
260
230
|
if (refreshControl) {
|
|
261
|
-
const
|
|
262
|
-
return React.cloneElement(refreshControl, {
|
|
263
|
-
style: refreshResolved.style,
|
|
264
|
-
className: joinClassNames(refreshResolved.className)
|
|
265
|
-
}, scrollView);
|
|
231
|
+
const refreshStyle = resolveStyles(baseStyle, style);
|
|
232
|
+
return React.cloneElement(refreshControl, { style: refreshStyle }, scrollView);
|
|
266
233
|
}
|
|
267
234
|
return scrollView;
|
|
268
235
|
});
|
|
@@ -102,65 +102,7 @@ function resolveStyles() {
|
|
|
102
102
|
for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
103
103
|
inputs[_key] = arguments[_key];
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
var classNames = [];
|
|
107
|
-
var walk = function(s) {
|
|
108
|
-
if (!s) return;
|
|
109
|
-
if (Array.isArray(s)) {
|
|
110
|
-
var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
|
|
111
|
-
try {
|
|
112
|
-
for (var _iterator2 = s[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
113
|
-
var item = _step2.value;
|
|
114
|
-
walk(item);
|
|
115
|
-
}
|
|
116
|
-
} catch (err) {
|
|
117
|
-
_didIteratorError2 = true;
|
|
118
|
-
_iteratorError2 = err;
|
|
119
|
-
} finally {
|
|
120
|
-
try {
|
|
121
|
-
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
122
|
-
_iterator2.return();
|
|
123
|
-
}
|
|
124
|
-
} finally {
|
|
125
|
-
if (_didIteratorError2) {
|
|
126
|
-
throw _iteratorError2;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (s.$$css) {
|
|
133
|
-
for (var k in s) {
|
|
134
|
-
if (k !== "$$css") classNames.push(s[k]);
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
Object.assign(style, s);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
141
|
-
try {
|
|
142
|
-
for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
143
|
-
var input = _step.value;
|
|
144
|
-
walk(input);
|
|
145
|
-
}
|
|
146
|
-
} catch (err) {
|
|
147
|
-
_didIteratorError = true;
|
|
148
|
-
_iteratorError = err;
|
|
149
|
-
} finally {
|
|
150
|
-
try {
|
|
151
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
152
|
-
_iterator.return();
|
|
153
|
-
}
|
|
154
|
-
} finally {
|
|
155
|
-
if (_didIteratorError) {
|
|
156
|
-
throw _iteratorError;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
style,
|
|
162
|
-
className: classNames.join(" ")
|
|
163
|
-
};
|
|
105
|
+
return inputs.flat(Infinity).filter(Boolean);
|
|
164
106
|
}
|
|
165
107
|
function joinClassNames() {
|
|
166
108
|
for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
@@ -207,13 +149,6 @@ var styles = {
|
|
|
207
149
|
};
|
|
208
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
209
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;
|
|
210
|
-
var { dataSet, ...domRest } = rest;
|
|
211
|
-
var dataAttrs = {};
|
|
212
|
-
if (dataSet) {
|
|
213
|
-
for (var key in dataSet) {
|
|
214
|
-
dataAttrs[`data-${key}`] = dataSet[key];
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
152
|
var scrollNodeRef = React.useRef(null);
|
|
218
153
|
var innerViewRef = React.useRef(null);
|
|
219
154
|
var scrollState = React.useRef({
|
|
@@ -301,21 +236,19 @@ var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRe
|
|
|
301
236
|
var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {
|
|
302
237
|
var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;
|
|
303
238
|
if (child != null && (isSticky || pagingEnabled)) {
|
|
304
|
-
var
|
|
239
|
+
var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);
|
|
305
240
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
306
|
-
style:
|
|
307
|
-
className: joinClassNames(resolved.className),
|
|
241
|
+
style: resolvedStyle,
|
|
308
242
|
children: child
|
|
309
243
|
});
|
|
310
244
|
}
|
|
311
245
|
return child;
|
|
312
246
|
}) : children;
|
|
313
|
-
var
|
|
247
|
+
var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);
|
|
314
248
|
var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
315
249
|
ref: innerViewRef,
|
|
316
250
|
onLayout: handleContentLayout,
|
|
317
|
-
style:
|
|
318
|
-
className: joinClassNames(contentResolved.className),
|
|
251
|
+
style: contentStyle,
|
|
319
252
|
children: renderedChildren
|
|
320
253
|
});
|
|
321
254
|
var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;
|
|
@@ -323,22 +256,18 @@ var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRe
|
|
|
323
256
|
var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;
|
|
324
257
|
var hideVerticalScrollbar = showsVerticalScrollIndicator === false;
|
|
325
258
|
var extraClassName = (hideHorizontalScrollbar ? " _hsb-x" : "") + (hideVerticalScrollbar ? " _hsb-y" : "");
|
|
326
|
-
var
|
|
259
|
+
var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);
|
|
327
260
|
var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
328
|
-
...
|
|
329
|
-
|
|
330
|
-
className: joinClassNames(domRest.className, scrollResolved.className, extraClassName),
|
|
261
|
+
...rest,
|
|
262
|
+
className: joinClassNames(rest.className, extraClassName),
|
|
331
263
|
ref: setScrollNodeRef,
|
|
332
264
|
onScroll: handleScroll,
|
|
333
|
-
style:
|
|
265
|
+
style: scrollStyle,
|
|
334
266
|
children: contentContainer
|
|
335
267
|
});
|
|
336
268
|
if (refreshControl) {
|
|
337
|
-
var
|
|
338
|
-
return /* @__PURE__ */ React.cloneElement(refreshControl, {
|
|
339
|
-
style: refreshResolved.style,
|
|
340
|
-
className: joinClassNames(refreshResolved.className)
|
|
341
|
-
}, scrollView);
|
|
269
|
+
var refreshStyle = resolveStyles(baseStyle, style);
|
|
270
|
+
return /* @__PURE__ */ React.cloneElement(refreshControl, { style: refreshStyle }, scrollView);
|
|
342
271
|
}
|
|
343
272
|
return scrollView;
|
|
344
273
|
});
|
|
@@ -102,65 +102,7 @@ function resolveStyles() {
|
|
|
102
102
|
for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
103
103
|
inputs[_key] = arguments[_key];
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
var classNames = [];
|
|
107
|
-
var walk = function(s) {
|
|
108
|
-
if (!s) return;
|
|
109
|
-
if (Array.isArray(s)) {
|
|
110
|
-
var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
|
|
111
|
-
try {
|
|
112
|
-
for (var _iterator2 = s[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
113
|
-
var item = _step2.value;
|
|
114
|
-
walk(item);
|
|
115
|
-
}
|
|
116
|
-
} catch (err) {
|
|
117
|
-
_didIteratorError2 = true;
|
|
118
|
-
_iteratorError2 = err;
|
|
119
|
-
} finally {
|
|
120
|
-
try {
|
|
121
|
-
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
122
|
-
_iterator2.return();
|
|
123
|
-
}
|
|
124
|
-
} finally {
|
|
125
|
-
if (_didIteratorError2) {
|
|
126
|
-
throw _iteratorError2;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (s.$$css) {
|
|
133
|
-
for (var k in s) {
|
|
134
|
-
if (k !== "$$css") classNames.push(s[k]);
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
Object.assign(style, s);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
141
|
-
try {
|
|
142
|
-
for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
143
|
-
var input = _step.value;
|
|
144
|
-
walk(input);
|
|
145
|
-
}
|
|
146
|
-
} catch (err) {
|
|
147
|
-
_didIteratorError = true;
|
|
148
|
-
_iteratorError = err;
|
|
149
|
-
} finally {
|
|
150
|
-
try {
|
|
151
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
152
|
-
_iterator.return();
|
|
153
|
-
}
|
|
154
|
-
} finally {
|
|
155
|
-
if (_didIteratorError) {
|
|
156
|
-
throw _iteratorError;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
style,
|
|
162
|
-
className: classNames.join(" ")
|
|
163
|
-
};
|
|
105
|
+
return inputs.flat(Infinity).filter(Boolean);
|
|
164
106
|
}
|
|
165
107
|
function joinClassNames() {
|
|
166
108
|
for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
@@ -207,13 +149,6 @@ var styles = {
|
|
|
207
149
|
};
|
|
208
150
|
var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRef) {
|
|
209
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;
|
|
210
|
-
var { dataSet, ...domRest } = rest;
|
|
211
|
-
var dataAttrs = {};
|
|
212
|
-
if (dataSet) {
|
|
213
|
-
for (var key in dataSet) {
|
|
214
|
-
dataAttrs[`data-${key}`] = dataSet[key];
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
152
|
var scrollNodeRef = React.useRef(null);
|
|
218
153
|
var innerViewRef = React.useRef(null);
|
|
219
154
|
var scrollState = React.useRef({
|
|
@@ -301,21 +236,19 @@ var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRe
|
|
|
301
236
|
var renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, function(child, i) {
|
|
302
237
|
var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;
|
|
303
238
|
if (child != null && (isSticky || pagingEnabled)) {
|
|
304
|
-
var
|
|
239
|
+
var resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);
|
|
305
240
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
306
|
-
style:
|
|
307
|
-
className: joinClassNames(resolved.className),
|
|
241
|
+
style: resolvedStyle,
|
|
308
242
|
children: child
|
|
309
243
|
});
|
|
310
244
|
}
|
|
311
245
|
return child;
|
|
312
246
|
}) : children;
|
|
313
|
-
var
|
|
247
|
+
var contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);
|
|
314
248
|
var contentContainer = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
315
249
|
ref: innerViewRef,
|
|
316
250
|
onLayout: handleContentLayout,
|
|
317
|
-
style:
|
|
318
|
-
className: joinClassNames(contentResolved.className),
|
|
251
|
+
style: contentStyle,
|
|
319
252
|
children: renderedChildren
|
|
320
253
|
});
|
|
321
254
|
var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;
|
|
@@ -323,22 +256,18 @@ var WebScrollView = /* @__PURE__ */ React.forwardRef(function(props, forwardedRe
|
|
|
323
256
|
var hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;
|
|
324
257
|
var hideVerticalScrollbar = showsVerticalScrollIndicator === false;
|
|
325
258
|
var extraClassName = (hideHorizontalScrollbar ? " _hsb-x" : "") + (hideVerticalScrollbar ? " _hsb-y" : "");
|
|
326
|
-
var
|
|
259
|
+
var scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);
|
|
327
260
|
var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {
|
|
328
|
-
...
|
|
329
|
-
|
|
330
|
-
className: joinClassNames(domRest.className, scrollResolved.className, extraClassName),
|
|
261
|
+
...rest,
|
|
262
|
+
className: joinClassNames(rest.className, extraClassName),
|
|
331
263
|
ref: setScrollNodeRef,
|
|
332
264
|
onScroll: handleScroll,
|
|
333
|
-
style:
|
|
265
|
+
style: scrollStyle,
|
|
334
266
|
children: contentContainer
|
|
335
267
|
});
|
|
336
268
|
if (refreshControl) {
|
|
337
|
-
var
|
|
338
|
-
return /* @__PURE__ */ React.cloneElement(refreshControl, {
|
|
339
|
-
style: refreshResolved.style,
|
|
340
|
-
className: joinClassNames(refreshResolved.className)
|
|
341
|
-
}, scrollView);
|
|
269
|
+
var refreshStyle = resolveStyles(baseStyle, style);
|
|
270
|
+
return /* @__PURE__ */ React.cloneElement(refreshControl, { style: refreshStyle }, scrollView);
|
|
342
271
|
}
|
|
343
272
|
return scrollView;
|
|
344
273
|
});
|
|
@@ -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 var style = {};\n var classNames = [];\n var walk = function(s) {\n if (!s) return;\n if (Array.isArray(s)) {\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = s[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var item = _step2.value;\n walk(item);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return;\n }\n if (s.$$css) {\n for (var k in s) {\n if (k !== \"$$css\") classNames.push(s[k]);\n }\n } else {\n Object.assign(style, s);\n }\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var input = _step.value;\n walk(input);\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 return {\n style,\n className: classNames.join(\" \")\n };\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 { dataSet, ...domRest } = rest;\n var dataAttrs = {};\n if (dataSet) {\n for (var key in dataSet) {\n dataAttrs[`data-${key}`] = dataSet[key];\n }\n }\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 resolved = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n style: resolved.style,\n className: joinClassNames(resolved.className),\n children: child\n });\n }\n return child;\n }) : children;\n var contentResolved = 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: contentResolved.style,\n className: joinClassNames(contentResolved.className),\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 scrollResolved = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);\n var scrollView = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(View, {\n ...domRest,\n ...dataAttrs,\n className: joinClassNames(domRest.className, scrollResolved.className, extraClassName),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollResolved.style,\n children: contentContainer\n });\n if (refreshControl) {\n var refreshResolved = resolveStyles(baseStyle, style);\n return /* @__PURE__ */ React.cloneElement(refreshControl, {\n style: refreshResolved.style,\n className: joinClassNames(refreshResolved.className)\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 ...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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"}
|
|
@@ -49,27 +49,7 @@ function shouldEmitScrollEvent(lastTick, eventThrottle) {
|
|
|
49
49
|
return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;
|
|
50
50
|
}
|
|
51
51
|
function resolveStyles(...inputs) {
|
|
52
|
-
|
|
53
|
-
const classNames = [];
|
|
54
|
-
const walk = (s) => {
|
|
55
|
-
if (!s) return;
|
|
56
|
-
if (Array.isArray(s)) {
|
|
57
|
-
for (const item of s) walk(item);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (s.$$css) {
|
|
61
|
-
for (const k in s) {
|
|
62
|
-
if (k !== "$$css") classNames.push(s[k]);
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
Object.assign(style, s);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
for (const input of inputs) walk(input);
|
|
69
|
-
return {
|
|
70
|
-
style,
|
|
71
|
-
className: classNames.join(" ")
|
|
72
|
-
};
|
|
52
|
+
return inputs.flat(Infinity).filter(Boolean);
|
|
73
53
|
}
|
|
74
54
|
function joinClassNames(...parts) {
|
|
75
55
|
const joined = parts.filter(Boolean).join(" ").trim();
|
|
@@ -113,13 +93,6 @@ const styles = {
|
|
|
113
93
|
};
|
|
114
94
|
const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
115
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;
|
|
116
|
-
const { dataSet, ...domRest } = rest;
|
|
117
|
-
const dataAttrs = {};
|
|
118
|
-
if (dataSet) {
|
|
119
|
-
for (const key in dataSet) {
|
|
120
|
-
dataAttrs[`data-${key}`] = dataSet[key];
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
96
|
const scrollNodeRef = React.useRef(null);
|
|
124
97
|
const innerViewRef = React.useRef(null);
|
|
125
98
|
const scrollState = React.useRef({
|
|
@@ -197,21 +170,19 @@ const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
|
197
170
|
const renderedChildren = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(children, (child, i) => {
|
|
198
171
|
const isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;
|
|
199
172
|
if (child != null && (isSticky || pagingEnabled)) {
|
|
200
|
-
const
|
|
173
|
+
const resolvedStyle = resolveStyles(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild);
|
|
201
174
|
return /* @__PURE__ */ jsx(View$1, {
|
|
202
|
-
style:
|
|
203
|
-
className: joinClassNames(resolved.className),
|
|
175
|
+
style: resolvedStyle,
|
|
204
176
|
children: child
|
|
205
177
|
});
|
|
206
178
|
}
|
|
207
179
|
return child;
|
|
208
180
|
}) : children;
|
|
209
|
-
const
|
|
181
|
+
const contentStyle = resolveStyles(horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle);
|
|
210
182
|
const contentContainer = /* @__PURE__ */ jsx(View$1, {
|
|
211
183
|
ref: innerViewRef,
|
|
212
184
|
onLayout: handleContentLayout,
|
|
213
|
-
style:
|
|
214
|
-
className: joinClassNames(contentResolved.className),
|
|
185
|
+
style: contentStyle,
|
|
215
186
|
children: renderedChildren
|
|
216
187
|
});
|
|
217
188
|
const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;
|
|
@@ -219,22 +190,18 @@ const WebScrollView = React.forwardRef((props, forwardedRef) => {
|
|
|
219
190
|
const hideHorizontalScrollbar = showsHorizontalScrollIndicator === false;
|
|
220
191
|
const hideVerticalScrollbar = showsVerticalScrollIndicator === false;
|
|
221
192
|
const extraClassName = (hideHorizontalScrollbar ? " _hsb-x" : "") + (hideVerticalScrollbar ? " _hsb-y" : "");
|
|
222
|
-
const
|
|
193
|
+
const scrollStyle = resolveStyles(baseStyle, pagingEnabled && pagingEnabledStyle, style, !scrollEnabled && styles.scrollDisabled);
|
|
223
194
|
const scrollView = /* @__PURE__ */ jsx(View$1, {
|
|
224
|
-
...
|
|
225
|
-
|
|
226
|
-
className: joinClassNames(domRest.className, scrollResolved.className, extraClassName),
|
|
195
|
+
...rest,
|
|
196
|
+
className: joinClassNames(rest.className, extraClassName),
|
|
227
197
|
ref: setScrollNodeRef,
|
|
228
198
|
onScroll: handleScroll,
|
|
229
|
-
style:
|
|
199
|
+
style: scrollStyle,
|
|
230
200
|
children: contentContainer
|
|
231
201
|
});
|
|
232
202
|
if (refreshControl) {
|
|
233
|
-
const
|
|
234
|
-
return React.cloneElement(refreshControl, {
|
|
235
|
-
style: refreshResolved.style,
|
|
236
|
-
className: joinClassNames(refreshResolved.className)
|
|
237
|
-
}, scrollView);
|
|
203
|
+
const refreshStyle = resolveStyles(baseStyle, style);
|
|
204
|
+
return React.cloneElement(refreshControl, { style: refreshStyle }, scrollView);
|
|
238
205
|
}
|
|
239
206
|
return scrollView;
|
|
240
207
|
});
|
|
@@ -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 const style = {};\n const classNames = [];\n const walk = (s) => {\n if (!s) return;\n if (Array.isArray(s)) {\n for (const item of s) walk(item);\n return;\n }\n if (s.$$css) {\n for (const k in s) {\n if (k !== \"$$css\") classNames.push(s[k]);\n }\n } else {\n Object.assign(style, s);\n }\n };\n for (const input of inputs) walk(input);\n return { style, className: classNames.join(\" \") };\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 { dataSet, ...domRest } = rest;\n const dataAttrs = {};\n if (dataSet) {\n for (const key in dataSet) {\n dataAttrs[`data-${key}`] = dataSet[key];\n }\n }\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 resolved = resolveStyles(\n isSticky && styles.stickyHeader,\n pagingEnabled && styles.pagingEnabledChild\n );\n return /* @__PURE__ */ jsx(\n View,\n {\n style: resolved.style,\n className: joinClassNames(resolved.className),\n children: child\n }\n );\n }\n return child;\n }) : children;\n const contentResolved = resolveStyles(\n horizontal && styles.contentContainerHorizontal,\n centerContent && styles.contentContainerCenterContent,\n contentContainerStyle\n );\n const contentContainer = /* @__PURE__ */ jsx(\n View,\n {\n ref: innerViewRef,\n onLayout: handleContentLayout,\n style: contentResolved.style,\n className: joinClassNames(contentResolved.className),\n children: renderedChildren\n }\n );\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 scrollResolved = resolveStyles(\n baseStyle,\n pagingEnabled && pagingEnabledStyle,\n style,\n !scrollEnabled && styles.scrollDisabled\n );\n const scrollView = /* @__PURE__ */ jsx(\n View,\n {\n ...domRest,\n ...dataAttrs,\n className: joinClassNames(\n domRest.className,\n scrollResolved.className,\n extraClassName\n ),\n ref: setScrollNodeRef,\n onScroll: handleScroll,\n style: scrollResolved.style,\n children: contentContainer\n }\n );\n if (refreshControl) {\n const refreshResolved = resolveStyles(baseStyle, style);\n return React.cloneElement(\n refreshControl,\n {\n style: refreshResolved.style,\n className: joinClassNames(refreshResolved.className)\n },\n scrollView\n );\n }\n return scrollView;\n }\n);\nWebScrollView.displayName = \"ScrollView\";\nexport {\n WebScrollView\n};\n//# sourceMappingURL=WebScrollView.js.map\n"],"mappings":";;;;;AAGA,MAAMA,SAAOC;AACb,SAAS,UAAU,GAAG,MAAM;CAC1B,QAAQ,SAAS;EACf,KAAK,MAAM,OAAO,MAAM;GACtB,IAAI,CAAC,KAAK;GACV,IAAI,OAAO,QAAQ,YAAY,IAAI,IAAI;QAClC,IAAI,UAAU;EACrB;CACF;AACF;AACA,SAAS,qBAAqB,GAAG;CAC/B,MAAM,SAAS,EAAE;CACjB,OAAO;EACL,aAAa;GACX,eAAe;IACb,IAAI,IAAI;KACN,OAAO,OAAO;IAChB;IACA,IAAI,IAAI;KACN,OAAO,OAAO;IAChB;GACF;GACA,aAAa;IACX,IAAI,SAAS;KACX,OAAO,OAAO;IAChB;IACA,IAAI,QAAQ;KACV,OAAO,OAAO;IAChB;GACF;GACA,mBAAmB;IACjB,IAAI,SAAS;KACX,OAAO,OAAO;IAChB;IACA,IAAI,QAAQ;KACV,OAAO,OAAO;IAChB;GACF;EACF;EACA,WAAW,KAAK,IAAI;CACtB;AACF;AACA,SAAS,sBAAsB,UAAU,eAAe;CACtD,MAAM,oBAAoB,KAAK,IAAI,IAAI;CACvC,OAAO,gBAAgB,KAAK,qBAAqB;AACnD;AACA,SAAS,cAAc,GAAG,QAAQ;CAChC,MAAM,QAAQ,CAAC;CACf,MAAM,aAAa,CAAC;CACpB,MAAM,QAAQ,MAAM;EAClB,IAAI,CAAC,GAAG;EACR,IAAI,MAAM,QAAQ,CAAC,GAAG;GACpB,KAAK,MAAM,QAAQ,GAAG,KAAK,IAAI;GAC/B;EACF;EACA,IAAI,EAAE,OAAO;GACX,KAAK,MAAM,KAAK,GAAG;IACjB,IAAI,MAAM,SAAS,WAAW,KAAK,EAAE,EAAE;GACzC;EACF,OAAO;GACL,OAAO,OAAO,OAAO,CAAC;EACxB;CACF;CACA,KAAK,MAAM,SAAS,QAAQ,KAAK,KAAK;CACtC,OAAO;EAAE;EAAO,WAAW,WAAW,KAAK,GAAG;CAAE;AAClD;AACA,SAAS,eAAe,GAAG,OAAO;CAChC,MAAM,SAAS,MAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;CACpD,OAAO,UAAU,KAAK;AACxB;AACA,MAAM,cAAc;CAClB,UAAU;CACV,YAAY;AACd;AACA,MAAM,SAAS;CACb,cAAc;EACZ,GAAG;EACH,eAAe;EACf,WAAW;EACX,WAAW;CACb;CACA,gBAAgB;EACd,GAAG;EACH,eAAe;EACf,WAAW;EACX,WAAW;CACb;CACA,4BAA4B,EAC1B,eAAe,MACjB;CACA,+BAA+B;EAC7B,gBAAgB;EAChB,UAAU;CACZ;CACA,cAAc;EACZ,UAAU;EACV,KAAK;EACL,QAAQ;CACV;CACA,yBAAyB,EACvB,gBAAgB,cAClB;CACA,uBAAuB,EACrB,gBAAgB,cAClB;CACA,oBAAoB,EAClB,iBAAiB,QACnB;CACA,gBAAgB;EACd,WAAW;EACX,WAAW;EACX,aAAa;CACf;AACF;AACA,MAAM,gBAAgB,MAAM,YACzB,OAAO,iBAAiB;CACvB,MAAM,EACJ,UACA,uBACA,YACA,qBACA,UACA,gBACA,qBACA,eACA,eACA,gBAAgB,MAChB,sBAAsB,GACtB,gCACA,8BACA,OAEA,2BACA,qBACA,eACA,cACA,gCACA,kBACA,wBACA,yBACA,+BACA,cACA,kBACA,gBACA,qBACA,gCACA,kBACA,kBACA,qBACA,eACA,gBACA,qBACA,uBACA,uBACA,eACA,yBACA,iBACA,WACA,gBACA,eACA,aACA,SACA,GAAG,SACD;CACJ,MAAM,EAAE,SAAS,GAAG,YAAY;CAChC,MAAM,YAAY,CAAC;CACnB,IAAI,SAAS;EACX,KAAK,MAAM,OAAO,SAAS;GACzB,UAAU,QAAQ,SAAS,QAAQ;EACrC;CACF;CACA,MAAM,gBAAgB,MAAM,OAAO,IAAI;CACvC,MAAM,eAAe,MAAM,OAAO,IAAI;CACtC,MAAM,cAAc,MAAM,OAAO;EAAE,aAAa;EAAO,gBAAgB;CAAE,CAAC;CAC1E,MAAM,gBAAgB,MAAM,OAAO,IAAI;CACvC,MAAM,YAAY,YAAY;EAC5B,MAAM,OAAO,cAAc;EAC3B,IAAI,QAAQ,MAAM;EAClB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,WAAW,SAAS,WAAW,CAAC;EACtD,IAAI,OAAO,KAAK,WAAW,YAAY;GACrC,KAAK,OAAO;IAAE,KAAK;IAAG,MAAM;IAAG,UAAU,WAAW,WAAW;GAAO,CAAC;EACzE,OAAO;GACL,KAAK,aAAa;GAClB,KAAK,YAAY;EACnB;CACF;CACA,MAAM,eAAe,YAAY;EAC/B,MAAM,OAAO,cAAc;EAC3B,IAAI,QAAQ,MAAM;EAClB,MAAM,YAAY,WAAW,QAAQ,cAAc;EACnD,MAAM,IAAI,aAAa,KAAK,cAAc;EAC1C,MAAM,IAAI,aAAa,IAAI,KAAK;EAChC,SAAS;GAAE;GAAG;GAAG;EAAS,CAAC;CAC7B;CACA,MAAM,mBAAmB,MAAM,aAC5B,SAAS;EACR,cAAc,UAAU;EACxB,IAAI,QAAQ,MAAM;GAChB,KAAK,2BAA2B;GAChC,KAAK,0BAA0B;GAC/B,KAAK,yBAAyB,aAAa;GAC3C,KAAK,wBAAwB,aAAa;GAC1C,KAAK,2BAA2B;GAChC,KAAK,WAAW;GAChB,KAAK,cAAc;GACnB,KAAK,8BAA8B,CACnC;EACF;EACA,UAAU,YAAY,CAAC,CAAC,IAAI;CAC9B,GACA,CAAC,cAAc,UAAU,CAC3B;CACA,SAAS,aAAa,GAAG;EACvB,EAAE,gBAAgB;EAClB,IAAI,EAAE,WAAW,cAAc,SAAS;EACxC,IAAI,cAAc,WAAW,MAAM;GACjC,aAAa,cAAc,OAAO;EACpC;EACA,cAAc,UAAU,iBAAiB;GACvC,YAAY,QAAQ,cAAc;GAClC,WAAW,qBAAqB,CAAC,CAAC;EACpC,GAAG,GAAG;EACN,IAAI,YAAY,QAAQ,aAAa;GACnC,IAAI,sBAAsB,YAAY,QAAQ,gBAAgB,mBAAmB,GAAG;IAClF,YAAY,QAAQ,iBAAiB,KAAK,IAAI;IAC9C,WAAW,qBAAqB,CAAC,CAAC;GACpC;EACF,OAAO;GACL,YAAY,QAAQ,cAAc;GAClC,YAAY,QAAQ,iBAAiB,KAAK,IAAI;GAC9C,WAAW,qBAAqB,CAAC,CAAC;EACpC;CACF;CACA,MAAM,sBAAsB,uBAAuB,MAAM;EACvD,MAAM,EAAE,OAAO,WAAW,EAAE,YAAY;EACxC,oBAAoB,OAAO,MAAM;CACnC,IAAI,KAAK;CACT,MAAM,yBAAyB,CAAC,cAAc,MAAM,QAAQ,mBAAmB;CAC/E,MAAM,mBAAmB,0BAA0B,gBAAgB,MAAM,SAAS,IAAI,WAAW,OAAO,MAAM;EAC5G,MAAM,WAAW,0BAA0B,oBAAoB,QAAQ,CAAC,IAAI,CAAC;EAC7E,IAAI,SAAS,SAAS,YAAY,gBAAgB;GAChD,MAAM,WAAW,cACf,YAAY,OAAO,cACnB,iBAAiB,OAAO,kBAC1B;GACA,OAAuB,oBACrBD,QACA;IACE,OAAO,SAAS;IAChB,WAAW,eAAe,SAAS,SAAS;IAC5C,UAAU;GACZ,CACF;EACF;EACA,OAAO;CACT,CAAC,IAAI;CACL,MAAM,kBAAkB,cACtB,cAAc,OAAO,4BACrB,iBAAiB,OAAO,+BACxB,qBACF;CACA,MAAM,mBAAmC,oBACvCA,QACA;EACE,KAAK;EACL,UAAU;EACV,OAAO,gBAAgB;EACvB,WAAW,eAAe,gBAAgB,SAAS;EACnD,UAAU;CACZ,CACF;CACA,MAAM,YAAY,aAAa,OAAO,iBAAiB,OAAO;CAC9D,MAAM,qBAAqB,aAAa,OAAO,0BAA0B,OAAO;CAChF,MAAM,0BAA0B,mCAAmC;CACnE,MAAM,wBAAwB,iCAAiC;CAC/D,MAAM,kBAAkB,0BAA0B,YAAY,OAAO,wBAAwB,YAAY;CACzG,MAAM,iBAAiB,cACrB,WACA,iBAAiB,oBACjB,OACA,CAAC,iBAAiB,OAAO,cAC3B;CACA,MAAM,aAA6B,oBACjCA,QACA;EACE,GAAG;EACH,GAAG;EACH,WAAW,eACT,QAAQ,WACR,eAAe,WACf,cACF;EACA,KAAK;EACL,UAAU;EACV,OAAO,eAAe;EACtB,UAAU;CACZ,CACF;CACA,IAAI,gBAAgB;EAClB,MAAM,kBAAkB,cAAc,WAAW,KAAK;EACtD,OAAO,MAAM,aACX,gBACA;GACE,OAAO,gBAAgB;GACvB,WAAW,eAAe,gBAAgB,SAAS;EACrD,GACA,UACF;CACF;CACA,OAAO;AACT,CACF;AACA,cAAc,cAAc"}
|
|
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":";;;;;AAGA,MAAMA,SAAOC;AACb,SAAS,UAAU,GAAG,MAAM;CAC1B,QAAQ,SAAS;EACf,KAAK,MAAM,OAAO,MAAM;GACtB,IAAI,CAAC,KAAK;GACV,IAAI,OAAO,QAAQ,YAAY,IAAI,IAAI;QAClC,IAAI,UAAU;EACrB;CACF;AACF;AACA,SAAS,qBAAqB,GAAG;CAC/B,MAAM,SAAS,EAAE;CACjB,OAAO;EACL,aAAa;GACX,eAAe;IACb,IAAI,IAAI;KACN,OAAO,OAAO;IAChB;IACA,IAAI,IAAI;KACN,OAAO,OAAO;IAChB;GACF;GACA,aAAa;IACX,IAAI,SAAS;KACX,OAAO,OAAO;IAChB;IACA,IAAI,QAAQ;KACV,OAAO,OAAO;IAChB;GACF;GACA,mBAAmB;IACjB,IAAI,SAAS;KACX,OAAO,OAAO;IAChB;IACA,IAAI,QAAQ;KACV,OAAO,OAAO;IAChB;GACF;EACF;EACA,WAAW,KAAK,IAAI;CACtB;AACF;AACA,SAAS,sBAAsB,UAAU,eAAe;CACtD,MAAM,oBAAoB,KAAK,IAAI,IAAI;CACvC,OAAO,gBAAgB,KAAK,qBAAqB;AACnD;AACA,SAAS,cAAc,GAAG,QAAQ;CAChC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO;AAC7C;AACA,SAAS,eAAe,GAAG,OAAO;CAChC,MAAM,SAAS,MAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;CACpD,OAAO,UAAU,KAAK;AACxB;AACA,MAAM,cAAc;CAClB,UAAU;CACV,YAAY;AACd;AACA,MAAM,SAAS;CACb,cAAc;EACZ,GAAG;EACH,eAAe;EACf,WAAW;EACX,WAAW;CACb;CACA,gBAAgB;EACd,GAAG;EACH,eAAe;EACf,WAAW;EACX,WAAW;CACb;CACA,4BAA4B,EAC1B,eAAe,MACjB;CACA,+BAA+B;EAC7B,gBAAgB;EAChB,UAAU;CACZ;CACA,cAAc;EACZ,UAAU;EACV,KAAK;EACL,QAAQ;CACV;CACA,yBAAyB,EACvB,gBAAgB,cAClB;CACA,uBAAuB,EACrB,gBAAgB,cAClB;CACA,oBAAoB,EAClB,iBAAiB,QACnB;CACA,gBAAgB;EACd,WAAW;EACX,WAAW;EACX,aAAa;CACf;AACF;AACA,MAAM,gBAAgB,MAAM,YACzB,OAAO,iBAAiB;CACvB,MAAM,EACJ,UACA,uBACA,YACA,qBACA,UACA,gBACA,qBACA,eACA,eACA,gBAAgB,MAChB,sBAAsB,GACtB,gCACA,8BACA,OAEA,2BACA,qBACA,eACA,cACA,gCACA,kBACA,wBACA,yBACA,+BACA,cACA,kBACA,gBACA,qBACA,gCACA,kBACA,kBACA,qBACA,eACA,gBACA,qBACA,uBACA,uBACA,eACA,yBACA,iBACA,WACA,gBACA,eACA,aACA,SACA,GAAG,SACD;CACJ,MAAM,gBAAgB,MAAM,OAAO,IAAI;CACvC,MAAM,eAAe,MAAM,OAAO,IAAI;CACtC,MAAM,cAAc,MAAM,OAAO;EAAE,aAAa;EAAO,gBAAgB;CAAE,CAAC;CAC1E,MAAM,gBAAgB,MAAM,OAAO,IAAI;CACvC,MAAM,YAAY,YAAY;EAC5B,MAAM,OAAO,cAAc;EAC3B,IAAI,QAAQ,MAAM;EAClB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,WAAW,SAAS,WAAW,CAAC;EACtD,IAAI,OAAO,KAAK,WAAW,YAAY;GACrC,KAAK,OAAO;IAAE,KAAK;IAAG,MAAM;IAAG,UAAU,WAAW,WAAW;GAAO,CAAC;EACzE,OAAO;GACL,KAAK,aAAa;GAClB,KAAK,YAAY;EACnB;CACF;CACA,MAAM,eAAe,YAAY;EAC/B,MAAM,OAAO,cAAc;EAC3B,IAAI,QAAQ,MAAM;EAClB,MAAM,YAAY,WAAW,QAAQ,cAAc;EACnD,MAAM,IAAI,aAAa,KAAK,cAAc;EAC1C,MAAM,IAAI,aAAa,IAAI,KAAK;EAChC,SAAS;GAAE;GAAG;GAAG;EAAS,CAAC;CAC7B;CACA,MAAM,mBAAmB,MAAM,aAC5B,SAAS;EACR,cAAc,UAAU;EACxB,IAAI,QAAQ,MAAM;GAChB,KAAK,2BAA2B;GAChC,KAAK,0BAA0B;GAC/B,KAAK,yBAAyB,aAAa;GAC3C,KAAK,wBAAwB,aAAa;GAC1C,KAAK,2BAA2B;GAChC,KAAK,WAAW;GAChB,KAAK,cAAc;GACnB,KAAK,8BAA8B,CACnC;EACF;EACA,UAAU,YAAY,CAAC,CAAC,IAAI;CAC9B,GACA,CAAC,cAAc,UAAU,CAC3B;CACA,SAAS,aAAa,GAAG;EACvB,EAAE,gBAAgB;EAClB,IAAI,EAAE,WAAW,cAAc,SAAS;EACxC,IAAI,cAAc,WAAW,MAAM;GACjC,aAAa,cAAc,OAAO;EACpC;EACA,cAAc,UAAU,iBAAiB;GACvC,YAAY,QAAQ,cAAc;GAClC,WAAW,qBAAqB,CAAC,CAAC;EACpC,GAAG,GAAG;EACN,IAAI,YAAY,QAAQ,aAAa;GACnC,IAAI,sBAAsB,YAAY,QAAQ,gBAAgB,mBAAmB,GAAG;IAClF,YAAY,QAAQ,iBAAiB,KAAK,IAAI;IAC9C,WAAW,qBAAqB,CAAC,CAAC;GACpC;EACF,OAAO;GACL,YAAY,QAAQ,cAAc;GAClC,YAAY,QAAQ,iBAAiB,KAAK,IAAI;GAC9C,WAAW,qBAAqB,CAAC,CAAC;EACpC;CACF;CACA,MAAM,sBAAsB,uBAAuB,MAAM;EACvD,MAAM,EAAE,OAAO,WAAW,EAAE,YAAY;EACxC,oBAAoB,OAAO,MAAM;CACnC,IAAI,KAAK;CACT,MAAM,yBAAyB,CAAC,cAAc,MAAM,QAAQ,mBAAmB;CAC/E,MAAM,mBAAmB,0BAA0B,gBAAgB,MAAM,SAAS,IAAI,WAAW,OAAO,MAAM;EAC5G,MAAM,WAAW,0BAA0B,oBAAoB,QAAQ,CAAC,IAAI,CAAC;EAC7E,IAAI,SAAS,SAAS,YAAY,gBAAgB;GAChD,MAAM,gBAAgB,cACpB,YAAY,OAAO,cACnB,iBAAiB,OAAO,kBAC1B;GACA,OAAuB,oBAAID,QAAM;IAAE,OAAO;IAAe,UAAU;GAAM,CAAC;EAC5E;EACA,OAAO;CACT,CAAC,IAAI;CACL,MAAM,eAAe,cACnB,cAAc,OAAO,4BACrB,iBAAiB,OAAO,+BACxB,qBACF;CACA,MAAM,mBAAmC,oBAAIA,QAAM;EAAE,KAAK;EAAc,UAAU;EAAqB,OAAO;EAAc,UAAU;CAAiB,CAAC;CACxJ,MAAM,YAAY,aAAa,OAAO,iBAAiB,OAAO;CAC9D,MAAM,qBAAqB,aAAa,OAAO,0BAA0B,OAAO;CAChF,MAAM,0BAA0B,mCAAmC;CACnE,MAAM,wBAAwB,iCAAiC;CAC/D,MAAM,kBAAkB,0BAA0B,YAAY,OAAO,wBAAwB,YAAY;CACzG,MAAM,cAAc,cAClB,WACA,iBAAiB,oBACjB,OACA,CAAC,iBAAiB,OAAO,cAC3B;CACA,MAAM,aAA6B,oBACjCA,QACA;EACE,GAAG;EACH,WAAW,eAAe,KAAK,WAAW,cAAc;EACxD,KAAK;EACL,UAAU;EACV,OAAO;EACP,UAAU;CACZ,CACF;CACA,IAAI,gBAAgB;EAClB,MAAM,eAAe,cAAc,WAAW,KAAK;EACnD,OAAO,MAAM,aACX,gBACA,EACE,OAAO,aACT,GACA,UACF;CACF;CACA,OAAO;AACT,CACF;AACA,cAAc,cAAc"}
|