@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.
Files changed (42) hide show
  1. package/coverage/.tmp/coverage-0.json +1 -1
  2. package/coverage/.tmp/coverage-1.json +1 -1
  3. package/coverage/.tmp/coverage-12.json +1 -1
  4. package/coverage/.tmp/coverage-13.json +1 -1
  5. package/coverage/.tmp/coverage-15.json +1 -1
  6. package/coverage/.tmp/coverage-16.json +1 -1
  7. package/coverage/.tmp/coverage-17.json +1 -1
  8. package/coverage/.tmp/coverage-18.json +1 -1
  9. package/coverage/.tmp/coverage-19.json +1 -1
  10. package/coverage/.tmp/coverage-2.json +1 -1
  11. package/coverage/.tmp/coverage-20.json +1 -1
  12. package/coverage/.tmp/coverage-21.json +1 -1
  13. package/coverage/.tmp/coverage-22.json +1 -1
  14. package/coverage/.tmp/coverage-23.json +1 -1
  15. package/coverage/.tmp/coverage-24.json +1 -1
  16. package/coverage/.tmp/coverage-25.json +1 -1
  17. package/coverage/.tmp/coverage-26.json +1 -1
  18. package/coverage/.tmp/coverage-27.json +1 -1
  19. package/coverage/.tmp/coverage-28.json +1 -1
  20. package/coverage/.tmp/coverage-3.json +1 -1
  21. package/coverage/.tmp/coverage-32.json +1 -1
  22. package/coverage/.tmp/coverage-33.json +1 -1
  23. package/coverage/.tmp/coverage-34.json +1 -1
  24. package/coverage/.tmp/coverage-35.json +1 -1
  25. package/coverage/.tmp/coverage-36.json +1 -1
  26. package/coverage/.tmp/coverage-37.json +1 -1
  27. package/coverage/.tmp/coverage-38.json +1 -1
  28. package/coverage/.tmp/coverage-39.json +1 -1
  29. package/coverage/.tmp/coverage-4.json +1 -1
  30. package/coverage/.tmp/coverage-40.json +1 -1
  31. package/coverage/.tmp/coverage-41.json +1 -1
  32. package/coverage/.tmp/coverage-5.json +1 -1
  33. package/coverage/.tmp/coverage-6.json +1 -1
  34. package/coverage/.tmp/coverage-7.json +1 -1
  35. package/coverage/.tmp/coverage-8.json +1 -1
  36. package/coverage/.tmp/coverage-9.json +1 -1
  37. package/lib/cjs/components/Image/Image.js +34 -31
  38. package/lib/cjs/components/Image/Image.js.map +1 -1
  39. package/lib/esm/components/Image/Image.js +35 -32
  40. package/lib/esm/components/Image/Image.js.map +1 -1
  41. package/package.json +2 -2
  42. 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 { formatUri, isLocalFile, isDataUri, convertKeysToSnakeCase } from './utils.js';
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
- _onFirstDrawFinished = _ref.onFirstDrawFinished,
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: props.format ? formatUri({
62
- uri: src,
63
- width: width
64
- }) : src
64
+ uri: src
65
65
  };
66
- }, [src, _source, width]);
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 _useState5 = useState(false),
76
- _useState6 = _slicedToArray(_useState5, 2),
77
- viewable = _useState6[0],
78
- setViewable = _useState6[1];
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 _useState7 = useState(false),
103
- _useState8 = _slicedToArray(_useState7, 2),
104
- apmDoneRef = _useState8[0],
105
- setApmDoneRef = _useState8[1];
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
- var apmData = apmDataRef.current;
166
- if (apmData.intersectTime) {
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 && (apmDataRef.current.loadedStartTime = Date.now());
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: function onFirstDrawFinished(e) {
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: function onFirstDrawFinished(e) {
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-beta202510151847",
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-beta202510151847"
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: props.format ? formatUri({ uri: src, width }) : src } as ImageSourcePropType;
73
- }, [src, _source, width]);
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
- pushApmData();
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 && (apmDataRef.current.loadedStartTime = Date.now());
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={(e) => onFirstDrawFinished(e)}
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={(e) => onFirstDrawFinished(e)}
286
+ onFirstDrawFinished={onFirstDrawFinished}
278
287
  style={{
279
288
  width: width || style?.width,
280
289
  height: height || style?.height,