@xhsreds/reds-rn-next 0.9.1-test.1 → 0.10.1-beta202511041913
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-10.json +1 -1
- package/coverage/.tmp/coverage-11.json +1 -1
- package/coverage/.tmp/coverage-12.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-14.json +1 -1
- package/coverage/.tmp/coverage-15.json +1 -1
- package/coverage/.tmp/coverage-16.json +1 -1
- package/coverage/.tmp/coverage-17.json +1 -1
- package/coverage/.tmp/coverage-18.json +1 -1
- package/coverage/.tmp/coverage-19.json +1 -1
- package/coverage/.tmp/coverage-2.json +1 -1
- package/coverage/.tmp/coverage-20.json +1 -1
- package/coverage/.tmp/coverage-21.json +1 -1
- package/coverage/.tmp/coverage-22.json +1 -1
- package/coverage/.tmp/coverage-23.json +1 -1
- package/coverage/.tmp/coverage-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-33.json +1 -1
- package/coverage/.tmp/coverage-35.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-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/_chunks/CwkpVXDI.js.map +1 -1
- package/lib/cjs/_chunks/{CIr5S84J.js → DUU5wf2f.js} +4 -2
- package/lib/cjs/_chunks/DUU5wf2f.js.map +1 -0
- package/lib/cjs/components/Carousel/Carousel.js +9 -2
- package/lib/cjs/components/Carousel/Carousel.js.map +1 -1
- package/lib/cjs/components/Image/Image.js +29 -92
- package/lib/cjs/components/Image/Image.js.map +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/cjs/components/Image/index.js +4 -3
- package/lib/cjs/components/Image/index.js.map +1 -1
- package/lib/cjs/components/Image/queryCacheBatcher.js +96 -0
- package/lib/cjs/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/cjs/components/Popover/Popover.js +4 -3
- package/lib/cjs/components/Popover/Popover.js.map +1 -1
- package/lib/cjs/components/PullRefresh/PullRefresh.js +104 -40
- package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/cjs/components/PullRefresh/component.js +1 -1
- package/lib/cjs/components/PullRefresh/index.js +1 -1
- package/lib/cjs/components/PullRefresh/interface/index.js +1 -1
- package/lib/cjs/components/Radio/Radio.js +6 -5
- package/lib/cjs/components/Radio/Radio.js.map +1 -1
- package/lib/cjs/components/Radio/index.js +3 -2
- package/lib/cjs/components/Radio/index.js.map +1 -1
- package/lib/cjs/components/Radio/styles.js +4 -4
- package/lib/cjs/components/Radio/styles.js.map +1 -1
- package/lib/cjs/components/Sheets/styles.js +2 -2
- package/lib/cjs/components/Sheets/styles.js.map +1 -1
- package/lib/cjs/components/StatusBar/hook/getStatusHeight.js +14 -1
- package/lib/cjs/components/StatusBar/hook/getStatusHeight.js.map +1 -1
- package/lib/cjs/index.js +3 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/pvCount/pvData.js +1 -1
- package/lib/esm/_chunks/Da9cW8JG.js.map +1 -1
- package/lib/esm/_chunks/{CZtagXcj.js → gC9g4Fr_.js} +4 -2
- package/lib/esm/_chunks/gC9g4Fr_.js.map +1 -0
- package/lib/esm/components/Carousel/Carousel.js +9 -2
- package/lib/esm/components/Carousel/Carousel.js.map +1 -1
- package/lib/esm/components/Image/Image.js +31 -94
- package/lib/esm/components/Image/Image.js.map +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/esm/components/Image/index.js +4 -3
- package/lib/esm/components/Image/index.js.map +1 -1
- package/lib/esm/components/Image/queryCacheBatcher.js +92 -0
- package/lib/esm/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/esm/components/Popover/Popover.js +4 -3
- package/lib/esm/components/Popover/Popover.js.map +1 -1
- package/lib/esm/components/PullRefresh/PullRefresh.js +105 -41
- package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/esm/components/PullRefresh/component.js +1 -1
- package/lib/esm/components/PullRefresh/index.js +1 -1
- package/lib/esm/components/PullRefresh/interface/index.js +1 -1
- package/lib/esm/components/Radio/Radio.js +6 -5
- package/lib/esm/components/Radio/Radio.js.map +1 -1
- package/lib/esm/components/Radio/index.js +3 -2
- package/lib/esm/components/Radio/index.js.map +1 -1
- package/lib/esm/components/Radio/styles.js +4 -4
- package/lib/esm/components/Radio/styles.js.map +1 -1
- package/lib/esm/components/Sheets/styles.js +2 -2
- package/lib/esm/components/Sheets/styles.js.map +1 -1
- package/lib/esm/components/StatusBar/hook/getStatusHeight.js +14 -2
- package/lib/esm/components/StatusBar/hook/getStatusHeight.js.map +1 -1
- package/lib/esm/index.js +3 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/pvCount/pvData.js +1 -1
- package/lib/src/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/src/components/Popover/Popover.d.ts +1 -1
- package/lib/src/components/Popover/interface/index.d.ts +1 -0
- package/lib/src/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/src/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/src/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
- package/lib/types/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/types/components/Popover/Popover.d.ts +1 -1
- package/lib/types/components/Popover/interface/index.d.ts +1 -0
- package/lib/types/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/types/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/types/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
- package/package.json +2 -2
- package/src/components/Carousel/Carousel.tsx +15 -3
- package/src/components/Carousel/demo/index.tsx +14 -2
- package/src/components/Image/Image.tsx +53 -115
- package/src/components/Image/VisibilitySensor.tsx +1 -2
- package/src/components/Image/queryCacheBatcher.ts +84 -0
- package/src/components/Popover/Popover.tsx +4 -3
- package/src/components/Popover/doc/index.mdx +22 -21
- package/src/components/Popover/interface/index.ts +1 -0
- package/src/components/PullRefresh/PullRefresh.tsx +146 -55
- package/src/components/PullRefresh/doc/index.mdx +19 -16
- package/src/components/PullRefresh/interface/index.ts +6 -0
- package/src/components/Radio/Radio.tsx +3 -3
- package/src/components/Radio/styles.ts +3 -3
- package/src/components/Sheets/styles.ts +2 -2
- package/src/components/StatusBar/hook/getStatusHeight.ts +20 -1
- package/src/index.ts +0 -1
- package/CHANGELOG.md +0 -13
- package/lib/cjs/_chunks/CIr5S84J.js.map +0 -1
- package/lib/esm/_chunks/CZtagXcj.js.map +0 -1
|
@@ -16,7 +16,9 @@ var PullRefreshDefaultProps = {
|
|
|
16
16
|
isRefreshing: false,
|
|
17
17
|
showText: true,
|
|
18
18
|
initRefresh: false,
|
|
19
|
-
refresh: false
|
|
19
|
+
refresh: false,
|
|
20
|
+
nativeAndroidPullRefresh: false,
|
|
21
|
+
androidRefreshProps: {}
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
var index = /*#__PURE__*/Object.freeze({
|
|
@@ -28,4 +30,4 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
28
30
|
exports.PullRefreshDefaultProps = PullRefreshDefaultProps;
|
|
29
31
|
exports.PullState = PullState;
|
|
30
32
|
exports.index = index;
|
|
31
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=DUU5wf2f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DUU5wf2f.js","sources":["../../../src/components/PullRefresh/interface/index.ts"],"sourcesContent":["import type { RefreshControlProps } from \"react-native\";\nimport { ViewStyle } from \"react-native\";\nexport interface RedsPullRefresh {\n children: React.ReactNode;\n pullAnimHeight?: number;\n minPullDistance?: number;\n msHoldingTime?: number;\n isRefreshing: boolean;\n pullDownToRefreshText?: string;\n releaseRefreshText?: string;\n requestDataText?: string;\n requestSuccessfulText?: string;\n style?: ViewStyle;\n controlStyle?: ViewStyle;\n onRequest?: () => void;\n showText?: boolean;\n initRefresh?: boolean;\n refresh?: boolean;\n nativeAndroidPullRefresh?: boolean;\n androidRefreshProps?: Object;\n androidColors?: string[];\n}\n\nexport enum PullState {\n INIT, // 初始化\n FINISH, // 结束\n PULLING, // 下拉中\n LOADING, // 请求数据中\n HOLDING, // 请求完数据的停留状态\n}\n\nexport interface RedsPullRefreshEvent {}\nexport const PullRefreshDefaultProps = {\n children: undefined,\n pullAnimHeight: 0,\n minPullDistance: 20,\n msHoldingTime: 1000,\n isRefreshing: false,\n showText: true,\n initRefresh: false,\n refresh: false,\n nativeAndroidPullRefresh: false,\n androidRefreshProps: {},\n};\n"],"names":["PullState","PullState2","PullRefreshDefaultProps","children","pullAnimHeight","minPullDistance","msHoldingTime","isRefreshing","showText","initRefresh","refresh","nativeAndroidPullRefresh","androidRefreshProps"],"mappings":";;IAuBYA,SAAA,4BAAAA,UAAL,EAAA;EACLA,UAAA,CAAAC,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;EACAD,UAAA,CAAAC,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;EACAD,UAAA,CAAAC,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;EACAD,UAAA,CAAAC,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;EACAD,UAAA,CAAAC,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;AALUD,EAAAA,OAAAA,UAAAA,CAAAA;AAAA,CAAA,CAAAA,SAAA,IAAA,EAAA,EAAA;AASL,IAAME,uBAA0B,GAAA;EACrCC,QAAU,EAAA,KAAA,CAAA;AACVC,EAAAA,cAAgB,EAAA,CAAA;AAChBC,EAAAA,eAAiB,EAAA,EAAA;AACjBC,EAAAA,aAAe,EAAA,GAAA;AACfC,EAAAA,YAAc,EAAA,KAAA;AACdC,EAAAA,QAAU,EAAA,IAAA;AACVC,EAAAA,WAAa,EAAA,KAAA;AACbC,EAAAA,OAAS,EAAA,KAAA;AACTC,EAAAA,wBAA0B,EAAA,KAAA;AAC1BC,EAAAA,qBAAqB,EAAC;AACxB;;;;;;;;;;;;"}
|
|
@@ -256,7 +256,7 @@ var Carousel = function Carousel(props) {
|
|
|
256
256
|
requestAnimationFrame(function () {
|
|
257
257
|
var _scrollViewRef$curren;
|
|
258
258
|
var scrollOffset = index * offsetPerItem;
|
|
259
|
-
if (props.playingMode !== "normal") {
|
|
259
|
+
if (props.playingMode !== "normal" && props.infinite) {
|
|
260
260
|
scrollOffset -= containerPadding;
|
|
261
261
|
}
|
|
262
262
|
(_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 || _scrollViewRef$curren.scrollTo(_rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, props.direction === "horizontal" ? {
|
|
@@ -300,7 +300,11 @@ var Carousel = function Carousel(props) {
|
|
|
300
300
|
if (props.playingMode === "normal") {
|
|
301
301
|
index = Math.round(offset / offsetPerItem);
|
|
302
302
|
} else {
|
|
303
|
-
|
|
303
|
+
if (!props.infinite) {
|
|
304
|
+
index = Math.round(offset / offsetPerItem);
|
|
305
|
+
} else {
|
|
306
|
+
index = Math.round((offset + containerPadding) / offsetPerItem);
|
|
307
|
+
}
|
|
304
308
|
}
|
|
305
309
|
index = Math.max(0, Math.min(index, extendedData.length - 1));
|
|
306
310
|
if (props.infinite) {
|
|
@@ -317,6 +321,9 @@ var Carousel = function Carousel(props) {
|
|
|
317
321
|
var clampedIndex = Math.max(0, Math.min(index, length - 1));
|
|
318
322
|
setCurrentIndex(clampedIndex);
|
|
319
323
|
setRealIndex(clampedIndex);
|
|
324
|
+
if (props.playingMode !== "normal") {
|
|
325
|
+
scrollToIndex(clampedIndex, true);
|
|
326
|
+
}
|
|
320
327
|
}
|
|
321
328
|
setIsScrolling(false);
|
|
322
329
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useMemo, ReactElement } from \"react\";\nimport { View, ScrollView, Dimensions, NativeSyntheticEvent, NativeScrollEvent, Image, Text } from \"react-native\";\nimport getStyle from \"./styles\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { RedsCarousel, DOTTYPE, DOTPLACEMENT, NUMBERPLACEMENT, CarouselDefaultProps } from \"./interface\";\n\nexport const Carousel: React.FC<RedsCarousel> = (props) => {\n useMounted(\"Carousel\");\n const scrollViewRef = useRef<ScrollView>(null);\n const [currentIndex, setCurrentIndex] = useState(1);\n const [isScrolling, setIsScrolling] = useState(false);\n const autoPlayTimer = useRef<any>(null);\n const [normalSize, setNormalSize] = useState({\n x: 0,\n y: 0,\n });\n const [offsetPerItem, setOffsetPerItem] = useState(0);\n const [containerPadding, setContainerPadding] = useState(0);\n const [spacing, setSpacing] = useState(0);\n const [distance, setDistance] = useState(0);\n const [realIndex, setRealIndex] = useState(0);\n\n // 新增:存储children的实际尺寸\n const [childrenSize, setChildrenSize] = useState({\n width: 0,\n height: 0,\n });\n const [isChildrenSizeMeasured, setIsChildrenSizeMeasured] = useState(false);\n\n const themeColor = useThemeColor();\n const styles = getStyle(themeColor);\n\n // 修改:根据children实际尺寸计算容器尺寸\n const containerSize = useMemo(() => {\n let width = (props.style?.width as number) || Dimensions.get(\"window\").width;\n let height = (props.style?.height as number) || 300;\n\n // 如果使用children且已测量出尺寸,则使用children的实际尺寸\n if (props.children && isChildrenSizeMeasured && childrenSize.width > 0 && childrenSize.height > 0) {\n if (!props.style?.width) {\n width = childrenSize.width;\n }\n if (!props.style?.height) {\n height = childrenSize.height;\n }\n }\n\n return { width, height };\n }, [props.style?.width, props.style?.height, props.children, isChildrenSizeMeasured, childrenSize]);\n\n // 修改:处理children的onLayout事件\n const handleChildLayout = (event: any) => {\n const { width, height } = event.nativeEvent.layout;\n\n // 只在尺寸发生变化时更新\n if (width !== childrenSize.width || height !== childrenSize.height) {\n setChildrenSize({ width, height });\n setIsChildrenSizeMeasured(true);\n }\n };\n\n const extendedData = useMemo(() => {\n if (props.data?.length) {\n // 如果不是无限循环,直接返回原数据\n if (!props.infinite) {\n return props.data;\n }\n return [props.data[props.data.length - 1], ...(props.data || []), props.data[0]];\n } else if (props.children?.length) {\n // 如果不是无限循环,直接返回原children\n if (!props.infinite) {\n return React.Children.map(props.children, (child: any, index: number) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as any, {\n onLayout: (e: any) => {\n if (index === 0) {\n handleChildLayout(e);\n }\n if (!props.style?.height && index === 0) {\n setNormalSize((prev) => ({\n x: containerSize.width,\n y: e.nativeEvent?.layout.height,\n }));\n }\n // @ts-ignore\n if (child.props?.onLayout) {\n // @ts-ignore\n child.props.onLayout?.(e);\n }\n },\n ...((child.props || {}) as object),\n });\n }\n });\n }\n\n const cloneChild = [props.children[props.children.length - 1], ...(props.children || []), props.children[0]];\n return React.Children.map(cloneChild, (child: any, index: number) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as any, {\n onLayout: (e: any) => {\n if (index === 1) {\n handleChildLayout(e);\n }\n if (!props.style?.height && index === 1) {\n setNormalSize((prev) => ({\n x: containerSize.width,\n y: e.nativeEvent?.layout.height,\n }));\n }\n // @ts-ignore\n if (child.props?.onLayout) {\n // @ts-ignore\n child.props.onLayout?.(e);\n }\n },\n ...((child.props || {}) as object),\n });\n }\n });\n } else {\n return [];\n }\n }, [props.data, props.children, containerSize.width, props.style?.height, props.infinite]);\n\n // 初始化 normalSize\n useEffect(() => {\n setNormalSize({\n x: containerSize.width,\n y: containerSize.height,\n });\n }, [containerSize]);\n\n /**\n * 长度\n */\n const length = useMemo(() => {\n return props.data?.length || props.children?.length || 0;\n }, [props.data, props.children]);\n\n /**\n * 渲染dot list\n */\n const dotList = useMemo(() => {\n return new Array(props.dotType === DOTTYPE.INDEFINITE ? props.initDotNumber : length).fill(0);\n }, [props.dotType, props.initDotNumber, length]);\n\n // Calculate dimensions based on mode\n const getItemDimensions = () => {\n const distance = props.direction === \"horizontal\" ? normalSize.x : normalSize.y;\n switch (props.playingMode) {\n case \"normal\":\n return {\n distance,\n spacing: 0,\n containerPadding: 0,\n };\n case \"card\":\n return {\n distance: distance * 0.6,\n spacing: props.distance || 0,\n containerPadding: distance * 0.2,\n };\n case \"compact\":\n return {\n distance: distance * 0.6,\n spacing: props.distance || 0,\n containerPadding: distance * 0.2,\n };\n default:\n return {\n distance,\n spacing: 0,\n containerPadding: 0,\n };\n }\n };\n\n useEffect(() => {\n if (normalSize.x > 0 && normalSize.y > 0) {\n const { distance: DISTANCE, spacing: SPACING, containerPadding: CONTAINER_PADDING } = getItemDimensions();\n setOffsetPerItem(DISTANCE + SPACING);\n setContainerPadding(CONTAINER_PADDING);\n setDistance(DISTANCE);\n setSpacing(SPACING);\n }\n }, [normalSize, props.playingMode, props.distance, props.direction]);\n\n // 重置自动播放计时器\n const resetAutoPlayTimer = () => {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n\n if (props.autoPlay && length > 1) {\n const timer = setInterval(() => {\n if (!isScrolling) {\n const nextIndex = currentIndex + 1;\n\n // 如果不是无限循环且已到最后一页,则停止自动播放\n if (!props.infinite && nextIndex >= length) {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n return;\n }\n\n scrollToIndex(nextIndex);\n }\n }, props.duration);\n autoPlayTimer.current = timer;\n }\n };\n\n // 初始化自动播放\n useEffect(() => {\n if (props.autoPlay && !isScrolling && offsetPerItem > 0) {\n resetAutoPlayTimer();\n }\n return () => {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n }\n };\n }, [currentIndex, isScrolling, props.autoPlay, offsetPerItem, length]);\n\n // 优化滚动方法\n const scrollToIndex = (index: number, animated: boolean = true) => {\n if (offsetPerItem <= 0) return;\n\n // 如果不是无限循环模式,限制索引范围\n if (!props.infinite) {\n index = Math.max(0, Math.min(index, length - 1));\n }\n\n requestAnimationFrame(() => {\n let scrollOffset = index * offsetPerItem;\n\n if (props.playingMode !== \"normal\") {\n scrollOffset -= containerPadding;\n }\n\n scrollViewRef.current?.scrollTo({\n ...(props.direction === \"horizontal\" ? { x: scrollOffset } : { y: scrollOffset }),\n animated,\n });\n });\n\n setCurrentIndex(index);\n\n // 计算真实索引\n let newRealIndex: number;\n if (props.infinite) {\n newRealIndex = index === 0 ? length - 1 : index === length + 1 ? 0 : index - 1;\n } else {\n newRealIndex = index;\n }\n setRealIndex(newRealIndex);\n };\n\n useEffect(() => {\n if (realIndex >= 0 && realIndex < length) {\n props.onChange?.(props.data?.[realIndex] || props.children?.[realIndex], realIndex);\n }\n }, [realIndex, props.data, props.children, length]);\n\n const handleScrollBegin = () => {\n if (!props.handlable) return;\n setIsScrolling(true);\n // 手动滚动开始时清除自动播放计时器\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n };\n\n const handleScrollEnd = (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n if (offsetPerItem <= 0) {\n setIsScrolling(false);\n return;\n }\n\n const offset =\n props.direction === \"horizontal\" ? event.nativeEvent.contentOffset.x : event.nativeEvent.contentOffset.y;\n\n let index: number;\n if (props.playingMode === \"normal\") {\n index = Math.round(offset / offsetPerItem);\n } else {\n index = Math.round((offset + containerPadding) / offsetPerItem);\n }\n\n index = Math.max(0, Math.min(index, extendedData.length - 1));\n\n // 处理边界情况\n if (props.infinite) {\n // 无限循环模式的边界处理\n if (index <= 0) {\n scrollToIndex(length, false);\n } else if (index >= extendedData.length - 1) {\n scrollToIndex(1, false);\n } else {\n setCurrentIndex(index);\n const newRealIndex = index === 0 ? length - 1 : index === length + 1 ? 0 : index - 1;\n setRealIndex(newRealIndex);\n }\n } else {\n // 非无限循环模式\n const clampedIndex = Math.max(0, Math.min(index, length - 1));\n setCurrentIndex(clampedIndex);\n setRealIndex(clampedIndex);\n }\n\n setIsScrolling(false);\n };\n\n /**\n * dot 样式\n */\n const getDotStyle = (index: number) => {\n const isActive =\n props.dotType === DOTTYPE.DEFINITE\n ? realIndex === index\n : props.initDotNumber && realIndex % props.initDotNumber === index;\n\n return isActive\n ? props.dotPlacement === DOTPLACEMENT.INSIDE\n ? [styles.activeDot, props.activeDotStyle]\n : [styles.outSideActiveDot, props.activeDotStyle]\n : props.dotPlacement === DOTPLACEMENT.INSIDE\n ? [styles.dot, props.dotStyle]\n : [styles.outSideDot, props.dotStyle];\n };\n\n // 初始化执行一次\n useEffect(() => {\n if (offsetPerItem > 0 && extendedData.length > 0) {\n let initialIndex = props.currentIndex || 0;\n\n // 如果是无限循环模式,需要加1\n if (props.infinite) {\n initialIndex += 1;\n }\n\n scrollToIndex(initialIndex, false);\n }\n }, [offsetPerItem, extendedData.length, props.infinite]);\n\n useEffect(() => {\n // 如果是无限循环模式,初始索引为1;否则为0\n const initialCurrentIndex = props.infinite ? 1 : 0;\n setCurrentIndex(initialCurrentIndex);\n }, [props.infinite]);\n\n // 优化 handleLoad 函数\n const handleLoad = ({ nativeEvent }: any) => {\n // 只有在没有设置固定高度时才更新\n if (!props.style?.height) {\n setNormalSize((prev) => ({\n ...prev,\n y: nativeEvent.source.height,\n }));\n }\n };\n\n return (\n <View\n style={[\n styles.container,\n {\n overflow: \"hidden\",\n height: containerSize.height,\n width: containerSize.width,\n },\n props.style,\n ]}\n >\n <ScrollView\n ref={scrollViewRef}\n horizontal={props.direction === \"horizontal\"}\n pagingEnabled={props.playingMode === \"normal\"}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n onScrollBeginDrag={handleScrollBegin}\n onScrollEndDrag={handleScrollEnd}\n onMomentumScrollEnd={handleScrollEnd}\n scrollEventThrottle={16}\n decelerationRate=\"fast\"\n scrollEnabled={props.handlable}\n // 修改:根据infinite参数设置是否可以滚动到边界外\n bounces={props.infinite}\n contentContainerStyle={[\n styles.scrollContent,\n props.direction === \"horizontal\"\n ? { paddingHorizontal: containerPadding }\n : { paddingVertical: containerPadding },\n ]}\n >\n {extendedData.map((item: any, index: number) => (\n <View\n key={`${String(item)}_${index}`}\n style={[\n styles.itemContainer,\n {\n ...(props.direction === \"horizontal\"\n ? {\n marginHorizontal: spacing / 2,\n width: distance,\n height: normalSize.y,\n }\n : {\n marginVertical: spacing / 2,\n width: normalSize.x,\n height: distance,\n }),\n transform: [\n {\n scale:\n props.playingMode !== \"normal\" && currentIndex === index\n ? 1\n : props.playingMode === \"normal\"\n ? 1\n : 0.9,\n },\n ],\n },\n ]}\n shouldRasterizeIOS={true}\n renderToHardwareTextureAndroid={true}\n >\n {props.data?.length ? (\n <Image\n source={{ uri: item as string }}\n style={{\n borderRadius: props.playingMode === \"normal\" ? 0 : 12,\n width: props.direction === \"horizontal\" ? distance : normalSize.x,\n height: props.direction === \"horizontal\" ? normalSize.y : distance,\n }}\n resizeMode=\"contain\"\n onLoad={handleLoad}\n resizeMethod=\"resize\"\n />\n ) : (\n extendedData?.[index]\n )}\n </View>\n ))}\n </ScrollView>\n\n {/* 其余的 Dots 和 Numbers 组件保持不变 */}\n {props.displayDots && dotList.length > 0 && (\n <View style={[props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.dotContainer : styles.dotOutsideContainer]}>\n {props.dotType === DOTTYPE.INDEFINITE && (\n <View\n style={[\n props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.smallDot : styles.smallOutsideDot,\n props.dotStyle,\n ]}\n />\n )}\n {dotList.map((_, index) => (\n <View key={index} style={getDotStyle(index)} />\n ))}\n {props.dotType === DOTTYPE.INDEFINITE && (\n <View\n style={[\n props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.smallDot : styles.smallOutsideDot,\n props.dotStyle,\n ]}\n />\n )}\n </View>\n )}\n\n {props.displayNumbers && (\n <View\n style={[\n styles.numberContainer,\n props.numberPlacement === NUMBERPLACEMENT.TOP ? styles.numberTop : styles.numberBottom,\n ]}\n >\n <Text style={styles.number}>{realIndex + 1}</Text>\n <Text style={styles.number}>/</Text>\n <Text style={styles.number}>{length}</Text>\n </View>\n )}\n </View>\n );\n};\n\nCarousel.defaultProps = CarouselDefaultProps;\n"],"names":["Carousel","props","_props$style5","_props$style6","_props$style9","useMounted","scrollViewRef","useRef","_useState","useState","_useState2","_slicedToArray","currentIndex","setCurrentIndex","_useState3","_useState4","isScrolling","setIsScrolling","autoPlayTimer","_useState5","x","y","_useState6","normalSize","setNormalSize","_useState7","_useState8","offsetPerItem","setOffsetPerItem","_useState9","_useState0","containerPadding","setContainerPadding","_useState1","_useState10","spacing","setSpacing","_useState11","_useState12","distance","setDistance","_useState13","_useState14","realIndex","setRealIndex","_useState15","width","height","_useState16","childrenSize","setChildrenSize","_useState17","_useState18","isChildrenSizeMeasured","setIsChildrenSizeMeasured","themeColor","useThemeColor","styles","getStyle","containerSize","useMemo","_props$style","_props$style2","style","Dimensions","get","children","_props$style3","_props$style4","handleChildLayout","event","_event$nativeEvent$la","nativeEvent","layout","extendedData","_props$data","_props$children","data","length","infinite","concat","_toConsumableArray","React","Children","map","child","index","isValidElement","cloneElement","_objectSpread","onLayout","e","_props$style7","_child$props","prev","_e$nativeEvent","_child$props$onLayout","_child$props2","call","cloneChild","_props$style8","_child$props3","_e$nativeEvent2","_child$props$onLayout2","_child$props4","useEffect","_props$data2","_props$children2","dotList","Array","dotType","DOTTYPE","INDEFINITE","initDotNumber","fill","getItemDimensions","direction","playingMode","_getItemDimensions","DISTANCE","SPACING","CONTAINER_PADDING","resetAutoPlayTimer","current","clearInterval","autoPlay","timer","setInterval","nextIndex","scrollToIndex","duration","animated","arguments","undefined","Math","max","min","requestAnimationFrame","_scrollViewRef$curren","scrollOffset","scrollTo","newRealIndex","_props$onChange","_props$data3","_props$children3","onChange","handleScrollBegin","handlable","handleScrollEnd","offset","contentOffset","round","clampedIndex","getDotStyle","isActive","DEFINITE","dotPlacement","DOTPLACEMENT","INSIDE","activeDot","activeDotStyle","outSideActiveDot","dot","dotStyle","outSideDot","initialIndex","initialCurrentIndex","handleLoad","_ref","_props$style0","source","createElement","View","container","overflow","ScrollView","ref","horizontal","pagingEnabled","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","onScrollBeginDrag","onScrollEndDrag","onMomentumScrollEnd","scrollEventThrottle","decelerationRate","scrollEnabled","bounces","contentContainerStyle","scrollContent","paddingHorizontal","paddingVertical","item","_props$data4","key","String","itemContainer","marginHorizontal","marginVertical","transform","scale","shouldRasterizeIOS","renderToHardwareTextureAndroid","Image","uri","borderRadius","resizeMode","onLoad","resizeMethod","displayDots","dotContainer","dotOutsideContainer","smallDot","smallOutsideDot","_","displayNumbers","numberContainer","numberPlacement","NUMBERPLACEMENT","TOP","numberTop","numberBottom","Text","number","defaultProps","CarouselDefaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useMemo, ReactElement } from \"react\";\nimport { View, ScrollView, Dimensions, NativeSyntheticEvent, NativeScrollEvent, Image, Text } from \"react-native\";\nimport getStyle from \"./styles\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { RedsCarousel, DOTTYPE, DOTPLACEMENT, NUMBERPLACEMENT, CarouselDefaultProps } from \"./interface\";\n\nexport const Carousel: React.FC<RedsCarousel> = (props) => {\n useMounted(\"Carousel\");\n const scrollViewRef = useRef<ScrollView>(null);\n const [currentIndex, setCurrentIndex] = useState(1);\n const [isScrolling, setIsScrolling] = useState(false);\n const autoPlayTimer = useRef<any>(null);\n const [normalSize, setNormalSize] = useState({\n x: 0,\n y: 0,\n });\n const [offsetPerItem, setOffsetPerItem] = useState(0);\n const [containerPadding, setContainerPadding] = useState(0);\n const [spacing, setSpacing] = useState(0);\n const [distance, setDistance] = useState(0);\n const [realIndex, setRealIndex] = useState(0);\n\n // 新增:存储children的实际尺寸\n const [childrenSize, setChildrenSize] = useState({\n width: 0,\n height: 0,\n });\n const [isChildrenSizeMeasured, setIsChildrenSizeMeasured] = useState(false);\n\n const themeColor = useThemeColor();\n const styles = getStyle(themeColor);\n\n // 修改:根据children实际尺寸计算容器尺寸\n const containerSize = useMemo(() => {\n let width = (props.style?.width as number) || Dimensions.get(\"window\").width;\n let height = (props.style?.height as number) || 300;\n\n // 如果使用children且已测量出尺寸,则使用children的实际尺寸\n if (props.children && isChildrenSizeMeasured && childrenSize.width > 0 && childrenSize.height > 0) {\n if (!props.style?.width) {\n width = childrenSize.width;\n }\n if (!props.style?.height) {\n height = childrenSize.height;\n }\n }\n\n return { width, height };\n }, [props.style?.width, props.style?.height, props.children, isChildrenSizeMeasured, childrenSize]);\n\n // 修改:处理children的onLayout事件\n const handleChildLayout = (event: any) => {\n const { width, height } = event.nativeEvent.layout;\n\n // 只在尺寸发生变化时更新\n if (width !== childrenSize.width || height !== childrenSize.height) {\n setChildrenSize({ width, height });\n setIsChildrenSizeMeasured(true);\n }\n };\n\n const extendedData = useMemo(() => {\n if (props.data?.length) {\n // 如果不是无限循环,直接返回原数据\n if (!props.infinite) {\n return props.data;\n }\n return [props.data[props.data.length - 1], ...(props.data || []), props.data[0]];\n } else if (props.children?.length) {\n // 如果不是无限循环,直接返回原children\n if (!props.infinite) {\n return React.Children.map(props.children, (child: any, index: number) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as any, {\n onLayout: (e: any) => {\n if (index === 0) {\n handleChildLayout(e);\n }\n if (!props.style?.height && index === 0) {\n setNormalSize((prev) => ({\n x: containerSize.width,\n y: e.nativeEvent?.layout.height,\n }));\n }\n // @ts-ignore\n if (child.props?.onLayout) {\n // @ts-ignore\n child.props.onLayout?.(e);\n }\n },\n ...((child.props || {}) as object),\n });\n }\n });\n }\n\n const cloneChild = [props.children[props.children.length - 1], ...(props.children || []), props.children[0]];\n return React.Children.map(cloneChild, (child: any, index: number) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as any, {\n onLayout: (e: any) => {\n if (index === 1) {\n handleChildLayout(e);\n }\n if (!props.style?.height && index === 1) {\n setNormalSize((prev) => ({\n x: containerSize.width,\n y: e.nativeEvent?.layout.height,\n }));\n }\n // @ts-ignore\n if (child.props?.onLayout) {\n // @ts-ignore\n child.props.onLayout?.(e);\n }\n },\n ...((child.props || {}) as object),\n });\n }\n });\n } else {\n return [];\n }\n }, [props.data, props.children, containerSize.width, props.style?.height, props.infinite]);\n\n // 初始化 normalSize\n useEffect(() => {\n setNormalSize({\n x: containerSize.width,\n y: containerSize.height,\n });\n }, [containerSize]);\n\n /**\n * 长度\n */\n const length = useMemo(() => {\n return props.data?.length || props.children?.length || 0;\n }, [props.data, props.children]);\n\n /**\n * 渲染dot list\n */\n const dotList = useMemo(() => {\n return new Array(props.dotType === DOTTYPE.INDEFINITE ? props.initDotNumber : length).fill(0);\n }, [props.dotType, props.initDotNumber, length]);\n\n // Calculate dimensions based on mode\n const getItemDimensions = () => {\n const distance = props.direction === \"horizontal\" ? normalSize.x : normalSize.y;\n switch (props.playingMode) {\n case \"normal\":\n return {\n distance,\n spacing: 0,\n containerPadding: 0,\n };\n case \"card\":\n return {\n distance: distance * 0.6,\n spacing: props.distance || 0,\n containerPadding: distance * 0.2,\n };\n case \"compact\":\n return {\n distance: distance * 0.6,\n spacing: props.distance || 0,\n containerPadding: distance * 0.2,\n };\n default:\n return {\n distance,\n spacing: 0,\n containerPadding: 0,\n };\n }\n };\n\n useEffect(() => {\n if (normalSize.x > 0 && normalSize.y > 0) {\n const { distance: DISTANCE, spacing: SPACING, containerPadding: CONTAINER_PADDING } = getItemDimensions();\n setOffsetPerItem(DISTANCE + SPACING);\n setContainerPadding(CONTAINER_PADDING);\n setDistance(DISTANCE);\n setSpacing(SPACING);\n }\n }, [normalSize, props.playingMode, props.distance, props.direction]);\n\n // 重置自动播放计时器\n const resetAutoPlayTimer = () => {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n\n if (props.autoPlay && length > 1) {\n const timer = setInterval(() => {\n if (!isScrolling) {\n const nextIndex = currentIndex + 1;\n\n // 如果不是无限循环且已到最后一页,则停止自动播放\n if (!props.infinite && nextIndex >= length) {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n return;\n }\n\n scrollToIndex(nextIndex);\n }\n }, props.duration);\n autoPlayTimer.current = timer;\n }\n };\n\n // 初始化自动播放\n useEffect(() => {\n if (props.autoPlay && !isScrolling && offsetPerItem > 0) {\n resetAutoPlayTimer();\n }\n return () => {\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n }\n };\n }, [currentIndex, isScrolling, props.autoPlay, offsetPerItem, length]);\n\n // 优化滚动方法\n const scrollToIndex = (index: number, animated: boolean = true) => {\n if (offsetPerItem <= 0) return;\n\n // 如果不是无限循环模式,限制索引范围\n if (!props.infinite) {\n index = Math.max(0, Math.min(index, length - 1));\n }\n\n requestAnimationFrame(() => {\n let scrollOffset = index * offsetPerItem;\n // 修复:只有在无限循环模式下才需要减去containerPadding\n if (props.playingMode !== \"normal\" && props.infinite) {\n scrollOffset -= containerPadding;\n }\n\n scrollViewRef.current?.scrollTo({\n ...(props.direction === \"horizontal\" ? { x: scrollOffset } : { y: scrollOffset }),\n animated,\n });\n });\n\n setCurrentIndex(index);\n\n // 计算真实索引\n let newRealIndex: number;\n if (props.infinite) {\n newRealIndex = index === 0 ? length - 1 : index === length + 1 ? 0 : index - 1;\n } else {\n newRealIndex = index;\n }\n setRealIndex(newRealIndex);\n };\n\n useEffect(() => {\n if (realIndex >= 0 && realIndex < length) {\n props.onChange?.(props.data?.[realIndex] || props.children?.[realIndex], realIndex);\n }\n }, [realIndex, props.data, props.children, length]);\n\n const handleScrollBegin = () => {\n if (!props.handlable) return;\n setIsScrolling(true);\n // 手动滚动开始时清除自动播放计时器\n if (autoPlayTimer.current) {\n clearInterval(autoPlayTimer.current);\n autoPlayTimer.current = null;\n }\n };\n\n const handleScrollEnd = (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n if (offsetPerItem <= 0) {\n setIsScrolling(false);\n return;\n }\n\n const offset =\n props.direction === \"horizontal\" ? event.nativeEvent.contentOffset.x : event.nativeEvent.contentOffset.y;\n\n let index: number;\n // 修复:对于非无限循环的compact模式,需要调整偏移量计算\n if (props.playingMode === \"normal\") {\n index = Math.round(offset / offsetPerItem);\n } else {\n // 对于compact和card模式\n if (!props.infinite) {\n // 非无限循环模式:不需要加containerPadding,因为滚动时已经考虑了padding\n index = Math.round(offset / offsetPerItem);\n } else {\n // 无限循环模式:需要加containerPadding\n index = Math.round((offset + containerPadding) / offsetPerItem);\n }\n }\n\n index = Math.max(0, Math.min(index, extendedData.length - 1));\n\n // 处理边界情况\n if (props.infinite) {\n // 无限循环模式的边界处理\n if (index <= 0) {\n scrollToIndex(length, false);\n } else if (index >= extendedData.length - 1) {\n scrollToIndex(1, false);\n } else {\n setCurrentIndex(index);\n const newRealIndex = index === 0 ? length - 1 : index === length + 1 ? 0 : index - 1;\n setRealIndex(newRealIndex);\n }\n } else {\n // 非无限循环模式\n const clampedIndex = Math.max(0, Math.min(index, length - 1));\n setCurrentIndex(clampedIndex);\n setRealIndex(clampedIndex);\n // 修复:确保滚动到正确位置\n if (props.playingMode !== \"normal\") {\n scrollToIndex(clampedIndex, true);\n }\n }\n\n setIsScrolling(false);\n };\n\n /**\n * dot 样式\n */\n const getDotStyle = (index: number) => {\n const isActive =\n props.dotType === DOTTYPE.DEFINITE\n ? realIndex === index\n : props.initDotNumber && realIndex % props.initDotNumber === index;\n\n return isActive\n ? props.dotPlacement === DOTPLACEMENT.INSIDE\n ? [styles.activeDot, props.activeDotStyle]\n : [styles.outSideActiveDot, props.activeDotStyle]\n : props.dotPlacement === DOTPLACEMENT.INSIDE\n ? [styles.dot, props.dotStyle]\n : [styles.outSideDot, props.dotStyle];\n };\n\n // 初始化执行一次\n useEffect(() => {\n if (offsetPerItem > 0 && extendedData.length > 0) {\n let initialIndex = props.currentIndex || 0;\n\n // 如果是无限循环模式,需要加1\n if (props.infinite) {\n initialIndex += 1;\n }\n\n scrollToIndex(initialIndex, false);\n }\n }, [offsetPerItem, extendedData.length, props.infinite]);\n\n useEffect(() => {\n // 如果是无限循环模式,初始索引为1;否则为0\n const initialCurrentIndex = props.infinite ? 1 : 0;\n setCurrentIndex(initialCurrentIndex);\n }, [props.infinite]);\n\n // 优化 handleLoad 函数\n const handleLoad = ({ nativeEvent }: any) => {\n // 只有在没有设置固定高度时才更新\n if (!props.style?.height) {\n setNormalSize((prev) => ({\n ...prev,\n y: nativeEvent.source.height,\n }));\n }\n };\n\n return (\n <View\n style={[\n styles.container,\n {\n overflow: \"hidden\",\n height: containerSize.height,\n width: containerSize.width,\n },\n props.style,\n ]}\n >\n <ScrollView\n ref={scrollViewRef}\n horizontal={props.direction === \"horizontal\"}\n pagingEnabled={props.playingMode === \"normal\"}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n onScrollBeginDrag={handleScrollBegin}\n onScrollEndDrag={handleScrollEnd}\n onMomentumScrollEnd={handleScrollEnd}\n scrollEventThrottle={16}\n decelerationRate=\"fast\"\n scrollEnabled={props.handlable}\n // 修改:根据infinite参数设置是否可以滚动到边界外\n bounces={props.infinite}\n contentContainerStyle={[\n styles.scrollContent,\n props.direction === \"horizontal\"\n ? { paddingHorizontal: containerPadding }\n : { paddingVertical: containerPadding },\n ]}\n >\n {extendedData.map((item: any, index: number) => (\n <View\n key={`${String(item)}_${index}`}\n style={[\n styles.itemContainer,\n {\n ...(props.direction === \"horizontal\"\n ? {\n marginHorizontal: spacing / 2,\n width: distance,\n height: normalSize.y,\n }\n : {\n marginVertical: spacing / 2,\n width: normalSize.x,\n height: distance,\n }),\n transform: [\n {\n scale:\n props.playingMode !== \"normal\" && currentIndex === index\n ? 1\n : props.playingMode === \"normal\"\n ? 1\n : 0.9,\n },\n ],\n },\n ]}\n shouldRasterizeIOS={true}\n renderToHardwareTextureAndroid={true}\n >\n {props.data?.length ? (\n <Image\n source={{ uri: item as string }}\n style={{\n borderRadius: props.playingMode === \"normal\" ? 0 : 12,\n width: props.direction === \"horizontal\" ? distance : normalSize.x,\n height: props.direction === \"horizontal\" ? normalSize.y : distance,\n }}\n resizeMode=\"contain\"\n onLoad={handleLoad}\n resizeMethod=\"resize\"\n />\n ) : (\n extendedData?.[index]\n )}\n </View>\n ))}\n </ScrollView>\n\n {/* 其余的 Dots 和 Numbers 组件保持不变 */}\n {props.displayDots && dotList.length > 0 && (\n <View style={[props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.dotContainer : styles.dotOutsideContainer]}>\n {props.dotType === DOTTYPE.INDEFINITE && (\n <View\n style={[\n props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.smallDot : styles.smallOutsideDot,\n props.dotStyle,\n ]}\n />\n )}\n {dotList.map((_, index) => (\n <View key={index} style={getDotStyle(index)} />\n ))}\n {props.dotType === DOTTYPE.INDEFINITE && (\n <View\n style={[\n props.dotPlacement === DOTPLACEMENT.INSIDE ? styles.smallDot : styles.smallOutsideDot,\n props.dotStyle,\n ]}\n />\n )}\n </View>\n )}\n\n {props.displayNumbers && (\n <View\n style={[\n styles.numberContainer,\n props.numberPlacement === NUMBERPLACEMENT.TOP ? styles.numberTop : styles.numberBottom,\n ]}\n >\n <Text style={styles.number}>{realIndex + 1}</Text>\n <Text style={styles.number}>/</Text>\n <Text style={styles.number}>{length}</Text>\n </View>\n )}\n </View>\n );\n};\n\nCarousel.defaultProps = CarouselDefaultProps;\n"],"names":["Carousel","props","_props$style5","_props$style6","_props$style9","useMounted","scrollViewRef","useRef","_useState","useState","_useState2","_slicedToArray","currentIndex","setCurrentIndex","_useState3","_useState4","isScrolling","setIsScrolling","autoPlayTimer","_useState5","x","y","_useState6","normalSize","setNormalSize","_useState7","_useState8","offsetPerItem","setOffsetPerItem","_useState9","_useState0","containerPadding","setContainerPadding","_useState1","_useState10","spacing","setSpacing","_useState11","_useState12","distance","setDistance","_useState13","_useState14","realIndex","setRealIndex","_useState15","width","height","_useState16","childrenSize","setChildrenSize","_useState17","_useState18","isChildrenSizeMeasured","setIsChildrenSizeMeasured","themeColor","useThemeColor","styles","getStyle","containerSize","useMemo","_props$style","_props$style2","style","Dimensions","get","children","_props$style3","_props$style4","handleChildLayout","event","_event$nativeEvent$la","nativeEvent","layout","extendedData","_props$data","_props$children","data","length","infinite","concat","_toConsumableArray","React","Children","map","child","index","isValidElement","cloneElement","_objectSpread","onLayout","e","_props$style7","_child$props","prev","_e$nativeEvent","_child$props$onLayout","_child$props2","call","cloneChild","_props$style8","_child$props3","_e$nativeEvent2","_child$props$onLayout2","_child$props4","useEffect","_props$data2","_props$children2","dotList","Array","dotType","DOTTYPE","INDEFINITE","initDotNumber","fill","getItemDimensions","direction","playingMode","_getItemDimensions","DISTANCE","SPACING","CONTAINER_PADDING","resetAutoPlayTimer","current","clearInterval","autoPlay","timer","setInterval","nextIndex","scrollToIndex","duration","animated","arguments","undefined","Math","max","min","requestAnimationFrame","_scrollViewRef$curren","scrollOffset","scrollTo","newRealIndex","_props$onChange","_props$data3","_props$children3","onChange","handleScrollBegin","handlable","handleScrollEnd","offset","contentOffset","round","clampedIndex","getDotStyle","isActive","DEFINITE","dotPlacement","DOTPLACEMENT","INSIDE","activeDot","activeDotStyle","outSideActiveDot","dot","dotStyle","outSideDot","initialIndex","initialCurrentIndex","handleLoad","_ref","_props$style0","source","createElement","View","container","overflow","ScrollView","ref","horizontal","pagingEnabled","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","onScrollBeginDrag","onScrollEndDrag","onMomentumScrollEnd","scrollEventThrottle","decelerationRate","scrollEnabled","bounces","contentContainerStyle","scrollContent","paddingHorizontal","paddingVertical","item","_props$data4","key","String","itemContainer","marginHorizontal","marginVertical","transform","scale","shouldRasterizeIOS","renderToHardwareTextureAndroid","Image","uri","borderRadius","resizeMode","onLoad","resizeMethod","displayDots","dotContainer","dotOutsideContainer","smallDot","smallOutsideDot","_","displayNumbers","numberContainer","numberPlacement","NUMBERPLACEMENT","TOP","numberTop","numberBottom","Text","number","defaultProps","CarouselDefaultProps"],"mappings":";;;;;;;;;;;;;;;IAOaA,QAAA,GAAmC,SAAnCA,QAAAA,CAAoCC,KAAU,EAAA;AAAA,EAAA,IAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,CAAA;EACzDC,mCAAA,CAAW,UAAU,CAAA,CAAA;AACf,EAAA,IAAAC,aAAA,GAAgBC,aAAmB,IAAI,CAAA,CAAA;AAC7C,EAAA,IAAAC,SAAA,GAAwCC,eAAS,CAAC,CAAA;IAAAC,UAAA,GAAAC,wCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA3CI,IAAAA,YAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAcG,IAAAA,eAAe,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AACpC,EAAA,IAAAI,UAAA,GAAsCL,eAAS,KAAK,CAAA;IAAAM,UAAA,GAAAJ,wCAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAA7CE,IAAAA,WAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAaE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,EAAA,IAAAG,aAAA,GAAgBX,aAAY,IAAI,CAAA,CAAA;EACtC,IAAAY,UAAA,GAAoCV,cAAS,CAAA;AAC3CW,MAAAA,CAAG,EAAA,CAAA;AACHC,MAAAA,CAAG,EAAA,CAAA;AACL,KAAC,CAAA;IAAAC,UAAA,GAAAX,wCAAA,CAAAQ,UAAA,EAAA,CAAA,CAAA;AAHMI,IAAAA,UAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAYE,IAAAA,aAAa,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAIhC,EAAA,IAAAG,UAAA,GAA0ChB,eAAS,CAAC,CAAA;IAAAiB,UAAA,GAAAf,wCAAA,CAAAc,UAAA,EAAA,CAAA,CAAA;AAA7CE,IAAAA,aAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAeE,IAAAA,gBAAgB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AACtC,EAAA,IAAAG,UAAA,GAAgDpB,eAAS,CAAC,CAAA;IAAAqB,UAAA,GAAAnB,wCAAA,CAAAkB,UAAA,EAAA,CAAA,CAAA;AAAnDE,IAAAA,gBAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAkBE,IAAAA,mBAAmB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,EAAA,IAAAG,UAAA,GAA8BxB,eAAS,CAAC,CAAA;IAAAyB,WAAA,GAAAvB,wCAAA,CAAAsB,UAAA,EAAA,CAAA,CAAA;AAAjCE,IAAAA,OAAA,GAAAD,WAAA,CAAA,CAAA,CAAA;AAASE,IAAAA,UAAU,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AAC1B,EAAA,IAAAG,WAAA,GAAgC5B,eAAS,CAAC,CAAA;IAAA6B,WAAA,GAAA3B,wCAAA,CAAA0B,WAAA,EAAA,CAAA,CAAA;AAAnCE,IAAAA,QAAA,GAAAD,WAAA,CAAA,CAAA,CAAA;AAAUE,IAAAA,WAAW,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,EAAA,IAAAG,WAAA,GAAkChC,eAAS,CAAC,CAAA;IAAAiC,WAAA,GAAA/B,wCAAA,CAAA8B,WAAA,EAAA,CAAA,CAAA;AAArCE,IAAAA,SAAA,GAAAD,WAAA,CAAA,CAAA,CAAA;AAAWE,IAAAA,YAAY,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;EAG9B,IAAAG,WAAA,GAAwCpC,cAAS,CAAA;AAC/CqC,MAAAA,KAAO,EAAA,CAAA;AACPC,MAAAA,MAAQ,EAAA,CAAA;AACV,KAAC,CAAA;IAAAC,WAAA,GAAArC,wCAAA,CAAAkC,WAAA,EAAA,CAAA,CAAA;AAHMI,IAAAA,YAAA,GAAAD,WAAA,CAAA,CAAA,CAAA;AAAcE,IAAAA,eAAe,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AAIpC,EAAA,IAAAG,WAAA,GAA4D1C,eAAS,KAAK,CAAA;IAAA2C,WAAA,GAAAzC,wCAAA,CAAAwC,WAAA,EAAA,CAAA,CAAA;AAAnEE,IAAAA,sBAAA,GAAAD,WAAA,CAAA,CAAA,CAAA;AAAwBE,IAAAA,yBAAyB,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;AAExD,EAAA,IAAMG,aAAaC,sEAAc,EAAA,CAAA;AAC3B,EAAA,IAAAC,MAAA,GAASC,mCAASH,UAAU,CAAA,CAAA;AAG5B,EAAA,IAAAI,aAAA,GAAgBC,cAAQ,YAAM;IAAA,IAAAC,YAAA,EAAAC,aAAA,CAAA;IAClC,IAAIhB,QAAS,CAAAe,CAAAA,YAAA,GAAA5D,KAAM,CAAA8D,KAAA,MAAA,IAAA,IAAAF,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,YAAA,CAAaf,UAAoBkB,sBAAW,CAAAC,GAAA,CAAI,QAAQ,CAAE,CAAAnB,KAAA,CAAA;AACnE,IAAA,IAAAC,MAAA,GAAU,CAAAe,CAAAA,aAAA,GAAA7D,KAAM,CAAA8D,KAAA,MAAA,IAAA,IAAAD,aAAA,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAaf,MAAqB,KAAA,GAAA,CAAA;AAG5C,IAAA,IAAA9C,KAAA,CAAMiE,YAAYb,sBAA0B,IAAAJ,YAAA,CAAaH,QAAQ,CAAK,IAAAG,YAAA,CAAaF,SAAS,CAAG,EAAA;MAAA,IAAAoB,aAAA,EAAAC,aAAA,CAAA;AAC7F,MAAA,IAAA,EAAAD,CAAAA,aAAA,GAAClE,KAAM,CAAA8D,KAAA,MAAAI,IAAAA,IAAAA,aAAA,KAANA,KAAAA,CAAAA,IAAAA,aAAA,CAAarB,KAAO,CAAA,EAAA;QACvBA,KAAA,GAAQG,YAAa,CAAAH,KAAA,CAAA;AACvB,OAAA;AACI,MAAA,IAAA,EAAAsB,CAAAA,aAAA,GAACnE,KAAM,CAAA8D,KAAA,MAAAK,IAAAA,IAAAA,aAAA,KAANA,KAAAA,CAAAA,IAAAA,aAAA,CAAarB,MAAQ,CAAA,EAAA;QACxBA,MAAA,GAASE,YAAa,CAAAF,MAAA,CAAA;AACxB,OAAA;AACF,KAAA;IAEO,OAAA;AAAED,MAAAA,OAAAA;AAAOC,MAAAA,MAAO,EAAPA,MAAAA;KAAO,CAAA;AACzB,GAAG,EAAA,CAAA,CAAA7C,aAAA,GAACD,KAAM,CAAA8D,KAAA,MAAA7D,IAAAA,IAAAA,aAAA,uBAANA,aAAA,CAAa4C,KAAO,EAAA,CAAA3C,aAAA,GAAAF,KAAA,CAAM8D,KAAO,MAAA5D,IAAAA,IAAAA,aAAA,KAAbA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAa4C,MAAA,EAAQ9C,KAAM,CAAAiE,QAAA,EAAUb,sBAAwB,EAAAJ,YAAY,CAAC,CAAA,CAAA;AAG5F,EAAA,IAAAoB,iBAAA,GAAoB,SAApBA,iBAAAA,CAAqBC,KAAe,EAAA;AACxC,IAAA,IAAAC,qBAAA,GAA0BD,MAAME,WAAY,CAAAC,MAAA;MAApC3B,KAAA,GAAAyB,qBAAA,CAAAzB,KAAA;MAAOC,MAAO,GAAAwB,qBAAA,CAAPxB,MAAO,CAAA;IAGtB,IAAID,KAAU,KAAAG,YAAA,CAAaH,KAAS,IAAAC,MAAA,KAAWE,aAAaF,MAAQ,EAAA;AAClDG,MAAAA,eAAA,CAAA;AAAEJ,QAAAA,KAAO,EAAPA,KAAO;AAAAC,QAAAA,MAAA,EAAAA,MAAAA;AAAO,OAAC,CAAA,CAAA;MACjCO,yBAAA,CAA0B,IAAI,CAAA,CAAA;AAChC,KAAA;GACF,CAAA;AAEM,EAAA,IAAAoB,YAAA,GAAed,cAAQ,YAAM;IAAA,IAAAe,WAAA,EAAAC,eAAA,CAAA;IAC7B,IAAAD,CAAAA,WAAA,GAAA1E,KAAA,CAAM4E,kCAANF,KAAAA,CAAAA,IAAAA,WAAA,CAAYG,MAAQ,EAAA;AAElB,MAAA,IAAA,CAAC7E,MAAM8E,QAAU,EAAA;QACnB,OAAO9E,KAAM,CAAA4E,IAAA,CAAA;AACf,OAAA;AACA,MAAA,OAAA,CAAQ5E,KAAM,CAAA4E,IAAA,CAAK5E,KAAM,CAAA4E,IAAA,CAAKC,SAAS,CAAC,CAAA,CAAAE,CAAAA,MAAA,CAAAC,4CAAA,CAAOhF,KAAA,CAAM4E,QAAQ,EAAC,CAAI5E,EAAAA,CAAAA,KAAM,CAAA4E,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,CAAA;AACjF,KAAA,MAAA,IAAA,CAAAD,eAAA,GAAW3E,KAAM,CAAAiE,QAAA,MAAA,IAAA,IAAAU,eAAA,KAAA,KAAA,CAAA,IAANA,eAAA,CAAgBE,MAAQ,EAAA;AAE7B,MAAA,IAAA,CAAC7E,MAAM8E,QAAU,EAAA;AACnB,QAAA,OAAOG,MAAMC,QAAS,CAAAC,GAAA,CAAInF,MAAMiE,QAAU,EAAA,UAACmB,OAAYC,KAAkB,EAAA;AACnE,UAAA,iBAAAJ,KAAA,CAAMK,cAAe,CAAAF,KAAK,CAAG,EAAA;AACxB,YAAA,oBAAAH,KAAA,CAAMM,aAAaH,KAAc,EAAAI,wCAAA,CAAA;AACtCC,cAAAA,QAAA,EAAU,SAAVA,QAAAA,CAAWC,CAAW,EAAA;gBAAA,IAAAC,aAAA,EAAAC,YAAA,CAAA;gBACpB,IAAIP,UAAU,CAAG,EAAA;kBACfjB,iBAAA,CAAkBsB,CAAC,CAAA,CAAA;AACrB,iBAAA;AACA,gBAAA,IAAI,GAAAC,aAAA,GAAC3F,KAAA,CAAM8D,KAAO,MAAA6B,IAAAA,IAAAA,aAAA,KAAbA,KAAAA,CAAAA,IAAAA,aAAA,CAAa7C,MAAA,CAAA,IAAUuC,UAAU,CAAG,EAAA;kBACvC9D,aAAA,CAAc,UAACsE,IAAU,EAAA;AAAA,oBAAA,IAAAC,cAAA,CAAA;oBAAA,OAAA;sBACvB3E,GAAGuC,aAAc,CAAAb,KAAA;AACjBzB,sBAAAA,CAAA,EAAA0E,CAAAA,cAAA,GAAGJ,CAAE,CAAAnB,WAAA,MAAAuB,IAAAA,IAAAA,cAAA,KAAFA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAetB,MAAO,CAAA1B,MAAAA;qBACzB,CAAA;AAAA,mBAAA,CAAA,CAAA;AACJ,iBAAA;gBAEI,IAAA8C,CAAAA,YAAA,GAAAR,KAAA,CAAMpF,oCAAN4F,KAAAA,CAAAA,IAAAA,YAAA,CAAaH,QAAU,EAAA;kBAAA,IAAAM,qBAAA,EAAAC,aAAA,CAAA;AAEnB,kBAAA,CAAAD,qBAAA,GAAAC,CAAAA,aAAA,GAAAZ,KAAA,CAAApF,KAAA,EAAMyF,0DAANM,qBAAA,CAAAE,IAAA,CAAAD,aAAA,EAAiBN,CAAC,CAAA,CAAA;AAC1B,iBAAA;AACF,eAAA;AAAA,aAAA,EACKN,KAAM,CAAApF,KAAA,IAAS,EAAC,CACtB,CAAA,CAAA;AACH,WAAA;AACF,SAAC,CAAA,CAAA;AACH,OAAA;AAEA,MAAA,IAAMkG,cAAclG,KAAA,CAAMiE,QAAS,CAAAjE,KAAA,CAAMiE,SAASY,MAAS,GAAA,CAAC,CAAG,CAAA,CAAAE,MAAA,CAAAC,4CAAA,CAAIhF,MAAMiE,QAAY,IAAA,GAAKjE,EAAAA,CAAAA,KAAM,CAAAiE,QAAA,CAAS,CAAC,CAAC,CAAA,CAAA,CAAA;AAC3G,MAAA,OAAOgB,MAAMC,QAAS,CAAAC,GAAA,CAAIe,UAAY,EAAA,UAACd,OAAYC,KAAkB,EAAA;AAC/D,QAAA,iBAAAJ,KAAA,CAAMK,cAAe,CAAAF,KAAK,CAAG,EAAA;AACxB,UAAA,oBAAAH,KAAA,CAAMM,aAAaH,KAAc,EAAAI,wCAAA,CAAA;AACtCC,YAAAA,QAAA,EAAU,SAAVA,QAAAA,CAAWC,CAAW,EAAA;cAAA,IAAAS,aAAA,EAAAC,aAAA,CAAA;cACpB,IAAIf,UAAU,CAAG,EAAA;gBACfjB,iBAAA,CAAkBsB,CAAC,CAAA,CAAA;AACrB,eAAA;AACA,cAAA,IAAI,GAAAS,aAAA,GAACnG,KAAA,CAAM8D,KAAO,MAAAqC,IAAAA,IAAAA,aAAA,KAAbA,KAAAA,CAAAA,IAAAA,aAAA,CAAarD,MAAA,CAAA,IAAUuC,UAAU,CAAG,EAAA;gBACvC9D,aAAA,CAAc,UAACsE,IAAU,EAAA;AAAA,kBAAA,IAAAQ,eAAA,CAAA;kBAAA,OAAA;oBACvBlF,GAAGuC,aAAc,CAAAb,KAAA;AACjBzB,oBAAAA,CAAA,EAAAiF,CAAAA,eAAA,GAAGX,CAAE,CAAAnB,WAAA,MAAA8B,IAAAA,IAAAA,eAAA,KAAFA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAe7B,MAAO,CAAA1B,MAAAA;mBACzB,CAAA;AAAA,iBAAA,CAAA,CAAA;AACJ,eAAA;cAEI,IAAAsD,CAAAA,aAAA,GAAAhB,KAAA,CAAMpF,qCAANoG,KAAAA,CAAAA,IAAAA,aAAA,CAAaX,QAAU,EAAA;gBAAA,IAAAa,sBAAA,EAAAC,aAAA,CAAA;AAEnB,gBAAA,CAAAD,sBAAA,GAAAC,CAAAA,aAAA,GAAAnB,KAAA,CAAApF,KAAA,EAAMyF,2DAANa,sBAAA,CAAAL,IAAA,CAAAM,aAAA,EAAiBb,CAAC,CAAA,CAAA;AAC1B,eAAA;AACF,aAAA;AAAA,WAAA,EACKN,KAAM,CAAApF,KAAA,IAAS,EAAC,CACtB,CAAA,CAAA;AACH,SAAA;AACF,OAAC,CAAA,CAAA;AACH,KAAO,MAAA;AACL,MAAA,OAAO,EAAC,CAAA;AACV,KAAA;AACF,GAAG,EAAA,CAACA,KAAM,CAAA4E,IAAA,EAAM5E,KAAM,CAAAiE,QAAA,EAAUP,aAAc,CAAAb,KAAA,EAAA1C,CAAAA,aAAA,GAAOH,KAAM,CAAA8D,KAAA,MAAA3D,IAAAA,IAAAA,aAAA,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAa2C,MAAQ,EAAA9C,KAAA,CAAM8E,QAAQ,CAAC,CAAA,CAAA;AAGzF0B,EAAAA,eAAA,CAAU,YAAM;AACAjF,IAAAA,aAAA,CAAA;MACZJ,GAAGuC,aAAc,CAAAb,KAAA;MACjBzB,GAAGsC,aAAc,CAAAZ,MAAAA;AACnB,KAAC,CAAA,CAAA;AACH,GAAA,EAAG,CAACY,aAAa,CAAC,CAAA,CAAA;AAKZ,EAAA,IAAAmB,MAAA,GAASlB,cAAQ,YAAM;IAAA,IAAA8C,YAAA,EAAAC,gBAAA,CAAA;IAC3B,OAAO,CAAA,CAAAD,YAAA,GAAAzG,KAAM,CAAA4E,IAAA,MAAA6B,IAAAA,IAAAA,YAAA,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAY5B,MAAU,OAAA6B,gBAAA,GAAA1G,KAAA,CAAMiE,6DAANyC,gBAAA,CAAgB7B,MAAU,CAAA,IAAA,CAAA,CAAA;KACtD,CAAC7E,KAAA,CAAM4E,IAAM,EAAA5E,KAAA,CAAMiE,QAAQ,CAAC,CAAA,CAAA;AAKzB,EAAA,IAAA0C,OAAA,GAAUhD,cAAQ,YAAM;IACrB,OAAA,IAAIiD,KAAM,CAAA5G,KAAA,CAAM6G,OAAY,KAAAC,2CAAA,CAAQC,UAAa,GAAA/G,KAAA,CAAMgH,aAAgB,GAAAnC,MAAM,CAAE,CAAAoC,IAAA,CAAK,CAAC,CAAA,CAAA;AAC9F,KAAG,CAACjH,KAAA,CAAM6G,SAAS7G,KAAM,CAAAgH,aAAA,EAAenC,MAAM,CAAC,CAAA,CAAA;AAG/C,EAAA,IAAMqC,oBAAoB,SAApBA,oBAA0B;AAC9B,IAAA,IAAM5E,YAAWtC,KAAM,CAAAmH,SAAA,KAAc,YAAe,GAAA7F,UAAA,CAAWH,IAAIG,UAAW,CAAAF,CAAA,CAAA;IAC9E,QAAQpB,MAAMoH,WAAa;AACzB,MAAA,KAAK,QAAA;QACI,OAAA;AACL9E,UAAAA,QAAAA,EAAAA,SAAAA;AACAJ,UAAAA,OAAS,EAAA,CAAA;AACTJ,UAAAA,gBAAkB,EAAA,CAAA;SACpB,CAAA;AACF,MAAA,KAAK,MAAA;QACI,OAAA;UACLQ,UAAUA,SAAW,GAAA,GAAA;AACrBJ,UAAAA,OAAA,EAASlC,MAAMsC,QAAY,IAAA,CAAA;UAC3BR,kBAAkBQ,SAAW,GAAA,GAAA;SAC/B,CAAA;AACF,MAAA,KAAK,SAAA;QACI,OAAA;UACLA,UAAUA,SAAW,GAAA,GAAA;AACrBJ,UAAAA,OAAA,EAASlC,MAAMsC,QAAY,IAAA,CAAA;UAC3BR,kBAAkBQ,SAAW,GAAA,GAAA;SAC/B,CAAA;AACF,MAAA;QACS,OAAA;AACLA,UAAAA,QAAAA,EAAAA,SAAAA;AACAJ,UAAAA,OAAS,EAAA,CAAA;AACTJ,UAAAA,gBAAkB,EAAA,CAAA;SACpB,CAAA;AACJ,KAAA;GACF,CAAA;AAEA0E,EAAAA,eAAA,CAAU,YAAM;IACd,IAAIlF,UAAW,CAAAH,CAAA,GAAI,CAAK,IAAAG,UAAA,CAAWF,IAAI,CAAG,EAAA;AAClC,MAAA,IAAAiG,kBAAA,GAAgFH,iBAAkB,EAAA;QAAtFI,QAAU,GAAAD,kBAAA,CAApB/E;QAA6BiF,6BAATrF,OAAA;QAAoCsF,iBAAA,GAAAH,kBAAA,CAAlBvF,gBAAkB,CAAA;AAChEH,MAAAA,gBAAA,CAAiB2F,WAAWC,OAAO,CAAA,CAAA;MACnCxF,mBAAA,CAAoByF,iBAAiB,CAAA,CAAA;MACrCjF,WAAA,CAAY+E,QAAQ,CAAA,CAAA;MACpBnF,UAAA,CAAWoF,OAAO,CAAA,CAAA;AACpB,KAAA;AACF,GAAA,EAAG,CAACjG,UAAY,EAAAtB,KAAA,CAAMoH,aAAapH,KAAM,CAAAsC,QAAA,EAAUtC,KAAM,CAAAmH,SAAS,CAAC,CAAA,CAAA;AAGnE,EAAA,IAAMM,qBAAqB,SAArBA,qBAA2B;IAC/B,IAAIxG,cAAcyG,OAAS,EAAA;AACzBC,MAAAA,aAAA,CAAc1G,cAAcyG,OAAO,CAAA,CAAA;MACnCzG,aAAA,CAAcyG,OAAU,GAAA,IAAA,CAAA;AAC1B,KAAA;AAEI,IAAA,IAAA1H,KAAA,CAAM4H,QAAY,IAAA/C,MAAA,GAAS,CAAG,EAAA;AAC1B,MAAA,IAAAgD,KAAA,GAAQC,YAAY,YAAM;QAC9B,IAAI,CAAC/G,WAAa,EAAA;AAChB,UAAA,IAAMgH,YAAYpH,YAAe,GAAA,CAAA,CAAA;UAGjC,IAAI,CAACX,KAAA,CAAM8E,QAAY,IAAAiD,SAAA,IAAalD,MAAQ,EAAA;YAC1C,IAAI5D,cAAcyG,OAAS,EAAA;AACzBC,cAAAA,aAAA,CAAc1G,cAAcyG,OAAO,CAAA,CAAA;cACnCzG,aAAA,CAAcyG,OAAU,GAAA,IAAA,CAAA;AAC1B,aAAA;AACA,YAAA,OAAA;AACF,WAAA;UAEAM,aAAA,CAAcD,SAAS,CAAA,CAAA;AACzB,SAAA;AACF,OAAA,EAAG/H,MAAMiI,QAAQ,CAAA,CAAA;MACjBhH,aAAA,CAAcyG,OAAU,GAAAG,KAAA,CAAA;AAC1B,KAAA;GACF,CAAA;AAGArB,EAAAA,eAAA,CAAU,YAAM;IACd,IAAIxG,KAAM,CAAA4H,QAAA,IAAY,CAAC7G,WAAA,IAAeW,gBAAgB,CAAG,EAAA;AACpC+F,MAAAA,kBAAA,EAAA,CAAA;AACrB,KAAA;AACA,IAAA,OAAO,YAAM;MACX,IAAIxG,cAAcyG,OAAS,EAAA;AACzBC,QAAAA,aAAA,CAAc1G,cAAcyG,OAAO,CAAA,CAAA;AACrC,OAAA;KACF,CAAA;AACF,GAAA,EAAG,CAAC/G,YAAc,EAAAI,WAAA,EAAaf,MAAM4H,QAAU,EAAAlG,aAAA,EAAemD,MAAM,CAAC,CAAA,CAAA;AAGrE,EAAA,IAAMmD,aAAgB,GAAA,SAAhBA,aAAgBA,CAAC3C,KAAe,EAA6B;AAAA,IAAA,IAA7B6C,QAAA,GAAAC,SAAA,CAAAtD,MAAA,GAAA,CAAA,IAAAsD,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAoB,IAAS,CAAA;IACjE,IAAIzG,iBAAiB,CAAG,EAAA,OAAA;AAGpB,IAAA,IAAA,CAAC1B,MAAM8E,QAAU,EAAA;AACXO,MAAAA,KAAA,GAAAgD,IAAA,CAAKC,IAAI,CAAG,EAAAD,IAAA,CAAKE,IAAIlD,KAAO,EAAAR,MAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AACjD,KAAA;AAEA2D,IAAAA,qBAAA,CAAsB,YAAM;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAC1B,MAAA,IAAIC,eAAerD,KAAQ,GAAA3D,aAAA,CAAA;MAE3B,IAAI1B,KAAM,CAAAoH,WAAA,KAAgB,QAAY,IAAApH,KAAA,CAAM8E,QAAU,EAAA;AACpC4D,QAAAA,YAAA,IAAA5G,gBAAA,CAAA;AAClB,OAAA;MAEA,CAAA2G,qBAAA,GAAApI,aAAA,CAAcqH,yDAAde,qBAAA,CAAuBE,QAAS,CAAAnD,wCAAA,CAAAA,wCAAA,CAAA,EAAA,EAC1BxF,KAAM,CAAAmH,SAAA,KAAc,YAAe,GAAA;AAAEhG,QAAAA,GAAGuH,YAAAA;AAAa,OAAA,GAAI;AAAEtH,QAAAA,CAAA,EAAGsH,YAAAA;OAAa,CAAA,EAAA,EAAA,EAAA;AAC/ER,QAAAA,QAAA,EAAAA,QAAAA;AAAA,OAAA,CACD,CAAA,CAAA;AACH,KAAC,CAAA,CAAA;IAEDtH,eAAA,CAAgByE,KAAK,CAAA,CAAA;AAGjB,IAAA,IAAAuD,YAAA,CAAA;IACJ,IAAI5I,MAAM8E,QAAU,EAAA;AACH8D,MAAAA,YAAA,GAAAvD,KAAA,KAAU,IAAIR,MAAS,GAAA,CAAA,GAAIQ,UAAUR,MAAS,GAAA,CAAA,GAAI,IAAIQ,KAAQ,GAAA,CAAA,CAAA;AAC/E,KAAO,MAAA;AACUuD,MAAAA,YAAA,GAAAvD,KAAA,CAAA;AACjB,KAAA;IACA1C,YAAA,CAAaiG,YAAY,CAAA,CAAA;GAC3B,CAAA;AAEApC,EAAAA,eAAA,CAAU,YAAM;AACV,IAAA,IAAA9D,SAAA,IAAa,CAAK,IAAAA,SAAA,GAAYmC,MAAQ,EAAA;AAAA,MAAA,IAAAgE,eAAA,EAAAC,YAAA,EAAAC,gBAAA,CAAA;AAClC,MAAA,CAAAF,eAAA,GAAA7I,KAAA,CAAAgJ,QAAA,MAAA,IAAA,IAAAH,eAAA,KAAAA,KAAAA,CAAAA,IAAAA,eAAA,CAAA5C,IAAA,CAAAjG,KAAA,EAAW,CAAA,CAAA8I,YAAA,GAAA9I,MAAM4E,IAAO,MAAA,IAAA,IAAAkE,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAbA,YAAA,CAAapG,SAAS,2BAAK1C,KAAM,CAAAiE,QAAA,MAAA8E,IAAAA,IAAAA,gBAAA,uBAANA,gBAAA,CAAiBrG,SAAS,CAAA,CAAA,EAAGA,SAAS,CAAA,CAAA;AACpF,KAAA;AACF,GAAA,EAAG,CAACA,SAAW,EAAA1C,KAAA,CAAM4E,MAAM5E,KAAM,CAAAiE,QAAA,EAAUY,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,IAAMoE,oBAAoB,SAApBA,oBAA0B;AAC1B,IAAA,IAAA,CAACjJ,MAAMkJ,SAAW,EAAA,OAAA;IACtBlI,cAAA,CAAe,IAAI,CAAA,CAAA;IAEnB,IAAIC,cAAcyG,OAAS,EAAA;AACzBC,MAAAA,aAAA,CAAc1G,cAAcyG,OAAO,CAAA,CAAA;MACnCzG,aAAA,CAAcyG,OAAU,GAAA,IAAA,CAAA;AAC1B,KAAA;GACF,CAAA;AAEM,EAAA,IAAAyB,eAAA,GAAkB,SAAlBA,eAAAA,CAAmB9E,KAAmD,EAAA;IAC1E,IAAI3C,iBAAiB,CAAG,EAAA;MACtBV,cAAA,CAAe,KAAK,CAAA,CAAA;AACpB,MAAA,OAAA;AACF,KAAA;IAEM,IAAAoI,MAAA,GACJpJ,KAAM,CAAAmH,SAAA,KAAc,YAAe,GAAA9C,KAAA,CAAME,YAAY8E,aAAc,CAAAlI,CAAA,GAAIkD,KAAM,CAAAE,WAAA,CAAY8E,aAAc,CAAAjI,CAAA,CAAA;AAErG,IAAA,IAAAiE,KAAA,CAAA;AAEA,IAAA,IAAArF,KAAA,CAAMoH,gBAAgB,QAAU,EAAA;MAC1B/B,KAAA,GAAAgD,IAAA,CAAKiB,KAAM,CAAAF,MAAA,GAAS1H,aAAa,CAAA,CAAA;AAC3C,KAAO,MAAA;AAED,MAAA,IAAA,CAAC1B,MAAM8E,QAAU,EAAA;QAEXO,KAAA,GAAAgD,IAAA,CAAKiB,KAAM,CAAAF,MAAA,GAAS1H,aAAa,CAAA,CAAA;AAC3C,OAAO,MAAA;QAEL2D,KAAA,GAAQgD,IAAK,CAAAiB,KAAA,CAAA,CAAOF,MAAS,GAAAtH,gBAAA,IAAoBJ,aAAa,CAAA,CAAA;AAChE,OAAA;AACF,KAAA;AAEQ2D,IAAAA,KAAA,GAAAgD,IAAA,CAAKC,IAAI,CAAG,EAAAD,IAAA,CAAKE,IAAIlD,KAAO,EAAAZ,YAAA,CAAaI,MAAS,GAAA,CAAC,CAAC,CAAA,CAAA;IAG5D,IAAI7E,MAAM8E,QAAU,EAAA;MAElB,IAAIO,SAAS,CAAG,EAAA;AACd2C,QAAAA,aAAA,CAAcnD,QAAQ,KAAK,CAAA,CAAA;OAClB,MAAA,IAAAQ,KAAA,IAASZ,YAAa,CAAAI,MAAA,GAAS,CAAG,EAAA;AAC3CmD,QAAAA,aAAA,CAAc,GAAG,KAAK,CAAA,CAAA;AACxB,OAAO,MAAA;QACLpH,eAAA,CAAgByE,KAAK,CAAA,CAAA;QACf,IAAAuD,YAAA,GAAevD,UAAU,CAAI,GAAAR,MAAA,GAAS,IAAIQ,KAAU,KAAAR,MAAA,GAAS,CAAI,GAAA,CAAA,GAAIQ,KAAQ,GAAA,CAAA,CAAA;QACnF1C,YAAA,CAAaiG,YAAY,CAAA,CAAA;AAC3B,OAAA;AACF,KAAO,MAAA;AAEC,MAAA,IAAAW,YAAA,GAAelB,KAAKC,GAAI,CAAA,CAAA,EAAGD,KAAKE,GAAI,CAAAlD,KAAA,EAAOR,MAAS,GAAA,CAAC,CAAC,CAAA,CAAA;MAC5DjE,eAAA,CAAgB2I,YAAY,CAAA,CAAA;MAC5B5G,YAAA,CAAa4G,YAAY,CAAA,CAAA;AAErB,MAAA,IAAAvJ,KAAA,CAAMoH,gBAAgB,QAAU,EAAA;AAClCY,QAAAA,aAAA,CAAcuB,cAAc,IAAI,CAAA,CAAA;AAClC,OAAA;AACF,KAAA;IAEAvI,cAAA,CAAe,KAAK,CAAA,CAAA;GACtB,CAAA;AAKM,EAAA,IAAAwI,WAAA,GAAc,SAAdA,WAAAA,CAAenE,KAAkB,EAAA;IAC/B,IAAAoE,QAAA,GACJzJ,KAAM,CAAA6G,OAAA,KAAYC,2CAAQ,CAAA4C,QAAA,GACtBhH,SAAc,KAAA2C,KAAA,GACdrF,KAAM,CAAAgH,aAAA,IAAiBtE,SAAY,GAAA1C,KAAA,CAAMgH,aAAkB,KAAA3B,KAAA,CAAA;IAEjE,OAAOoE,QACH,GAAAzJ,KAAA,CAAM2J,YAAiB,KAAAC,gDAAA,CAAaC,MAClC,GAAA,CAACrG,MAAO,CAAAsG,SAAA,EAAW9J,KAAM,CAAA+J,cAAc,CACvC,GAAA,CAACvG,OAAOwG,gBAAkB,EAAAhK,KAAA,CAAM+J,cAAc,CAAA,GAChD/J,KAAM,CAAA2J,YAAA,KAAiBC,gDAAa,CAAAC,MAAA,GAClC,CAACrG,MAAO,CAAAyG,GAAA,EAAKjK,KAAM,CAAAkK,QAAQ,CAC3B,GAAA,CAAC1G,MAAO,CAAA2G,UAAA,EAAYnK,MAAMkK,QAAQ,CAAA,CAAA;GAC1C,CAAA;AAGA1D,EAAAA,eAAA,CAAU,YAAM;IACd,IAAI9E,aAAgB,GAAA,CAAA,IAAK+C,YAAa,CAAAI,MAAA,GAAS,CAAG,EAAA;AAC5C,MAAA,IAAAuF,YAAA,GAAepK,MAAMW,YAAgB,IAAA,CAAA,CAAA;MAGzC,IAAIX,MAAM8E,QAAU,EAAA;AACFsF,QAAAA,YAAA,IAAA,CAAA,CAAA;AAClB,OAAA;AAEApC,MAAAA,aAAA,CAAcoC,cAAc,KAAK,CAAA,CAAA;AACnC,KAAA;AACF,KAAG,CAAC1I,aAAA,EAAe+C,aAAaI,MAAQ,EAAA7E,KAAA,CAAM8E,QAAQ,CAAC,CAAA,CAAA;AAEvD0B,EAAAA,eAAA,CAAU,YAAM;IAER,IAAA6D,mBAAA,GAAsBrK,KAAM,CAAA8E,QAAA,GAAW,CAAI,GAAA,CAAA,CAAA;IACjDlE,eAAA,CAAgByJ,mBAAmB,CAAA,CAAA;AACrC,GAAG,EAAA,CAACrK,KAAM,CAAA8E,QAAQ,CAAC,CAAA,CAAA;AAGnB,EAAA,IAAMwF,UAAa,GAAA,SAAbA,UAAaA,CAAAC,IAAA,EAA0B;AAAA,IAAA,IAAAC,aAAA,CAAA;AAAA,IAAA,IAAvBjG,WAAA,GAAAgG,IAAA,CAAAhG,WAAA,CAAA;AAEhB,IAAA,IAAA,EAAAiG,CAAAA,aAAA,GAACxK,KAAM,CAAA8D,KAAA,MAAA0G,IAAAA,IAAAA,aAAA,KAANA,KAAAA,CAAAA,IAAAA,aAAA,CAAa1H,MAAQ,CAAA,EAAA;MACxBvB,aAAA,CAAc,UAACsE,IAAU,EAAA;AAAA,QAAA,OAAAL,wCAAA,CAAAA,wCAAA,CAAA,EAAA,EACpBK,IAAA,CAAA,EAAA,EAAA,EAAA;AACHzE,UAAAA,CAAA,EAAGmD,YAAYkG,MAAO,CAAA3H,MAAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OACtB,CAAA,CAAA;AACJ,KAAA;GACF,CAAA;AAGE,EAAA,sBAAAmC,KAAA,CAAAyF,aAAA,CAACC,gBAAA,EAAA;AACC7G,IAAAA,KAAO,EAAA,CACLN,MAAO,CAAAoH,SAAA,EACP;AACEC,MAAAA,QAAU,EAAA,QAAA;MACV/H,QAAQY,aAAc,CAAAZ,MAAA;MACtBD,OAAOa,aAAc,CAAAb,KAAAA;KACvB,EACA7C,KAAM,CAAA8D,KAAA,CAAA;AACR,GAAA,iBAEAmB,KAAA,CAAAyF,aAAA,CAACI,sBAAA,EAAA;AACCC,IAAAA,GAAK,EAAA1K,aAAA;AACL2K,IAAAA,UAAA,EAAYhL,MAAMmH,SAAc,KAAA,YAAA;AAChC8D,IAAAA,aAAA,EAAejL,MAAMoH,WAAgB,KAAA,QAAA;AACrC8D,IAAAA,8BAAgC,EAAA,KAAA;AAChCC,IAAAA,4BAA8B,EAAA,KAAA;AAC9BC,IAAAA,iBAAmB,EAAAnC,iBAAA;AACnBoC,IAAAA,eAAiB,EAAAlC,eAAA;AACjBmC,IAAAA,mBAAqB,EAAAnC,eAAA;AACrBoC,IAAAA,mBAAqB,EAAA,EAAA;AACrBC,IAAAA,gBAAiB,EAAA,MAAA;IACjBC,eAAezL,KAAM,CAAAkJ,SAAA;IAErBwC,SAAS1L,KAAM,CAAA8E,QAAA;IACf6G,qBAAuB,EAAA,CACrBnI,MAAO,CAAAoI,aAAA,EACP5L,KAAA,CAAMmH,cAAc,YAChB,GAAA;AAAE0E,MAAAA,mBAAmB/J,gBAAAA;AAAiB,KAAA,GACtC;AAAEgK,MAAAA,eAAA,EAAiBhK,gBAAAA;KAAiB,CAAA;GAC1C,EAEC2C,YAAa,CAAAU,GAAA,CAAI,UAAC4G,IAAA,EAAW1G,KAC5B,EAAA;AAAA,IAAA,IAAA2G,YAAA,CAAA;AAAA,IAAA,sBAAA/G,KAAA,CAAAyF,aAAA,CAACC,gBAAA,EAAA;MACCsB,eAAQC,MAAA,CAAOH,IAAI,CAAC,EAAAhH,GAAAA,CAAAA,CAAAA,MAAA,CAAIM,KAAK,CAAA;AAC7BvB,MAAAA,KAAO,EAAA,CACLN,MAAO,CAAA2I,aAAA,EAAA3G,wCAAA,CAAAA,wCAAA,KAEDxF,KAAM,CAAAmH,SAAA,KAAc,YACpB,GAAA;QACEiF,kBAAkBlK,OAAU,GAAA,CAAA;AAC5BW,QAAAA,KAAO,EAAAP,QAAA;QACPQ,QAAQxB,UAAW,CAAAF,CAAAA;AACrB,OACA,GAAA;QACEiL,gBAAgBnK,OAAU,GAAA,CAAA;QAC1BW,OAAOvB,UAAW,CAAAH,CAAA;AAClB2B,QAAAA,MAAQ,EAAAR,QAAAA;OACV,CAAA,EAAA,EAAA,EAAA;AACJgK,QAAAA,SAAW,EAAA,CACT;UACEC,KAAA,EACEvM,KAAM,CAAAoH,WAAA,KAAgB,QAAY,IAAAzG,YAAA,KAAiB0E,QAC/C,CACA,GAAArF,KAAA,CAAMoH,WAAgB,KAAA,QAAA,GACpB,CACA,GAAA,GAAA;SACV,CAAA;OAGN,CAAA,CAAA;AACAoF,MAAAA,kBAAoB,EAAA,IAAA;AACpBC,MAAAA,8BAAgC,EAAA,IAAA;KAAA,EAE/B,CAAAT,YAAA,GAAAhM,KAAA,CAAM4E,6CAANoH,YAAA,CAAYnH,MACX,kBAAAI,KAAA,CAAAyF,aAAA,CAACgC,iBAAA,EAAA;AACCjC,MAAAA,MAAA,EAAQ;AAAEkC,QAAAA,GAAA,EAAKZ,IAAAA;OAAe;AAC9BjI,MAAAA,KAAO,EAAA;QACL8I,YAAc,EAAA5M,KAAA,CAAMoH,WAAgB,KAAA,QAAA,GAAW,CAAI,GAAA,EAAA;QACnDvE,KAAO,EAAA7C,KAAA,CAAMmH,SAAc,KAAA,YAAA,GAAe7E,WAAWhB,UAAW,CAAAH,CAAA;QAChE2B,MAAQ,EAAA9C,KAAA,CAAMmH,SAAc,KAAA,YAAA,GAAe7F,WAAWF,CAAI,GAAAkB,QAAAA;OAC5D;AACAuK,MAAAA,UAAW,EAAA,SAAA;AACXC,MAAAA,MAAQ,EAAAxC,UAAA;AACRyC,MAAAA,YAAa,EAAA,QAAA;KACf,CAAA,GAEAtI,iBAAAA,IAAAA,IAAAA,mCAAAA,aAAeY,KAAK,CAExB,CACD,CAAA;AAAA,GAAA,CACH,CAAA,EAGCrF,KAAA,CAAMgN,eAAerG,OAAQ,CAAA9B,MAAA,GAAS,oBACpCI,KAAA,CAAAyF,aAAA,CAAAC,gBAAA,EAAA;AAAK7G,IAAAA,OAAO,CAAC9D,KAAA,CAAM2J,iBAAiBC,gDAAa,CAAAC,MAAA,GAASrG,OAAOyJ,YAAe,GAAAzJ,MAAA,CAAO0J,mBAAmB,CAAA;AACxG,GAAA,EAAAlN,KAAA,CAAM6G,OAAY,KAAAC,2CAAA,CAAQC,UACzB,mBAAA9B,KAAA,CAAAyF,aAAA,CAACC,gBAAA,EAAA;IACC7G,KAAO,EAAA,CACL9D,MAAM2J,YAAiB,KAAAC,gDAAA,CAAaC,MAAS,GAAArG,MAAA,CAAO2J,WAAW3J,MAAO,CAAA4J,eAAA,EACtEpN,KAAM,CAAAkK,QAAA,CAAA;GAEV,GAEDvD,OAAQ,CAAAxB,GAAA,CAAI,UAACkI,CAAG,EAAAhI,KAAA,EAAA;AAAA,IAAA,0CACdsF,gBAAK,EAAA;AAAAsB,MAAAA,GAAA,EAAK5G;MAAOvB,KAAO,EAAA0F,WAAA,CAAYnE,KAAK,CAAA;AAAG,KAAA,CAC9C,CAAA;AAAA,GAAA,GACArF,KAAM,CAAA6G,OAAA,KAAYC,4CAAQC,UACzB,mBAAA9B,KAAA,CAAAyF,aAAA,CAACC,gBAAA,EAAA;IACC7G,KAAO,EAAA,CACL9D,MAAM2J,YAAiB,KAAAC,gDAAA,CAAaC,MAAS,GAAArG,MAAA,CAAO2J,WAAW3J,MAAO,CAAA4J,eAAA,EACtEpN,KAAM,CAAAkK,QAAA,CAAA;AACR,GACF,CAEJ,CAAA,EAGDlK,MAAMsN,cACL,mBAAArI,KAAA,CAAAyF,aAAA,CAACC,gBAAA,EAAA;IACC7G,KAAO,EAAA,CACLN,MAAO,CAAA+J,eAAA,EACPvN,MAAMwN,eAAoB,KAAAC,mDAAA,CAAgBC,GAAM,GAAAlK,MAAA,CAAOmK,YAAYnK,MAAO,CAAAoK,YAAA,CAAA;AAC5E,GAAA,qCAECC,gBAAK,EAAA;IAAA/J,KAAA,EAAON,MAAO,CAAAsK,MAAAA;AAAA,GAAA,EAASpL,YAAY,CAAE,CAAA,iBAC1CuC,KAAA,CAAAyF,aAAA,CAAAmD,gBAAA,EAAA;IAAK/J,KAAO,EAAAN,MAAA,CAAOsK,MAAAA;KAAQ,GAAC,CAAA,iBAC5B7I,KAAA,CAAAyF,aAAA,CAAAmD,gBAAA,EAAA;IAAK/J,KAAO,EAAAN,MAAA,CAAOsK,MAAAA;KAASjJ,MAAO,CACtC,CAEJ,CAAA,CAAA;AAEJ,EAAA;AAEA9E,QAAA,CAASgO,YAAe,GAAAC,wDAAA;;;;"}
|
|
@@ -10,15 +10,13 @@ var components_Image_styles = require('./styles.js');
|
|
|
10
10
|
var components_Image_hook_index = require('./hook/index.js');
|
|
11
11
|
var components_Image_CircularProgress = require('./CircularProgress.js');
|
|
12
12
|
require('../ConfigProvider/hooks/ConfigCache/ConfigCache.js');
|
|
13
|
-
|
|
13
|
+
require('@xhs/reds-apm/src/index.native');
|
|
14
14
|
var redsTokenNext = require('@xhsreds/reds-token-next');
|
|
15
15
|
var components_ConfigProvider_hooks_themeToken_useColorMode = require('../ConfigProvider/hooks/themeToken/useColorMode.js');
|
|
16
16
|
var components_Image_utils = require('./utils.js');
|
|
17
|
-
var components_Image_VisibilitySensor = require('./VisibilitySensor.js');
|
|
18
17
|
var components_Image_apm = require('./apm.js');
|
|
18
|
+
var components_Image_queryCacheBatcher = require('./queryCacheBatcher.js');
|
|
19
19
|
require('react-native-svg');
|
|
20
|
-
require('@xhs/reds-apm/src/index.native');
|
|
21
|
-
require('../../pvCount/pvData.js');
|
|
22
20
|
require('../ConfigProvider/hooks/ConfigContext/ConfigContext.js');
|
|
23
21
|
|
|
24
22
|
var _excluded = ["src", "source", "width", "height", "borderRadius", "errorStyle", "loadStyle", "style", "abortApmCollection", "fadeDuration", "onFirstDrawFinished"];
|
|
@@ -43,9 +41,8 @@ var Image = function Image(_ref) {
|
|
|
43
41
|
style = _ref.style,
|
|
44
42
|
abortApmCollection = _ref.abortApmCollection,
|
|
45
43
|
fadeDuration = _ref.fadeDuration,
|
|
46
|
-
|
|
44
|
+
_onFirstDrawFinished = _ref.onFirstDrawFinished,
|
|
47
45
|
props = _rollupPluginBabelHelpers._objectWithoutProperties(_ref, _excluded);
|
|
48
|
-
pvCount_useUnmountedProcess.default("Image");
|
|
49
46
|
var _useState = React.useState(components_Image_interface_index.IMAGE_STATUS.LOADING),
|
|
50
47
|
_useState2 = _rollupPluginBabelHelpers._slicedToArray(_useState, 2),
|
|
51
48
|
imageStatus = _useState2[0],
|
|
@@ -54,14 +51,7 @@ var Image = function Image(_ref) {
|
|
|
54
51
|
_useState4 = _rollupPluginBabelHelpers._slicedToArray(_useState3, 2),
|
|
55
52
|
progress = _useState4[0],
|
|
56
53
|
setProgress = _useState4[1];
|
|
57
|
-
var
|
|
58
|
-
_useState6 = _rollupPluginBabelHelpers._slicedToArray(_useState5, 2),
|
|
59
|
-
loadedTime = _useState6[0],
|
|
60
|
-
setLoadedTime = _useState6[1];
|
|
61
|
-
var _useState7 = React.useState(0),
|
|
62
|
-
_useState8 = _rollupPluginBabelHelpers._slicedToArray(_useState7, 2),
|
|
63
|
-
loadStartTime = _useState8[0],
|
|
64
|
-
setLoadStartTime = _useState8[1];
|
|
54
|
+
var mountTimeRef = React.useRef(Date.now());
|
|
65
55
|
var formatSource = React.useMemo(function () {
|
|
66
56
|
if (_source) return _source;
|
|
67
57
|
return {
|
|
@@ -76,23 +66,10 @@ var Image = function Image(_ref) {
|
|
|
76
66
|
var blurSource = components_Image_hook_index.useBlur({
|
|
77
67
|
source: formatSource
|
|
78
68
|
});
|
|
79
|
-
var _useState9 = React.useState(false),
|
|
80
|
-
_useState0 = _rollupPluginBabelHelpers._slicedToArray(_useState9, 2),
|
|
81
|
-
viewable = _useState0[0],
|
|
82
|
-
setViewable = _useState0[1];
|
|
83
|
-
var hasInit = React.useRef(false);
|
|
84
|
-
var checkIsVisible = function checkIsVisible(isVisible) {
|
|
85
|
-
if (abortApmCollection) return;
|
|
86
|
-
if (!hasInit.current) {
|
|
87
|
-
hasInit.current = true;
|
|
88
|
-
apmDataRef.current.isFirstScreen = isVisible ? "true" : "false";
|
|
89
|
-
}
|
|
90
|
-
setViewable(isVisible);
|
|
91
|
-
};
|
|
92
69
|
var apmDataRef = React.useRef({
|
|
93
70
|
imageUrl: "",
|
|
94
71
|
imageHost: "",
|
|
95
|
-
intersectTime:
|
|
72
|
+
intersectTime: 0,
|
|
96
73
|
imageSize: 0,
|
|
97
74
|
isFirstScreen: "false",
|
|
98
75
|
isPrefetch: "",
|
|
@@ -103,10 +80,7 @@ var Image = function Image(_ref) {
|
|
|
103
80
|
loadDuration: 0,
|
|
104
81
|
viewDuration: 0
|
|
105
82
|
});
|
|
106
|
-
var
|
|
107
|
-
_useState10 = _rollupPluginBabelHelpers._slicedToArray(_useState1, 2),
|
|
108
|
-
apmDoneRef = _useState10[0],
|
|
109
|
-
setApmDoneRef = _useState10[1];
|
|
83
|
+
var apmDoneRef = React.useRef(false);
|
|
110
84
|
React.useEffect(function () {
|
|
111
85
|
if (abortApmCollection) return;
|
|
112
86
|
try {
|
|
@@ -121,52 +95,38 @@ var Image = function Image(_ref) {
|
|
|
121
95
|
React.useEffect(function () {
|
|
122
96
|
if (abortApmCollection) return;
|
|
123
97
|
var imageUrl = (formatSource === null || formatSource === void 0 ? void 0 : formatSource.uri) || "";
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
98
|
+
if (!imageUrl) return;
|
|
99
|
+
var alive = true;
|
|
100
|
+
components_Image_queryCacheBatcher.queryCacheBatched(imageUrl).then(function (isPrefetched) {
|
|
101
|
+
if (!alive) return;
|
|
102
|
+
apmDataRef.current.isPrefetch = String(isPrefetched);
|
|
103
|
+
})["catch"](function () {
|
|
104
|
+
if (!alive) return;
|
|
105
|
+
apmDataRef.current.isPrefetch = "false";
|
|
106
|
+
});
|
|
134
107
|
return function () {
|
|
108
|
+
alive = false;
|
|
135
109
|
apmDataRef.current.isPrefetch = "";
|
|
136
110
|
};
|
|
137
111
|
}, [formatSource, abortApmCollection]);
|
|
138
112
|
var pushApmData = React.useCallback(function () {
|
|
139
113
|
if (abortApmCollection) return;
|
|
140
114
|
var apmData = apmDataRef.current;
|
|
141
|
-
|
|
142
|
-
apmData.viewDuration =
|
|
115
|
+
apmData.intersectTime = 0;
|
|
116
|
+
apmData.viewDuration = 0;
|
|
143
117
|
var imageSize = apmDataRef.current.imageSize || 0;
|
|
144
118
|
if (!apmDataRef.current.isPrefetch) {
|
|
145
119
|
apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);
|
|
146
120
|
}
|
|
147
|
-
if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {
|
|
148
|
-
|
|
121
|
+
if (!apmDoneRef.current && apmData.imageUrl && !abortApmCollection) {
|
|
122
|
+
apmDoneRef.current = true;
|
|
149
123
|
components_Image_apm.apmPush(components_Image_utils.convertKeysToSnakeCase(apmData));
|
|
150
124
|
}
|
|
151
125
|
}, [abortApmCollection]);
|
|
152
|
-
if ((!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === "false") && viewable && !abortApmCollection) {
|
|
153
|
-
apmDataRef.current.isFirstScreen = "true";
|
|
154
|
-
}
|
|
155
|
-
React.useEffect(function () {
|
|
156
|
-
if (abortApmCollection) return;
|
|
157
|
-
var apmData = apmDataRef.current;
|
|
158
|
-
if (!apmData.intersectTime && viewable) {
|
|
159
|
-
apmData.intersectTime = Date.now();
|
|
160
|
-
if (apmData.loadedTime || apmData.errorReason) {
|
|
161
|
-
pushApmData();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}, [viewable, pushApmData, abortApmCollection]);
|
|
165
126
|
var onLoadEnd = function onLoadEnd() {
|
|
166
127
|
var _props$onLoadEnd;
|
|
167
128
|
props === null || props === void 0 || (_props$onLoadEnd = props.onLoadEnd) === null || _props$onLoadEnd === void 0 || _props$onLoadEnd.call(props);
|
|
168
129
|
if (abortApmCollection) return;
|
|
169
|
-
apmDataRef.current;
|
|
170
130
|
pushApmData();
|
|
171
131
|
};
|
|
172
132
|
var onProgress = function onProgress(e) {
|
|
@@ -184,8 +144,10 @@ var Image = function Image(_ref) {
|
|
|
184
144
|
var _props$onLoad;
|
|
185
145
|
if (!abortApmCollection) {
|
|
186
146
|
var now = Date.now();
|
|
187
|
-
|
|
188
|
-
|
|
147
|
+
var start = apmDataRef.current.loadedStartTime || mountTimeRef.current;
|
|
148
|
+
if (start > now) start = now;
|
|
149
|
+
apmDataRef.current.loadedStartTime = start;
|
|
150
|
+
var loadDuration = now - start;
|
|
189
151
|
apmDataRef.current.loadedTime = now;
|
|
190
152
|
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
191
153
|
apmDataRef.current.isSuccess = "true";
|
|
@@ -193,16 +155,8 @@ var Image = function Image(_ref) {
|
|
|
193
155
|
(_props$onLoad = props.onLoad) === null || _props$onLoad === void 0 || _props$onLoad.call(props, e);
|
|
194
156
|
setImageStatus(components_Image_interface_index.IMAGE_STATUS.LOADED);
|
|
195
157
|
};
|
|
196
|
-
React.useEffect(function () {
|
|
197
|
-
var loadDuration = loadedTime - loadStartTime;
|
|
198
|
-
apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
199
|
-
}, [loadedTime, loadStartTime]);
|
|
200
158
|
var onLoadStart = function onLoadStart() {
|
|
201
|
-
|
|
202
|
-
var now = Date.now();
|
|
203
|
-
apmDataRef.current.loadedStartTime = now;
|
|
204
|
-
setLoadStartTime(now);
|
|
205
|
-
}
|
|
159
|
+
!abortApmCollection && (apmDataRef.current.loadedStartTime = Date.now());
|
|
206
160
|
};
|
|
207
161
|
var onError = function onError(e) {
|
|
208
162
|
var _props$onError;
|
|
@@ -228,10 +182,7 @@ var Image = function Image(_ref) {
|
|
|
228
182
|
height: height,
|
|
229
183
|
width: width
|
|
230
184
|
}, style)
|
|
231
|
-
}, imageStatus !== components_Image_interface_index.IMAGE_STATUS.HIDE &&
|
|
232
|
-
onChange: checkIsVisible,
|
|
233
|
-
disabled: apmDoneRef
|
|
234
|
-
}, /* @__PURE__ */React.createElement(reactNative.Image, _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, props), {}, {
|
|
185
|
+
}, imageStatus !== components_Image_interface_index.IMAGE_STATUS.HIDE && /* @__PURE__ */React.createElement(reactNative.Image, _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, props), {}, {
|
|
235
186
|
source: formatSource,
|
|
236
187
|
onLoadStart: onLoadStart,
|
|
237
188
|
onLoad: onLoad,
|
|
@@ -239,23 +190,9 @@ var Image = function Image(_ref) {
|
|
|
239
190
|
onError: onError,
|
|
240
191
|
onLoadEnd: onLoadEnd,
|
|
241
192
|
fadeDuration: fadeDuration,
|
|
242
|
-
onFirstDrawFinished: onFirstDrawFinished
|
|
243
|
-
|
|
244
|
-
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
245
|
-
height: height || (style === null || style === void 0 ? void 0 : style.height),
|
|
246
|
-
borderRadius: borderRadius
|
|
247
|
-
// opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,
|
|
193
|
+
onFirstDrawFinished: function onFirstDrawFinished(e) {
|
|
194
|
+
return _onFirstDrawFinished(e);
|
|
248
195
|
},
|
|
249
|
-
apmBiz: props.apmBiz
|
|
250
|
-
}))) : /* @__PURE__ */React.createElement(reactNative.Image, _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, props), {}, {
|
|
251
|
-
source: formatSource,
|
|
252
|
-
onLoadStart: onLoadStart,
|
|
253
|
-
onLoad: onLoad,
|
|
254
|
-
onProgress: onProgress,
|
|
255
|
-
onError: onError,
|
|
256
|
-
onLoadEnd: onLoadEnd,
|
|
257
|
-
fadeDuration: fadeDuration,
|
|
258
|
-
onFirstDrawFinished: onFirstDrawFinished,
|
|
259
196
|
style: {
|
|
260
197
|
width: width || (style === null || style === void 0 ? void 0 : style.width),
|
|
261
198
|
height: height || (style === null || style === void 0 ? void 0 : style.height),
|
|
@@ -263,7 +200,7 @@ var Image = function Image(_ref) {
|
|
|
263
200
|
// opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,
|
|
264
201
|
},
|
|
265
202
|
apmBiz: props.apmBiz
|
|
266
|
-
}))
|
|
203
|
+
})), imageStatus === components_Image_interface_index.IMAGE_STATUS.LOADING && loadStyle !== components_Image_interface_index.TLoadStyle.NONE && /* @__PURE__ */React.createElement(reactNative.View, {
|
|
267
204
|
style: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({
|
|
268
205
|
width: width,
|
|
269
206
|
height: height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.js","sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { lightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport VisibilitySensor from \"./VisibilitySensor\";\nimport { apmPush } from \"./apm\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n fadeDuration,\n onFirstDrawFinished,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n useMounted(\"Image\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n\n const [loadedTime, setLoadedTime] = useState(0);\n const [loadStartTime, setLoadStartTime] = useState(0);\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return _source as ImageSourcePropTyp;\n // @ts-ignore\n return { uri: src } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n const [viewable, setViewable] = useState(false);\n const hasInit = useRef(false);\n const checkIsVisible = (isVisible: boolean) => {\n if (abortApmCollection) return;\n // 判断首屏\n if (!hasInit.current) {\n hasInit.current = true;\n apmDataRef.current.isFirstScreen = isVisible ? \"true\" : \"false\";\n }\n setViewable(isVisible);\n };\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: viewable ? Date.now() : 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const [apmDoneRef, setApmDoneRef] = useState(false);\n\n useEffect(() => {\n if (abortApmCollection) return;\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource, abortApmCollection]);\n\n useEffect(() => {\n if (abortApmCollection) return;\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (typeof RNImage.queryCache === \"function\" && !!imageUrl) {\n const uriEncodeImageUrl = encodeURI(imageUrl);\n RNImage.queryCache([imageUrl]).then((res) => {\n if (res?.[uriEncodeImageUrl]) {\n apmDataRef.current.isPrefetch = \"true\";\n } else {\n apmDataRef.current.isPrefetch = \"false\";\n }\n });\n }\n return () => {\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource, abortApmCollection]);\n\n const pushApmData = useCallback(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n const viewDuration = apmData.loadedTime - apmData.intersectTime;\n apmData.viewDuration = viewDuration < 0 ? 0 : viewDuration;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {\n setApmDoneRef(true);\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n if (\n (!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === \"false\") &&\n viewable &&\n !abortApmCollection\n ) {\n apmDataRef.current.isFirstScreen = \"true\";\n }\n useEffect(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n if (!apmData.intersectTime && viewable) {\n apmData.intersectTime = Date.now();\n // 进入视窗前加载完成/失败\n if (apmData.loadedTime || apmData.errorReason) {\n pushApmData();\n }\n }\n }, [viewable, pushApmData, abortApmCollection]);\n\n const onLoadEnd = () => {\n props?.onLoadEnd?.();\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n // 进入视窗后加载成功/失败\n // if (apmData.intersectTime) {\n pushApmData();\n // }\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n !abortApmCollection && (apmDataRef.current.imageSize = total);\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n if (!abortApmCollection) {\n const now = Date.now();\n setLoadedTime(now);\n const loadDuration = now - apmDataRef.current.loadedStartTime;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n }\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n useEffect(() => {\n const loadDuration = loadedTime - loadStartTime;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n }, [loadedTime, loadStartTime]);\n\n const onLoadStart = () => {\n if (!abortApmCollection) {\n const now = Date.now();\n apmDataRef.current.loadedStartTime = now;\n setLoadStartTime(now);\n }\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n if (!abortApmCollection) {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n }\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE &&\n (!abortApmCollection ? (\n <VisibilitySensor onChange={checkIsVisible} disabled={apmDoneRef}>\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={onFirstDrawFinished}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n </VisibilitySensor>\n ) : (\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={onFirstDrawFinished}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n ))}\n {imageStatus === IMAGE_STATUS.LOADING && loadStyle !== TLoadStyle.NONE && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n ...style,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <CircularProgress progress={progress}></CircularProgress>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) &&\n errorStyle !== TErrorStyle.NONE && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","fadeDuration","onFirstDrawFinished","props","_objectWithoutProperties","_excluded","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","_useState5","_useState6","loadedTime","setLoadedTime","_useState7","_useState8","loadStartTime","setLoadStartTime","formatSource","useMemo","uri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState9","_useState0","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadDuration","viewDuration","_useState1","_useState10","apmDoneRef","setApmDoneRef","useEffect","apmData","isLocalFile","isDataUri","URL","protocol","concat","host","error","RNImage","queryCache","uriEncodeImageUrl","encodeURI","then","res","pushApmData","useCallback","String","apmPush","convertKeysToSnakeCase","onLoadEnd","_props$onLoadEnd","call","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","onLoad","_props$onLoad","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","VisibilitySensor","onChange","disabled","apmBiz","NONE","styles","loadingContainer","backgroundColor","BLUR","CircularProgress","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Image.js","sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { lightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport { apmPush } from \"./apm\";\nimport { queryCacheBatched } from \"./queryCacheBatcher\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n fadeDuration,\n onFirstDrawFinished,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n // useMounted(\"Image\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n const mountTimeRef = useRef<number>(Date.now());\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return _source as ImageSourcePropType;\n // @ts-ignore\n return { uri: src } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n // Visibility tracking removed: no longer needed for APM\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const apmDoneRef = useRef(false);\n\n useEffect(() => {\n if (abortApmCollection) return;\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource, abortApmCollection]);\n\n useEffect(() => {\n if (abortApmCollection) return;\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (!imageUrl) return;\n let alive = true;\n queryCacheBatched(imageUrl)\n .then((isPrefetched) => {\n if (!alive) return;\n apmDataRef.current.isPrefetch = String(isPrefetched);\n })\n .catch(() => {\n if (!alive) return;\n apmDataRef.current.isPrefetch = \"false\";\n });\n return () => {\n alive = false;\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource, abortApmCollection]);\n\n const pushApmData = useCallback(() => {\n if (abortApmCollection) return;\n const apmData = apmDataRef.current;\n // Simplify: do not track view duration/intersect time\n apmData.intersectTime = 0;\n apmData.viewDuration = 0;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef.current && apmData.imageUrl && !abortApmCollection) {\n apmDoneRef.current = true;\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n // isFirstScreen stays \"false\" and intersectTime stays 0 by design\n const onLoadEnd = () => {\n props?.onLoadEnd?.();\n if (abortApmCollection) return;\n // Push regardless of visibility/intersect time\n pushApmData();\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n !abortApmCollection && (apmDataRef.current.imageSize = total);\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n if (!abortApmCollection) {\n const now = Date.now();\n let start = apmDataRef.current.loadedStartTime || mountTimeRef.current;\n if (start > now) start = now;\n apmDataRef.current.loadedStartTime = start;\n const loadDuration = now - start;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n }\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n const onLoadStart = () => {\n !abortApmCollection && (apmDataRef.current.loadedStartTime = Date.now());\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n if (!abortApmCollection) {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n }\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE && (\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n fadeDuration={fadeDuration}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {imageStatus === IMAGE_STATUS.LOADING && loadStyle !== TLoadStyle.NONE && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n ...style,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width: width || style?.width,\n height: height || style?.height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <CircularProgress progress={progress}></CircularProgress>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) &&\n errorStyle !== TErrorStyle.NONE && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","fadeDuration","onFirstDrawFinished","props","_objectWithoutProperties","_excluded","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","mountTimeRef","useRef","Date","now","formatSource","useMemo","uri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","apmDataRef","imageUrl","imageHost","intersectTime","imageSize","isFirstScreen","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","apmDoneRef","useEffect","apmData","current","isLocalFile","isDataUri","URL","protocol","concat","host","error","alive","queryCacheBatched","then","isPrefetched","String","pushApmData","useCallback","apmPush","convertKeysToSnakeCase","onLoadEnd","_props$onLoadEnd","call","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","onLoad","_props$onLoad","start","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","RNImage","apmBiz","NONE","styles","loadingContainer","backgroundColor","BLUR","CircularProgress","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ var VisibilitySensor = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
97
97
|
stopWatching();
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
}, [rectDimensions, lastValue]);
|
|
100
|
+
}, [rectDimensions, lastValue, threshold, onChange, triggerOnce, stopWatching]);
|
|
101
101
|
return /* @__PURE__ */React.createElement(reactNative.View, _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({
|
|
102
102
|
ref: localRef
|
|
103
103
|
}, rest), {}, {
|