react-native-reanimated-carousel 4.0.0-alpha.1 → 4.0.0-alpha.11
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/README.md +2 -3
- package/lib/commonjs/{layouts → components}/BaseLayout.js +5 -21
- package/lib/commonjs/components/BaseLayout.js.map +1 -0
- package/lib/commonjs/components/Carousel.js +28 -48
- package/lib/commonjs/components/Carousel.js.map +1 -1
- package/lib/commonjs/components/ItemRenderer.js +80 -0
- package/lib/commonjs/components/ItemRenderer.js.map +1 -0
- package/lib/commonjs/components/Pagination/Basic/PaginationItem.js +81 -0
- package/lib/commonjs/components/Pagination/Basic/PaginationItem.js.map +1 -0
- package/lib/commonjs/components/Pagination/Basic/index.js +57 -0
- package/lib/commonjs/components/Pagination/Basic/index.js.map +1 -0
- package/lib/commonjs/components/Pagination/index.js +14 -0
- package/lib/commonjs/components/Pagination/index.js.map +1 -0
- package/lib/commonjs/components/ScrollViewGesture.js +51 -33
- package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
- package/lib/commonjs/components/rnr-demo.test.js +45 -0
- package/lib/commonjs/components/rnr-demo.test.js.map +1 -0
- package/lib/commonjs/hooks/useCarouselController.js +12 -11
- package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js +38 -12
- package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
- package/lib/commonjs/hooks/useCommonVariables.test.js +38 -0
- package/lib/commonjs/hooks/useCommonVariables.test.js.map +1 -0
- package/lib/commonjs/hooks/useLayoutConfig.js.map +1 -1
- package/lib/commonjs/hooks/useOffsetX.js +9 -6
- package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
- package/lib/commonjs/hooks/useOffsetX.test.js +53 -0
- package/lib/commonjs/hooks/useOffsetX.test.js.map +1 -0
- package/lib/commonjs/hooks/useOnProgressChange.js +4 -1
- package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
- package/lib/commonjs/hooks/usePanGestureProxy.js +84 -0
- package/lib/commonjs/hooks/usePanGestureProxy.js.map +1 -0
- package/lib/commonjs/hooks/usePanGestureProxy.test.js +397 -0
- package/lib/commonjs/hooks/usePanGestureProxy.test.js.map +1 -0
- package/lib/commonjs/hooks/useUpdateGestureConfig.js.map +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js +48 -19
- package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.test.js +162 -0
- package/lib/commonjs/hooks/useVisibleRanges.test.js.map +1 -0
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/{computeNewIndexWhenDataChanges.js → compute-offset-if-data-changed.js} +3 -3
- package/lib/commonjs/utils/compute-offset-if-data-changed.js.map +1 -0
- package/lib/commonjs/utils/compute-offset-if-data-changed.test.js +30 -0
- package/lib/commonjs/utils/compute-offset-if-data-changed.test.js.map +1 -0
- package/lib/commonjs/utils/compute-offset-if-size-changed.js +18 -0
- package/lib/commonjs/utils/compute-offset-if-size-changed.js.map +1 -0
- package/lib/commonjs/utils/compute-offset-if-size-changed.test.js +72 -0
- package/lib/commonjs/utils/compute-offset-if-size-changed.test.js.map +1 -0
- package/lib/commonjs/utils/handleroffset-direction.js +5 -5
- package/lib/commonjs/utils/handleroffset-direction.js.map +1 -1
- package/lib/commonjs/utils/handleroffset-direction.test.js +46 -0
- package/lib/commonjs/utils/handleroffset-direction.test.js.map +1 -0
- package/lib/commonjs/utils/index.test.js +6 -6
- package/lib/commonjs/utils/index.test.js.map +1 -1
- package/lib/module/{layouts → components}/BaseLayout.js +6 -16
- package/lib/module/components/BaseLayout.js.map +1 -0
- package/lib/module/components/Carousel.js +27 -44
- package/lib/module/components/Carousel.js.map +1 -1
- package/lib/module/components/ItemRenderer.js +62 -0
- package/lib/module/components/ItemRenderer.js.map +1 -0
- package/lib/module/components/Pagination/Basic/PaginationItem.js +63 -0
- package/lib/module/components/Pagination/Basic/PaginationItem.js.map +1 -0
- package/lib/module/components/Pagination/Basic/index.js +42 -0
- package/lib/module/components/Pagination/Basic/index.js.map +1 -0
- package/lib/module/components/Pagination/index.js +5 -0
- package/lib/module/components/Pagination/index.js.map +1 -0
- package/lib/module/components/ScrollViewGesture.js +53 -34
- package/lib/module/components/ScrollViewGesture.js.map +1 -1
- package/lib/module/components/rnr-demo.test.js +33 -0
- package/lib/module/components/rnr-demo.test.js.map +1 -0
- package/lib/module/hooks/useCarouselController.js +12 -11
- package/lib/module/hooks/useCarouselController.js.map +1 -1
- package/lib/module/hooks/useCommonVariables.js +38 -8
- package/lib/module/hooks/useCommonVariables.js.map +1 -1
- package/lib/module/hooks/useCommonVariables.test.js +34 -0
- package/lib/module/hooks/useCommonVariables.test.js.map +1 -0
- package/lib/module/hooks/useLayoutConfig.js.map +1 -1
- package/lib/module/hooks/useOffsetX.js +9 -6
- package/lib/module/hooks/useOffsetX.js.map +1 -1
- package/lib/module/hooks/useOffsetX.test.js +48 -0
- package/lib/module/hooks/useOffsetX.test.js.map +1 -0
- package/lib/module/hooks/useOnProgressChange.js +4 -1
- package/lib/module/hooks/useOnProgressChange.js.map +1 -1
- package/lib/module/hooks/usePanGestureProxy.js +71 -0
- package/lib/module/hooks/usePanGestureProxy.js.map +1 -0
- package/lib/module/hooks/usePanGestureProxy.test.js +383 -0
- package/lib/module/hooks/usePanGestureProxy.test.js.map +1 -0
- package/lib/module/hooks/useUpdateGestureConfig.js.map +1 -1
- package/lib/module/hooks/useVisibleRanges.js +47 -19
- package/lib/module/hooks/useVisibleRanges.js.map +1 -1
- package/lib/module/hooks/useVisibleRanges.test.js +157 -0
- package/lib/module/hooks/useVisibleRanges.test.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/{computeNewIndexWhenDataChanges.js → compute-offset-if-data-changed.js} +2 -2
- package/lib/module/utils/compute-offset-if-data-changed.js.map +1 -0
- package/lib/module/utils/compute-offset-if-data-changed.test.js +27 -0
- package/lib/module/utils/compute-offset-if-data-changed.test.js.map +1 -0
- package/lib/module/utils/compute-offset-if-size-changed.js +11 -0
- package/lib/module/utils/compute-offset-if-size-changed.js.map +1 -0
- package/lib/module/utils/compute-offset-if-size-changed.test.js +69 -0
- package/lib/module/utils/compute-offset-if-size-changed.test.js.map +1 -0
- package/lib/module/utils/handleroffset-direction.js +5 -5
- package/lib/module/utils/handleroffset-direction.js.map +1 -1
- package/lib/module/utils/handleroffset-direction.test.js +41 -0
- package/lib/module/utils/handleroffset-direction.test.js.map +1 -0
- package/lib/module/utils/index.test.js +6 -6
- package/lib/module/utils/index.test.js.map +1 -1
- package/lib/typescript/components/ItemRenderer.d.ts +22 -0
- package/lib/typescript/components/Pagination/Basic/PaginationItem.d.ts +17 -0
- package/lib/typescript/components/Pagination/Basic/index.d.ts +16 -0
- package/lib/typescript/components/Pagination/index.d.ts +3 -0
- package/lib/typescript/components/ScrollViewGesture.d.ts +1 -1
- package/lib/typescript/components/rnr-demo.test.d.ts +1 -0
- package/lib/typescript/hooks/useCarouselController.d.ts +3 -2
- package/lib/typescript/hooks/useCommonVariables.test.d.ts +1 -0
- package/lib/typescript/hooks/useLayoutConfig.d.ts +1 -1
- package/lib/typescript/hooks/useOffsetX.test.d.ts +1 -0
- package/lib/typescript/hooks/usePanGestureProxy.d.ts +9 -0
- package/lib/typescript/hooks/usePanGestureProxy.test.d.ts +1 -0
- package/lib/typescript/hooks/useUpdateGestureConfig.d.ts +3 -2
- package/lib/typescript/hooks/useVisibleRanges.d.ts +8 -4
- package/lib/typescript/hooks/useVisibleRanges.test.d.ts +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/types.d.ts +27 -16
- package/lib/typescript/utils/{computeNewIndexWhenDataChanges.d.ts → compute-offset-if-data-changed.d.ts} +1 -1
- package/lib/typescript/utils/compute-offset-if-data-changed.test.d.ts +1 -0
- package/lib/typescript/utils/compute-offset-if-size-changed.d.ts +5 -0
- package/lib/typescript/utils/compute-offset-if-size-changed.test.d.ts +1 -0
- package/lib/typescript/utils/handleroffset-direction.d.ts +2 -1
- package/lib/typescript/utils/handleroffset-direction.test.d.ts +1 -0
- package/package.json +18 -60
- package/src/{layouts → components}/BaseLayout.tsx +7 -35
- package/src/components/Carousel.tsx +33 -71
- package/src/components/ItemRenderer.tsx +105 -0
- package/src/components/Pagination/Basic/PaginationItem.tsx +111 -0
- package/src/components/Pagination/Basic/index.tsx +81 -0
- package/src/components/Pagination/index.tsx +5 -0
- package/src/components/ScrollViewGesture.tsx +74 -49
- package/src/components/rnr-demo.test.tsx +43 -0
- package/src/hooks/useCarouselController.tsx +24 -21
- package/src/hooks/useCommonVariables.test.tsx +41 -0
- package/src/hooks/useCommonVariables.ts +35 -10
- package/src/hooks/useLayoutConfig.ts +1 -1
- package/src/hooks/useOffsetX.test.ts +54 -0
- package/src/hooks/useOffsetX.ts +33 -31
- package/src/hooks/useOnProgressChange.ts +7 -2
- package/src/hooks/usePanGestureProxy.test.tsx +376 -0
- package/src/hooks/usePanGestureProxy.ts +110 -0
- package/src/hooks/useUpdateGestureConfig.ts +4 -2
- package/src/hooks/useVisibleRanges.test.tsx +179 -0
- package/src/hooks/useVisibleRanges.tsx +72 -24
- package/src/index.tsx +3 -0
- package/src/types.ts +28 -17
- package/src/utils/compute-offset-if-data-changed.test.ts +30 -0
- package/src/utils/{computeNewIndexWhenDataChanges.ts → compute-offset-if-data-changed.ts} +1 -1
- package/src/utils/compute-offset-if-size-changed.test.ts +78 -0
- package/src/utils/compute-offset-if-size-changed.ts +11 -0
- package/src/utils/handleroffset-direction.test.ts +52 -0
- package/src/utils/handleroffset-direction.ts +12 -9
- package/src/utils/index.test.ts +6 -6
- package/lib/commonjs/layouts/BaseLayout.js.map +0 -1
- package/lib/commonjs/layouts/ParallaxLayout.js +0 -84
- package/lib/commonjs/layouts/ParallaxLayout.js.map +0 -1
- package/lib/commonjs/utils/computeNewIndexWhenDataChanges.js.map +0 -1
- package/lib/module/layouts/BaseLayout.js.map +0 -1
- package/lib/module/layouts/ParallaxLayout.js +0 -61
- package/lib/module/layouts/ParallaxLayout.js.map +0 -1
- package/lib/module/utils/computeNewIndexWhenDataChanges.js.map +0 -1
- package/lib/typescript/layouts/ParallaxLayout.d.ts +0 -13
- package/src/layouts/ParallaxLayout.tsx +0 -141
- /package/lib/typescript/{layouts → components}/BaseLayout.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useCommonVariables.ts"],"names":["useCommonVariables","props","vertical","height","width","dataLength","defaultIndex","defaultScrollOffsetValue","loop","size","
|
|
1
|
+
{"version":3,"sources":["useCommonVariables.ts"],"names":["useCommonVariables","props","vertical","height","width","dataLength","defaultIndex","defaultScrollOffsetValue","loop","size","defaultHandlerOffsetValue","Math","abs","_handlerOffset","handlerOffset","prevDataLength","prevSize","previousLength","value","currentLength","isLengthChanged","shouldComputed","direction","previousSize","isSizeChanged","validLength"],"mappings":";;;;;;;AACA;;AAIA;;AACA;;AACA;;AAQO,SAASA,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,yBAAyB,GAAG,CAACC,IAAI,CAACC,GAAL,CAASN,YAAY,GAAGG,IAAxB,CAAnC;;AACA,QAAMI,cAAc,GAAG,2CAAuBH,yBAAvB,CAAvB;;AACA,QAAMI,aAAa,GAAGP,wBAAH,aAAGA,wBAAH,cAAGA,wBAAH,GAA+BM,cAAlD;AACA,QAAME,cAAc,GAAG,2CAAeV,UAAf,CAAvB;AACA,QAAMW,QAAQ,GAAG,2CAAeP,IAAf,CAAjB;AAEA;AACF;AACA;;AACE,kDAAoB,MAAM;AACxB,UAAMQ,cAAc,GAAGF,cAAc,CAACG,KAAtC;AACA,UAAMC,aAAa,GAAGd,UAAtB;AACA,UAAMe,eAAe,GAAGH,cAAc,KAAKE,aAA3C;AACA,UAAME,cAAc,GAAID,eAAe,IAAIZ,IAA3C;AAEA,QAAIa,cAAJ,EACEN,cAAc,CAACG,KAAf,GAAuBb,UAAvB;AAEF,WAAO;AACLgB,MAAAA,cADK;AAELJ,MAAAA,cAFK;AAGLE,MAAAA;AAHK,KAAP;AAKD,GAdD,EAcG,QAAuD;AAAA,QAAtD;AAAEE,MAAAA,cAAF;AAAkBJ,MAAAA,cAAlB;AAAkCE,MAAAA;AAAlC,KAAsD;;AACxD,QAAIE,cAAJ,EAAoB;AAClB;AACA,YAAMC,SAAS,GAAG,oDAAuBR,aAAvB,CAAlB;AAEAA,MAAAA,aAAa,CAACI,KAAd,GAAsB,4DAA2B;AAC/CI,QAAAA,SAD+C;AAE/CL,QAAAA,cAF+C;AAG/CE,QAAAA,aAH+C;AAI/CV,QAAAA,IAJ+C;AAK/CK,QAAAA,aAAa,EAAEA,aAAa,CAACI;AALkB,OAA3B,CAAtB;AAOD;AACF,GA3BD,EA2BG,CAACb,UAAD,EAAaG,IAAb,CA3BH;AA6BA;AACF;AACA;;AACE,kDAAoB,MAAM;AACxB,UAAMe,YAAY,GAAGP,QAAQ,CAACE,KAA9B;AACA,UAAMM,aAAa,GAAGD,YAAY,KAAKd,IAAvC;AACA,UAAMY,cAAc,GAAGG,aAAvB;AAEA,QAAIH,cAAJ,EACEL,QAAQ,CAACE,KAAT,GAAiBT,IAAjB;AAEF,WAAO;AACLY,MAAAA,cADK;AAELE,MAAAA,YAFK;AAGLd,MAAAA;AAHK,KAAP;AAKD,GAbD,EAaG,SAA4C;AAAA,QAA3C;AAAEY,MAAAA,cAAF;AAAkBE,MAAAA,YAAlB;AAAgCd,MAAAA;AAAhC,KAA2C;;AAC7C,QAAIY,cAAJ,EAAoB;AAClBP,MAAAA,aAAa,CAACI,KAAd,GAAsB,4DAA2B;AAC/CJ,QAAAA,aAAa,EAAEA,aAAa,CAACI,KADkB;AAE/CF,QAAAA,QAAQ,EAAEO,YAFqC;AAG/Cd,QAAAA;AAH+C,OAA3B,CAAtB;AAKD;AACF,GArBD,EAqBG,CAACA,IAAD,CArBH;AAuBA,SAAO;AACLA,IAAAA,IADK;AAELgB,IAAAA,WAAW,EAAEpB,UAAU,GAAG,CAFrB;AAGLS,IAAAA;AAHK,GAAP;AAKD","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport { useSharedValue, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport { computeOffsetIfDataChanged } from \"../utils/compute-offset-if-data-changed\";\nimport { computeOffsetIfSizeChanged } from \"../utils/compute-offset-if-size-changed\";\nimport { handlerOffsetDirection } from \"../utils/handleroffset-direction\";\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 defaultHandlerOffsetValue = -Math.abs(defaultIndex * size);\n const _handlerOffset = useSharedValue<number>(defaultHandlerOffsetValue);\n const handlerOffset = defaultScrollOffsetValue ?? _handlerOffset;\n const prevDataLength = useSharedValue(dataLength);\n const prevSize = useSharedValue(size);\n\n /**\n * When data changes, we need to compute new index for handlerOffset\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 = computeOffsetIfDataChanged({\n direction,\n previousLength,\n currentLength,\n size,\n handlerOffset: handlerOffset.value,\n });\n }\n }, [dataLength, loop]);\n\n /**\n * When size changes, we need to compute new index for handlerOffset\n */\n useAnimatedReaction(() => {\n const previousSize = prevSize.value;\n const isSizeChanged = previousSize !== size;\n const shouldComputed = isSizeChanged;\n\n if (shouldComputed)\n prevSize.value = size;\n\n return {\n shouldComputed,\n previousSize,\n size,\n };\n }, ({ shouldComputed, previousSize, size }) => {\n if (shouldComputed) {\n handlerOffset.value = computeOffsetIfSizeChanged({\n handlerOffset: handlerOffset.value,\n prevSize: previousSize,\n size,\n });\n }\n }, [size]);\n\n return {\n size,\n validLength: dataLength - 1,\n handlerOffset,\n };\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _reactHooks = require("@testing-library/react-hooks");
|
|
4
|
+
|
|
5
|
+
var _useCommonVariables = require("./useCommonVariables");
|
|
6
|
+
|
|
7
|
+
const input = {
|
|
8
|
+
vertical: false,
|
|
9
|
+
width: 700,
|
|
10
|
+
height: 350,
|
|
11
|
+
loop: true,
|
|
12
|
+
enabled: true,
|
|
13
|
+
testID: "xxx",
|
|
14
|
+
style: {
|
|
15
|
+
width: "100%"
|
|
16
|
+
},
|
|
17
|
+
autoPlay: false,
|
|
18
|
+
autoPlayInterval: 2000,
|
|
19
|
+
data: [0, 1, 2, 3],
|
|
20
|
+
pagingEnabled: true,
|
|
21
|
+
defaultIndex: 0,
|
|
22
|
+
autoFillData: true,
|
|
23
|
+
dataLength: 4,
|
|
24
|
+
rawData: [0, 1, 2, 3],
|
|
25
|
+
rawDataLength: 4,
|
|
26
|
+
scrollAnimationDuration: 500,
|
|
27
|
+
snapEnabled: true,
|
|
28
|
+
overscrollEnabled: true
|
|
29
|
+
};
|
|
30
|
+
describe("useCommonVariables", () => {
|
|
31
|
+
it("should return the correct values", async () => {
|
|
32
|
+
const hook = (0, _reactHooks.renderHook)(() => (0, _useCommonVariables.useCommonVariables)(input));
|
|
33
|
+
expect(hook.result.current.size).toMatchInlineSnapshot("700");
|
|
34
|
+
expect(hook.result.current.validLength).toMatchInlineSnapshot("3");
|
|
35
|
+
expect(hook.result.current.handlerOffset.value).toMatchInlineSnapshot("-0");
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=useCommonVariables.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useCommonVariables.test.tsx"],"names":["input","vertical","width","height","loop","enabled","testID","style","autoPlay","autoPlayInterval","data","pagingEnabled","defaultIndex","autoFillData","dataLength","rawData","rawDataLength","scrollAnimationDuration","snapEnabled","overscrollEnabled","describe","it","hook","expect","result","current","size","toMatchInlineSnapshot","validLength","handlerOffset","value"],"mappings":";;AAAA;;AAEA;;AAIA,MAAMA,KAAK,GAAG;AACZC,EAAAA,QAAQ,EAAE,KADE;AAEZC,EAAAA,KAAK,EAAE,GAFK;AAGZC,EAAAA,MAAM,EAAE,GAHI;AAIZC,EAAAA,IAAI,EAAE,IAJM;AAKZC,EAAAA,OAAO,EAAE,IALG;AAMZC,EAAAA,MAAM,EAAE,KANI;AAOZC,EAAAA,KAAK,EAAE;AACLL,IAAAA,KAAK,EAAE;AADF,GAPK;AAUZM,EAAAA,QAAQ,EAAE,KAVE;AAWZC,EAAAA,gBAAgB,EAAE,IAXN;AAYZC,EAAAA,IAAI,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAZM;AAaZC,EAAAA,aAAa,EAAE,IAbH;AAcZC,EAAAA,YAAY,EAAE,CAdF;AAeZC,EAAAA,YAAY,EAAE,IAfF;AAgBZC,EAAAA,UAAU,EAAE,CAhBA;AAiBZC,EAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAjBG;AAkBZC,EAAAA,aAAa,EAAE,CAlBH;AAmBZC,EAAAA,uBAAuB,EAAE,GAnBb;AAoBZC,EAAAA,WAAW,EAAE,IApBD;AAqBZC,EAAAA,iBAAiB,EAAE;AArBP,CAAd;AAwBAC,QAAQ,CAAC,oBAAD,EAAuB,MAAM;AACnCC,EAAAA,EAAE,CAAC,kCAAD,EAAqC,YAAY;AACjD,UAAMC,IAAI,GAAG,4BAAW,MAAM,4CAAmBtB,KAAnB,CAAjB,CAAb;AAEAuB,IAAAA,MAAM,CAACD,IAAI,CAACE,MAAL,CAAYC,OAAZ,CAAoBC,IAArB,CAAN,CAAiCC,qBAAjC,CAAuD,KAAvD;AACAJ,IAAAA,MAAM,CAACD,IAAI,CAACE,MAAL,CAAYC,OAAZ,CAAoBG,WAArB,CAAN,CAAwCD,qBAAxC,CAA8D,GAA9D;AACAJ,IAAAA,MAAM,CAACD,IAAI,CAACE,MAAL,CAAYC,OAAZ,CAAoBI,aAApB,CAAkCC,KAAnC,CAAN,CAAgDH,qBAAhD,CACE,IADF;AAGD,GARC,CAAF;AASD,CAVO,CAAR","sourcesContent":["import { renderHook } from \"@testing-library/react-hooks\";\n\nimport { useCommonVariables } from \"./useCommonVariables\";\n\ntype UseCommonVariablesInput = Parameters<typeof useCommonVariables>[0];\n\nconst input = {\n vertical: false,\n width: 700,\n height: 350,\n loop: true,\n enabled: true,\n testID: \"xxx\",\n style: {\n width: \"100%\",\n },\n autoPlay: false,\n autoPlayInterval: 2000,\n data: [0, 1, 2, 3],\n pagingEnabled: true,\n defaultIndex: 0,\n autoFillData: true,\n dataLength: 4,\n rawData: [0, 1, 2, 3],\n rawDataLength: 4,\n scrollAnimationDuration: 500,\n snapEnabled: true,\n overscrollEnabled: true,\n} as unknown as UseCommonVariablesInput;\n\ndescribe(\"useCommonVariables\", () => {\n it(\"should return the correct values\", async () => {\n const hook = renderHook(() => useCommonVariables(input));\n\n expect(hook.result.current.size).toMatchInlineSnapshot(\"700\");\n expect(hook.result.current.validLength).toMatchInlineSnapshot(\"3\");\n expect(hook.result.current.handlerOffset.value).toMatchInlineSnapshot(\n \"-0\",\n );\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useLayoutConfig.ts"],"names":["useLayoutConfig","opts","size","vertical","React","useMemo","baseConfig","mode","Layouts","parallax","modeConfig","horizontalStack","verticalStack","normal"],"mappings":";;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["useLayoutConfig.ts"],"names":["useLayoutConfig","opts","size","vertical","React","useMemo","baseConfig","mode","Layouts","parallax","modeConfig","horizontalStack","verticalStack","normal"],"mappings":";;;;;;;AAAA;;AAKA;;;;AAIO,SAASA,eAAT,CACLC,IADK,EAEY;AACjB,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBF,IAA3B;AAEA,SAAOG,eAAMC,OAAN,CAAc,MAAM;AACzB,UAAMC,UAAU,GAAG;AAAEJ,MAAAA,IAAF;AAAQC,MAAAA;AAAR,KAAnB;;AACA,YAAQF,IAAI,CAACM,IAAb;AACE,WAAK,UAAL;AACE,eAAOC,iBAAQC,QAAR,CAAiBH,UAAjB,EAA6BL,IAAI,CAACS,UAAlC,CAAP;;AACF,WAAK,kBAAL;AACE,eAAOF,iBAAQG,eAAR,CAAwBV,IAAI,CAACS,UAA7B,CAAP;;AACF,WAAK,gBAAL;AACE,eAAOF,iBAAQI,aAAR,CAAsBX,IAAI,CAACS,UAA3B,CAAP;;AACF;AACE,eAAOF,iBAAQK,MAAR,CAAeP,UAAf,CAAP;AARJ;AAUD,GAZM,EAYJ,CAACL,IAAI,CAACM,IAAN,EAAYN,IAAI,CAACS,UAAjB,EAA6BR,IAA7B,EAAmCC,QAAnC,CAZI,CAAP;AAaD","sourcesContent":["import React from \"react\";\n\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport type { TAnimationStyle } from \"../components/BaseLayout\";\nimport { Layouts } from \"../layouts\";\n\ntype TLayoutConfigOpts<T> = TInitializeCarouselProps<T> & { size: number };\n\nexport function useLayoutConfig<T>(\n opts: TLayoutConfigOpts<T>,\n): TAnimationStyle {\n const { size, vertical } = opts as Required<TLayoutConfigOpts<T>>;\n\n return React.useMemo(() => {\n const baseConfig = { size, vertical };\n switch (opts.mode) {\n case \"parallax\":\n return Layouts.parallax(baseConfig, opts.modeConfig);\n case \"horizontal-stack\":\n return Layouts.horizontalStack(opts.modeConfig);\n case \"vertical-stack\":\n return Layouts.verticalStack(opts.modeConfig);\n default:\n return Layouts.normal(baseConfig);\n }\n }, [opts.mode, opts.modeConfig, size, vertical]);\n}\n"]}
|
|
@@ -32,15 +32,18 @@ const useOffsetX = (opts, visibleRanges) => {
|
|
|
32
32
|
negativeRange,
|
|
33
33
|
positiveRange
|
|
34
34
|
} = visibleRanges.value;
|
|
35
|
-
if ((index < negativeRange[0] || index > negativeRange[1]) && (index < positiveRange[0] || index > positiveRange[1])) return Number.MAX_SAFE_INTEGER;
|
|
36
35
|
|
|
37
|
-
if (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
if (index >= negativeRange[0] && index <= negativeRange[1] || index >= positiveRange[0] && index <= positiveRange[1]) {
|
|
37
|
+
if (loop) {
|
|
38
|
+
const inputRange = [-TOTAL_WIDTH, MIN - HALF_WIDTH - startPos - Number.MIN_VALUE, MIN - HALF_WIDTH - startPos, 0, MAX + HALF_WIDTH - startPos, MAX + HALF_WIDTH - startPos + Number.MIN_VALUE, TOTAL_WIDTH];
|
|
39
|
+
const outputRange = [startPos, MAX + HALF_WIDTH - Number.MIN_VALUE, MIN - HALF_WIDTH, startPos, MAX + HALF_WIDTH, MIN - HALF_WIDTH + Number.MIN_VALUE, startPos];
|
|
40
|
+
return (0, _reactNativeReanimated.interpolate)(handlerOffset.value, inputRange, outputRange, _reactNativeReanimated.Extrapolate.CLAMP);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return handlerOffset.value + size * index;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
return
|
|
46
|
+
return Number.MAX_SAFE_INTEGER;
|
|
44
47
|
}, [loop, dataLength, viewCount, type, size, visibleRanges]);
|
|
45
48
|
return x;
|
|
46
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOffsetX.ts"],"names":["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","
|
|
1
|
+
{"version":3,"sources":["useOffsetX.ts"],"names":["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","inputRange","Number","MIN_VALUE","outputRange","Extrapolate","CLAMP","MAX_SAFE_INTEGER"],"mappings":";;;;;;;AACA;;AAkBO,MAAMA,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,GACfT,IAAI,KAAK,UAAT,GAAsBC,SAAtB,GAAkCG,YAAY,GAAGH,SADrD;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,GAAG,4CAAgB,MAAM;AAC9B,UAAM;AAAEC,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAmCrB,aAAa,CAACsB,KAAvD;;AAEA,QACGpB,KAAK,IAAIkB,aAAa,CAAC,CAAD,CAAtB,IAA6BlB,KAAK,IAAIkB,aAAa,CAAC,CAAD,CAApD,IACIlB,KAAK,IAAImB,aAAa,CAAC,CAAD,CAAtB,IAA6BnB,KAAK,IAAImB,aAAa,CAAC,CAAD,CAFzD,EAGE;AACA,UAAIjB,IAAJ,EAAU;AACR,cAAMmB,UAAU,GAAG,CACjB,CAACZ,WADgB,EAEjBO,GAAG,GAAGN,UAAN,GAAmBI,QAAnB,GAA8BQ,MAAM,CAACC,SAFpB,EAGjBP,GAAG,GAAGN,UAAN,GAAmBI,QAHF,EAIjB,CAJiB,EAKjBC,GAAG,GAAGL,UAAN,GAAmBI,QALF,EAMjBC,GAAG,GAAGL,UAAN,GAAmBI,QAAnB,GAA8BQ,MAAM,CAACC,SANpB,EAOjBd,WAPiB,CAAnB;AAUA,cAAMe,WAAW,GAAG,CAClBV,QADkB,EAElBC,GAAG,GAAGL,UAAN,GAAmBY,MAAM,CAACC,SAFR,EAGlBP,GAAG,GAAGN,UAHY,EAIlBI,QAJkB,EAKlBC,GAAG,GAAGL,UALY,EAMlBM,GAAG,GAAGN,UAAN,GAAmBY,MAAM,CAACC,SANR,EAOlBT,QAPkB,CAApB;AAUA,eAAO,wCACLf,aAAa,CAACqB,KADT,EAELC,UAFK,EAGLG,WAHK,EAILC,mCAAYC,KAJP,CAAP;AAMD;;AAED,aAAO3B,aAAa,CAACqB,KAAd,GAAsBnB,IAAI,GAAGD,KAApC;AACD;;AAED,WAAOsB,MAAM,CAACK,gBAAd;AACD,GAxCS,EAwCP,CAACzB,IAAD,EAAOC,UAAP,EAAmBE,SAAnB,EAA8BD,IAA9B,EAAoCH,IAApC,EAA0CH,aAA1C,CAxCO,CAAV;AA0CA,SAAOmB,CAAP;AACD,CAtEM","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\n if (\n (index >= negativeRange[0] && index <= negativeRange[1])\n || (index >= positiveRange[0] && index <= positiveRange[1])\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 }\n\n return Number.MAX_SAFE_INTEGER;\n }, [loop, dataLength, viewCount, type, size, visibleRanges]);\n\n return x;\n};\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
4
|
+
|
|
5
|
+
var _reactHooks = require("@testing-library/react-hooks");
|
|
6
|
+
|
|
7
|
+
var _useOffsetX = require("./useOffsetX");
|
|
8
|
+
|
|
9
|
+
describe("useSharedValue", () => {
|
|
10
|
+
it("should return the correct values", async () => {
|
|
11
|
+
const hook = (0, _reactHooks.renderHook)(() => {
|
|
12
|
+
const range = (0, _reactNativeReanimated.useSharedValue)({
|
|
13
|
+
negativeRange: [7, 9],
|
|
14
|
+
positiveRange: [0, 3]
|
|
15
|
+
});
|
|
16
|
+
const inputs = Array.from({
|
|
17
|
+
length: 10
|
|
18
|
+
}).map((_, index) => ({
|
|
19
|
+
config: {
|
|
20
|
+
dataLength: 10,
|
|
21
|
+
handlerOffset: (0, _reactNativeReanimated.useSharedValue)(-0),
|
|
22
|
+
index,
|
|
23
|
+
loop: false,
|
|
24
|
+
size: 393
|
|
25
|
+
},
|
|
26
|
+
range
|
|
27
|
+
}));
|
|
28
|
+
return inputs.map(input => {
|
|
29
|
+
const {
|
|
30
|
+
config,
|
|
31
|
+
range
|
|
32
|
+
} = input;
|
|
33
|
+
return (0, _useOffsetX.useOffsetX)(config, range);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
const expected = hook.result.current.map(v => v.value).slice();
|
|
37
|
+
expect(expected).toMatchInlineSnapshot(`
|
|
38
|
+
[
|
|
39
|
+
0,
|
|
40
|
+
393,
|
|
41
|
+
786,
|
|
42
|
+
1179,
|
|
43
|
+
9007199254740991,
|
|
44
|
+
9007199254740991,
|
|
45
|
+
9007199254740991,
|
|
46
|
+
2751,
|
|
47
|
+
3144,
|
|
48
|
+
3537,
|
|
49
|
+
]
|
|
50
|
+
`);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=useOffsetX.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useOffsetX.test.ts"],"names":["describe","it","hook","range","negativeRange","positiveRange","inputs","Array","from","length","map","_","index","config","dataLength","handlerOffset","loop","size","input","expected","result","current","v","value","slice","expect","toMatchInlineSnapshot"],"mappings":";;AAAA;;AAEA;;AAGA;;AAGAA,QAAQ,CAAC,gBAAD,EAAmB,MAAM;AAC/BC,EAAAA,EAAE,CAAC,kCAAD,EAAqC,YAAY;AACjD,UAAMC,IAAI,GAAG,4BAAW,MAAM;AAC5B,YAAMC,KAAK,GAAG,2CAAe;AAC3BC,QAAAA,aAAa,EAAE,CAAC,CAAD,EAAI,CAAJ,CADY;AAE3BC,QAAAA,aAAa,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,OAAf,CAAd;AAIA,YAAMC,MAGJ,GAAGC,KAAK,CAACC,IAAN,CAAW;AAAEC,QAAAA,MAAM,EAAE;AAAV,OAAX,EAA2BC,GAA3B,CAA+B,CAACC,CAAD,EAAIC,KAAJ,MAAe;AACjDC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,EADN;AAENC,UAAAA,aAAa,EAAE,2CAAe,CAAC,CAAhB,CAFT;AAGNH,UAAAA,KAHM;AAINI,UAAAA,IAAI,EAAE,KAJA;AAKNC,UAAAA,IAAI,EAAE;AALA,SADyC;AAQjDd,QAAAA;AARiD,OAAf,CAA/B,CAHL;AAcA,aAAOG,MAAM,CAACI,GAAP,CAAYQ,KAAD,IAAW;AAC3B,cAAM;AAAEL,UAAAA,MAAF;AAAUV,UAAAA;AAAV,YAAoBe,KAA1B;AAEA,eAAO,4BAAWL,MAAX,EAAmBV,KAAnB,CAAP;AACD,OAJM,CAAP;AAKD,KAxBY,CAAb;AA0BA,UAAMgB,QAAQ,GAAGjB,IAAI,CAACkB,MAAL,CAAYC,OAAZ,CAAoBX,GAApB,CAAwBY,CAAC,IAAIA,CAAC,CAACC,KAA/B,EAAsCC,KAAtC,EAAjB;AAEAC,IAAAA,MAAM,CAACN,QAAD,CAAN,CAAiBO,qBAAjB,CAAwC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAbI;AAcD,GA3CC,CAAF;AA4CD,CA7CO,CAAR","sourcesContent":["import { useSharedValue } from \"react-native-reanimated\";\n\nimport { renderHook } from \"@testing-library/react-hooks\";\n\nimport type { IOpts } from \"./useOffsetX\";\nimport { useOffsetX } from \"./useOffsetX\";\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\ndescribe(\"useSharedValue\", () => {\n it(\"should return the correct values\", async () => {\n const hook = renderHook(() => {\n const range = useSharedValue({\n negativeRange: [7, 9],\n positiveRange: [0, 3],\n }) as IVisibleRanges;\n const inputs: Array<{\n config: IOpts\n range: IVisibleRanges\n }> = Array.from({ length: 10 }).map((_, index) => ({\n config: {\n dataLength: 10,\n handlerOffset: useSharedValue(-0),\n index,\n loop: false,\n size: 393,\n },\n range,\n }));\n\n return inputs.map((input) => {\n const { config, range } = input;\n\n return useOffsetX(config, range);\n });\n });\n\n const expected = hook.result.current.map(v => v.value).slice();\n\n expect(expected).toMatchInlineSnapshot(`\n [\n 0,\n 393,\n 786,\n 1179,\n 9007199254740991,\n 9007199254740991,\n 9007199254740991,\n 2751,\n 3144,\n 3537,\n ]\n `);\n });\n});\n"]}
|
|
@@ -33,7 +33,10 @@ function useOnProgressChange(opts) {
|
|
|
33
33
|
|
|
34
34
|
let absoluteProgress = Math.abs(value / size);
|
|
35
35
|
if (value > 0) absoluteProgress = rawDataLength - absoluteProgress;
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
if (onProgressChange) {
|
|
38
|
+
if (typeof onProgressChange === "function") (0, _reactNativeReanimated.runOnJS)(onProgressChange)(value, absoluteProgress);else onProgressChange.value = absoluteProgress;
|
|
39
|
+
}
|
|
37
40
|
}, [loop, autoFillData, rawDataLength, onProgressChange]);
|
|
38
41
|
}
|
|
39
42
|
//# sourceMappingURL=useOnProgressChange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnProgressChange.ts"],"names":["useOnProgressChange","opts","autoFillData","loop","offsetX","size","rawDataLength","onProgressChange","value","_value","Math","max","min","absoluteProgress","abs"],"mappings":";;;;;;;AACA;;AAMA;;AAEO,SAASA,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;AAGA,kDACE,MAAMG,OAAO,CAACI,KADhB,EAEGC,MAAD,IAAY;AACV,QAAID,KAAK,GAAG,oEAAqC;AAC/CA,MAAAA,KAAK,EAAEC,MADwC;AAE/CH,MAAAA,aAF+C;AAG/CD,MAAAA,IAH+C;AAI/CH,MAAAA,YAJ+C;AAK/CC,MAAAA;AAL+C,KAArC,CAAZ;;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
|
|
1
|
+
{"version":3,"sources":["useOnProgressChange.ts"],"names":["useOnProgressChange","opts","autoFillData","loop","offsetX","size","rawDataLength","onProgressChange","value","_value","Math","max","min","absoluteProgress","abs"],"mappings":";;;;;;;AACA;;AAMA;;AAEO,SAASA,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;AAGA,kDACE,MAAMG,OAAO,CAACI,KADhB,EAEGC,MAAD,IAAY;AACV,QAAID,KAAK,GAAG,oEAAqC;AAC/CA,MAAAA,KAAK,EAAEC,MADwC;AAE/CH,MAAAA,aAF+C;AAG/CD,MAAAA,IAH+C;AAI/CH,MAAAA,YAJ+C;AAK/CC,MAAAA;AAL+C,KAArC,CAAZ;;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,EAAsB;AACpB,UAAI,OAAOA,gBAAP,KAA4B,UAAhC,EACE,oCAAQA,gBAAR,EAA0BC,KAA1B,EAAiCK,gBAAjC,EADF,KAIEN,gBAAgB,CAACC,KAAjB,GAAyBK,gBAAzB;AACH;AACF,GA9BH,EA+BE,CAACV,IAAD,EAAOD,YAAP,EAAqBI,aAArB,EAAoCC,gBAApC,CA/BF;AAiCD","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/computed-with-auto-fill-data\";\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 if (typeof onProgressChange === \"function\")\n runOnJS(onProgressChange)(value, absoluteProgress);\n\n else\n onProgressChange.value = absoluteProgress;\n }\n },\n [loop, autoFillData, rawDataLength, onProgressChange],\n );\n}\n"]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.usePanGestureProxy = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
11
|
+
|
|
12
|
+
var _useUpdateGestureConfig = require("./useUpdateGestureConfig");
|
|
13
|
+
|
|
14
|
+
const usePanGestureProxy = customization => {
|
|
15
|
+
const {
|
|
16
|
+
onConfigurePanGesture,
|
|
17
|
+
onGestureStart,
|
|
18
|
+
onGestureUpdate,
|
|
19
|
+
onGestureEnd,
|
|
20
|
+
options = {}
|
|
21
|
+
} = customization;
|
|
22
|
+
const gesture = (0, _react.useMemo)(() => {
|
|
23
|
+
const gesture = _reactNativeGestureHandler.Gesture.Pan(); // Save the original gesture callbacks
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
const originalGestures = {
|
|
27
|
+
onStart: gesture.onStart,
|
|
28
|
+
onUpdate: gesture.onUpdate,
|
|
29
|
+
onEnd: gesture.onEnd
|
|
30
|
+
}; // Save the user defined gesture callbacks
|
|
31
|
+
|
|
32
|
+
const userDefinedConflictGestures = {
|
|
33
|
+
onStart: undefined,
|
|
34
|
+
onUpdate: undefined,
|
|
35
|
+
onEnd: undefined
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const fakeOnStart = cb => {
|
|
39
|
+
// Using fakeOnStart to save the user defined callback
|
|
40
|
+
userDefinedConflictGestures.onStart = cb;
|
|
41
|
+
return gesture;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const fakeOnUpdate = cb => {
|
|
45
|
+
// Using fakeOnUpdate to save the user defined callback
|
|
46
|
+
userDefinedConflictGestures.onUpdate = cb;
|
|
47
|
+
return gesture;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const fakeOnEnd = cb => {
|
|
51
|
+
// Using fakeOnEnd to save the user defined callback
|
|
52
|
+
userDefinedConflictGestures.onEnd = cb;
|
|
53
|
+
return gesture;
|
|
54
|
+
}; // Setup the fake callbacks
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
gesture.onStart = fakeOnStart;
|
|
58
|
+
gesture.onUpdate = fakeOnUpdate;
|
|
59
|
+
gesture.onEnd = fakeOnEnd;
|
|
60
|
+
if (onConfigurePanGesture) // Get the gesture with the user defined configuration
|
|
61
|
+
onConfigurePanGesture(gesture); // Restore the original callbacks
|
|
62
|
+
|
|
63
|
+
gesture.onStart = originalGestures.onStart;
|
|
64
|
+
gesture.onUpdate = originalGestures.onUpdate;
|
|
65
|
+
gesture.onEnd = originalGestures.onEnd; // Setup the original callbacks with the user defined callbacks
|
|
66
|
+
|
|
67
|
+
gesture.onStart(e => {
|
|
68
|
+
onGestureStart(e);
|
|
69
|
+
if (userDefinedConflictGestures.onStart) userDefinedConflictGestures.onStart(e);
|
|
70
|
+
}).onUpdate(e => {
|
|
71
|
+
onGestureUpdate(e);
|
|
72
|
+
if (userDefinedConflictGestures.onUpdate) userDefinedConflictGestures.onUpdate(e);
|
|
73
|
+
}).onEnd((e, success) => {
|
|
74
|
+
onGestureEnd(e, success);
|
|
75
|
+
if (userDefinedConflictGestures.onEnd) userDefinedConflictGestures.onEnd(e, success);
|
|
76
|
+
});
|
|
77
|
+
return gesture;
|
|
78
|
+
}, [onGestureStart, onGestureUpdate, onGestureEnd, onConfigurePanGesture]);
|
|
79
|
+
(0, _useUpdateGestureConfig.useUpdateGestureConfig)(gesture, options);
|
|
80
|
+
return gesture;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
exports.usePanGestureProxy = usePanGestureProxy;
|
|
84
|
+
//# sourceMappingURL=usePanGestureProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["usePanGestureProxy.ts"],"names":["usePanGestureProxy","customization","onConfigurePanGesture","onGestureStart","onGestureUpdate","onGestureEnd","options","gesture","Gesture","Pan","originalGestures","onStart","onUpdate","onEnd","userDefinedConflictGestures","undefined","fakeOnStart","cb","fakeOnUpdate","fakeOnEnd","e","success"],"mappings":";;;;;;;AAAA;;AAEA;;AAGA;;AAEO,MAAMA,kBAAkB,GAC7BC,aADgC,IAQ7B;AACH,QAAM;AACJC,IAAAA,qBADI;AAEJC,IAAAA,cAFI;AAGJC,IAAAA,eAHI;AAIJC,IAAAA,YAJI;AAKJC,IAAAA,OAAO,GAAG;AALN,MAMFL,aANJ;AAQA,QAAMM,OAAO,GAAG,oBAAQ,MAAM;AAC5B,UAAMA,OAAO,GAAGC,mCAAQC,GAAR,EAAhB,CAD4B,CAG5B;;;AACA,UAAMC,gBAAgB,GAAG;AACvBC,MAAAA,OAAO,EAAEJ,OAAO,CAACI,OADM;AAEvBC,MAAAA,QAAQ,EAAEL,OAAO,CAACK,QAFK;AAGvBC,MAAAA,KAAK,EAAEN,OAAO,CAACM;AAHQ,KAAzB,CAJ4B,CAU5B;;AACA,UAAMC,2BAIL,GAAG;AACFH,MAAAA,OAAO,EAAEI,SADP;AAEFH,MAAAA,QAAQ,EAAEG,SAFR;AAGFF,MAAAA,KAAK,EAAEE;AAHL,KAJJ;;AAUA,UAAMC,WAAmC,GAAIC,EAAD,IAAQ;AAClD;AACAH,MAAAA,2BAA2B,CAACH,OAA5B,GAAsCM,EAAtC;AACA,aAAOV,OAAP;AACD,KAJD;;AAMA,UAAMW,YAAqC,GAAID,EAAD,IAAQ;AACpD;AACAH,MAAAA,2BAA2B,CAACF,QAA5B,GAAuCK,EAAvC;AACA,aAAOV,OAAP;AACD,KAJD;;AAMA,UAAMY,SAA+B,GAAIF,EAAD,IAAQ;AAC9C;AACAH,MAAAA,2BAA2B,CAACD,KAA5B,GAAoCI,EAApC;AACA,aAAOV,OAAP;AACD,KAJD,CAjC4B,CAuC5B;;;AACAA,IAAAA,OAAO,CAACI,OAAR,GAAkBK,WAAlB;AACAT,IAAAA,OAAO,CAACK,QAAR,GAAmBM,YAAnB;AACAX,IAAAA,OAAO,CAACM,KAAR,GAAgBM,SAAhB;AAEA,QAAIjB,qBAAJ,EACE;AACAA,MAAAA,qBAAqB,CAACK,OAAD,CAArB,CA9C0B,CAgD5B;;AACAA,IAAAA,OAAO,CAACI,OAAR,GAAkBD,gBAAgB,CAACC,OAAnC;AACAJ,IAAAA,OAAO,CAACK,QAAR,GAAmBF,gBAAgB,CAACE,QAApC;AACAL,IAAAA,OAAO,CAACM,KAAR,GAAgBH,gBAAgB,CAACG,KAAjC,CAnD4B,CAqD5B;;AACAN,IAAAA,OAAO,CACJI,OADH,CACYS,CAAD,IAAO;AACdjB,MAAAA,cAAc,CAACiB,CAAD,CAAd;AAEA,UAAIN,2BAA2B,CAACH,OAAhC,EACEG,2BAA2B,CAACH,OAA5B,CAAoCS,CAApC;AACH,KANH,EAOGR,QAPH,CAOaQ,CAAD,IAAO;AACfhB,MAAAA,eAAe,CAACgB,CAAD,CAAf;AAEA,UAAIN,2BAA2B,CAACF,QAAhC,EACEE,2BAA2B,CAACF,QAA5B,CAAqCQ,CAArC;AACH,KAZH,EAaGP,KAbH,CAaS,CAACO,CAAD,EAAIC,OAAJ,KAAgB;AACrBhB,MAAAA,YAAY,CAACe,CAAD,EAAIC,OAAJ,CAAZ;AAEA,UAAIP,2BAA2B,CAACD,KAAhC,EACEC,2BAA2B,CAACD,KAA5B,CAAkCO,CAAlC,EAAqCC,OAArC;AACH,KAlBH;AAoBA,WAAOd,OAAP;AACD,GA3Ee,EA2Eb,CACDJ,cADC,EAEDC,eAFC,EAGDC,YAHC,EAIDH,qBAJC,CA3Ea,CAAhB;AAkFA,sDAAuBK,OAAvB,EAAgCD,OAAhC;AAEA,SAAOC,OAAP;AACD,CAtGM","sourcesContent":["import { useMemo } from \"react\";\nimport type { GestureStateChangeEvent, GestureUpdateEvent, PanGesture, PanGestureHandlerEventPayload } from \"react-native-gesture-handler\";\nimport { Gesture } from \"react-native-gesture-handler\";\n\nimport type { GestureConfig } from \"./useUpdateGestureConfig\";\nimport { useUpdateGestureConfig } from \"./useUpdateGestureConfig\";\n\nexport const usePanGestureProxy = (\n customization: {\n onConfigurePanGesture?: (gesture: PanGesture) => void\n onGestureStart: (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => void\n onGestureUpdate: (event: GestureUpdateEvent<PanGestureHandlerEventPayload>) => void\n onGestureEnd: (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>, success: boolean) => void\n options?: GestureConfig\n },\n) => {\n const {\n onConfigurePanGesture,\n onGestureStart,\n onGestureUpdate,\n onGestureEnd,\n options = {},\n } = customization;\n\n const gesture = useMemo(() => {\n const gesture = Gesture.Pan();\n\n // Save the original gesture callbacks\n const originalGestures = {\n onStart: gesture.onStart,\n onUpdate: gesture.onUpdate,\n onEnd: gesture.onEnd,\n };\n\n // Save the user defined gesture callbacks\n const userDefinedConflictGestures: {\n onStart?: Parameters<(typeof gesture)[\"onStart\"]>[0]\n onUpdate?: Parameters<(typeof gesture)[\"onUpdate\"]>[0]\n onEnd?: Parameters<(typeof gesture)[\"onEnd\"]>[0]\n } = {\n onStart: undefined,\n onUpdate: undefined,\n onEnd: undefined,\n };\n\n const fakeOnStart: typeof gesture.onStart = (cb) => {\n // Using fakeOnStart to save the user defined callback\n userDefinedConflictGestures.onStart = cb;\n return gesture;\n };\n\n const fakeOnUpdate: typeof gesture.onUpdate = (cb) => {\n // Using fakeOnUpdate to save the user defined callback\n userDefinedConflictGestures.onUpdate = cb;\n return gesture;\n };\n\n const fakeOnEnd: typeof gesture.onEnd = (cb) => {\n // Using fakeOnEnd to save the user defined callback\n userDefinedConflictGestures.onEnd = cb;\n return gesture;\n };\n\n // Setup the fake callbacks\n gesture.onStart = fakeOnStart;\n gesture.onUpdate = fakeOnUpdate;\n gesture.onEnd = fakeOnEnd;\n\n if (onConfigurePanGesture)\n // Get the gesture with the user defined configuration\n onConfigurePanGesture(gesture);\n\n // Restore the original callbacks\n gesture.onStart = originalGestures.onStart;\n gesture.onUpdate = originalGestures.onUpdate;\n gesture.onEnd = originalGestures.onEnd;\n\n // Setup the original callbacks with the user defined callbacks\n gesture\n .onStart((e) => {\n onGestureStart(e);\n\n if (userDefinedConflictGestures.onStart)\n userDefinedConflictGestures.onStart(e);\n })\n .onUpdate((e) => {\n onGestureUpdate(e);\n\n if (userDefinedConflictGestures.onUpdate)\n userDefinedConflictGestures.onUpdate(e);\n })\n .onEnd((e, success) => {\n onGestureEnd(e, success);\n\n if (userDefinedConflictGestures.onEnd)\n userDefinedConflictGestures.onEnd(e, success);\n });\n\n return gesture;\n }, [\n onGestureStart,\n onGestureUpdate,\n onGestureEnd,\n onConfigurePanGesture,\n ]);\n\n useUpdateGestureConfig(gesture, options);\n\n return gesture;\n};\n"]}
|