@xhsreds/reds-rn-next 0.9.1-test.1 → 0.10.0
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/coverage/.tmp/coverage-0.json +1 -1
- package/coverage/.tmp/coverage-1.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-14.json +1 -1
- package/coverage/.tmp/coverage-15.json +1 -1
- package/coverage/.tmp/coverage-16.json +1 -1
- package/coverage/.tmp/coverage-17.json +1 -1
- package/coverage/.tmp/coverage-18.json +1 -1
- package/coverage/.tmp/coverage-19.json +1 -1
- package/coverage/.tmp/coverage-2.json +1 -1
- package/coverage/.tmp/coverage-20.json +1 -1
- package/coverage/.tmp/coverage-21.json +1 -1
- package/coverage/.tmp/coverage-22.json +1 -1
- package/coverage/.tmp/coverage-23.json +1 -1
- package/coverage/.tmp/coverage-26.json +1 -1
- package/coverage/.tmp/coverage-27.json +1 -1
- package/coverage/.tmp/coverage-29.json +1 -1
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-30.json +1 -1
- package/coverage/.tmp/coverage-33.json +1 -1
- package/coverage/.tmp/coverage-34.json +1 -1
- package/coverage/.tmp/coverage-35.json +1 -1
- package/coverage/.tmp/coverage-36.json +1 -1
- package/coverage/.tmp/coverage-37.json +1 -1
- package/coverage/.tmp/coverage-38.json +1 -1
- package/coverage/.tmp/coverage-39.json +1 -1
- package/coverage/.tmp/coverage-40.json +1 -1
- package/coverage/.tmp/coverage-41.json +1 -1
- package/coverage/.tmp/coverage-6.json +1 -1
- package/coverage/.tmp/coverage-7.json +1 -1
- package/coverage/.tmp/coverage-8.json +1 -1
- package/lib/cjs/_chunks/CwkpVXDI.js.map +1 -1
- package/lib/cjs/_chunks/{CIr5S84J.js → DUU5wf2f.js} +4 -2
- package/lib/cjs/_chunks/DUU5wf2f.js.map +1 -0
- package/lib/cjs/components/Carousel/Carousel.js +9 -2
- package/lib/cjs/components/Carousel/Carousel.js.map +1 -1
- package/lib/cjs/components/Image/Image.js +29 -92
- package/lib/cjs/components/Image/Image.js.map +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/cjs/components/Image/index.js +4 -3
- package/lib/cjs/components/Image/index.js.map +1 -1
- package/lib/cjs/components/Image/queryCacheBatcher.js +96 -0
- package/lib/cjs/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/cjs/components/Popover/Popover.js +4 -3
- package/lib/cjs/components/Popover/Popover.js.map +1 -1
- package/lib/cjs/components/PullRefresh/PullRefresh.js +104 -40
- package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/cjs/components/PullRefresh/component.js +1 -1
- package/lib/cjs/components/PullRefresh/index.js +1 -1
- package/lib/cjs/components/PullRefresh/interface/index.js +1 -1
- package/lib/cjs/components/Radio/Radio.js +3 -2
- package/lib/cjs/components/Radio/Radio.js.map +1 -1
- package/lib/cjs/components/Radio/index.js +3 -2
- package/lib/cjs/components/Radio/index.js.map +1 -1
- package/lib/cjs/components/Sheets/styles.js +2 -2
- package/lib/cjs/components/Sheets/styles.js.map +1 -1
- package/lib/cjs/components/StatusBar/hook/getStatusHeight.js +14 -1
- package/lib/cjs/components/StatusBar/hook/getStatusHeight.js.map +1 -1
- package/lib/cjs/index.js +3 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/pvCount/pvData.js +1 -1
- package/lib/esm/_chunks/Da9cW8JG.js.map +1 -1
- package/lib/esm/_chunks/{CZtagXcj.js → gC9g4Fr_.js} +4 -2
- package/lib/esm/_chunks/gC9g4Fr_.js.map +1 -0
- package/lib/esm/components/Carousel/Carousel.js +9 -2
- package/lib/esm/components/Carousel/Carousel.js.map +1 -1
- package/lib/esm/components/Image/Image.js +31 -94
- package/lib/esm/components/Image/Image.js.map +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/esm/components/Image/index.js +4 -3
- package/lib/esm/components/Image/index.js.map +1 -1
- package/lib/esm/components/Image/queryCacheBatcher.js +92 -0
- package/lib/esm/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/esm/components/Popover/Popover.js +4 -3
- package/lib/esm/components/Popover/Popover.js.map +1 -1
- package/lib/esm/components/PullRefresh/PullRefresh.js +105 -41
- package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/esm/components/PullRefresh/component.js +1 -1
- package/lib/esm/components/PullRefresh/index.js +1 -1
- package/lib/esm/components/PullRefresh/interface/index.js +1 -1
- package/lib/esm/components/Radio/Radio.js +3 -2
- package/lib/esm/components/Radio/Radio.js.map +1 -1
- package/lib/esm/components/Radio/index.js +3 -2
- package/lib/esm/components/Radio/index.js.map +1 -1
- package/lib/esm/components/Sheets/styles.js +2 -2
- package/lib/esm/components/Sheets/styles.js.map +1 -1
- package/lib/esm/components/StatusBar/hook/getStatusHeight.js +14 -2
- package/lib/esm/components/StatusBar/hook/getStatusHeight.js.map +1 -1
- package/lib/esm/index.js +3 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/pvCount/pvData.js +1 -1
- package/lib/src/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/src/components/Popover/Popover.d.ts +1 -1
- package/lib/src/components/Popover/interface/index.d.ts +1 -0
- package/lib/src/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/src/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/src/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
- package/lib/types/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/types/components/Popover/Popover.d.ts +1 -1
- package/lib/types/components/Popover/interface/index.d.ts +1 -0
- package/lib/types/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/types/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/types/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
- package/package.json +2 -2
- package/src/components/Carousel/Carousel.tsx +15 -3
- package/src/components/Carousel/demo/index.tsx +14 -2
- package/src/components/Image/Image.tsx +53 -115
- package/src/components/Image/VisibilitySensor.tsx +1 -2
- package/src/components/Image/queryCacheBatcher.ts +84 -0
- package/src/components/Popover/Popover.tsx +4 -3
- package/src/components/Popover/doc/index.mdx +22 -21
- package/src/components/Popover/interface/index.ts +1 -0
- package/src/components/PullRefresh/PullRefresh.tsx +146 -55
- package/src/components/PullRefresh/doc/index.mdx +19 -16
- package/src/components/PullRefresh/interface/index.ts +6 -0
- package/src/components/Sheets/styles.ts +2 -2
- package/src/components/StatusBar/hook/getStatusHeight.ts +20 -1
- package/src/i18n/@types/resources.d.ts +27 -27
- package/src/i18n/index.json +31 -31
- package/src/index.ts +0 -1
- package/CHANGELOG.md +0 -13
- package/lib/cjs/_chunks/CIr5S84J.js.map +0 -1
- package/lib/esm/_chunks/CZtagXcj.js.map +0 -1
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { i as _objectWithoutProperties, _ as _slicedToArray, a as _objectSpread2 } from '../../_chunks/CAkwE9ZD.js';
|
|
2
|
-
import React, { memo, useState,
|
|
3
|
-
import { Image as Image$2,
|
|
2
|
+
import React, { memo, useState, useRef, useMemo, useEffect, useCallback } from 'react';
|
|
3
|
+
import { View, Image as Image$2, TouchableOpacity } from 'react-native';
|
|
4
4
|
import { I as IMAGE_STATUS, T as TLoadStyle, b as TErrorStyle, a as ImageDefaultProps } from '../../_chunks/JYqI07V8.js';
|
|
5
5
|
import styles from './styles.js';
|
|
6
6
|
import { useAveColor, useBlur } from './hook/index.js';
|
|
7
7
|
import CircularProgress from './CircularProgress.js';
|
|
8
8
|
import '../ConfigProvider/hooks/ConfigCache/ConfigCache.js';
|
|
9
|
-
import
|
|
9
|
+
import '@xhs/reds-apm/src/index.native';
|
|
10
10
|
import { lightColor } from '@xhsreds/reds-token-next';
|
|
11
11
|
import { useColorMode } from '../ConfigProvider/hooks/themeToken/useColorMode.js';
|
|
12
12
|
import { isLocalFile, isDataUri, convertKeysToSnakeCase } from './utils.js';
|
|
13
|
-
import VisibilitySensor from './VisibilitySensor.js';
|
|
14
13
|
import { apmPush } from './apm.js';
|
|
14
|
+
import { queryCacheBatched } from './queryCacheBatcher.js';
|
|
15
15
|
import 'react-native-svg';
|
|
16
|
-
import '@xhs/reds-apm/src/index.native';
|
|
17
|
-
import '../../pvCount/pvData.js';
|
|
18
16
|
import '../ConfigProvider/hooks/ConfigContext/ConfigContext.js';
|
|
19
17
|
|
|
20
18
|
var _excluded = ["src", "source", "width", "height", "borderRadius", "errorStyle", "loadStyle", "style", "abortApmCollection", "fadeDuration", "onFirstDrawFinished"];
|
|
@@ -39,9 +37,8 @@ var Image = function Image(_ref) {
|
|
|
39
37
|
style = _ref.style,
|
|
40
38
|
abortApmCollection = _ref.abortApmCollection,
|
|
41
39
|
fadeDuration = _ref.fadeDuration,
|
|
42
|
-
|
|
40
|
+
_onFirstDrawFinished = _ref.onFirstDrawFinished,
|
|
43
41
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
44
|
-
useMounted("Image");
|
|
45
42
|
var _useState = useState(IMAGE_STATUS.LOADING),
|
|
46
43
|
_useState2 = _slicedToArray(_useState, 2),
|
|
47
44
|
imageStatus = _useState2[0],
|
|
@@ -50,14 +47,7 @@ var Image = function Image(_ref) {
|
|
|
50
47
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
51
48
|
progress = _useState4[0],
|
|
52
49
|
setProgress = _useState4[1];
|
|
53
|
-
var
|
|
54
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
55
|
-
loadedTime = _useState6[0],
|
|
56
|
-
setLoadedTime = _useState6[1];
|
|
57
|
-
var _useState7 = useState(0),
|
|
58
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
59
|
-
loadStartTime = _useState8[0],
|
|
60
|
-
setLoadStartTime = _useState8[1];
|
|
50
|
+
var mountTimeRef = useRef(Date.now());
|
|
61
51
|
var formatSource = useMemo(function () {
|
|
62
52
|
if (_source) return _source;
|
|
63
53
|
return {
|
|
@@ -72,23 +62,10 @@ var Image = function Image(_ref) {
|
|
|
72
62
|
var blurSource = useBlur({
|
|
73
63
|
source: formatSource
|
|
74
64
|
});
|
|
75
|
-
var _useState9 = useState(false),
|
|
76
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
77
|
-
viewable = _useState0[0],
|
|
78
|
-
setViewable = _useState0[1];
|
|
79
|
-
var hasInit = useRef(false);
|
|
80
|
-
var checkIsVisible = function checkIsVisible(isVisible) {
|
|
81
|
-
if (abortApmCollection) return;
|
|
82
|
-
if (!hasInit.current) {
|
|
83
|
-
hasInit.current = true;
|
|
84
|
-
apmDataRef.current.isFirstScreen = isVisible ? "true" : "false";
|
|
85
|
-
}
|
|
86
|
-
setViewable(isVisible);
|
|
87
|
-
};
|
|
88
65
|
var apmDataRef = useRef({
|
|
89
66
|
imageUrl: "",
|
|
90
67
|
imageHost: "",
|
|
91
|
-
intersectTime:
|
|
68
|
+
intersectTime: 0,
|
|
92
69
|
imageSize: 0,
|
|
93
70
|
isFirstScreen: "false",
|
|
94
71
|
isPrefetch: "",
|
|
@@ -99,10 +76,7 @@ var Image = function Image(_ref) {
|
|
|
99
76
|
loadDuration: 0,
|
|
100
77
|
viewDuration: 0
|
|
101
78
|
});
|
|
102
|
-
var
|
|
103
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
104
|
-
apmDoneRef = _useState10[0],
|
|
105
|
-
setApmDoneRef = _useState10[1];
|
|
79
|
+
var apmDoneRef = useRef(false);
|
|
106
80
|
useEffect(function () {
|
|
107
81
|
if (abortApmCollection) return;
|
|
108
82
|
try {
|
|
@@ -117,52 +91,38 @@ var Image = function Image(_ref) {
|
|
|
117
91
|
useEffect(function () {
|
|
118
92
|
if (abortApmCollection) return;
|
|
119
93
|
var imageUrl = (formatSource === null || formatSource === void 0 ? void 0 : formatSource.uri) || "";
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
94
|
+
if (!imageUrl) return;
|
|
95
|
+
var alive = true;
|
|
96
|
+
queryCacheBatched(imageUrl).then(function (isPrefetched) {
|
|
97
|
+
if (!alive) return;
|
|
98
|
+
apmDataRef.current.isPrefetch = String(isPrefetched);
|
|
99
|
+
})["catch"](function () {
|
|
100
|
+
if (!alive) return;
|
|
101
|
+
apmDataRef.current.isPrefetch = "false";
|
|
102
|
+
});
|
|
130
103
|
return function () {
|
|
104
|
+
alive = false;
|
|
131
105
|
apmDataRef.current.isPrefetch = "";
|
|
132
106
|
};
|
|
133
107
|
}, [formatSource, abortApmCollection]);
|
|
134
108
|
var pushApmData = useCallback(function () {
|
|
135
109
|
if (abortApmCollection) return;
|
|
136
110
|
var apmData = apmDataRef.current;
|
|
137
|
-
|
|
138
|
-
apmData.viewDuration =
|
|
111
|
+
apmData.intersectTime = 0;
|
|
112
|
+
apmData.viewDuration = 0;
|
|
139
113
|
var imageSize = apmDataRef.current.imageSize || 0;
|
|
140
114
|
if (!apmDataRef.current.isPrefetch) {
|
|
141
115
|
apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);
|
|
142
116
|
}
|
|
143
|
-
if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {
|
|
144
|
-
|
|
117
|
+
if (!apmDoneRef.current && apmData.imageUrl && !abortApmCollection) {
|
|
118
|
+
apmDoneRef.current = true;
|
|
145
119
|
apmPush(convertKeysToSnakeCase(apmData));
|
|
146
120
|
}
|
|
147
121
|
}, [abortApmCollection]);
|
|
148
|
-
if ((!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === "false") && viewable && !abortApmCollection) {
|
|
149
|
-
apmDataRef.current.isFirstScreen = "true";
|
|
150
|
-
}
|
|
151
|
-
useEffect(function () {
|
|
152
|
-
if (abortApmCollection) return;
|
|
153
|
-
var apmData = apmDataRef.current;
|
|
154
|
-
if (!apmData.intersectTime && viewable) {
|
|
155
|
-
apmData.intersectTime = Date.now();
|
|
156
|
-
if (apmData.loadedTime || apmData.errorReason) {
|
|
157
|
-
pushApmData();
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}, [viewable, pushApmData, abortApmCollection]);
|
|
161
122
|
var onLoadEnd = function onLoadEnd() {
|
|
162
123
|
var _props$onLoadEnd;
|
|
163
124
|
props === null || props === void 0 || (_props$onLoadEnd = props.onLoadEnd) === null || _props$onLoadEnd === void 0 || _props$onLoadEnd.call(props);
|
|
164
125
|
if (abortApmCollection) return;
|
|
165
|
-
apmDataRef.current;
|
|
166
126
|
pushApmData();
|
|
167
127
|
};
|
|
168
128
|
var onProgress = function onProgress(e) {
|
|
@@ -180,8 +140,10 @@ var Image = function Image(_ref) {
|
|
|
180
140
|
var _props$onLoad;
|
|
181
141
|
if (!abortApmCollection) {
|
|
182
142
|
var now = Date.now();
|
|
183
|
-
|
|
184
|
-
|
|
143
|
+
var start = apmDataRef.current.loadedStartTime || mountTimeRef.current;
|
|
144
|
+
if (start > now) start = now;
|
|
145
|
+
apmDataRef.current.loadedStartTime = start;
|
|
146
|
+
var loadDuration = now - start;
|
|
185
147
|
apmDataRef.current.loadedTime = now;
|
|
186
148
|
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
187
149
|
apmDataRef.current.isSuccess = "true";
|
|
@@ -189,16 +151,8 @@ var Image = function Image(_ref) {
|
|
|
189
151
|
(_props$onLoad = props.onLoad) === null || _props$onLoad === void 0 || _props$onLoad.call(props, e);
|
|
190
152
|
setImageStatus(IMAGE_STATUS.LOADED);
|
|
191
153
|
};
|
|
192
|
-
useEffect(function () {
|
|
193
|
-
var loadDuration = loadedTime - loadStartTime;
|
|
194
|
-
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
195
|
-
}, [loadedTime, loadStartTime]);
|
|
196
154
|
var onLoadStart = function onLoadStart() {
|
|
197
|
-
|
|
198
|
-
var now = Date.now();
|
|
199
|
-
apmDataRef.current.loadedStartTime = now;
|
|
200
|
-
setLoadStartTime(now);
|
|
201
|
-
}
|
|
155
|
+
!abortApmCollection && (apmDataRef.current.loadedStartTime = Date.now());
|
|
202
156
|
};
|
|
203
157
|
var onError = function onError(e) {
|
|
204
158
|
var _props$onError;
|
|
@@ -224,10 +178,7 @@ var Image = function Image(_ref) {
|
|
|
224
178
|
height: height,
|
|
225
179
|
width: width
|
|
226
180
|
}, style)
|
|
227
|
-
}, imageStatus !== IMAGE_STATUS.HIDE &&
|
|
228
|
-
onChange: checkIsVisible,
|
|
229
|
-
disabled: apmDoneRef
|
|
230
|
-
}, /* @__PURE__ */React.createElement(Image$2, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
181
|
+
}, imageStatus !== IMAGE_STATUS.HIDE && /* @__PURE__ */React.createElement(Image$2, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
231
182
|
source: formatSource,
|
|
232
183
|
onLoadStart: onLoadStart,
|
|
233
184
|
onLoad: onLoad,
|
|
@@ -235,23 +186,9 @@ var Image = function Image(_ref) {
|
|
|
235
186
|
onError: onError,
|
|
236
187
|
onLoadEnd: onLoadEnd,
|
|
237
188
|
fadeDuration: fadeDuration,
|
|
238
|
-
onFirstDrawFinished: onFirstDrawFinished
|
|
239
|
-
|
|
240
|
-
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
241
|
-
height: height || (style === null || style === void 0 ? void 0 : style.height),
|
|
242
|
-
borderRadius: borderRadius
|
|
243
|
-
// opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,
|
|
189
|
+
onFirstDrawFinished: function onFirstDrawFinished(e) {
|
|
190
|
+
return _onFirstDrawFinished(e);
|
|
244
191
|
},
|
|
245
|
-
apmBiz: props.apmBiz
|
|
246
|
-
}))) : /* @__PURE__ */React.createElement(Image$2, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
247
|
-
source: formatSource,
|
|
248
|
-
onLoadStart: onLoadStart,
|
|
249
|
-
onLoad: onLoad,
|
|
250
|
-
onProgress: onProgress,
|
|
251
|
-
onError: onError,
|
|
252
|
-
onLoadEnd: onLoadEnd,
|
|
253
|
-
fadeDuration: fadeDuration,
|
|
254
|
-
onFirstDrawFinished: onFirstDrawFinished,
|
|
255
192
|
style: {
|
|
256
193
|
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
257
194
|
height: height || (style === null || style === void 0 ? void 0 : style.height),
|
|
@@ -259,7 +196,7 @@ var Image = function Image(_ref) {
|
|
|
259
196
|
// opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,
|
|
260
197
|
},
|
|
261
198
|
apmBiz: props.apmBiz
|
|
262
|
-
}))
|
|
199
|
+
})), imageStatus === IMAGE_STATUS.LOADING && loadStyle !== TLoadStyle.NONE && /* @__PURE__ */React.createElement(View, {
|
|
263
200
|
style: _objectSpread2(_objectSpread2({
|
|
264
201
|
width: width,
|
|
265
202
|
height: height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.js","sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { lightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport VisibilitySensor from \"./VisibilitySensor\";\nimport { apmPush } from \"./apm\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n fadeDuration,\n onFirstDrawFinished,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n useMounted(\"Image\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n\n const [loadedTime, setLoadedTime] = useState(0);\n const [loadStartTime, setLoadStartTime] = useState(0);\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return _source as ImageSourcePropTyp;\n // @ts-ignore\n return { uri: src } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n const [viewable, setViewable] = useState(false);\n const hasInit = useRef(false);\n const checkIsVisible = (isVisible: boolean) => {\n if (abortApmCollection) return;\n // 判断首屏\n if (!hasInit.current) {\n hasInit.current = true;\n apmDataRef.current.isFirstScreen = isVisible ? \"true\" : \"false\";\n }\n setViewable(isVisible);\n };\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: viewable ? Date.now() : 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const [apmDoneRef, setApmDoneRef] = useState(false);\n\n useEffect(() => {\n if (abortApmCollection) return;\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource, abortApmCollection]);\n\n useEffect(() => {\n if (abortApmCollection) return;\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (typeof RNImage.queryCache === \"function\" && !!imageUrl) {\n const uriEncodeImageUrl = encodeURI(imageUrl);\n RNImage.queryCache([imageUrl]).then((res) => {\n if (res?.[uriEncodeImageUrl]) {\n apmDataRef.current.isPrefetch = \"true\";\n } else {\n apmDataRef.current.isPrefetch = \"false\";\n }\n });\n }\n return () => {\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource, abortApmCollection]);\n\n const pushApmData = useCallback(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n const viewDuration = apmData.loadedTime - apmData.intersectTime;\n apmData.viewDuration = viewDuration < 0 ? 0 : viewDuration;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {\n setApmDoneRef(true);\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n if (\n (!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === \"false\") &&\n viewable &&\n !abortApmCollection\n ) {\n apmDataRef.current.isFirstScreen = \"true\";\n }\n useEffect(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n if (!apmData.intersectTime && viewable) {\n apmData.intersectTime = Date.now();\n // 进入视窗前加载完成/失败\n if (apmData.loadedTime || apmData.errorReason) {\n pushApmData();\n }\n }\n }, [viewable, pushApmData, abortApmCollection]);\n\n const onLoadEnd = () => {\n props?.onLoadEnd?.();\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n // 进入视窗后加载成功/失败\n // if (apmData.intersectTime) {\n pushApmData();\n // }\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n !abortApmCollection && (apmDataRef.current.imageSize = total);\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n if (!abortApmCollection) {\n const now = Date.now();\n setLoadedTime(now);\n const loadDuration = now - apmDataRef.current.loadedStartTime;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n }\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n useEffect(() => {\n const loadDuration = loadedTime - loadStartTime;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n }, [loadedTime, loadStartTime]);\n\n const onLoadStart = () => {\n if (!abortApmCollection) {\n const now = Date.now();\n apmDataRef.current.loadedStartTime = now;\n setLoadStartTime(now);\n }\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n if (!abortApmCollection) {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n }\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE &&\n (!abortApmCollection ? (\n <VisibilitySensor onChange={checkIsVisible} disabled={apmDoneRef}>\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={onFirstDrawFinished}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n </VisibilitySensor>\n ) : (\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={onFirstDrawFinished}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n ))}\n {imageStatus === IMAGE_STATUS.LOADING && loadStyle !== TLoadStyle.NONE && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n ...style,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <CircularProgress progress={progress}></CircularProgress>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) &&\n errorStyle !== TErrorStyle.NONE && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","fadeDuration","onFirstDrawFinished","props","_objectWithoutProperties","_excluded","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","_useState5","_useState6","loadedTime","setLoadedTime","_useState7","_useState8","loadStartTime","setLoadStartTime","formatSource","useMemo","uri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState9","_useState0","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadDuration","viewDuration","_useState1","_useState10","apmDoneRef","setApmDoneRef","useEffect","apmData","isLocalFile","isDataUri","URL","protocol","concat","host","error","RNImage","queryCache","uriEncodeImageUrl","encodeURI","then","res","pushApmData","useCallback","String","apmPush","convertKeysToSnakeCase","onLoadEnd","_props$onLoadEnd","call","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","onLoad","_props$onLoad","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","VisibilitySensor","onChange","disabled","apmBiz","NONE","styles","loadingContainer","backgroundColor","BLUR","CircularProgress","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Image.js","sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { lightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport { apmPush } from \"./apm\";\nimport { queryCacheBatched } from \"./queryCacheBatcher\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n fadeDuration,\n onFirstDrawFinished,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n // useMounted(\"Image\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n const mountTimeRef = useRef<number>(Date.now());\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return _source as ImageSourcePropType;\n // @ts-ignore\n return { uri: src } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n // Visibility tracking removed: no longer needed for APM\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const apmDoneRef = useRef(false);\n\n useEffect(() => {\n if (abortApmCollection) return;\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource, abortApmCollection]);\n\n useEffect(() => {\n if (abortApmCollection) return;\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (!imageUrl) return;\n let alive = true;\n queryCacheBatched(imageUrl)\n .then((isPrefetched) => {\n if (!alive) return;\n apmDataRef.current.isPrefetch = String(isPrefetched);\n })\n .catch(() => {\n if (!alive) return;\n apmDataRef.current.isPrefetch = \"false\";\n });\n return () => {\n alive = false;\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource, abortApmCollection]);\n\n const pushApmData = useCallback(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n // Simplify: do not track view duration/intersect time\n apmData.intersectTime = 0;\n apmData.viewDuration = 0;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef.current && apmData.imageUrl && !abortApmCollection) {\n apmDoneRef.current = true;\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n // isFirstScreen stays \"false\" and intersectTime stays 0 by design\n const onLoadEnd = () => {\n props?.onLoadEnd?.();\n if (abortApmCollection) return;\n // Push regardless of visibility/intersect time\n pushApmData();\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n !abortApmCollection && (apmDataRef.current.imageSize = total);\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n if (!abortApmCollection) {\n const now = Date.now();\n let start = apmDataRef.current.loadedStartTime || mountTimeRef.current;\n if (start > now) start = now;\n apmDataRef.current.loadedStartTime = start;\n const loadDuration = now - start;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n }\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n const onLoadStart = () => {\n !abortApmCollection && (apmDataRef.current.loadedStartTime = Date.now());\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n if (!abortApmCollection) {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n }\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE && (\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {imageStatus === IMAGE_STATUS.LOADING && loadStyle !== TLoadStyle.NONE && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n ...style,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <CircularProgress progress={progress}></CircularProgress>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) &&\n errorStyle !== TErrorStyle.NONE && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","fadeDuration","onFirstDrawFinished","props","_objectWithoutProperties","_excluded","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","mountTimeRef","useRef","Date","now","formatSource","useMemo","uri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","apmDataRef","imageUrl","imageHost","intersectTime","imageSize","isFirstScreen","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","apmDoneRef","useEffect","apmData","current","isLocalFile","isDataUri","URL","protocol","concat","host","error","alive","queryCacheBatched","then","isPrefetched","String","pushApmData","useCallback","apmPush","convertKeysToSnakeCase","onLoadEnd","_props$onLoadEnd","call","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","onLoad","_props$onLoad","start","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","RNImage","apmBiz","NONE","styles","loadingContainer","backgroundColor","BLUR","CircularProgress","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
@@ -93,7 +93,7 @@ var VisibilitySensor = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
93
93
|
stopWatching();
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
}, [rectDimensions, lastValue]);
|
|
96
|
+
}, [rectDimensions, lastValue, threshold, onChange, triggerOnce, stopWatching]);
|
|
97
97
|
return /* @__PURE__ */React.createElement(View, _objectSpread2(_objectSpread2({
|
|
98
98
|
ref: localRef
|
|
99
99
|
}, rest), {}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilitySensor.js","sources":["../../../../src/components/Image/VisibilitySensor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState, forwardRef, useImperativeHandle } from \"react\";\nimport { Dimensions, type ScaledSize, View } from \"react-native\";\nimport type { VisibilitySensorRef, VisibilitySensorProps, RectDimensionsState } from \"./interface/visibilitySensor\";\n// function useInterval(callback: () => void, delay: number | null) {\n// const savedCallback = useRef(callback);\n// useEffect(() => {\n// savedCallback.current = callback;\n// }, [callback]);\n// useEffect(() => {\n// if (delay === null || delay === undefined) {\n// return;\n// }\n// const id = setInterval(() => savedCallback.current(), delay);\n// return () => clearInterval(id);\n// }, [delay]);\n// }\nconst VisibilitySensor = forwardRef<VisibilitySensorRef, VisibilitySensorProps>((props, ref) => {\n const { onChange, disabled = false, triggerOnce = false, delay, threshold = {}, children, ...rest } = props;\n const localRef = useRef<View>(null);\n const hasMountedRef = useRef(false);\n useImperativeHandle(ref, () => ({\n getInnerRef: () => localRef.current,\n }));\n const [rectDimensions, setRectDimensions] = useState<RectDimensionsState>({\n rectTop: 0,\n rectBottom: 0,\n rectLeft: 0,\n rectRight: 0,\n rectWidth: 0,\n rectHeight: 0,\n });\n const [lastValue, setLastValue] = useState<boolean | undefined>(undefined);\n const [active, setActive] = useState<boolean>(false);\n const measureInnerView = () => {\n if (!active) return;\n localRef.current?.measure((_x: number, _y: number, width: number, height: number, pageX: number, pageY: number) => {\n const dimensions = {\n rectTop: pageY,\n rectBottom: pageY + height,\n rectLeft: pageX,\n rectRight: pageX + width,\n rectWidth: width,\n rectHeight: height,\n };\n if (\n rectDimensions.rectTop !== dimensions.rectTop ||\n rectDimensions.rectBottom !== dimensions.rectBottom ||\n rectDimensions.rectLeft !== dimensions.rectLeft ||\n rectDimensions.rectRight !== dimensions.rectRight ||\n rectDimensions.rectWidth !== dimensions.rectWidth ||\n rectDimensions.rectHeight !== dimensions.rectHeight\n ) {\n setRectDimensions(dimensions);\n }\n });\n };\n // useInterval(measureInnerView, delay || 100);\n const startWatching = useCallback(() => {\n if (!active) setActive(true);\n }, [active]);\n const stopWatching = useCallback(() => {\n if (active) setActive(false);\n }, [active]);\n useEffect(() => {\n if (!disabled) {\n startWatching();\n }\n return () => {\n stopWatching();\n };\n }, [disabled, startWatching, stopWatching]);\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n const window: ScaledSize = Dimensions.get(\"window\");\n const isVisible: boolean =\n rectDimensions.rectTop + (threshold.top || 0) <= window.height && // Top edge is within the bottom of the window\n rectDimensions.rectBottom - (threshold.bottom || 0) >= 0 && // Bottom edge is within the top of the window\n rectDimensions.rectLeft + (threshold.left || 0) <= window.width && // Left edge is within the right of the window\n rectDimensions.rectRight - (threshold.right || 0) >= 0; // Right edge is within the left of the window\n if (lastValue !== isVisible) {\n setLastValue(isVisible);\n onChange(isVisible);\n if (isVisible && triggerOnce) {\n stopWatching();\n }\n }\n
|
|
1
|
+
{"version":3,"file":"VisibilitySensor.js","sources":["../../../../src/components/Image/VisibilitySensor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState, forwardRef, useImperativeHandle } from \"react\";\nimport { Dimensions, type ScaledSize, View } from \"react-native\";\nimport type { VisibilitySensorRef, VisibilitySensorProps, RectDimensionsState } from \"./interface/visibilitySensor\";\n// function useInterval(callback: () => void, delay: number | null) {\n// const savedCallback = useRef(callback);\n// useEffect(() => {\n// savedCallback.current = callback;\n// }, [callback]);\n// useEffect(() => {\n// if (delay === null || delay === undefined) {\n// return;\n// }\n// const id = setInterval(() => savedCallback.current(), delay);\n// return () => clearInterval(id);\n// }, [delay]);\n// }\nconst VisibilitySensor = forwardRef<VisibilitySensorRef, VisibilitySensorProps>((props, ref) => {\n const { onChange, disabled = false, triggerOnce = false, delay, threshold = {}, children, ...rest } = props;\n const localRef = useRef<View>(null);\n const hasMountedRef = useRef(false);\n useImperativeHandle(ref, () => ({\n getInnerRef: () => localRef.current,\n }));\n const [rectDimensions, setRectDimensions] = useState<RectDimensionsState>({\n rectTop: 0,\n rectBottom: 0,\n rectLeft: 0,\n rectRight: 0,\n rectWidth: 0,\n rectHeight: 0,\n });\n const [lastValue, setLastValue] = useState<boolean | undefined>(undefined);\n const [active, setActive] = useState<boolean>(false);\n const measureInnerView = () => {\n if (!active) return;\n localRef.current?.measure((_x: number, _y: number, width: number, height: number, pageX: number, pageY: number) => {\n const dimensions = {\n rectTop: pageY,\n rectBottom: pageY + height,\n rectLeft: pageX,\n rectRight: pageX + width,\n rectWidth: width,\n rectHeight: height,\n };\n if (\n rectDimensions.rectTop !== dimensions.rectTop ||\n rectDimensions.rectBottom !== dimensions.rectBottom ||\n rectDimensions.rectLeft !== dimensions.rectLeft ||\n rectDimensions.rectRight !== dimensions.rectRight ||\n rectDimensions.rectWidth !== dimensions.rectWidth ||\n rectDimensions.rectHeight !== dimensions.rectHeight\n ) {\n setRectDimensions(dimensions);\n }\n });\n };\n // useInterval(measureInnerView, delay || 100);\n const startWatching = useCallback(() => {\n if (!active) setActive(true);\n }, [active]);\n const stopWatching = useCallback(() => {\n if (active) setActive(false);\n }, [active]);\n useEffect(() => {\n if (!disabled) {\n startWatching();\n }\n return () => {\n stopWatching();\n };\n }, [disabled, startWatching, stopWatching]);\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n const window: ScaledSize = Dimensions.get(\"window\");\n const isVisible: boolean =\n rectDimensions.rectTop + (threshold.top || 0) <= window.height && // Top edge is within the bottom of the window\n rectDimensions.rectBottom - (threshold.bottom || 0) >= 0 && // Bottom edge is within the top of the window\n rectDimensions.rectLeft + (threshold.left || 0) <= window.width && // Left edge is within the right of the window\n rectDimensions.rectRight - (threshold.right || 0) >= 0; // Right edge is within the left of the window\n if (lastValue !== isVisible) {\n setLastValue(isVisible);\n onChange(isVisible);\n if (isVisible && triggerOnce) {\n stopWatching();\n }\n }\n }, [rectDimensions, lastValue, threshold, onChange, triggerOnce, stopWatching]);\n return (\n <View ref={localRef} {...rest} onLayout={() => measureInnerView()}>\n {children}\n </View>\n );\n});\nexport default VisibilitySensor;\n"],"names":["VisibilitySensor","forwardRef","props","ref","onChange","_props$disabled","disabled","_props$triggerOnce","triggerOnce","delay","_props$threshold","threshold","children","rest","_excluded","localRef","useRef","hasMountedRef","useImperativeHandle","getInnerRef","current","_useState","useState","rectTop","rectBottom","rectLeft","rectRight","rectWidth","rectHeight","_useState2","_slicedToArray","rectDimensions","setRectDimensions","_useState3","_useState4","lastValue","setLastValue","_useState5","_useState6","active","setActive","measureInnerView","_localRef$current","measure","_x","_y","width","height","pageX","pageY","dimensions","startWatching","useCallback","stopWatching","useEffect","window","Dimensions","get","isVisible","top","bottom","left","right","React","createElement","View","_objectSpread","onLayout"],"mappings":"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"}
|
|
@@ -10,14 +10,15 @@ import './hook/index.js';
|
|
|
10
10
|
import './CircularProgress.js';
|
|
11
11
|
import 'react-native-svg';
|
|
12
12
|
import '../ConfigProvider/hooks/ConfigCache/ConfigCache.js';
|
|
13
|
-
import '../../pvCount/useUnmountedProcess.js';
|
|
14
13
|
import '@xhs/reds-apm/src/index.native';
|
|
15
|
-
import '../../pvCount/pvData.js';
|
|
16
14
|
import '../ConfigProvider/hooks/themeToken/useColorMode.js';
|
|
17
15
|
import '../ConfigProvider/hooks/ConfigContext/ConfigContext.js';
|
|
18
16
|
import './utils.js';
|
|
19
|
-
import './VisibilitySensor.js';
|
|
20
17
|
import './apm.js';
|
|
18
|
+
import './queryCacheBatcher.js';
|
|
19
|
+
import '../../pvCount/useUnmountedProcess.js';
|
|
20
|
+
import '../../pvCount/pvData.js';
|
|
21
|
+
import './VisibilitySensor.js';
|
|
21
22
|
|
|
22
23
|
var _Platform$constants;
|
|
23
24
|
var ImageComponent = ((_Platform$constants = Platform.constants) === null || _Platform$constants === void 0 || (_Platform$constants = _Platform$constants.reactNativeVersion) === null || _Platform$constants === void 0 ? void 0 : _Platform$constants.minor) === 72 ? Image : Image69;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Image/index.ts"],"sourcesContent":["import { Platform } from \"react-native\";\nimport Image from \"./Image\";\nimport Image69 from \"./Image69\";\nimport * as ImageType from \"./interface\";\n\nconst ImageComponent = Platform.constants?.reactNativeVersion?.minor === 72 ? Image : Image69;\nexport default ImageComponent;\nexport { ImageComponent as Image, ImageType, Image69 };\n"],"names":["ImageComponent","_Platform$constants","Platform","constants","reactNativeVersion","minor","Image","Image69"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Image/index.ts"],"sourcesContent":["import { Platform } from \"react-native\";\nimport Image from \"./Image\";\nimport Image69 from \"./Image69\";\nimport * as ImageType from \"./interface\";\n\nconst ImageComponent = Platform.constants?.reactNativeVersion?.minor === 72 ? Image : Image69;\nexport default ImageComponent;\nexport { ImageComponent as Image, ImageType, Image69 };\n"],"names":["ImageComponent","_Platform$constants","Platform","constants","reactNativeVersion","minor","Image","Image69"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKMA,IAAAA,iBAAiB,CAAA,CAAAC,mBAAA,GAAAC,QAAS,CAAAC,SAAA,MAAA,IAAA,IAAAF,mBAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,mBAAA,GAATA,mBAAA,CAAoBG,kBAAoB,MAAA,IAAA,IAAAH,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxCA,mBAAA,CAAwCI,KAAA,MAAU,KAAKC,KAAQ,GAAAC;;;;"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { _ as _slicedToArray } from '../../_chunks/CAkwE9ZD.js';
|
|
2
|
+
import { Image } from 'react-native';
|
|
3
|
+
|
|
4
|
+
var _global;
|
|
5
|
+
var enabled = ((_global = global) === null || _global === void 0 ? void 0 : _global.REDS_IMAGE_QUERYCACHE_BATCHING_ENABLED) !== false;
|
|
6
|
+
var FLUSH_MS = 50;
|
|
7
|
+
var pending = /* @__PURE__ */new Map();
|
|
8
|
+
var timer = null;
|
|
9
|
+
function directQuery(url) {
|
|
10
|
+
try {
|
|
11
|
+
if (typeof Image.queryCache !== "function") {
|
|
12
|
+
return Promise.resolve(false);
|
|
13
|
+
}
|
|
14
|
+
return Image.queryCache([url]).then(function (res) {
|
|
15
|
+
return !!(res !== null && res !== void 0 && res[url] || res !== null && res !== void 0 && res[encodeURI(url)]);
|
|
16
|
+
})["catch"](function () {
|
|
17
|
+
return false;
|
|
18
|
+
});
|
|
19
|
+
} catch (_) {
|
|
20
|
+
return Promise.resolve(false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function flush() {
|
|
24
|
+
var entries = Array.from(pending.entries());
|
|
25
|
+
pending.clear();
|
|
26
|
+
timer = null;
|
|
27
|
+
var urls = entries.map(function (_ref) {
|
|
28
|
+
var _ref2 = _slicedToArray(_ref, 1),
|
|
29
|
+
url = _ref2[0];
|
|
30
|
+
return url;
|
|
31
|
+
});
|
|
32
|
+
if (!urls.length) return;
|
|
33
|
+
if (typeof Image.queryCache !== "function") {
|
|
34
|
+
entries.forEach(function (_ref3) {
|
|
35
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
36
|
+
resolvers = _ref4[1];
|
|
37
|
+
return resolvers.forEach(function (r) {
|
|
38
|
+
return r(false);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
Image.queryCache(urls).then(function (res) {
|
|
44
|
+
entries.forEach(function (_ref5) {
|
|
45
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
46
|
+
url = _ref6[0],
|
|
47
|
+
resolvers = _ref6[1];
|
|
48
|
+
var ok = !!(res !== null && res !== void 0 && res[url] || res !== null && res !== void 0 && res[encodeURI(url)]);
|
|
49
|
+
resolvers.forEach(function (r) {
|
|
50
|
+
return r(ok);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
})["catch"](function () {
|
|
54
|
+
entries.forEach(function (_ref7) {
|
|
55
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
56
|
+
resolvers = _ref8[1];
|
|
57
|
+
return resolvers.forEach(function (r) {
|
|
58
|
+
return r(false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function schedule() {
|
|
64
|
+
if (!timer) {
|
|
65
|
+
timer = setTimeout(flush, FLUSH_MS);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function setQueryCacheBatchingEnabled(v) {
|
|
69
|
+
enabled = v;
|
|
70
|
+
}
|
|
71
|
+
function configureQueryCacheBatching() {
|
|
72
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
73
|
+
if (typeof options.flushMs === "number" && options.flushMs >= 0) {
|
|
74
|
+
FLUSH_MS = options.flushMs;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function queryCacheBatched(url) {
|
|
78
|
+
if (!url) return Promise.resolve(false);
|
|
79
|
+
if (!enabled) return directQuery(url);
|
|
80
|
+
return new Promise(function (resolve) {
|
|
81
|
+
var list = pending.get(url);
|
|
82
|
+
if (list) {
|
|
83
|
+
list.push(resolve);
|
|
84
|
+
} else {
|
|
85
|
+
pending.set(url, [resolve]);
|
|
86
|
+
}
|
|
87
|
+
schedule();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { configureQueryCacheBatching, queryCacheBatched, setQueryCacheBatchingEnabled };
|
|
92
|
+
//# sourceMappingURL=queryCacheBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryCacheBatcher.js","sources":["../../../../src/components/Image/queryCacheBatcher.ts"],"sourcesContent":["import { Image as RNImage } from \"react-native\";\n\ndeclare const global: any;\n\ntype Resolver = (value: boolean) => void;\n\n// Runtime switch: set global.REDS_IMAGE_QUERYCACHE_BATCHING_ENABLED = false to disable batching\nlet enabled: boolean = global?.REDS_IMAGE_QUERYCACHE_BATCHING_ENABLED !== false;\nlet FLUSH_MS = 50;\n\nconst pending = new Map<string, Resolver[]>();\nlet timer: ReturnType<typeof setTimeout> | null = null;\n\nfunction directQuery(url: string): Promise<boolean> {\n try {\n if (typeof (RNImage as any).queryCache !== \"function\") {\n return Promise.resolve(false);\n }\n return (RNImage as any)\n .queryCache([url])\n .then((res: Record<string, any>) => !!(res?.[url] || res?.[encodeURI(url)]))\n .catch(() => false);\n } catch (_) {\n return Promise.resolve(false);\n }\n}\n\nfunction flush() {\n const entries = Array.from(pending.entries());\n pending.clear();\n timer = null;\n\n const urls = entries.map(([url]) => url);\n if (!urls.length) return;\n\n if (typeof (RNImage as any).queryCache !== \"function\") {\n entries.forEach(([, resolvers]) => resolvers.forEach((r) => r(false)));\n return;\n }\n\n (RNImage as any)\n .queryCache(urls)\n .then((res: Record<string, any>) => {\n entries.forEach(([url, resolvers]) => {\n const ok = !!(res?.[url] || res?.[encodeURI(url)]);\n resolvers.forEach((r) => r(ok));\n });\n })\n .catch(() => {\n entries.forEach(([, resolvers]) => resolvers.forEach((r) => r(false)));\n });\n}\n\nfunction schedule() {\n if (!timer) {\n timer = setTimeout(flush, FLUSH_MS);\n }\n}\n\nexport function setQueryCacheBatchingEnabled(v: boolean) {\n enabled = v;\n}\n\nexport function configureQueryCacheBatching(options: { flushMs?: number } = {}) {\n if (typeof options.flushMs === \"number\" && options.flushMs >= 0) {\n FLUSH_MS = options.flushMs;\n }\n}\n\n// Main entry: batched query with quick toggle to direct query\nexport function queryCacheBatched(url: string): Promise<boolean> {\n if (!url) return Promise.resolve(false);\n if (!enabled) return directQuery(url);\n\n return new Promise<boolean>((resolve) => {\n const list = pending.get(url);\n if (list) {\n list.push(resolve);\n } else {\n pending.set(url, [resolve]);\n }\n schedule();\n });\n}\n"],"names":["enabled","_global","global","REDS_IMAGE_QUERYCACHE_BATCHING_ENABLED","FLUSH_MS","pending","Map","timer","directQuery","url","RNImage","queryCache","Promise","resolve","then","res","encodeURI","_","flush","entries","Array","from","clear","urls","map","_ref","_ref2","_slicedToArray","length","forEach","_ref3","_ref4","resolvers","r","_ref5","_ref6","ok","_ref7","_ref8","schedule","setTimeout","setQueryCacheBatchingEnabled","v","configureQueryCacheBatching","options","arguments","undefined","flushMs","queryCacheBatched","list","get","push","set"],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ var Popover = (function (_ref) {
|
|
|
40
40
|
propsArrowStyles = _ref.arrowStyles,
|
|
41
41
|
offset = _ref.offset,
|
|
42
42
|
duration = _ref.duration,
|
|
43
|
+
animation_duration = _ref.animation_duration,
|
|
43
44
|
hostName = _ref.hostName,
|
|
44
45
|
maxWidth = _ref.maxWidth,
|
|
45
46
|
arrowOffset = _ref.arrowOffset;
|
|
@@ -115,18 +116,18 @@ var Popover = (function (_ref) {
|
|
|
115
116
|
if (layout.x !== defaultValue) {
|
|
116
117
|
Animated.timing(progress, {
|
|
117
118
|
toValue: 1,
|
|
118
|
-
duration:
|
|
119
|
+
duration: animation_duration !== null && animation_duration !== void 0 ? animation_duration : 400,
|
|
119
120
|
useNativeDriver: false
|
|
120
121
|
}).start();
|
|
121
122
|
}
|
|
122
123
|
} else {
|
|
123
124
|
Animated.timing(progress, {
|
|
124
125
|
toValue: 0,
|
|
125
|
-
duration:
|
|
126
|
+
duration: animation_duration !== null && animation_duration !== void 0 ? animation_duration : 400,
|
|
126
127
|
useNativeDriver: false
|
|
127
128
|
}).start();
|
|
128
129
|
}
|
|
129
|
-
}, [_visible, layout]);
|
|
130
|
+
}, [_visible, layout, animation_duration]);
|
|
130
131
|
var onMaskChange = function onMaskChange(event, value) {
|
|
131
132
|
if (isControl) return;
|
|
132
133
|
if (value === void 0) return setVisible(!_visible);
|