@xhsreds/reds-rn-next 0.8.1-beta202510151847 → 0.8.1-beta202510161437
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-12.json +1 -1
- package/coverage/.tmp/coverage-13.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-24.json +1 -1
- package/coverage/.tmp/coverage-25.json +1 -1
- package/coverage/.tmp/coverage-26.json +1 -1
- package/coverage/.tmp/coverage-27.json +1 -1
- package/coverage/.tmp/coverage-28.json +1 -1
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-32.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-4.json +1 -1
- package/coverage/.tmp/coverage-40.json +1 -1
- package/coverage/.tmp/coverage-41.json +1 -1
- package/coverage/.tmp/coverage-5.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/coverage/.tmp/coverage-9.json +1 -1
- package/lib/cjs/components/Image/Image.js +34 -31
- package/lib/cjs/components/Image/Image.js.map +1 -1
- package/lib/esm/components/Image/Image.js +35 -32
- package/lib/esm/components/Image/Image.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Image/Image.tsx +23 -14
|
@@ -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 formatSource = useMemo(() => {\n // @ts-ignore\n if (_source)\n return {\n uri: props.format\n ? formatUri({ uri: (_source as ImageURISource).uri || \"\", width: width as number })\n : (_source as ImageURISource).uri,\n };\n // @ts-ignore\n return { uri: props.format ? formatUri({ uri: src, width }) : src } as ImageSourcePropType;\n }, [src, _source, width]);\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 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 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 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 (!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={(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 </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={(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","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","formatSource","useMemo","uri","format","formatUri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState5","_useState6","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","_useState7","_useState8","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":";;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAMA,WAAc,GAAA;AAClBC,EAAAA,KAAO,EAAA,iGAAA;AACPC,EAAAA,IAAM,EAAA,iGAAA;AACNC,EAAAA,aAAe,EAAA,iGAAA;AACjB,CAAA,CAAA;AAEA,IAAMC,UAAa,GAAA;AACjBH,EAAAA,KAAO,EAAA,iGAAA;AACPC,EAAAA,IAAM,EAAA,iGAAA;AACNC,EAAAA,aAAe,EAAA,iGAAA;AACjB,CAAA,CAAA;AAEA,IAAME,QAAQ,SAARA,YAa+C;AAAA,EAAA,IAZnDC,GAAA,GAAAC,IAAA,CAAAD,GAAA;IACQE,OAAA,GAAAD,IAAA,CAARE,MAAQ;IACRC,KAAA,GAAAH,IAAA,CAAAG,KAAA;IACAC,MAAA,GAAAJ,IAAA,CAAAI,MAAA;IACAC,YAAA,GAAAL,IAAA,CAAAK,YAAA;IACAC,UAAA,GAAAN,IAAA,CAAAM,UAAA;IACAC,SAAA,GAAAP,IAAA,CAAAO,SAAA;IACAC,KAAA,GAAAR,IAAA,CAAAQ,KAAA;IACAC,kBAAA,GAAAT,IAAA,CAAAS,kBAAA;IACAC,YAAA,GAAAV,IAAA,CAAAU,YAAA;IACAC,oBAAA,GAAAX,IAAA,CAAAW,mBAAA;AACGC,IAAAA,KAAA,GAAAC,kDAAA,CAAAb,IAAA,EAAAc,SAAA,CAAA,CAAA;EAEHC,mCAAA,CAAW,OAAO,CAAA,CAAA;AAClB,EAAA,IAAAC,SAAA,GAAsCC,cAAA,CAASC,8CAAaC,OAAO,CAAA;IAAAC,UAAA,GAAAC,wCAAA,CAAAL,SAAA,EAAA,CAAA,CAAA;AAA5DM,IAAAA,WAAa,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,cAAc,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAClC,EAAA,IAAAI,UAAA,GAAgCP,eAAS,CAAC,CAAA;IAAAQ,UAAA,GAAAJ,wCAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAnCE,IAAAA,QAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAUE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAEtB,EAAA,IAAAG,YAAA,GAAeC,cAAQ,YAAM;IAE7B,IAAA5B,OAAA,EACK,OAAA;AACL6B,MAAAA,GAAK,EAAAlB,KAAA,CAAMmB,MACP,GAAAC,gCAAA,CAAU;AAAEF,QAAAA,GAAA,EAAM7B,OAA2B,CAAA6B,GAAA,IAAO,EAAI;AAAA3B,QAAAA,KAAA,EAAAA,KAAAA;OAAwB,CAAA,GAC/EF,OAA2B,CAAA6B,GAAAA;KAClC,CAAA;IAEK,OAAA;AAAEA,MAAAA,GAAK,EAAAlB,KAAA,CAAMmB,MAAS,GAAAC,gCAAA,CAAU;AAAEF,QAAAA,GAAA,EAAK/B,GAAK;AAAAI,QAAAA,KAAA,EAAAA,KAAAA;AAAM,OAAC,CAAA,GAAIJ,GAAAA;KAAI,CAAA;GACjE,EAAA,CAACA,GAAK,EAAAE,OAAA,EAASE,KAAK,CAAC,CAAA,CAAA;EAExB,IAAM8B,WAAWC,uCAAY,CAAA;AAC3BhC,IAAAA,MAAQ,EAAA0B,YAAA;IACRO,cAAcC,wBAAW,CAAAC,KAAA;AACzBC,IAAAA,UAAA,EAAY/B,cAAcgC,2CAAW,CAAAC,GAAAA;AACvC,GAAC,CAAA,CAAA;EAED,IAAMC,UAAa,GAAAC,mCAAA,CAAQ;AAAExC,IAAAA,MAAA,EAAQ0B,YAAAA;AAAa,GAAC,CAAA,CAAA;AAEnD,EAAA,IAAAe,UAAA,GAAgC1B,eAAS,KAAK,CAAA;IAAA2B,UAAA,GAAAvB,wCAAA,CAAAsB,UAAA,EAAA,CAAA,CAAA;AAAvCE,IAAAA,QAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAUE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AACtB,EAAA,IAAAG,OAAA,GAAUC,aAAO,KAAK,CAAA,CAAA;AACtB,EAAA,IAAAC,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBC,SAAuB,EAAA;AAC7C,IAAA,IAAIzC,kBAAoB,EAAA,OAAA;AAEpB,IAAA,IAAA,CAACsC,QAAQI,OAAS,EAAA;MACpBJ,OAAA,CAAQI,OAAU,GAAA,IAAA,CAAA;MACPC,UAAA,CAAAD,OAAA,CAAQE,aAAgB,GAAAH,SAAA,GAAY,MAAS,GAAA,OAAA,CAAA;AAC1D,KAAA;IACAJ,WAAA,CAAYI,SAAS,CAAA,CAAA;GACvB,CAAA;EACA,IAAME,aAAaJ,YAA0B,CAAA;AAC3CM,IAAAA,QAAU,EAAA,EAAA;AACVC,IAAAA,SAAW,EAAA,EAAA;IACXC,aAAe,EAAAX,QAAA,GAAWY,IAAK,CAAAC,GAAA,EAAQ,GAAA,CAAA;AACvCC,IAAAA,SAAW,EAAA,CAAA;AACXN,IAAAA,aAAe,EAAA,OAAA;AACfO,IAAAA,UAAY,EAAA,EAAA;AACZC,IAAAA,SAAW,EAAA,OAAA;AACXC,IAAAA,WAAa,EAAA,EAAA;AACbC,IAAAA,eAAiB,EAAA,CAAA;AACjBC,IAAAA,UAAY,EAAA,CAAA;AACZC,IAAAA,YAAc,EAAA,CAAA;AACdC,IAAAA,YAAc,EAAA,CAAA;AAChB,GAAC,CAAA,CAAA;AACD,EAAA,IAAAC,UAAA,GAAoClD,eAAS,KAAK,CAAA;IAAAmD,UAAA,GAAA/C,wCAAA,CAAA8C,UAAA,EAAA,CAAA,CAAA;AAA3CE,IAAAA,UAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAYE,IAAAA,aAAa,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAEhCG,EAAAA,eAAA,CAAU,YAAM;AACd,IAAA,IAAI9D,kBAAoB,EAAA,OAAA;IACpB,IAAA;AACF,MAAA,IAAM+D,UAAUpB,UAAW,CAAAD,OAAA,CAAA;MAC3B,IACE,OAAOvB,YAAA,KAAiB,QACxB,IAAA,CAAC6C,kCAAa,CAAA7C,YAAA,CAAgCE,GAAa,CAAA,IAC3D,CAAC4C,gCAAA,CAAW9C,YAAgC,CAAAE,GAAa,CACzD,EAAA;QACA,IAAMwB,QAAW,GAAA,IAAIqB,GAAK,CAAA/C,YAAA,CAAgCE,GAAa,CAAA,CAAA;AACvE0C,QAAAA,OAAA,CAAQjB,sBAAeD,QAAA,CAASsB,QAAQ,EAAA,IAAA,CAAA,CAAAC,MAAA,CAAKvB,SAASwB,IAAI,CAAA,CAAA;AAC1DN,QAAAA,OAAA,CAAQlB,WAAY1B,YAAgC,CAAAE,GAAA,CAAA;AACtD,OAAA;AACF,aAASiD,KAAO,EAAA,EAEhB;AACF,GAAG,EAAA,CAACnD,YAAc,EAAAnB,kBAAkB,CAAC,CAAA,CAAA;AAErC8D,EAAAA,eAAA,CAAU,YAAM;AACd,IAAA,IAAI9D,kBAAoB,EAAA,OAAA;IAClB,IAAA6C,QAAA,GAAY,CAAA1B,yBAAAA,mCAAAA,aAAiCE,GAAO,KAAA,EAAA,CAAA;IAC1D,IAAI,OAAOkD,iBAAQ,CAAAC,UAAA,KAAe,UAAc,IAAA,CAAC,CAAC3B,QAAU,EAAA;AACpD,MAAA,IAAA4B,iBAAA,GAAoBC,UAAU7B,QAAQ,CAAA,CAAA;AAC5C0B,MAAAA,iBAAA,CAAQC,WAAW,CAAC3B,QAAQ,CAAC,CAAE,CAAA8B,IAAA,CAAK,UAACC,GAAQ,EAAA;QACvC,IAAAA,GAAA,aAAAA,GAAA,KAAA,KAAA,CAAA,IAAAA,GAAA,CAAMH,iBAAiB,CAAG,EAAA;AAC5B9B,UAAAA,UAAA,CAAWD,QAAQS,UAAa,GAAA,MAAA,CAAA;AAClC,SAAO,MAAA;AACLR,UAAAA,UAAA,CAAWD,QAAQS,UAAa,GAAA,OAAA,CAAA;AAClC,SAAA;AACF,OAAC,CAAA,CAAA;AACH,KAAA;AACA,IAAA,OAAO,YAAM;AACXR,MAAAA,UAAA,CAAWD,QAAQS,UAAa,GAAA,EAAA,CAAA;KAClC,CAAA;AACF,GAAG,EAAA,CAAChC,YAAc,EAAAnB,kBAAkB,CAAC,CAAA,CAAA;AAE/B,EAAA,IAAA6E,WAAA,GAAcC,kBAAY,YAAM;AACpC,IAAA,IAAI9E,kBAAoB,EAAA,OAAA;AACxB,IAAA,IAAM+D,UAAUpB,UAAW,CAAAD,OAAA,CAAA;IACrB,IAAAe,YAAA,GAAeM,OAAQ,CAAAR,UAAA,GAAaQ,OAAQ,CAAAhB,aAAA,CAAA;IAC1CgB,OAAA,CAAAN,YAAA,GAAeA,YAAe,GAAA,CAAA,GAAI,CAAI,GAAAA,YAAA,CAAA;IAKxC,IAAAP,SAAA,GAAYP,UAAW,CAAAD,OAAA,CAAQQ,SAAa,IAAA,CAAA,CAAA;AAC9C,IAAA,IAAA,CAACP,UAAW,CAAAD,OAAA,CAAQS,UAAY,EAAA;AAClCR,MAAAA,UAAA,CAAWD,OAAQ,CAAAS,UAAA,GAAa4B,MAAQ,CAAA,CAAA7B,SAAA,IAAa,MAAM,CAAC,CAAA,CAAA;AAC9D,KAAA;IACA,IAAI,CAACU,UAAA,IAAcG,OAAQ,CAAAlB,QAAA,IAAY,CAAC7C,kBAAoB,EAAA;MAC1D6D,aAAA,CAAc,IAAI,CAAA,CAAA;AACVmB,MAAAA,4BAAA,CAAAC,6CAAA,CAAuBlB,OAAO,CAAC,CAAA,CAAA;AACzC,KAAA;AACF,GAAA,EAAG,CAAC/D,kBAAkB,CAAC,CAAA,CAAA;EAIpB,IAAA,CAAA,CAAC2C,UAAW,CAAAD,OAAA,CAAQE,aAAiB,IAAAD,UAAA,CAAWD,QAAQE,aAAkB,KAAA,OAAA,KAC3ER,QACA,IAAA,CAACpC,kBACD,EAAA;AACA2C,IAAAA,UAAA,CAAWD,QAAQE,aAAgB,GAAA,MAAA,CAAA;AACrC,GAAA;AACAkB,EAAAA,eAAA,CAAU,YAAM;AACd,IAAA,IAAI9D,kBAAoB,EAAA,OAAA;AACxB,IAAA,IAAM+D,UAAUpB,UAAW,CAAAD,OAAA,CAAA;AACvB,IAAA,IAAA,CAACqB,OAAQ,CAAAhB,aAAA,IAAiBX,QAAU,EAAA;AAC9B2B,MAAAA,OAAA,CAAAhB,aAAA,GAAgBC,KAAKC,GAAI,EAAA,CAAA;AAE7B,MAAA,IAAAc,OAAA,CAAQR,UAAc,IAAAQ,OAAA,CAAQV,WAAa,EAAA;AACjCwB,QAAAA,WAAA,EAAA,CAAA;AACd,OAAA;AACF,KAAA;GACC,EAAA,CAACzC,QAAU,EAAAyC,WAAA,EAAa7E,kBAAkB,CAAC,CAAA,CAAA;AAC9C,EAAA,IAAMkF,YAAY,SAAZA,YAAkB;AAAA,IAAA,IAAAC,gBAAA,CAAA;AACtBhF,IAAAA,KAAA,aAAAA,KAAA,KAAA,KAAA,CAAA,IAAA,CAAAgF,gBAAA,GAAAhF,KAAA,CAAO+E,SAAY,MAAAC,IAAAA,IAAAA,gBAAA,eAAnBA,gBAAA,CAAAC,IAAA,CAAAjF,KAAmB,CAAA,CAAA;AACnB,IAAA,IAAIH,kBAAoB,EAAA,OAAA;AACxB,IAAA,IAAM+D,UAAUpB,UAAW,CAAAD,OAAA,CAAA;IAE3B,IAAIqB,QAAQhB,aAAe,EAAA;AACb8B,MAAAA,WAAA,EAAA,CAAA;AACd,KAAA;GACF,CAAA;AAEM,EAAA,IAAAQ,UAAA,GAAa,SAAbA,UAAAA,CAAcC,CAAuD,EAAA;AAAA,IAAA,IAAAC,iBAAA,CAAA;AACnE,IAAA,IAAAC,cAAA,GAEFF,CAAA,CADFG,WAAA;MAAeC,KAAA,GAAAF,cAAA,CAAAE,KAAA;MAAOC,MAAO,GAAAH,cAAA,CAAPG,MAAO,CAAA;AAE/B,IAAA,IAAID,KAAO,EAAA;MACKxE,WAAA,CAAAyE,MAAA,GAASD,KAAS,GAAA,GAAA,GAAO,CAAC,CAAA,CAAA;AAC1C,KAAA;IACC,CAAA1F,kBAAA,KAAuB2C,UAAW,CAAAD,OAAA,CAAQQ,SAAY,GAAAwC,KAAA,CAAA,CAAA;AACvD,IAAA,CAAAH,iBAAA,GAAApF,KAAA,CAAMkF,8CAANE,KAAAA,CAAAA,IAAAA,iBAAA,CAAAH,IAAA,CAAAjF,KAAA,EAAmBmF,CAAC,CAAA,CAAA;GACtB,CAAA;AACM,EAAA,IAAAM,MAAA,GAAS,SAATA,MAAAA,CAAUN,CAAgD,EAAA;AAAA,IAAA,IAAAO,aAAA,CAAA;IAC9D,IAAI,CAAC7F,kBAAoB,EAAA;AACjB,MAAA,IAAAiD,GAAA,GAAMD,KAAKC,GAAI,EAAA,CAAA;MACf,IAAAO,YAAA,GAAeP,GAAM,GAAAN,UAAA,CAAWD,OAAQ,CAAAY,eAAA,CAAA;AAC9CX,MAAAA,UAAA,CAAWD,QAAQa,UAAa,GAAAN,GAAA,CAAA;MAChCN,UAAA,CAAWD,OAAQ,CAAAc,YAAA,GAAeA,YAAe,GAAA,CAAA,GAAI,CAAI,GAAAA,YAAA,CAAA;AACzDb,MAAAA,UAAA,CAAWD,QAAQU,SAAY,GAAA,MAAA,CAAA;AACjC,KAAA;AACA,IAAA,CAAAyC,aAAA,GAAA1F,KAAA,CAAMyF,sCAANC,KAAAA,CAAAA,IAAAA,aAAA,CAAAT,IAAA,CAAAjF,KAAA,EAAemF,CAAC,CAAA,CAAA;AAChBxE,IAAAA,cAAA,CAAeL,8CAAaqF,MAAM,CAAA,CAAA;GACpC,CAAA;AAEA,EAAA,IAAMC,cAAc,SAAdA,cAAoB;AACxB,IAAA,CAAC/F,kBAAuB,KAAA2C,UAAA,CAAWD,OAAQ,CAAAY,eAAA,GAAkBN,KAAKC,GAAI,EAAA,CAAA,CAAA;GACxE,CAAA;AAEM,EAAA,IAAA+C,OAAA,GAAU,SAAVA,OAAAA,CAAWV,CAAiD,EAAA;AAAA,IAAA,IAAAW,cAAA,CAAA;IAChE,IAAI,CAACjG,kBAAoB,EAAA;AACvB2C,MAAAA,UAAA,CAAWD,QAAQU,SAAY,GAAA,OAAA,CAAA;AAC/BT,MAAAA,UAAA,CAAWD,OAAQ,CAAAW,WAAA,GAAAe,EAAAA,CAAAA,MAAA,CAAiBkB,CAAA,CAAEG,YAAYnB,KAAK,CAAA,CAAA;AACzD,KAAA;AACA,IAAA,CAAA2B,cAAA,GAAA9F,KAAA,CAAM6F,wCAANC,KAAAA,CAAAA,IAAAA,cAAA,CAAAb,IAAA,CAAAjF,KAAA,EAAgBmF,CAAC,CAAA,CAAA;AACjBxE,IAAAA,cAAA,CAAejB,eAAeqG,4CAAY,CAAAC,KAAA,GAAQ1F,6CAAa,CAAA2F,SAAA,GAAY3F,8CAAa4F,MAAM,CAAA,CAAA;GAChG,CAAA;AACM,EAAA,IAAAC,QAAA,GAAW,SAAXA,QAAAA,CAAYhB,CAA6B,EAAA;AAAA,IAAA,IAAAiB,eAAA,CAAA;AAC7CzF,IAAAA,cAAA,CAAeL,8CAAa+F,IAAI,CAAA,CAAA;AAChC,IAAA,CAAAD,eAAA,GAAApG,KAAA,CAAMmG,0CAANC,KAAAA,CAAAA,IAAAA,eAAA,CAAAnB,IAAA,CAAAjF,KAAA,EAAiBmF,CAAC,CAAA,CAAA;AAClBmB,IAAAA,UAAA,CAAW,YAAM;AACf3F,MAAAA,cAAA,CAAeL,8CAAaC,OAAO,CAAA,CAAA;AACrC,KAAC,CAAA,CAAA;GACH,CAAA;AAEA,EAAA,IAAMgG,YAAYC,oEAAa,EAAA,CAAA;AAG7B,EAAA,sBAAAC,KAAA,CAAAC,aAAA,CAACC;AAAK/G,IAAAA,KAAO,EAAAgH,wCAAA,CAAA;AAAEnH,MAAAA,cAAAA;AAAcD,MAAAA,MAAQ,EAARA,MAAQ;AAAAD,MAAAA,KAAA,EAAAA,KAAAA;AAAA,KAAA,EAAWK,KAAa,CAAA;AAAA,GAAA,EAC1Dc,gBAAgBJ,6CAAa,CAAA+F,IAAA,KAC3B,CAACxG,kBACA,kBAAA4G,KAAA,CAAAC,aAAA,CAACG;AAAiBC,IAAAA,QAAU,EAAAzE,cAAA;AAAgB0E,IAAAA,UAAUtD,UAAAA;AACpD,GAAA,iBAAAgD,KAAA,CAAAC,aAAA,CAACtC,iBAAA,EAAAwC,wCAAA,CAAAA,wCAAA,CAAA,EAAA,EACK5G,KAAA,CAAA,EAAA,EAAA,EAAA;AAEJV,IAAAA,MAAQ,EAAA0B,YAAA;AACR4E,IAAAA,WAAA,EAAAA,WAAA;AACAH,IAAAA,MAAA,EAAAA,MAAA;AACAP,IAAAA,UAAA,EAAAA,UAAA;AACAW,IAAAA,OAAA,EAAAA,OAAA;AACAd,IAAAA,SAAA,EAAAA,SAAA;AACAjF,IAAAA,YAAA,EAAAA,YAAA;AAEAC,IAAAA,mBAAqB,EAAA,SAArBA,mBAAqBA,CAACoF,CAAM,EAAA;MAAA,OAAApF,oBAAA,CAAoBoF,CAAC,CAAA,CAAA;AAAA,KAAA;AACjDvF,IAAAA,KAAO,EAAA;MACLL,KAAA,EAAOA,UAASK,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAL,KAAA,CAAA;MACvBC,MAAA,EAAQA,WAAUI,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAJ,MAAA,CAAA;AACzBC,MAAAA,YAAA,EAAAA,YAAAA;AAAA;KAEF;IAEAuH,QAAQhH,KAAM,CAAAgH,MAAAA;AAAA,GAAA,CACf,CACH,CAEA,kBAAAP,KAAA,CAAAC,aAAA,CAACtC,iBAAA,EAAAwC,wCAAA,CAAAA,wCAAA,KACK5G,KAAA,CAAA,EAAA,EAAA,EAAA;AAEJV,IAAAA,MAAQ,EAAA0B,YAAA;AACR4E,IAAAA,WAAA,EAAAA,WAAA;AACAH,IAAAA,MAAA,EAAAA,MAAA;AACAP,IAAAA,UAAA,EAAAA,UAAA;AACAW,IAAAA,OAAA,EAAAA,OAAA;AACAd,IAAAA,SAAA,EAAAA,SAAA;AACAjF,IAAAA,YAAA,EAAAA,YAAA;AAEAC,IAAAA,mBAAqB,EAAA,SAArBA,mBAAqBA,CAACoF,CAAM,EAAA;MAAA,OAAApF,oBAAA,CAAoBoF,CAAC,CAAA,CAAA;AAAA,KAAA;AACjDvF,IAAAA,KAAO,EAAA;MACLL,KAAA,EAAOA,UAASK,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAL,KAAA,CAAA;MACvBC,MAAA,EAAQA,WAAUI,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAJ,MAAA,CAAA;AACzBC,MAAAA,YAAA,EAAAA,YAAAA;AAAA;KAEF;IAEAuH,QAAQhH,KAAM,CAAAgH,MAAAA;GACf,CAAA,IAEJtG,WAAgB,KAAAJ,6CAAA,CAAaC,OAAW,IAAAZ,SAAA,KAAcgC,4CAAWsF,IAChE,mBAAAR,KAAA,CAAAC,aAAA,CAACC,gBAAA,EAAA;IACC/G,KAAO,EAAAgH,wCAAA,CAAAA,wCAAA,CAAA;AACLrH,MAAAA,KAAA,EAAAA,KAAA;AACAC,MAAAA,MAAA,EAAAA,MAAA;AACAC,MAAAA,YAAA,EAAAA,YAAAA;KACGyH,EAAAA,+BAAO,CAAAC,gBAAA,CAAA,EAAA,EAAA,EAAA;AACVC,MAAAA,iBAAiBzH,SAAc,KAAAgC,2CAAA,CAAWC,GAAM,GAAAP,QAAA,GAAW6F,gCAAOC,gBAAiB,CAAAC,eAAAA;AAAA,KAAA,EAChFxH,KAAA,CAAA;AACL,GAAA,EAECD,SAAA,KAAcgC,4CAAW0F,IACxB,mBAAAZ,KAAA,CAAAC,aAAA,CAACtC,iBAAA,EAAA;AACC9E,IAAAA,MAAQ,EAAAuC,UAAA;AACRjC,IAAAA,KAAO,EAAA;MACLL,KAAA,EAAOA,UAASK,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAL,KAAA,CAAA;MACvBC,MAAA,EAAQA,WAAUI,KAAO,aAAPA,KAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,KAAO,CAAAJ,MAAA,CAAA;AACzBC,MAAAA,YAAA,EAAAA,YAAAA;KACF;IAEAuH,QAAQhH,KAAM,CAAAgH,MAAAA;AAAA,GACf,CAAA,EAEFrH,SAAc,KAAAgC,2CAAA,CAAWpB,OAAW,mBAAAkG,KAAA,CAAAC,aAAA,CAACY;AAAiBxG,IAAAA,QAAoB,EAApBA,QAAAA;AAAoB,GAAA,CAC7E,CAAA,EAAA,CAEAJ,gBAAgBJ,6CAAa,CAAA2F,SAAA,IAAavF,gBAAgBJ,6CAAa,CAAA4F,MAAA,KACvExG,UAAe,KAAAqG,4CAAA,CAAYkB,IACzB,mBAAAR,KAAA,CAAAC,aAAA,CAACa,4BAAA,EAAA;AACCC,IAAAA,aAAe,EAAA,CAAA;AACfC,IAAAA,OAAA,EAAS,SAATA,OAAAA,CAAUtC,CAAM,EAAA;MACdgB,QAAA,CAAShB,CAAC,CAAA,CAAA;KACZ;AACAvF,IAAAA;AAASL,MAAAA,KAAA,EAAAA,KAAA;AAAOC,MAAAA,QAAAA;AAAQC,MAAAA,YAAc,EAAdA,YAAAA;KAAiByH,EAAAA,gCAAOC,gBAAiB,CAAA;AAAA,GAAA,iBAEjEV,KAAA,CAAAC,aAAA,CAACtC,iBAAA,EAAA;AACCxE,IAAAA,KAAO,EAAA;AAAEL,MAAAA,KAAO,EAAA,EAAA;AAAIC,MAAAA,QAAQ,EAAA;KAAG;AAC/BF,IAAAA,MAAQ,EAAA;AACN4B,MAAAA,GAAA,EAAKR,gBAAgBJ,6CAAa,CAAA4F,MAAA,GAASrH,YAAY0H,SAAS,CAAA,GAAItH,WAAWsH,SAAS,CAAA;KAC1F;IAEAS,QAAQhH,KAAM,CAAAgH,MAAAA;GAChB,CACF,CAEN,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA9H,KAAA,CAAMwI,YAAe,GAAAC,kDAAA,CAAA;AAErB,cAAeC,aAAAA,WAAK1I,KAAK,CAAA;;;;"}
|
|
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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"}
|
|
@@ -9,7 +9,7 @@ import '../ConfigProvider/hooks/ConfigCache/ConfigCache.js';
|
|
|
9
9
|
import useMounted from '../../pvCount/useUnmountedProcess.js';
|
|
10
10
|
import { lightColor } from '@xhsreds/reds-token-next';
|
|
11
11
|
import { useColorMode } from '../ConfigProvider/hooks/themeToken/useColorMode.js';
|
|
12
|
-
import {
|
|
12
|
+
import { isLocalFile, isDataUri, convertKeysToSnakeCase } from './utils.js';
|
|
13
13
|
import VisibilitySensor from './VisibilitySensor.js';
|
|
14
14
|
import { apmPush } from './apm.js';
|
|
15
15
|
import 'react-native-svg';
|
|
@@ -39,7 +39,7 @@ var Image = function Image(_ref) {
|
|
|
39
39
|
style = _ref.style,
|
|
40
40
|
abortApmCollection = _ref.abortApmCollection,
|
|
41
41
|
fadeDuration = _ref.fadeDuration,
|
|
42
|
-
|
|
42
|
+
onFirstDrawFinished = _ref.onFirstDrawFinished,
|
|
43
43
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
44
44
|
useMounted("Image");
|
|
45
45
|
var _useState = useState(IMAGE_STATUS.LOADING),
|
|
@@ -50,20 +50,20 @@ var Image = function Image(_ref) {
|
|
|
50
50
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
51
51
|
progress = _useState4[0],
|
|
52
52
|
setProgress = _useState4[1];
|
|
53
|
+
var _useState5 = useState(0),
|
|
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];
|
|
53
61
|
var formatSource = useMemo(function () {
|
|
54
|
-
if (_source) return
|
|
55
|
-
uri: props.format ? formatUri({
|
|
56
|
-
uri: _source.uri || "",
|
|
57
|
-
width: width
|
|
58
|
-
}) : _source.uri
|
|
59
|
-
};
|
|
62
|
+
if (_source) return _source;
|
|
60
63
|
return {
|
|
61
|
-
uri:
|
|
62
|
-
uri: src,
|
|
63
|
-
width: width
|
|
64
|
-
}) : src
|
|
64
|
+
uri: src
|
|
65
65
|
};
|
|
66
|
-
}, [src, _source
|
|
66
|
+
}, [src, _source]);
|
|
67
67
|
var aveColor = useAveColor({
|
|
68
68
|
source: formatSource,
|
|
69
69
|
defaultColor: lightColor.Fill1,
|
|
@@ -72,10 +72,10 @@ var Image = function Image(_ref) {
|
|
|
72
72
|
var blurSource = useBlur({
|
|
73
73
|
source: formatSource
|
|
74
74
|
});
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
viewable =
|
|
78
|
-
setViewable =
|
|
75
|
+
var _useState9 = useState(false),
|
|
76
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
77
|
+
viewable = _useState0[0],
|
|
78
|
+
setViewable = _useState0[1];
|
|
79
79
|
var hasInit = useRef(false);
|
|
80
80
|
var checkIsVisible = function checkIsVisible(isVisible) {
|
|
81
81
|
if (abortApmCollection) return;
|
|
@@ -99,10 +99,10 @@ var Image = function Image(_ref) {
|
|
|
99
99
|
loadDuration: 0,
|
|
100
100
|
viewDuration: 0
|
|
101
101
|
});
|
|
102
|
-
var
|
|
103
|
-
|
|
104
|
-
apmDoneRef =
|
|
105
|
-
setApmDoneRef =
|
|
102
|
+
var _useState1 = useState(false),
|
|
103
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
104
|
+
apmDoneRef = _useState10[0],
|
|
105
|
+
setApmDoneRef = _useState10[1];
|
|
106
106
|
useEffect(function () {
|
|
107
107
|
if (abortApmCollection) return;
|
|
108
108
|
try {
|
|
@@ -162,10 +162,8 @@ var Image = function Image(_ref) {
|
|
|
162
162
|
var _props$onLoadEnd;
|
|
163
163
|
props === null || props === void 0 || (_props$onLoadEnd = props.onLoadEnd) === null || _props$onLoadEnd === void 0 || _props$onLoadEnd.call(props);
|
|
164
164
|
if (abortApmCollection) return;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
pushApmData();
|
|
168
|
-
}
|
|
165
|
+
apmDataRef.current;
|
|
166
|
+
pushApmData();
|
|
169
167
|
};
|
|
170
168
|
var onProgress = function onProgress(e) {
|
|
171
169
|
var _props$onProgress;
|
|
@@ -182,6 +180,7 @@ var Image = function Image(_ref) {
|
|
|
182
180
|
var _props$onLoad;
|
|
183
181
|
if (!abortApmCollection) {
|
|
184
182
|
var now = Date.now();
|
|
183
|
+
setLoadedTime(now);
|
|
185
184
|
var loadDuration = now - apmDataRef.current.loadedStartTime;
|
|
186
185
|
apmDataRef.current.loadedTime = now;
|
|
187
186
|
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
@@ -190,8 +189,16 @@ var Image = function Image(_ref) {
|
|
|
190
189
|
(_props$onLoad = props.onLoad) === null || _props$onLoad === void 0 || _props$onLoad.call(props, e);
|
|
191
190
|
setImageStatus(IMAGE_STATUS.LOADED);
|
|
192
191
|
};
|
|
192
|
+
useEffect(function () {
|
|
193
|
+
var loadDuration = loadedTime - loadStartTime;
|
|
194
|
+
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
195
|
+
}, [loadedTime, loadStartTime]);
|
|
193
196
|
var onLoadStart = function onLoadStart() {
|
|
194
|
-
!abortApmCollection
|
|
197
|
+
if (!abortApmCollection) {
|
|
198
|
+
var now = Date.now();
|
|
199
|
+
apmDataRef.current.loadedStartTime = now;
|
|
200
|
+
setLoadStartTime(now);
|
|
201
|
+
}
|
|
195
202
|
};
|
|
196
203
|
var onError = function onError(e) {
|
|
197
204
|
var _props$onError;
|
|
@@ -228,9 +235,7 @@ var Image = function Image(_ref) {
|
|
|
228
235
|
onError: onError,
|
|
229
236
|
onLoadEnd: onLoadEnd,
|
|
230
237
|
fadeDuration: fadeDuration,
|
|
231
|
-
onFirstDrawFinished:
|
|
232
|
-
return _onFirstDrawFinished(e);
|
|
233
|
-
},
|
|
238
|
+
onFirstDrawFinished: onFirstDrawFinished,
|
|
234
239
|
style: {
|
|
235
240
|
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
236
241
|
height: height || (style === null || style === void 0 ? void 0 : style.height),
|
|
@@ -246,9 +251,7 @@ var Image = function Image(_ref) {
|
|
|
246
251
|
onError: onError,
|
|
247
252
|
onLoadEnd: onLoadEnd,
|
|
248
253
|
fadeDuration: fadeDuration,
|
|
249
|
-
onFirstDrawFinished:
|
|
250
|
-
return _onFirstDrawFinished(e);
|
|
251
|
-
},
|
|
254
|
+
onFirstDrawFinished: onFirstDrawFinished,
|
|
252
255
|
style: {
|
|
253
256
|
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
254
257
|
height: height || (style === null || style === void 0 ? void 0 : style.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 formatSource = useMemo(() => {\n // @ts-ignore\n if (_source)\n return {\n uri: props.format\n ? formatUri({ uri: (_source as ImageURISource).uri || \"\", width: width as number })\n : (_source as ImageURISource).uri,\n };\n // @ts-ignore\n return { uri: props.format ? formatUri({ uri: src, width }) : src } as ImageSourcePropType;\n }, [src, _source, width]);\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 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 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 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 (!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={(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 </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={(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","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","formatSource","useMemo","uri","format","formatUri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState5","_useState6","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","_useState7","_useState8","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 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xhsreds/reds-rn-next",
|
|
3
|
-
"version": "0.8.1-
|
|
3
|
+
"version": "0.8.1-beta202510161437",
|
|
4
4
|
"author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"dependencies": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"react-native-fs": "2.20.0",
|
|
27
27
|
"react-native-svg": "13.14.0",
|
|
28
28
|
"@xhs/react-native-harmony": "*",
|
|
29
|
-
"@xhsreds/reds-token-next": "0.8.1-
|
|
29
|
+
"@xhsreds/reds-token-next": "0.8.1-beta202510161437"
|
|
30
30
|
},
|
|
31
31
|
"peerDependenciesMeta": {
|
|
32
32
|
"ozone-schema-web": {
|
|
@@ -60,17 +60,15 @@ const Image = ({
|
|
|
60
60
|
const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);
|
|
61
61
|
const [progress, setProgress] = useState(0);
|
|
62
62
|
|
|
63
|
+
const [loadedTime, setLoadedTime] = useState(0);
|
|
64
|
+
const [loadStartTime, setLoadStartTime] = useState(0);
|
|
65
|
+
|
|
63
66
|
const formatSource = useMemo(() => {
|
|
64
67
|
// @ts-ignore
|
|
65
|
-
if (_source)
|
|
66
|
-
return {
|
|
67
|
-
uri: props.format
|
|
68
|
-
? formatUri({ uri: (_source as ImageURISource).uri || "", width: width as number })
|
|
69
|
-
: (_source as ImageURISource).uri,
|
|
70
|
-
};
|
|
68
|
+
if (_source) return _source as ImageSourcePropTyp;
|
|
71
69
|
// @ts-ignore
|
|
72
|
-
return { uri:
|
|
73
|
-
}, [src, _source
|
|
70
|
+
return { uri: src } as ImageSourcePropType;
|
|
71
|
+
}, [src, _source]);
|
|
74
72
|
|
|
75
73
|
const aveColor = useAveColor({
|
|
76
74
|
source: formatSource,
|
|
@@ -181,14 +179,15 @@ const Image = ({
|
|
|
181
179
|
}
|
|
182
180
|
}
|
|
183
181
|
}, [viewable, pushApmData, abortApmCollection]);
|
|
182
|
+
|
|
184
183
|
const onLoadEnd = () => {
|
|
185
184
|
props?.onLoadEnd?.();
|
|
186
185
|
if (abortApmCollection) return;
|
|
187
186
|
const apmData = apmDataRef.current;
|
|
188
187
|
// 进入视窗后加载成功/失败
|
|
189
|
-
if (apmData.intersectTime) {
|
|
190
|
-
|
|
191
|
-
}
|
|
188
|
+
// if (apmData.intersectTime) {
|
|
189
|
+
pushApmData();
|
|
190
|
+
// }
|
|
192
191
|
};
|
|
193
192
|
|
|
194
193
|
const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {
|
|
@@ -204,6 +203,7 @@ const Image = ({
|
|
|
204
203
|
const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {
|
|
205
204
|
if (!abortApmCollection) {
|
|
206
205
|
const now = Date.now();
|
|
206
|
+
setLoadedTime(now);
|
|
207
207
|
const loadDuration = now - apmDataRef.current.loadedStartTime;
|
|
208
208
|
apmDataRef.current.loadedTime = now;
|
|
209
209
|
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
@@ -213,8 +213,17 @@ const Image = ({
|
|
|
213
213
|
setImageStatus(IMAGE_STATUS.LOADED);
|
|
214
214
|
};
|
|
215
215
|
|
|
216
|
+
useEffect(() => {
|
|
217
|
+
const loadDuration = loadedTime - loadStartTime;
|
|
218
|
+
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
219
|
+
}, [loadedTime, loadStartTime]);
|
|
220
|
+
|
|
216
221
|
const onLoadStart = () => {
|
|
217
|
-
!abortApmCollection
|
|
222
|
+
if (!abortApmCollection) {
|
|
223
|
+
const now = Date.now();
|
|
224
|
+
apmDataRef.current.loadedStartTime = now;
|
|
225
|
+
setLoadStartTime(now);
|
|
226
|
+
}
|
|
218
227
|
};
|
|
219
228
|
|
|
220
229
|
const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {
|
|
@@ -251,7 +260,7 @@ const Image = ({
|
|
|
251
260
|
onLoadEnd={onLoadEnd}
|
|
252
261
|
fadeDuration={fadeDuration}
|
|
253
262
|
// @ts-ignore
|
|
254
|
-
onFirstDrawFinished={
|
|
263
|
+
onFirstDrawFinished={onFirstDrawFinished}
|
|
255
264
|
style={{
|
|
256
265
|
width: width || style?.width,
|
|
257
266
|
height: height || style?.height,
|
|
@@ -274,7 +283,7 @@ const Image = ({
|
|
|
274
283
|
onLoadEnd={onLoadEnd}
|
|
275
284
|
fadeDuration={fadeDuration}
|
|
276
285
|
// @ts-ignore
|
|
277
|
-
onFirstDrawFinished={
|
|
286
|
+
onFirstDrawFinished={onFirstDrawFinished}
|
|
278
287
|
style={{
|
|
279
288
|
width: width || style?.width,
|
|
280
289
|
height: height || style?.height,
|