react-native-reanimated-carousel 3.1.4 → 3.1.5
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/lib/commonjs/Carousel.js +1 -1
- package/lib/commonjs/Carousel.js.map +1 -1
- package/lib/commonjs/ScrollViewGesture.js +1 -1
- package/lib/commonjs/ScrollViewGesture.js.map +1 -1
- package/lib/commonjs/hooks/useCarouselController.js +1 -1
- package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
- package/lib/commonjs/hooks/useInitProps.js +1 -1
- package/lib/commonjs/hooks/useInitProps.js.map +1 -1
- package/lib/commonjs/hooks/useOffsetX.js +1 -1
- package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
- package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
- package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
- package/lib/commonjs/layouts/BaseLayout.js +1 -1
- package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
- package/lib/commonjs/layouts/ParallaxLayout.js +1 -1
- package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
- package/lib/module/Carousel.js +17 -10
- package/lib/module/Carousel.js.map +1 -1
- package/lib/module/ScrollViewGesture.js +3 -3
- package/lib/module/ScrollViewGesture.js.map +1 -1
- package/lib/module/hooks/useCarouselController.js +5 -5
- package/lib/module/hooks/useCarouselController.js.map +1 -1
- package/lib/module/hooks/useCommonVariables.js +6 -6
- package/lib/module/hooks/useCommonVariables.js.map +1 -1
- package/lib/module/hooks/useInitProps.js +10 -5
- package/lib/module/hooks/useInitProps.js.map +1 -1
- package/lib/module/hooks/useOffsetX.js +5 -4
- package/lib/module/hooks/useOffsetX.js.map +1 -1
- package/lib/module/hooks/useOnProgressChange.js +1 -2
- package/lib/module/hooks/useOnProgressChange.js.map +1 -1
- package/lib/module/hooks/usePropsErrorBoundary.js +1 -2
- package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
- package/lib/module/layouts/BaseLayout.js +3 -3
- package/lib/module/layouts/BaseLayout.js.map +1 -1
- package/lib/module/layouts/ParallaxLayout.js +2 -2
- package/lib/module/layouts/ParallaxLayout.js.map +1 -1
- package/lib/typescript/hooks/useCarouselController.d.ts +1 -1
- package/lib/typescript/hooks/useInitProps.d.ts +2 -0
- package/lib/typescript/hooks/useOffsetX.d.ts +1 -1
- package/lib/typescript/hooks/useOnProgressChange.d.ts +1 -1
- package/lib/typescript/hooks/usePropsErrorBoundary.d.ts +3 -1
- package/lib/typescript/layouts/ParallaxLayout.d.ts +1 -1
- package/package.json +1 -1
- package/src/Carousel.tsx +15 -10
- package/src/ScrollViewGesture.tsx +2 -2
- package/src/hooks/useCarouselController.tsx +6 -6
- package/src/hooks/useCommonVariables.ts +6 -6
- package/src/hooks/useInitProps.ts +13 -4
- package/src/hooks/useOffsetX.ts +6 -5
- package/src/hooks/useOnProgressChange.ts +2 -4
- package/src/hooks/usePropsErrorBoundary.ts +2 -3
- package/src/layouts/BaseLayout.tsx +3 -3
- package/src/layouts/ParallaxLayout.tsx +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useCommonVariables.ts"],"names":["React","useSharedValue","useAnimatedReaction","computeNewIndexWhenDataChanges","handlerOffsetDirection","useCommonVariables","props","vertical","height","width","
|
|
1
|
+
{"version":3,"sources":["useCommonVariables.ts"],"names":["React","useSharedValue","useAnimatedReaction","computeNewIndexWhenDataChanges","handlerOffsetDirection","useCommonVariables","props","vertical","height","width","dataLength","defaultIndex","defaultScrollOffsetValue","loop","size","validLength","defaultHandlerOffsetValue","Math","abs","_handlerOffset","handlerOffset","prevDataLength","useEffect","value","previousLength","currentLength","isLengthChanged","shouldComputed","direction"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,cAAT,EAAyBC,mBAAzB,QAAoD,yBAApD;AAEA,SAASC,8BAAT,QAA+C,kCAA/C;AAGA,SAASC,sBAAT,QAAuC,iCAAvC;AAQA,OAAO,SAASC,kBAAT,CACLC,KADK,EAEa;AAClB,QAAM;AACJC,IAAAA,QADI;AAEJC,IAAAA,MAFI;AAGJC,IAAAA,KAHI;AAIJC,IAAAA,UAJI;AAKJC,IAAAA,YALI;AAMJC,IAAAA,wBANI;AAOJC,IAAAA;AAPI,MAQFP,KARJ;AASA,QAAMQ,IAAI,GAAGP,QAAQ,GAAGC,MAAH,GAAYC,KAAjC;AACA,QAAMM,WAAW,GAAGL,UAAU,GAAG,CAAjC;AACA,QAAMM,yBAAyB,GAAG,CAACC,IAAI,CAACC,GAAL,CAASP,YAAY,GAAGG,IAAxB,CAAnC;;AACA,QAAMK,cAAc,GAAGlB,cAAc,CAASe,yBAAT,CAArC;;AACA,QAAMI,aAAa,GAAGR,wBAAH,aAAGA,wBAAH,cAAGA,wBAAH,GAA+BO,cAAlD;AACA,QAAME,cAAc,GAAGpB,cAAc,CAACS,UAAD,CAArC;AAEAV,EAAAA,KAAK,CAACsB,SAAN,CAAgB,MAAM;AACpBF,IAAAA,aAAa,CAACG,KAAd,GAAsBP,yBAAtB;AACD,GAFD,EAEG,CAACT,QAAD,EAAWa,aAAX,EAA0BJ,yBAA1B,CAFH;AAIAd,EAAAA,mBAAmB,CAAC,MAAM;AACxB,UAAMsB,cAAc,GAAGH,cAAc,CAACE,KAAtC;AACA,UAAME,aAAa,GAAGf,UAAtB;AACA,UAAMgB,eAAe,GAAGF,cAAc,KAAKC,aAA3C;AACA,UAAME,cAAc,GAAGD,eAAe,IAAIb,IAA1C;AAEA,QAAIc,cAAJ,EACEN,cAAc,CAACE,KAAf,GAAuBb,UAAvB;AAEF,WAAO;AACLiB,MAAAA,cADK;AAELH,MAAAA,cAFK;AAGLC,MAAAA;AAHK,KAAP;AAKD,GAdkB,EAchB,QAAuD;AAAA,QAAtD;AAAEE,MAAAA,cAAF;AAAkBH,MAAAA,cAAlB;AAAkCC,MAAAA;AAAlC,KAAsD;;AACxD,QAAIE,cAAJ,EAAoB;AAClB;AACA,YAAMC,SAAS,GAAGxB,sBAAsB,CAACgB,aAAD,CAAxC;AAEAA,MAAAA,aAAa,CAACG,KAAd,GAAsBpB,8BAA8B,CAAC;AACnDyB,QAAAA,SADmD;AAEnDJ,QAAAA,cAFmD;AAGnDC,QAAAA,aAHmD;AAInDX,QAAAA,IAJmD;AAKnDM,QAAAA,aAAa,EAAEA,aAAa,CAACG;AALsB,OAAD,CAApD;AAOD;AACF,GA3BkB,EA2BhB,CAACb,UAAD,EAAaG,IAAb,CA3BgB,CAAnB;AA6BA,SAAO;AACLC,IAAAA,IADK;AAELC,IAAAA,WAFK;AAGLK,IAAAA;AAHK,GAAP;AAKD","sourcesContent":["import React from \"react\";\nimport type Animated from \"react-native-reanimated\";\nimport { useSharedValue, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport { computeNewIndexWhenDataChanges } from \"./computeNewIndexWhenDataChanges\";\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport { handlerOffsetDirection } from \"../utils/handlerOffsetDirection\";\n\ninterface ICommonVariables {\n size: number\n validLength: number\n handlerOffset: Animated.SharedValue<number>\n}\n\nexport function useCommonVariables(\n props: TInitializeCarouselProps<any>,\n): ICommonVariables {\n const {\n vertical,\n height,\n width,\n dataLength,\n defaultIndex,\n defaultScrollOffsetValue,\n loop,\n } = props;\n const size = vertical ? height : width;\n const validLength = dataLength - 1;\n const defaultHandlerOffsetValue = -Math.abs(defaultIndex * size);\n const _handlerOffset = useSharedValue<number>(defaultHandlerOffsetValue);\n const handlerOffset = defaultScrollOffsetValue ?? _handlerOffset;\n const prevDataLength = useSharedValue(dataLength);\n\n React.useEffect(() => {\n handlerOffset.value = defaultHandlerOffsetValue;\n }, [vertical, handlerOffset, defaultHandlerOffsetValue]);\n\n useAnimatedReaction(() => {\n const previousLength = prevDataLength.value;\n const currentLength = dataLength;\n const isLengthChanged = previousLength !== currentLength;\n const shouldComputed = isLengthChanged && loop;\n\n if (shouldComputed)\n prevDataLength.value = dataLength;\n\n return {\n shouldComputed,\n previousLength,\n currentLength,\n };\n }, ({ shouldComputed, previousLength, currentLength }) => {\n if (shouldComputed) {\n // direction -> 1 | -1\n const direction = handlerOffsetDirection(handlerOffset);\n\n handlerOffset.value = computeNewIndexWhenDataChanges({\n direction,\n previousLength,\n currentLength,\n size,\n handlerOffset: handlerOffset.value,\n });\n }\n }, [dataLength, loop]);\n\n return {\n size,\n validLength,\n handlerOffset,\n };\n}\n"]}
|
|
@@ -22,29 +22,34 @@ export function useInitProps(props) {
|
|
|
22
22
|
const height = Math.round(_height || 0);
|
|
23
23
|
const autoPlayInterval = Math.max(_autoPlayInterval, 0);
|
|
24
24
|
const data = React.useMemo(() => {
|
|
25
|
-
|
|
25
|
+
return computedFillDataWithAutoFillData({
|
|
26
26
|
loop,
|
|
27
27
|
autoFillData,
|
|
28
28
|
data: rawData,
|
|
29
29
|
dataLength: rawData.length
|
|
30
30
|
});
|
|
31
|
-
return Array.from({
|
|
32
|
-
length: computedData.length
|
|
33
|
-
});
|
|
34
31
|
}, [rawData, loop, autoFillData]);
|
|
32
|
+
const dataLength = data.length;
|
|
33
|
+
const rawDataLength = rawData.length;
|
|
35
34
|
|
|
36
35
|
if (props.mode === "vertical-stack" || props.mode === "horizontal-stack") {
|
|
37
36
|
var _props$modeConfig$sho, _props$modeConfig;
|
|
38
37
|
|
|
39
38
|
if (!props.modeConfig) props.modeConfig = {};
|
|
40
|
-
props.modeConfig.showLength = (_props$modeConfig$sho = (_props$modeConfig = props.modeConfig) === null || _props$modeConfig === void 0 ? void 0 : _props$modeConfig.showLength) !== null && _props$modeConfig$sho !== void 0 ? _props$modeConfig$sho :
|
|
39
|
+
props.modeConfig.showLength = (_props$modeConfig$sho = (_props$modeConfig = props.modeConfig) === null || _props$modeConfig === void 0 ? void 0 : _props$modeConfig.showLength) !== null && _props$modeConfig$sho !== void 0 ? _props$modeConfig$sho : dataLength - 1;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
return { ...props,
|
|
44
43
|
defaultIndex,
|
|
45
44
|
autoFillData,
|
|
45
|
+
// Fill data with autoFillData
|
|
46
46
|
data,
|
|
47
|
+
// Length of fill data
|
|
48
|
+
dataLength,
|
|
49
|
+
// Raw data that has not been processed
|
|
47
50
|
rawData,
|
|
51
|
+
// Length of raw data
|
|
52
|
+
rawDataLength,
|
|
48
53
|
loop,
|
|
49
54
|
enabled,
|
|
50
55
|
autoPlayInterval,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useInitProps.ts"],"names":["React","computedFillDataWithAutoFillData","useInitProps","props","defaultIndex","data","rawData","loop","enabled","autoPlayInterval","_autoPlayInterval","scrollAnimationDuration","style","panGestureHandlerProps","pagingEnabled","autoFillData","snapEnabled","enableSnap","width","_width","height","_height","Math","round","max","useMemo","
|
|
1
|
+
{"version":3,"sources":["useInitProps.ts"],"names":["React","computedFillDataWithAutoFillData","useInitProps","props","defaultIndex","data","rawData","loop","enabled","autoPlayInterval","_autoPlayInterval","scrollAnimationDuration","style","panGestureHandlerProps","pagingEnabled","autoFillData","snapEnabled","enableSnap","width","_width","height","_height","Math","round","max","useMemo","dataLength","length","rawDataLength","mode","modeConfig","showLength"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,gCAAT,QAAiD,mCAAjD;AAuBA,OAAO,SAASC,YAAT,CACLC,KADK,EAEwB;AAAA;;AAC7B,QAAM;AACJC,IAAAA,YAAY,GAAG,CADX;AAEJC,IAAAA,IAAI,EAAEC,OAAO,GAAG,EAFZ;AAGJC,IAAAA,IAAI,GAAG,IAHH;AAIJC,IAAAA,OAAO,GAAG,IAJN;AAKJC,IAAAA,gBAAgB,EAAEC,iBAAiB,GAAG,IALlC;AAMJC,IAAAA,uBAAuB,GAAG,GANtB;AAOJC,IAAAA,KAAK,GAAG,EAPJ;AAQJC,IAAAA,sBAAsB,GAAG,EARrB;AASJC,IAAAA,aAAa,GAAG,IATZ;AAUJC,IAAAA,YAAY,GAAG,IAVX;AAWJC,IAAAA,WAAW,wBAAGb,KAAK,CAACc,UAAT,iEAAuB,IAX9B;AAYJC,IAAAA,KAAK,EAAEC,MAZH;AAaJC,IAAAA,MAAM,EAAEC;AAbJ,MAcFlB,KAdJ;AAgBA,QAAMe,KAAK,GAAGI,IAAI,CAACC,KAAL,CAAWJ,MAAM,IAAI,CAArB,CAAd;AACA,QAAMC,MAAM,GAAGE,IAAI,CAACC,KAAL,CAAWF,OAAO,IAAI,CAAtB,CAAf;AACA,QAAMZ,gBAAgB,GAAGa,IAAI,CAACE,GAAL,CAASd,iBAAT,EAA4B,CAA5B,CAAzB;AAEA,QAAML,IAAI,GAAGL,KAAK,CAACyB,OAAN,CACX,MAAM;AACJ,WAAOxB,gCAAgC,CAAI;AACzCM,MAAAA,IADyC;AAEzCQ,MAAAA,YAFyC;AAGzCV,MAAAA,IAAI,EAAEC,OAHmC;AAIzCoB,MAAAA,UAAU,EAAEpB,OAAO,CAACqB;AAJqB,KAAJ,CAAvC;AAMD,GARU,EASX,CAACrB,OAAD,EAAUC,IAAV,EAAgBQ,YAAhB,CATW,CAAb;AAYA,QAAMW,UAAU,GAAGrB,IAAI,CAACsB,MAAxB;AACA,QAAMC,aAAa,GAAGtB,OAAO,CAACqB,MAA9B;;AAEA,MAAIxB,KAAK,CAAC0B,IAAN,KAAe,gBAAf,IAAmC1B,KAAK,CAAC0B,IAAN,KAAe,kBAAtD,EAA0E;AAAA;;AACxE,QAAI,CAAC1B,KAAK,CAAC2B,UAAX,EACE3B,KAAK,CAAC2B,UAAN,GAAmB,EAAnB;AAEF3B,IAAAA,KAAK,CAAC2B,UAAN,CAAiBC,UAAjB,iDAA8B5B,KAAK,CAAC2B,UAApC,sDAA8B,kBAAkBC,UAAhD,yEAA8DL,UAAU,GAAG,CAA3E;AACD;;AAED,SAAO,EACL,GAAGvB,KADE;AAELC,IAAAA,YAFK;AAGLW,IAAAA,YAHK;AAIL;AACAV,IAAAA,IALK;AAML;AACAqB,IAAAA,UAPK;AAQL;AACApB,IAAAA,OATK;AAUL;AACAsB,IAAAA,aAXK;AAYLrB,IAAAA,IAZK;AAaLC,IAAAA,OAbK;AAcLC,IAAAA,gBAdK;AAeLE,IAAAA,uBAfK;AAgBLC,IAAAA,KAhBK;AAiBLC,IAAAA,sBAjBK;AAkBLC,IAAAA,aAlBK;AAmBLE,IAAAA,WAnBK;AAoBLE,IAAAA,KApBK;AAqBLE,IAAAA;AArBK,GAAP;AAuBD","sourcesContent":["import React from \"react\";\n\nimport type { TCarouselProps } from \"../types\";\nimport { computedFillDataWithAutoFillData } from \"../utils/computedWithAutoFillData\";\n\ntype TGetRequiredProps<P extends keyof TCarouselProps> = Record<\nP,\nRequired<TCarouselProps>[P]\n>;\n\nexport type TInitializeCarouselProps<T> = TCarouselProps<T> &\nTGetRequiredProps<\n| \"defaultIndex\"\n| \"loop\"\n| \"width\"\n| \"height\"\n| \"scrollAnimationDuration\"\n| \"autoPlayInterval\"\n| \"autoFillData\"\n> & {\n // Raw data that has not been processed\n rawData: T[]\n dataLength: number\n rawDataLength: number\n};\n\nexport function useInitProps<T>(\n props: TCarouselProps<T>,\n): TInitializeCarouselProps<T> {\n const {\n defaultIndex = 0,\n data: rawData = [],\n loop = true,\n enabled = true,\n autoPlayInterval: _autoPlayInterval = 1000,\n scrollAnimationDuration = 500,\n style = {},\n panGestureHandlerProps = {},\n pagingEnabled = true,\n autoFillData = true,\n snapEnabled = props.enableSnap ?? true,\n width: _width,\n height: _height,\n } = props;\n\n const width = Math.round(_width || 0);\n const height = Math.round(_height || 0);\n const autoPlayInterval = Math.max(_autoPlayInterval, 0);\n\n const data = React.useMemo<T[]>(\n () => {\n return computedFillDataWithAutoFillData<T>({\n loop,\n autoFillData,\n data: rawData,\n dataLength: rawData.length,\n });\n },\n [rawData, loop, autoFillData],\n );\n\n const dataLength = data.length;\n const rawDataLength = rawData.length;\n\n if (props.mode === \"vertical-stack\" || props.mode === \"horizontal-stack\") {\n if (!props.modeConfig)\n props.modeConfig = {};\n\n props.modeConfig.showLength = props.modeConfig?.showLength ?? dataLength - 1;\n }\n\n return {\n ...props,\n defaultIndex,\n autoFillData,\n // Fill data with autoFillData\n data,\n // Length of fill data\n dataLength,\n // Raw data that has not been processed\n rawData,\n // Length of raw data\n rawDataLength,\n loop,\n enabled,\n autoPlayInterval,\n scrollAnimationDuration,\n style,\n panGestureHandlerProps,\n pagingEnabled,\n snapEnabled,\n width,\n height,\n };\n}\n"]}
|
|
@@ -5,14 +5,15 @@ export const useOffsetX = (opts, visibleRanges) => {
|
|
|
5
5
|
index,
|
|
6
6
|
size,
|
|
7
7
|
loop,
|
|
8
|
-
|
|
8
|
+
dataLength,
|
|
9
9
|
type = "positive",
|
|
10
|
-
viewCount
|
|
10
|
+
viewCount: _viewCount
|
|
11
11
|
} = opts;
|
|
12
|
-
const ITEM_LENGTH =
|
|
12
|
+
const ITEM_LENGTH = dataLength;
|
|
13
13
|
const VALID_LENGTH = ITEM_LENGTH - 1;
|
|
14
14
|
const TOTAL_WIDTH = size * ITEM_LENGTH;
|
|
15
15
|
const HALF_WIDTH = 0.5 * size;
|
|
16
|
+
const viewCount = _viewCount !== null && _viewCount !== void 0 ? _viewCount : Math.round((ITEM_LENGTH - 1) / 2);
|
|
16
17
|
const positiveCount = type === "positive" ? viewCount : VALID_LENGTH - viewCount;
|
|
17
18
|
let startPos = size * index;
|
|
18
19
|
if (index > positiveCount) startPos = (index - ITEM_LENGTH) * size;
|
|
@@ -32,7 +33,7 @@ export const useOffsetX = (opts, visibleRanges) => {
|
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
return handlerOffset.value + size * index;
|
|
35
|
-
}, [loop,
|
|
36
|
+
}, [loop, dataLength, viewCount, type, size, visibleRanges]);
|
|
36
37
|
return x;
|
|
37
38
|
};
|
|
38
39
|
//# sourceMappingURL=useOffsetX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOffsetX.ts"],"names":["Extrapolate","interpolate","useDerivedValue","useOffsetX","opts","visibleRanges","handlerOffset","index","size","loop","
|
|
1
|
+
{"version":3,"sources":["useOffsetX.ts"],"names":["Extrapolate","interpolate","useDerivedValue","useOffsetX","opts","visibleRanges","handlerOffset","index","size","loop","dataLength","type","viewCount","_viewCount","ITEM_LENGTH","VALID_LENGTH","TOTAL_WIDTH","HALF_WIDTH","Math","round","positiveCount","startPos","MAX","MIN","x","negativeRange","positiveRange","value","Number","MAX_SAFE_INTEGER","inputRange","MIN_VALUE","outputRange","CLAMP"],"mappings":"AACA,SACEA,WADF,EAEEC,WAFF,EAGEC,eAHF,QAIO,yBAJP;AAkBA,OAAO,MAAMC,UAAU,GAAG,CAACC,IAAD,EAAcC,aAAd,KAAgD;AACxE,QAAM;AACJC,IAAAA,aADI;AAEJC,IAAAA,KAFI;AAGJC,IAAAA,IAHI;AAIJC,IAAAA,IAJI;AAKJC,IAAAA,UALI;AAMJC,IAAAA,IAAI,GAAG,UANH;AAOJC,IAAAA,SAAS,EAAEC;AAPP,MAQFT,IARJ;AAUA,QAAMU,WAAW,GAAGJ,UAApB;AACA,QAAMK,YAAY,GAAGD,WAAW,GAAG,CAAnC;AACA,QAAME,WAAW,GAAGR,IAAI,GAAGM,WAA3B;AACA,QAAMG,UAAU,GAAG,MAAMT,IAAzB;AAEA,QAAMI,SAAS,GAAGC,UAAH,aAAGA,UAAH,cAAGA,UAAH,GAAiBK,IAAI,CAACC,KAAL,CAAW,CAACL,WAAW,GAAG,CAAf,IAAoB,CAA/B,CAAhC;AACA,QAAMM,aAAa,GACXT,IAAI,KAAK,UAAT,GAAsBC,SAAtB,GAAkCG,YAAY,GAAGH,SADzD;AAGA,MAAIS,QAAQ,GAAGb,IAAI,GAAGD,KAAtB;AACA,MAAIA,KAAK,GAAGa,aAAZ,EACEC,QAAQ,GAAG,CAACd,KAAK,GAAGO,WAAT,IAAwBN,IAAnC;AAEF,QAAMc,GAAG,GAAGF,aAAa,GAAGZ,IAA5B;AACA,QAAMe,GAAG,GAAG,EAAE,CAACR,YAAY,GAAGK,aAAhB,IAAiCZ,IAAnC,CAAZ;AAEA,QAAMgB,CAAC,GAAGtB,eAAe,CAAC,MAAM;AAC9B,UAAM;AAAEuB,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAmCrB,aAAa,CAACsB,KAAvD;AACA,QACE,CAACpB,KAAK,GAAGkB,aAAa,CAAC,CAAD,CAArB,IAA4BlB,KAAK,GAAGkB,aAAa,CAAC,CAAD,CAAlD,MACUlB,KAAK,GAAGmB,aAAa,CAAC,CAAD,CAArB,IAA4BnB,KAAK,GAAGmB,aAAa,CAAC,CAAD,CAD3D,CADF,EAIE,OAAOE,MAAM,CAACC,gBAAd;;AAEF,QAAIpB,IAAJ,EAAU;AACR,YAAMqB,UAAU,GAAG,CACjB,CAACd,WADgB,EAEjBO,GAAG,GAAGN,UAAN,GAAmBI,QAAnB,GAA8BO,MAAM,CAACG,SAFpB,EAGjBR,GAAG,GAAGN,UAAN,GAAmBI,QAHF,EAIjB,CAJiB,EAKjBC,GAAG,GAAGL,UAAN,GAAmBI,QALF,EAMjBC,GAAG,GAAGL,UAAN,GAAmBI,QAAnB,GAA8BO,MAAM,CAACG,SANpB,EAOjBf,WAPiB,CAAnB;AAUA,YAAMgB,WAAW,GAAG,CAClBX,QADkB,EAElBC,GAAG,GAAGL,UAAN,GAAmBW,MAAM,CAACG,SAFR,EAGlBR,GAAG,GAAGN,UAHY,EAIlBI,QAJkB,EAKlBC,GAAG,GAAGL,UALY,EAMlBM,GAAG,GAAGN,UAAN,GAAmBW,MAAM,CAACG,SANR,EAOlBV,QAPkB,CAApB;AAUA,aAAOpB,WAAW,CAChBK,aAAa,CAACqB,KADE,EAEhBG,UAFgB,EAGhBE,WAHgB,EAIhBhC,WAAW,CAACiC,KAJI,CAAlB;AAMD;;AAED,WAAO3B,aAAa,CAACqB,KAAd,GAAsBnB,IAAI,GAAGD,KAApC;AACD,GAtCwB,EAsCtB,CAACE,IAAD,EAAOC,UAAP,EAAmBE,SAAnB,EAA8BD,IAA9B,EAAoCH,IAApC,EAA0CH,aAA1C,CAtCsB,CAAzB;AAwCA,SAAOmB,CAAP;AACD,CApEM","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport {\n Extrapolate,\n interpolate,\n useDerivedValue,\n} from \"react-native-reanimated\";\n\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\nexport interface IOpts {\n index: number\n size: number\n handlerOffset: Animated.SharedValue<number>\n dataLength: number\n type?: \"positive\" | \"negative\"\n viewCount?: number\n loop?: boolean\n}\n\nexport const useOffsetX = (opts: IOpts, visibleRanges: IVisibleRanges) => {\n const {\n handlerOffset,\n index,\n size,\n loop,\n dataLength,\n type = \"positive\",\n viewCount: _viewCount,\n } = opts;\n\n const ITEM_LENGTH = dataLength;\n const VALID_LENGTH = ITEM_LENGTH - 1;\n const TOTAL_WIDTH = size * ITEM_LENGTH;\n const HALF_WIDTH = 0.5 * size;\n\n const viewCount = _viewCount ?? Math.round((ITEM_LENGTH - 1) / 2);\n const positiveCount\n = type === \"positive\" ? viewCount : VALID_LENGTH - viewCount;\n\n let startPos = size * index;\n if (index > positiveCount)\n startPos = (index - ITEM_LENGTH) * size;\n\n const MAX = positiveCount * size;\n const MIN = -((VALID_LENGTH - positiveCount) * size);\n\n const x = useDerivedValue(() => {\n const { negativeRange, positiveRange } = visibleRanges.value;\n if (\n (index < negativeRange[0] || index > negativeRange[1])\n && (index < positiveRange[0] || index > positiveRange[1])\n )\n return Number.MAX_SAFE_INTEGER;\n\n if (loop) {\n const inputRange = [\n -TOTAL_WIDTH,\n MIN - HALF_WIDTH - startPos - Number.MIN_VALUE,\n MIN - HALF_WIDTH - startPos,\n 0,\n MAX + HALF_WIDTH - startPos,\n MAX + HALF_WIDTH - startPos + Number.MIN_VALUE,\n TOTAL_WIDTH,\n ];\n\n const outputRange = [\n startPos,\n MAX + HALF_WIDTH - Number.MIN_VALUE,\n MIN - HALF_WIDTH,\n startPos,\n MAX + HALF_WIDTH,\n MIN - HALF_WIDTH + Number.MIN_VALUE,\n startPos,\n ];\n\n return interpolate(\n handlerOffset.value,\n inputRange,\n outputRange,\n Extrapolate.CLAMP,\n );\n }\n\n return handlerOffset.value + size * index;\n }, [loop, dataLength, viewCount, type, size, visibleRanges]);\n\n return x;\n};\n"]}
|
|
@@ -5,11 +5,10 @@ export function useOnProgressChange(opts) {
|
|
|
5
5
|
autoFillData,
|
|
6
6
|
loop,
|
|
7
7
|
offsetX,
|
|
8
|
-
rawData,
|
|
9
8
|
size,
|
|
9
|
+
rawDataLength,
|
|
10
10
|
onProgressChange
|
|
11
11
|
} = opts;
|
|
12
|
-
const rawDataLength = rawData.length;
|
|
13
12
|
useAnimatedReaction(() => offsetX.value, _value => {
|
|
14
13
|
let value = computedOffsetXValueWithAutoFillData({
|
|
15
14
|
value: _value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnProgressChange.ts"],"names":["runOnJS","useAnimatedReaction","computedOffsetXValueWithAutoFillData","useOnProgressChange","opts","autoFillData","loop","offsetX","
|
|
1
|
+
{"version":3,"sources":["useOnProgressChange.ts"],"names":["runOnJS","useAnimatedReaction","computedOffsetXValueWithAutoFillData","useOnProgressChange","opts","autoFillData","loop","offsetX","size","rawDataLength","onProgressChange","value","_value","Math","max","min","absoluteProgress","abs"],"mappings":"AACA,SACEA,OADF,EAEEC,mBAFF,QAGO,yBAHP;AAMA,SAASC,oCAAT,QAAqD,mCAArD;AAEA,OAAO,SAASC,mBAAT,CACLC,IADK,EAQL;AACA,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,IAAhB;AAAsBC,IAAAA,OAAtB;AAA+BC,IAAAA,IAA/B;AAAqCC,IAAAA,aAArC;AAAoDC,IAAAA;AAApD,MACEN,IADR;AAGAH,EAAAA,mBAAmB,CACjB,MAAMM,OAAO,CAACI,KADG,EAEhBC,MAAD,IAAY;AACV,QAAID,KAAK,GAAGT,oCAAoC,CAAC;AAC/CS,MAAAA,KAAK,EAAEC,MADwC;AAE/CH,MAAAA,aAF+C;AAG/CD,MAAAA,IAH+C;AAI/CH,MAAAA,YAJ+C;AAK/CC,MAAAA;AAL+C,KAAD,CAAhD;;AAQA,QAAI,CAACA,IAAL,EAAW;AACTK,MAAAA,KAAK,GAAGE,IAAI,CAACC,GAAL,CACN,EAAE,CAACL,aAAa,GAAG,CAAjB,IAAsBD,IAAxB,CADM,EAENK,IAAI,CAACE,GAAL,CAASJ,KAAT,EAAgB,CAAhB,CAFM,CAAR;AAID;;AAED,QAAIK,gBAAgB,GAAGH,IAAI,CAACI,GAAL,CAASN,KAAK,GAAGH,IAAjB,CAAvB;AAEA,QAAIG,KAAK,GAAG,CAAZ,EACEK,gBAAgB,GAAGP,aAAa,GAAGO,gBAAnC;AAEF,QAAIN,gBAAJ,EACEV,OAAO,CAACU,gBAAD,CAAP,CAA0BC,KAA1B,EAAiCK,gBAAjC;AACH,GAzBgB,EA0BjB,CAACV,IAAD,EAAOD,YAAP,EAAqBI,aAArB,EAAoCC,gBAApC,CA1BiB,CAAnB;AA4BD","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport {\n runOnJS,\n useAnimatedReaction,\n} from \"react-native-reanimated\";\n\nimport type { TCarouselProps } from \"../types\";\nimport { computedOffsetXValueWithAutoFillData } from \"../utils/computedWithAutoFillData\";\n\nexport function useOnProgressChange(\n opts: {\n size: number\n autoFillData: boolean\n loop: boolean\n offsetX: Animated.SharedValue<number>\n rawDataLength: number\n } & Pick<TCarouselProps, \"onProgressChange\">,\n) {\n const { autoFillData, loop, offsetX, size, rawDataLength, onProgressChange }\n = opts;\n\n useAnimatedReaction(\n () => offsetX.value,\n (_value) => {\n let value = computedOffsetXValueWithAutoFillData({\n value: _value,\n rawDataLength,\n size,\n autoFillData,\n loop,\n });\n\n if (!loop) {\n value = Math.max(\n -((rawDataLength - 1) * size),\n Math.min(value, 0),\n );\n }\n\n let absoluteProgress = Math.abs(value / size);\n\n if (value > 0)\n absoluteProgress = rawDataLength - absoluteProgress;\n\n if (onProgressChange)\n runOnJS(onProgressChange)(value, absoluteProgress);\n },\n [loop, autoFillData, rawDataLength, onProgressChange],\n );\n}\n"]}
|
|
@@ -3,9 +3,8 @@ export function usePropsErrorBoundary(props) {
|
|
|
3
3
|
React.useEffect(() => {
|
|
4
4
|
const {
|
|
5
5
|
defaultIndex,
|
|
6
|
-
|
|
6
|
+
dataLength: viewCount
|
|
7
7
|
} = props;
|
|
8
|
-
const viewCount = data.length;
|
|
9
8
|
|
|
10
9
|
if (typeof defaultIndex === "number" && viewCount > 0) {
|
|
11
10
|
if (defaultIndex < 0 || defaultIndex >= viewCount) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePropsErrorBoundary.ts"],"names":["React","usePropsErrorBoundary","props","useEffect","defaultIndex","
|
|
1
|
+
{"version":3,"sources":["usePropsErrorBoundary.ts"],"names":["React","usePropsErrorBoundary","props","useEffect","defaultIndex","dataLength","viewCount","Error","mode","vertical","width","height"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAIA,OAAO,SAASC,qBAAT,CAA+BC,KAA/B,EAA+E;AACpFF,EAAAA,KAAK,CAACG,SAAN,CAAgB,MAAM;AACpB,UAAM;AAAEC,MAAAA,YAAF;AAAgBC,MAAAA,UAAU,EAAEC;AAA5B,QAA0CJ,KAAhD;;AAEA,QAAI,OAAOE,YAAP,KAAwB,QAAxB,IAAoCE,SAAS,GAAG,CAApD,EAAuD;AACrD,UAAIF,YAAY,GAAG,CAAf,IAAoBA,YAAY,IAAIE,SAAxC,EAAmD;AACjD,cAAM,IAAIC,KAAJ,CACJ,mDADI,CAAN;AAGD;AACF,KATmB,CAWpB;;;AACA,QAAI,CAACL,KAAK,CAACM,IAAP,IAAeN,KAAK,CAACM,IAAN,KAAe,UAAlC,EAA8C;AAC5C,UAAI,CAACN,KAAK,CAACO,QAAP,IAAmB,CAACP,KAAK,CAACQ,KAA9B,EAAqC;AACnC,cAAM,IAAIH,KAAJ,CACJ,qDADI,CAAN;AAGD;;AACD,UAAIL,KAAK,CAACO,QAAN,IAAkB,CAACP,KAAK,CAACS,MAA7B,EAAqC;AACnC,cAAM,IAAIJ,KAAJ,CACJ,oDADI,CAAN;AAGD;AACF;AACF,GAxBD,EAwBG,CAACL,KAAD,CAxBH;AAyBD","sourcesContent":["import React from \"react\";\n\nimport type { TCarouselProps } from \"../types\";\n\nexport function usePropsErrorBoundary(props: TCarouselProps & { dataLength: number }) {\n React.useEffect(() => {\n const { defaultIndex, dataLength: viewCount } = props;\n\n if (typeof defaultIndex === \"number\" && viewCount > 0) {\n if (defaultIndex < 0 || defaultIndex >= viewCount) {\n throw new Error(\n \"DefaultIndex must be in the range of data length.\",\n );\n }\n }\n\n // TODO\n if (!props.mode || props.mode === \"parallax\") {\n if (!props.vertical && !props.width) {\n throw new Error(\n \"`width` must be specified for horizontal carousels.\",\n );\n }\n if (props.vertical && !props.height) {\n throw new Error(\n \"`height` must be specified for vertical carousels.\",\n );\n }\n }\n }, [props]);\n}\n"]}
|
|
@@ -17,7 +17,7 @@ export const BaseLayout = props => {
|
|
|
17
17
|
const {
|
|
18
18
|
props: {
|
|
19
19
|
loop,
|
|
20
|
-
|
|
20
|
+
dataLength,
|
|
21
21
|
width,
|
|
22
22
|
height,
|
|
23
23
|
vertical,
|
|
@@ -32,7 +32,7 @@ export const BaseLayout = props => {
|
|
|
32
32
|
handlerOffset,
|
|
33
33
|
index,
|
|
34
34
|
size,
|
|
35
|
-
|
|
35
|
+
dataLength,
|
|
36
36
|
loop,
|
|
37
37
|
...(typeof customConfig === "function" ? customConfig() : {})
|
|
38
38
|
};
|
|
@@ -46,7 +46,7 @@ export const BaseLayout = props => {
|
|
|
46
46
|
handlerOffset,
|
|
47
47
|
index,
|
|
48
48
|
size,
|
|
49
|
-
|
|
49
|
+
dataLength,
|
|
50
50
|
loop,
|
|
51
51
|
type: snapDirection === "right" ? "negative" : "positive",
|
|
52
52
|
viewCount: showLength
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BaseLayout.tsx"],"names":["React","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useCheckMounted","useOffsetX","LazyView","CTX","BaseLayout","props","mounted","handlerOffset","index","children","visibleRanges","animationStyle","context","useContext","loop","
|
|
1
|
+
{"version":3,"sources":["BaseLayout.tsx"],"names":["React","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useCheckMounted","useOffsetX","LazyView","CTX","BaseLayout","props","mounted","handlerOffset","index","children","visibleRanges","animationStyle","context","useContext","loop","dataLength","width","height","vertical","customConfig","mode","modeConfig","size","shouldUpdate","setShouldUpdate","useState","offsetXConfig","snapDirection","showLength","type","viewCount","x","animationValue","value","animatedStyle","updateView","useCallback","negativeRange","positiveRange","current","position"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,OAAOC,QAAP,IACEC,OADF,EAEEC,mBAFF,EAGEC,gBAHF,EAIEC,eAJF,QAKO,yBALP;AASA,SAASC,eAAT,QAAgC,0BAAhC;AAEA,SAASC,UAAT,QAA2B,qBAA3B;AAEA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,GAAT,QAAoB,UAApB;AAIA,OAAO,MAAMC,UAQX,GAAIC,KAAD,IAAW;AACd,QAAMC,OAAO,GAAGN,eAAe,EAA/B;AACA,QAAM;AAAEO,IAAAA,aAAF;AAAiBC,IAAAA,KAAjB;AAAwBC,IAAAA,QAAxB;AAAkCC,IAAAA,aAAlC;AAAiDC,IAAAA;AAAjD,MACEN,KADR;AAGA,QAAMO,OAAO,GAAGlB,KAAK,CAACmB,UAAN,CAAiBV,GAAjB,CAAhB;AACA,QAAM;AACJE,IAAAA,KAAK,EAAE;AACLS,MAAAA,IADK;AAELC,MAAAA,UAFK;AAGLC,MAAAA,KAHK;AAILC,MAAAA,MAJK;AAKLC,MAAAA,QALK;AAMLC,MAAAA,YANK;AAOLC,MAAAA,IAPK;AAQLC,MAAAA;AARK;AADH,MAWFT,OAXJ;AAYA,QAAMU,IAAI,GAAGJ,QAAQ,GAAGD,MAAH,GAAYD,KAAjC;AACA,QAAM,CAACO,YAAD,EAAeC,eAAf,IAAkC9B,KAAK,CAAC+B,QAAN,CAAe,KAAf,CAAxC;AACA,MAAIC,aAAoB,GAAG;AACzBnB,IAAAA,aADyB;AAEzBC,IAAAA,KAFyB;AAGzBc,IAAAA,IAHyB;AAIzBP,IAAAA,UAJyB;AAKzBD,IAAAA,IALyB;AAMzB,QAAI,OAAOK,YAAP,KAAwB,UAAxB,GAAqCA,YAAY,EAAjD,GAAsD,EAA1D;AANyB,GAA3B;;AASA,MAAIC,IAAI,KAAK,kBAAb,EAAiC;AAC/B,UAAM;AAAEO,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAgCP,UAAtC;AAEAK,IAAAA,aAAa,GAAG;AACdnB,MAAAA,aADc;AAEdC,MAAAA,KAFc;AAGdc,MAAAA,IAHc;AAIdP,MAAAA,UAJc;AAKdD,MAAAA,IALc;AAMde,MAAAA,IAAI,EAAEF,aAAa,KAAK,OAAlB,GAA4B,UAA5B,GAAyC,UANjC;AAOdG,MAAAA,SAAS,EAAEF;AAPG,KAAhB;AASD;;AAED,QAAMG,CAAC,GAAG9B,UAAU,CAACyB,aAAD,EAAgBhB,aAAhB,CAApB;AACA,QAAMsB,cAAc,GAAGjC,eAAe,CAAC,MAAMgC,CAAC,CAACE,KAAF,GAAUX,IAAjB,EAAuB,CAACS,CAAD,EAAIT,IAAJ,CAAvB,CAAtC;AACA,QAAMY,aAAa,GAAGpC,gBAAgB,CACpC,MAAMa,cAAc,CAACoB,CAAC,CAACE,KAAF,GAAUX,IAAX,CADgB,EAEpC,CAACX,cAAD,CAFoC,CAAtC;AAKA,QAAMwB,UAAU,GAAGzC,KAAK,CAAC0C,WAAN,CACjB,CAACC,aAAD,EAA0BC,aAA1B,KAAsD;AACpDhC,IAAAA,OAAO,CAACiC,OAAR,IACaf,eAAe,CACfhB,KAAK,IAAI6B,aAAa,CAAC,CAAD,CAAtB,IAA6B7B,KAAK,IAAI6B,aAAa,CAAC,CAAD,CAApD,IACU7B,KAAK,IAAI8B,aAAa,CAAC,CAAD,CAAtB,IAA6B9B,KAAK,IAAI8B,aAAa,CAAC,CAAD,CAF7C,CAD5B;AAKD,GAPgB,EAQjB,CAAC9B,KAAD,EAAQF,OAAR,CARiB,CAAnB;AAWAT,EAAAA,mBAAmB,CACjB,MAAMa,aAAa,CAACuB,KADH,EAEjB,MAAM;AACJrC,IAAAA,OAAO,CAACuC,UAAD,CAAP,CACEzB,aAAa,CAACuB,KAAd,CAAoBI,aADtB,EAEE3B,aAAa,CAACuB,KAAd,CAAoBK,aAFtB;AAID,GAPgB,EAQjB,CAAC5B,aAAa,CAACuB,KAAf,CARiB,CAAnB;AAWA,sBACE,oBAAC,QAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACL;AACEjB,MAAAA,KAAK,EAAEA,KAAK,IAAI,MADlB;AAEEC,MAAAA,MAAM,EAAEA,MAAM,IAAI,MAFpB;AAGEuB,MAAAA,QAAQ,EAAE;AAHZ,KADK,EAMLN,aANK;AADT,kBAUE,oBAAC,QAAD;AAAU,IAAA,YAAY,EAAEX;AAAxB,KACGd,QAAQ,CAAC;AAAEuB,IAAAA;AAAF,GAAD,CADX,CAVF,CADF;AAgBD,CAhGM","sourcesContent":["import React from \"react\";\nimport type { ViewStyle } from \"react-native\";\nimport type { AnimatedStyleProp } from \"react-native-reanimated\";\nimport Animated, {\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n useDerivedValue,\n} from \"react-native-reanimated\";\n\nimport type { ILayoutConfig } from \"./stack\";\n\nimport { useCheckMounted } from \"../hooks/useCheckMounted\";\nimport type { IOpts } from \"../hooks/useOffsetX\";\nimport { useOffsetX } from \"../hooks/useOffsetX\";\nimport type { IVisibleRanges } from \"../hooks/useVisibleRanges\";\nimport { LazyView } from \"../LazyView\";\nimport { CTX } from \"../store\";\n\nexport type TAnimationStyle = (value: number) => AnimatedStyleProp<ViewStyle>;\n\nexport const BaseLayout: React.FC<{\n index: number\n handlerOffset: Animated.SharedValue<number>\n visibleRanges: IVisibleRanges\n animationStyle: TAnimationStyle\n children: (ctx: {\n animationValue: Animated.SharedValue<number>\n }) => React.ReactElement\n}> = (props) => {\n const mounted = useCheckMounted();\n const { handlerOffset, index, children, visibleRanges, animationStyle }\n = props;\n\n const context = React.useContext(CTX);\n const {\n props: {\n loop,\n dataLength,\n width,\n height,\n vertical,\n customConfig,\n mode,\n modeConfig,\n },\n } = context;\n const size = vertical ? height : width;\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n let offsetXConfig: IOpts = {\n handlerOffset,\n index,\n size,\n dataLength,\n loop,\n ...(typeof customConfig === \"function\" ? customConfig() : {}),\n };\n\n if (mode === \"horizontal-stack\") {\n const { snapDirection, showLength } = modeConfig as ILayoutConfig;\n\n offsetXConfig = {\n handlerOffset,\n index,\n size,\n dataLength,\n loop,\n type: snapDirection === \"right\" ? \"negative\" : \"positive\",\n viewCount: showLength,\n };\n }\n\n const x = useOffsetX(offsetXConfig, visibleRanges);\n const animationValue = useDerivedValue(() => x.value / size, [x, size]);\n const animatedStyle = useAnimatedStyle(\n () => animationStyle(x.value / size),\n [animationStyle],\n );\n\n const updateView = React.useCallback(\n (negativeRange: number[], positiveRange: number[]) => {\n mounted.current\n && setShouldUpdate(\n (index >= negativeRange[0] && index <= negativeRange[1])\n || (index >= positiveRange[0] && index <= positiveRange[1]),\n );\n },\n [index, mounted],\n );\n\n useAnimatedReaction(\n () => visibleRanges.value,\n () => {\n runOnJS(updateView)(\n visibleRanges.value.negativeRange,\n visibleRanges.value.positiveRange,\n );\n },\n [visibleRanges.value],\n );\n\n return (\n <Animated.View\n style={[\n {\n width: width || \"100%\",\n height: height || \"100%\",\n position: \"absolute\",\n },\n animatedStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>\n {children({ animationValue })}\n </LazyView>\n </Animated.View>\n );\n};\n"]}
|
|
@@ -12,7 +12,7 @@ export const ParallaxLayout = props => {
|
|
|
12
12
|
width,
|
|
13
13
|
height,
|
|
14
14
|
loop,
|
|
15
|
-
|
|
15
|
+
dataLength,
|
|
16
16
|
children,
|
|
17
17
|
visibleRanges,
|
|
18
18
|
vertical
|
|
@@ -23,7 +23,7 @@ export const ParallaxLayout = props => {
|
|
|
23
23
|
handlerOffset,
|
|
24
24
|
index,
|
|
25
25
|
size,
|
|
26
|
-
|
|
26
|
+
dataLength,
|
|
27
27
|
loop
|
|
28
28
|
}, visibleRanges);
|
|
29
29
|
const offsetXStyle = useAnimatedStyle(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ParallaxLayout.tsx"],"names":["React","Animated","Extrapolate","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useOffsetX","LazyView","ParallaxLayout","props","handlerOffset","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","index","width","height","loop","
|
|
1
|
+
{"version":3,"sources":["ParallaxLayout.tsx"],"names":["React","Animated","Extrapolate","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useOffsetX","LazyView","ParallaxLayout","props","handlerOffset","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","index","width","height","loop","dataLength","children","visibleRanges","vertical","shouldUpdate","setShouldUpdate","useState","size","x","offsetXStyle","value","translate","EXTEND","zIndex","CLAMP","scale","transform","translateY","translateX","updateView","useCallback","negativeRange","positiveRange","position"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,QAAP,IACEC,WADF,EAEEC,WAFF,EAGEC,OAHF,EAIEC,mBAJF,EAKEC,gBALF,QAMO,yBANP;AAUA,SAASC,UAAT,QAA2B,qBAA3B;AAEA,SAASC,QAAT,QAAyB,aAAzB;AAGA,OAAO,MAAMC,cAUZ,GAAIC,KAAD,IAAW;AACb,QAAM;AACJC,IAAAA,aADI;AAEJC,IAAAA,uBAAuB,GAAG,GAFtB;AAGJC,IAAAA,sBAAsB,GAAG,GAHrB;AAIJC,IAAAA,yBAAyB,GAAGD,sBAAsB,IAAI,CAJlD;AAKJE,IAAAA,KALI;AAMJC,IAAAA,KANI;AAOJC,IAAAA,MAPI;AAQJC,IAAAA,IARI;AASJC,IAAAA,UATI;AAUJC,IAAAA,QAVI;AAWJC,IAAAA,aAXI;AAYJC,IAAAA;AAZI,MAaFZ,KAbJ;AAeA,QAAM,CAACa,YAAD,EAAeC,eAAf,IAAkCxB,KAAK,CAACyB,QAAN,CAAe,KAAf,CAAxC;AAEA,QAAMC,IAAI,GAAGhB,KAAK,CAACY,QAAN,GAAiBZ,KAAK,CAACO,MAAvB,GAAgCP,KAAK,CAACM,KAAnD;AAEA,QAAMW,CAAC,GAAGpB,UAAU,CAClB;AACEI,IAAAA,aADF;AAEEI,IAAAA,KAFF;AAGEW,IAAAA,IAHF;AAIEP,IAAAA,UAJF;AAKED,IAAAA;AALF,GADkB,EAQlBG,aARkB,CAApB;AAWA,QAAMO,YAAY,GAAGtB,gBAAgB,CAAC,MAAM;AAC1C,UAAMuB,KAAK,GAAGF,CAAC,CAACE,KAAF,GAAUH,IAAxB;AAEA,UAAMI,SAAS,GAAG3B,WAAW,CAC3B0B,KAD2B,EAE3B,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAF2B,EAG3B,CACE,CAACH,IAAD,GAAQd,uBADV,EAEE,CAFF,EAGEc,IAAI,GAAGd,uBAHT,CAH2B,EAQ3BV,WAAW,CAAC6B,MARe,CAA7B;AAWA,UAAMC,MAAM,GAAG7B,WAAW,CACxB0B,KADwB,EAExB,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFwB,EAGxB,CAAC,CAAD,EAAIH,IAAJ,EAAU,CAAV,CAHwB,EAIxBxB,WAAW,CAAC+B,KAJY,CAA1B;AAOA,UAAMC,KAAK,GAAG/B,WAAW,CACvB0B,KADuB,EAEvB,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFuB,EAGvB,CACEf,yBADF,EAEED,sBAFF,EAGEC,yBAHF,CAHuB,EAQvBZ,WAAW,CAAC+B,KARW,CAAzB;AAWA,WAAO;AACLE,MAAAA,SAAS,EAAE,CACTb,QAAQ,GACJ;AACAc,QAAAA,UAAU,EAAEN;AADZ,OADI,GAIJ;AACAO,QAAAA,UAAU,EAAEP;AADZ,OALK,EAQT;AACEI,QAAAA;AADF,OARS,CADN;AAaLF,MAAAA;AAbK,KAAP;AAeD,GA/CoC,EA+ClC,CAACd,IAAD,EAAOI,QAAP,EAAiBV,uBAAjB,CA/CkC,CAArC;AAiDA,QAAM0B,UAAU,GAAGtC,KAAK,CAACuC,WAAN,CACjB,CAACC,aAAD,EAA0BC,aAA1B,KAAsD;AACpDjB,IAAAA,eAAe,CACZT,KAAK,IAAIyB,aAAa,CAAC,CAAD,CAAtB,IAA6BzB,KAAK,IAAIyB,aAAa,CAAC,CAAD,CAApD,IACgBzB,KAAK,IAAI0B,aAAa,CAAC,CAAD,CAAtB,IAA6B1B,KAAK,IAAI0B,aAAa,CAAC,CAAD,CAFtD,CAAf;AAID,GANgB,EAOjB,CAAC1B,KAAD,CAPiB,CAAnB;AAUAV,EAAAA,mBAAmB,CACjB,MAAMgB,aAAa,CAACQ,KADH,EAEjB,MAAM;AACJzB,IAAAA,OAAO,CAACkC,UAAD,CAAP,CACEjB,aAAa,CAACQ,KAAd,CAAoBW,aADtB,EAEEnB,aAAa,CAACQ,KAAd,CAAoBY,aAFtB;AAID,GAPgB,EAQjB,CAACpB,aAAa,CAACQ,KAAf,CARiB,CAAnB;AAWA,sBACE,oBAAC,QAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACL;AACEb,MAAAA,KAAK,EAAEA,KAAK,IAAI,MADlB;AAEEC,MAAAA,MAAM,EAAEA,MAAM,IAAI,MAFpB;AAGEyB,MAAAA,QAAQ,EAAE;AAHZ,KADK,EAMLd,YANK;AADT,kBAUE,oBAAC,QAAD;AAAU,IAAA,YAAY,EAAEL;AAAxB,KAAuCH,QAAvC,CAVF,CADF;AAcD,CA7HM","sourcesContent":["import React from \"react\";\nimport Animated, {\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\n\nimport type { ILayoutConfig } from \"./parallax\";\n\nimport { useOffsetX } from \"../hooks/useOffsetX\";\nimport type { IVisibleRanges } from \"../hooks/useVisibleRanges\";\nimport { LazyView } from \"../LazyView\";\nimport type { IComputedDirectionTypes } from \"../types\";\n\nexport const ParallaxLayout: React.FC<\nIComputedDirectionTypes<\n{\n loop?: boolean\n handlerOffset: Animated.SharedValue<number>\n index: number\n dataLength: number\n visibleRanges: IVisibleRanges\n} & ILayoutConfig\n>\n> = (props) => {\n const {\n handlerOffset,\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = parallaxScrollingScale ** 2,\n index,\n width,\n height,\n loop,\n dataLength,\n children,\n visibleRanges,\n vertical,\n } = props;\n\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n\n const size = props.vertical ? props.height : props.width;\n\n const x = useOffsetX(\n {\n handlerOffset,\n index,\n size,\n dataLength,\n loop,\n },\n visibleRanges,\n );\n\n const offsetXStyle = useAnimatedStyle(() => {\n const value = x.value / size;\n\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [\n -size + parallaxScrollingOffset,\n 0,\n size - parallaxScrollingOffset,\n ],\n Extrapolate.EXTEND,\n );\n\n const zIndex = interpolate(\n value,\n [-1, 0, 1],\n [0, size, 0],\n Extrapolate.CLAMP,\n );\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [\n parallaxAdjacentItemScale,\n parallaxScrollingScale,\n parallaxAdjacentItemScale,\n ],\n Extrapolate.CLAMP,\n );\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n zIndex,\n };\n }, [loop, vertical, parallaxScrollingOffset]);\n\n const updateView = React.useCallback(\n (negativeRange: number[], positiveRange: number[]) => {\n setShouldUpdate(\n (index >= negativeRange[0] && index <= negativeRange[1])\n || (index >= positiveRange[0] && index <= positiveRange[1]),\n );\n },\n [index],\n );\n\n useAnimatedReaction(\n () => visibleRanges.value,\n () => {\n runOnJS(updateView)(\n visibleRanges.value.negativeRange,\n visibleRanges.value.positiveRange,\n );\n },\n [visibleRanges.value],\n );\n\n return (\n <Animated.View\n style={[\n {\n width: width || \"100%\",\n height: height || \"100%\",\n position: \"absolute\",\n },\n offsetXStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>{children}</LazyView>\n </Animated.View>\n );\n};\n"]}
|
|
@@ -3,7 +3,7 @@ import type { TCarouselActionOptions, TCarouselProps } from "../types";
|
|
|
3
3
|
interface IOpts {
|
|
4
4
|
loop: boolean;
|
|
5
5
|
size: number;
|
|
6
|
-
|
|
6
|
+
dataLength: number;
|
|
7
7
|
autoFillData: TCarouselProps["autoFillData"];
|
|
8
8
|
handlerOffset: Animated.SharedValue<number>;
|
|
9
9
|
withAnimation?: TCarouselProps["withAnimation"];
|
|
@@ -2,6 +2,8 @@ import type { TCarouselProps } from "../types";
|
|
|
2
2
|
declare type TGetRequiredProps<P extends keyof TCarouselProps> = Record<P, Required<TCarouselProps>[P]>;
|
|
3
3
|
export declare type TInitializeCarouselProps<T> = TCarouselProps<T> & TGetRequiredProps<"defaultIndex" | "loop" | "width" | "height" | "scrollAnimationDuration" | "autoPlayInterval" | "autoFillData"> & {
|
|
4
4
|
rawData: T[];
|
|
5
|
+
dataLength: number;
|
|
6
|
+
rawDataLength: number;
|
|
5
7
|
};
|
|
6
8
|
export declare function useInitProps<T>(props: TCarouselProps<T>): TInitializeCarouselProps<T>;
|
|
7
9
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-reanimated-carousel",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.5",
|
|
4
4
|
"description": "Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"react-native": "src/index.tsx",
|
package/src/Carousel.tsx
CHANGED
|
@@ -23,10 +23,16 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
23
23
|
|
|
24
24
|
const {
|
|
25
25
|
testID,
|
|
26
|
-
data,
|
|
27
|
-
rawData,
|
|
28
26
|
loop,
|
|
29
27
|
autoFillData,
|
|
28
|
+
// Fill data with autoFillData
|
|
29
|
+
data,
|
|
30
|
+
// Length of fill data
|
|
31
|
+
dataLength,
|
|
32
|
+
// Raw data that has not been processed
|
|
33
|
+
rawData,
|
|
34
|
+
// Length of raw data
|
|
35
|
+
rawDataLength,
|
|
30
36
|
mode,
|
|
31
37
|
style,
|
|
32
38
|
width,
|
|
@@ -49,7 +55,6 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
49
55
|
|
|
50
56
|
const commonVariables = useCommonVariables(props);
|
|
51
57
|
const { size, handlerOffset } = commonVariables;
|
|
52
|
-
const dataLength = data.length;
|
|
53
58
|
|
|
54
59
|
const offsetX = useDerivedValue(() => {
|
|
55
60
|
const totalSize = size * dataLength;
|
|
@@ -61,20 +66,20 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
61
66
|
return isNaN(x) ? 0 : x;
|
|
62
67
|
}, [loop, size, dataLength]);
|
|
63
68
|
|
|
64
|
-
usePropsErrorBoundary(props);
|
|
69
|
+
usePropsErrorBoundary({ ...props, dataLength });
|
|
65
70
|
useOnProgressChange({
|
|
66
71
|
autoFillData,
|
|
67
72
|
loop,
|
|
68
73
|
size,
|
|
69
74
|
offsetX,
|
|
70
|
-
|
|
75
|
+
rawDataLength,
|
|
71
76
|
onProgressChange,
|
|
72
77
|
});
|
|
73
78
|
|
|
74
79
|
const carouselController = useCarouselController({
|
|
75
80
|
loop,
|
|
76
81
|
size,
|
|
77
|
-
|
|
82
|
+
dataLength,
|
|
78
83
|
autoFillData,
|
|
79
84
|
handlerOffset,
|
|
80
85
|
withAnimation,
|
|
@@ -99,7 +104,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
99
104
|
|
|
100
105
|
const realIndex = computedRealIndexWithAutoFillData({
|
|
101
106
|
index: _sharedIndex,
|
|
102
|
-
dataLength:
|
|
107
|
+
dataLength: rawDataLength,
|
|
103
108
|
loop,
|
|
104
109
|
autoFillData,
|
|
105
110
|
});
|
|
@@ -112,7 +117,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
112
117
|
}, [
|
|
113
118
|
loop,
|
|
114
119
|
autoFillData,
|
|
115
|
-
|
|
120
|
+
rawDataLength,
|
|
116
121
|
getSharedIndex,
|
|
117
122
|
onSnapToItem,
|
|
118
123
|
onScrollEnd,
|
|
@@ -148,7 +153,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
148
153
|
);
|
|
149
154
|
|
|
150
155
|
const visibleRanges = useVisibleRanges({
|
|
151
|
-
total:
|
|
156
|
+
total: dataLength,
|
|
152
157
|
viewSize: size,
|
|
153
158
|
translation: handlerOffset,
|
|
154
159
|
windowSize,
|
|
@@ -160,7 +165,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
|
|
|
160
165
|
(item: any, i: number) => {
|
|
161
166
|
const realIndex = computedRealIndexWithAutoFillData({
|
|
162
167
|
index: i,
|
|
163
|
-
dataLength:
|
|
168
|
+
dataLength: rawDataLength,
|
|
164
169
|
loop,
|
|
165
170
|
autoFillData,
|
|
166
171
|
});
|
|
@@ -41,7 +41,6 @@ const IScrollViewGesture: React.FC<Props> = (props) => {
|
|
|
41
41
|
const {
|
|
42
42
|
props: {
|
|
43
43
|
vertical,
|
|
44
|
-
data,
|
|
45
44
|
pagingEnabled,
|
|
46
45
|
snapEnabled,
|
|
47
46
|
panGestureHandlerProps,
|
|
@@ -49,6 +48,7 @@ const IScrollViewGesture: React.FC<Props> = (props) => {
|
|
|
49
48
|
scrollAnimationDuration,
|
|
50
49
|
withAnimation,
|
|
51
50
|
enabled,
|
|
51
|
+
dataLength,
|
|
52
52
|
},
|
|
53
53
|
} = React.useContext(CTX);
|
|
54
54
|
|
|
@@ -63,7 +63,7 @@ const IScrollViewGesture: React.FC<Props> = (props) => {
|
|
|
63
63
|
onTouchEnd,
|
|
64
64
|
} = props;
|
|
65
65
|
|
|
66
|
-
const maxPage =
|
|
66
|
+
const maxPage = dataLength;
|
|
67
67
|
const isHorizontal = useDerivedValue(() => !vertical, [vertical]);
|
|
68
68
|
const touching = useSharedValue(false);
|
|
69
69
|
const scrollEndTranslation = useSharedValue(0);
|
|
@@ -20,7 +20,7 @@ import { round } from "../utils/log";
|
|
|
20
20
|
interface IOpts {
|
|
21
21
|
loop: boolean
|
|
22
22
|
size: number
|
|
23
|
-
|
|
23
|
+
dataLength: number
|
|
24
24
|
autoFillData: TCarouselProps["autoFillData"]
|
|
25
25
|
handlerOffset: Animated.SharedValue<number>
|
|
26
26
|
withAnimation?: TCarouselProps["withAnimation"]
|
|
@@ -41,8 +41,8 @@ export interface ICarouselController {
|
|
|
41
41
|
export function useCarouselController(options: IOpts): ICarouselController {
|
|
42
42
|
const {
|
|
43
43
|
size,
|
|
44
|
-
data,
|
|
45
44
|
loop,
|
|
45
|
+
dataLength,
|
|
46
46
|
handlerOffset,
|
|
47
47
|
withAnimation,
|
|
48
48
|
defaultIndex = 0,
|
|
@@ -52,11 +52,11 @@ export function useCarouselController(options: IOpts): ICarouselController {
|
|
|
52
52
|
|
|
53
53
|
const dataInfo = React.useMemo(
|
|
54
54
|
() => ({
|
|
55
|
-
length:
|
|
56
|
-
disable: !
|
|
57
|
-
originalLength:
|
|
55
|
+
length: dataLength,
|
|
56
|
+
disable: !dataLength,
|
|
57
|
+
originalLength: dataLength,
|
|
58
58
|
}),
|
|
59
|
-
[
|
|
59
|
+
[dataLength],
|
|
60
60
|
);
|
|
61
61
|
|
|
62
62
|
const index = useSharedValue<number>(defaultIndex);
|
|
@@ -20,17 +20,17 @@ export function useCommonVariables(
|
|
|
20
20
|
vertical,
|
|
21
21
|
height,
|
|
22
22
|
width,
|
|
23
|
-
|
|
23
|
+
dataLength,
|
|
24
24
|
defaultIndex,
|
|
25
25
|
defaultScrollOffsetValue,
|
|
26
26
|
loop,
|
|
27
27
|
} = props;
|
|
28
28
|
const size = vertical ? height : width;
|
|
29
|
-
const validLength =
|
|
29
|
+
const validLength = dataLength - 1;
|
|
30
30
|
const defaultHandlerOffsetValue = -Math.abs(defaultIndex * size);
|
|
31
31
|
const _handlerOffset = useSharedValue<number>(defaultHandlerOffsetValue);
|
|
32
32
|
const handlerOffset = defaultScrollOffsetValue ?? _handlerOffset;
|
|
33
|
-
const prevDataLength = useSharedValue(
|
|
33
|
+
const prevDataLength = useSharedValue(dataLength);
|
|
34
34
|
|
|
35
35
|
React.useEffect(() => {
|
|
36
36
|
handlerOffset.value = defaultHandlerOffsetValue;
|
|
@@ -38,12 +38,12 @@ export function useCommonVariables(
|
|
|
38
38
|
|
|
39
39
|
useAnimatedReaction(() => {
|
|
40
40
|
const previousLength = prevDataLength.value;
|
|
41
|
-
const currentLength =
|
|
41
|
+
const currentLength = dataLength;
|
|
42
42
|
const isLengthChanged = previousLength !== currentLength;
|
|
43
43
|
const shouldComputed = isLengthChanged && loop;
|
|
44
44
|
|
|
45
45
|
if (shouldComputed)
|
|
46
|
-
prevDataLength.value =
|
|
46
|
+
prevDataLength.value = dataLength;
|
|
47
47
|
|
|
48
48
|
return {
|
|
49
49
|
shouldComputed,
|
|
@@ -63,7 +63,7 @@ export function useCommonVariables(
|
|
|
63
63
|
handlerOffset: handlerOffset.value,
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
|
-
}, [
|
|
66
|
+
}, [dataLength, loop]);
|
|
67
67
|
|
|
68
68
|
return {
|
|
69
69
|
size,
|
|
@@ -20,6 +20,8 @@ TGetRequiredProps<
|
|
|
20
20
|
> & {
|
|
21
21
|
// Raw data that has not been processed
|
|
22
22
|
rawData: T[]
|
|
23
|
+
dataLength: number
|
|
24
|
+
rawDataLength: number
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export function useInitProps<T>(
|
|
@@ -47,31 +49,38 @@ export function useInitProps<T>(
|
|
|
47
49
|
|
|
48
50
|
const data = React.useMemo<T[]>(
|
|
49
51
|
() => {
|
|
50
|
-
|
|
52
|
+
return computedFillDataWithAutoFillData<T>({
|
|
51
53
|
loop,
|
|
52
54
|
autoFillData,
|
|
53
55
|
data: rawData,
|
|
54
56
|
dataLength: rawData.length,
|
|
55
57
|
});
|
|
56
|
-
|
|
57
|
-
return Array.from({ length: computedData.length });
|
|
58
58
|
},
|
|
59
59
|
[rawData, loop, autoFillData],
|
|
60
60
|
);
|
|
61
61
|
|
|
62
|
+
const dataLength = data.length;
|
|
63
|
+
const rawDataLength = rawData.length;
|
|
64
|
+
|
|
62
65
|
if (props.mode === "vertical-stack" || props.mode === "horizontal-stack") {
|
|
63
66
|
if (!props.modeConfig)
|
|
64
67
|
props.modeConfig = {};
|
|
65
68
|
|
|
66
|
-
props.modeConfig.showLength = props.modeConfig?.showLength ??
|
|
69
|
+
props.modeConfig.showLength = props.modeConfig?.showLength ?? dataLength - 1;
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
return {
|
|
70
73
|
...props,
|
|
71
74
|
defaultIndex,
|
|
72
75
|
autoFillData,
|
|
76
|
+
// Fill data with autoFillData
|
|
73
77
|
data,
|
|
78
|
+
// Length of fill data
|
|
79
|
+
dataLength,
|
|
80
|
+
// Raw data that has not been processed
|
|
74
81
|
rawData,
|
|
82
|
+
// Length of raw data
|
|
83
|
+
rawDataLength,
|
|
75
84
|
loop,
|
|
76
85
|
enabled,
|
|
77
86
|
autoPlayInterval,
|