react-native-tab-view 5.0.0-alpha.15 → 5.0.0-alpha.17
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/module/TabView.js +17 -4
- package/lib/module/TabView.js.map +1 -1
- package/lib/module/useLayoutWidths.js +5 -4
- package/lib/module/useLayoutWidths.js.map +1 -1
- package/lib/typescript/src/ScrollViewAdapter.d.ts +4 -4
- package/lib/typescript/src/ScrollViewAdapter.d.ts.map +1 -1
- package/lib/typescript/src/TabView.d.ts.map +1 -1
- package/lib/typescript/src/useLayoutWidths.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ScrollViewAdapter.tsx +4 -4
- package/src/TabView.tsx +34 -8
- package/src/useLayoutWidths.tsx +11 -2
package/lib/module/TabView.js
CHANGED
|
@@ -43,10 +43,23 @@ export function TabView({
|
|
|
43
43
|
onIndexChange(index);
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
const optionsCache = React.useRef(undefined);
|
|
47
|
+
const options = React.useMemo(() => Object.fromEntries(navigationState.routes.map(route => {
|
|
48
|
+
const previous = optionsCache.current;
|
|
49
|
+
const routeOptions = sceneOptions?.[route.key];
|
|
50
|
+
const cachedOptions = previous?.options[route.key];
|
|
51
|
+
return [route.key, previous && cachedOptions && Object.hasOwn(previous.options, route.key) && previous.commonOptions === commonOptions && previous.sceneOptions?.[route.key] === routeOptions ? cachedOptions : {
|
|
52
|
+
...commonOptions,
|
|
53
|
+
...routeOptions
|
|
54
|
+
}];
|
|
55
|
+
})), [navigationState.routes, commonOptions, sceneOptions, optionsCache]);
|
|
56
|
+
React.useInsertionEffect(() => {
|
|
57
|
+
optionsCache.current = {
|
|
58
|
+
commonOptions,
|
|
59
|
+
sceneOptions,
|
|
60
|
+
options
|
|
61
|
+
};
|
|
62
|
+
});
|
|
50
63
|
const element = renderAdapter({
|
|
51
64
|
navigationState,
|
|
52
65
|
keyboardDismissMode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","I18nManager","Platform","StyleSheet","View","DefaultAdapter","SceneView","TabBar","jsx","_jsx","jsxs","_jsxs","renderLazyPlaceholderDefault","TabView","onIndexChange","onTabSelect","navigationState","renderScene","keyboardDismissMode","lazy","lazyPreloadDistance","onSwipeStart","onSwipeEnd","renderLazyPlaceholder","renderTabBar","props","renderAdapter","pagerStyle","style","direction","getConstants","isRTL","swipeEnabled","tabBarPosition","animationEnabled","options","sceneOptions","commonOptions","OS","console","warn","jumpToIndex","index","Object","fromEntries","routes","map","route","key","element","layoutDirection","children","position","render","subscribe","jumpTo","sceneRendererProps","Fragment","i","sceneStyle","loading","styles","container","create","flex","overflow"],"sourceRoot":"../../src","sources":["TabView.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,WAAW,EACXC,QAAQ,EAERC,UAAU,EACVC,IAAI,QAEC,cAAc;AAErB,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAsIlC,MAAMC,4BAA4B,GAAGA,CAAA,KAAM,IAAI;AAE/C,OAAO,SAASC,OAAOA,CAAkB;EACvCC,aAAa;EACbC,WAAW;EACXC,eAAe;EACfC,WAAW;EACXC,mBAAmB,GAAG,MAAM;EAC5BC,IAAI,GAAG,KAAK;EACZC,mBAAmB,GAAG,CAAC;EACvBC,YAAY;EACZC,UAAU;EACVC,qBAAqB,GAAGX,4BAA4B;EACpD;EACAY,YAAY,GAAIC,KAAK,iBAAKhB,IAAA,CAACF,MAAM;IAAA,GAAKkB;EAAK,CAAG,CAAC;EAC/C;EACAC,aAAa,GAAID,KAAK,iBAAKhB,IAAA,CAACJ,cAAc;IAAA,GAAKoB;EAAK,CAAG,CAAC;EACxDE,UAAU;EACVC,KAAK;EACLC,SAAS,GAAG5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK;EAC5DC,YAAY,GAAG,IAAI;EACnBC,cAAc,GAAG,KAAK;EACtBC,gBAAgB,GAAG,IAAI;EACvBC,OAAO,EAAEC,YAAY;EACrBC;AACQ,CAAC,EAAE;EACX,IACEnC,QAAQ,CAACoC,EAAE,KAAK,KAAK,IACrBT,SAAS,MAAM5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,EAChE;IACAQ,OAAO,CAACC,IAAI,CACV,mCAAmCX,SAAS,iCAC1C5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK,0GAEpD,CAAC;EACH;EAEA,MAAMU,WAAW,GAAIC,KAAa,IAAK;IACrC,IAAIA,KAAK,KAAK1B,eAAe,CAAC0B,KAAK,EAAE;MACnC5B,aAAa,CAAC4B,KAAK,CAAC;IACtB;EACF,CAAC;EAED,
|
|
1
|
+
{"version":3,"names":["React","I18nManager","Platform","StyleSheet","View","DefaultAdapter","SceneView","TabBar","jsx","_jsx","jsxs","_jsxs","renderLazyPlaceholderDefault","TabView","onIndexChange","onTabSelect","navigationState","renderScene","keyboardDismissMode","lazy","lazyPreloadDistance","onSwipeStart","onSwipeEnd","renderLazyPlaceholder","renderTabBar","props","renderAdapter","pagerStyle","style","direction","getConstants","isRTL","swipeEnabled","tabBarPosition","animationEnabled","options","sceneOptions","commonOptions","OS","console","warn","jumpToIndex","index","optionsCache","useRef","undefined","useMemo","Object","fromEntries","routes","map","route","previous","current","routeOptions","key","cachedOptions","hasOwn","useInsertionEffect","element","layoutDirection","children","position","render","subscribe","jumpTo","sceneRendererProps","Fragment","i","sceneStyle","loading","styles","container","create","flex","overflow"],"sourceRoot":"../../src","sources":["TabView.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,WAAW,EACXC,QAAQ,EAERC,UAAU,EACVC,IAAI,QAEC,cAAc;AAErB,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAsIlC,MAAMC,4BAA4B,GAAGA,CAAA,KAAM,IAAI;AAE/C,OAAO,SAASC,OAAOA,CAAkB;EACvCC,aAAa;EACbC,WAAW;EACXC,eAAe;EACfC,WAAW;EACXC,mBAAmB,GAAG,MAAM;EAC5BC,IAAI,GAAG,KAAK;EACZC,mBAAmB,GAAG,CAAC;EACvBC,YAAY;EACZC,UAAU;EACVC,qBAAqB,GAAGX,4BAA4B;EACpD;EACAY,YAAY,GAAIC,KAAK,iBAAKhB,IAAA,CAACF,MAAM;IAAA,GAAKkB;EAAK,CAAG,CAAC;EAC/C;EACAC,aAAa,GAAID,KAAK,iBAAKhB,IAAA,CAACJ,cAAc;IAAA,GAAKoB;EAAK,CAAG,CAAC;EACxDE,UAAU;EACVC,KAAK;EACLC,SAAS,GAAG5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK;EAC5DC,YAAY,GAAG,IAAI;EACnBC,cAAc,GAAG,KAAK;EACtBC,gBAAgB,GAAG,IAAI;EACvBC,OAAO,EAAEC,YAAY;EACrBC;AACQ,CAAC,EAAE;EACX,IACEnC,QAAQ,CAACoC,EAAE,KAAK,KAAK,IACrBT,SAAS,MAAM5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,EAChE;IACAQ,OAAO,CAACC,IAAI,CACV,mCAAmCX,SAAS,iCAC1C5B,WAAW,CAAC6B,YAAY,CAAC,CAAC,CAACC,KAAK,GAAG,KAAK,GAAG,KAAK,0GAEpD,CAAC;EACH;EAEA,MAAMU,WAAW,GAAIC,KAAa,IAAK;IACrC,IAAIA,KAAK,KAAK1B,eAAe,CAAC0B,KAAK,EAAE;MACnC5B,aAAa,CAAC4B,KAAK,CAAC;IACtB;EACF,CAAC;EAED,MAAMC,YAAY,GAAG3C,KAAK,CAAC4C,MAAM,CAO/BC,SAAS,CAAC;EAEZ,MAAMV,OAAO,GAAGnC,KAAK,CAAC8C,OAAO,CAC3B,MACEC,MAAM,CAACC,WAAW,CAChBhC,eAAe,CAACiC,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAK;IACpC,MAAMC,QAAQ,GAAGT,YAAY,CAACU,OAAO;IACrC,MAAMC,YAAY,GAAGlB,YAAY,GAAGe,KAAK,CAACI,GAAG,CAAC;IAC9C,MAAMC,aAAa,GAAGJ,QAAQ,EAAEjB,OAAO,CAACgB,KAAK,CAACI,GAAG,CAAC;IAElD,OAAO,CACLJ,KAAK,CAACI,GAAG,EACTH,QAAQ,IACRI,aAAa,IACbT,MAAM,CAACU,MAAM,CAACL,QAAQ,CAACjB,OAAO,EAAEgB,KAAK,CAACI,GAAG,CAAC,IAC1CH,QAAQ,CAACf,aAAa,KAAKA,aAAa,IACxCe,QAAQ,CAAChB,YAAY,GAAGe,KAAK,CAACI,GAAG,CAAC,KAAKD,YAAY,GAC/CE,aAAa,GACb;MAAE,GAAGnB,aAAa;MAAE,GAAGiB;IAAa,CAAC,CAC1C;EACH,CAAC,CACH,CAAC,EACH,CAACtC,eAAe,CAACiC,MAAM,EAAEZ,aAAa,EAAED,YAAY,EAAEO,YAAY,CACpE,CAAC;EAED3C,KAAK,CAAC0D,kBAAkB,CAAC,MAAM;IAC7Bf,YAAY,CAACU,OAAO,GAAG;MAAEhB,aAAa;MAAED,YAAY;MAAED;IAAQ,CAAC;EACjE,CAAC,CAAC;EAEF,MAAMwB,OAAO,GAAGjC,aAAa,CAAC;IAC5BV,eAAe;IACfE,mBAAmB;IACnBc,YAAY;IACZX,YAAY;IACZC,UAAU;IACVR,aAAa,EAAE2B,WAAW;IAC1B1B,WAAW;IACXmB,gBAAgB;IAChB0B,eAAe,EAAE/B,SAAS;IAC1BD,KAAK,EAAED,UAAU;IACjBkC,QAAQ,EAAEA,CAAC;MAAEC,QAAQ;MAAEC,MAAM;MAAEC,SAAS;MAAEC;IAAO,CAAC,KAAK;MACrD;MACA;MACA,MAAMC,kBAAkB,GAAG;QACzBJ,QAAQ;QACRG;MACF,CAAC;MAED,oBACEtD,KAAA,CAACX,KAAK,CAACmE,QAAQ;QAAAN,QAAA,GACZ5B,cAAc,KAAK,KAAK,IACvBT,YAAY,CAAC;UACX,GAAG0C,kBAAkB;UACrBF,SAAS;UACT7B,OAAO;UACPnB;QACF,CAAC,CAAC,EACH+C,MAAM,CACL/C,eAAe,CAACiC,MAAM,CAACC,GAAG,CAAC,CAACC,KAAK,EAAEiB,CAAC,KAAK;UACvC,MAAM;YAAEC;UAAW,CAAC,GAAGlC,OAAO,GAAGgB,KAAK,CAACI,GAAG,CAAC,IAAI,CAAC,CAAC;UAEjD,oBACE9C,IAAA,CAACH,SAAS;YAAA,GAEJ4D,kBAAkB;YACtBF,SAAS,EAAEA,SAAU;YACrBtB,KAAK,EAAE0B,CAAE;YACTjD,IAAI,EAAE,OAAOA,IAAI,KAAK,UAAU,GAAGA,IAAI,CAAC;cAAEgC;YAAM,CAAC,CAAC,GAAGhC,IAAK;YAC1DC,mBAAmB,EAAEA,mBAAoB;YACzCJ,eAAe,EAAEA,eAAgB;YACjCY,KAAK,EAAEyC,UAAW;YAAAR,QAAA,EAEjBA,CAAC;cAAES;YAAQ,CAAC,KACXA,OAAO,GACH/C,qBAAqB,CAAC;cAAE4B;YAAM,CAAC,CAAC,GAChClC,WAAW,CAAC;cACV,GAAGiD,kBAAkB;cACrBf;YACF,CAAC;UAAC,GAfHA,KAAK,CAACI,GAiBF,CAAC;QAEhB,CAAC,CACH,CAAC,EACAtB,cAAc,KAAK,QAAQ,IAC1BT,YAAY,CAAC;UACX,GAAG0C,kBAAkB;UACrBF,SAAS;UACT7B,OAAO;UACPnB;QACF,CAAC,CAAC;MAAA,CACU,CAAC;IAErB;EACF,CAAC,CAAC;EAEF,oBAAOP,IAAA,CAACL,IAAI;IAACwB,KAAK,EAAE,CAAC2C,MAAM,CAACC,SAAS,EAAE5C,KAAK,CAAE;IAAAiC,QAAA,EAAEF;EAAO,CAAO,CAAC;AACjE;AAEA,MAAMY,MAAM,GAAGpE,UAAU,CAACsE,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -24,15 +24,16 @@ export function useLayoutWidths(priorityKeys) {
|
|
|
24
24
|
if (priorityKeysRef.current.includes(key) && !hasFinishedLayoutRef.current) {
|
|
25
25
|
// Synchronously set widths during the initial layout phase
|
|
26
26
|
// So we don't have to wait for the next frame to render the indicator
|
|
27
|
-
setWidths(prev =>
|
|
27
|
+
setWidths(prev => prev[key] === width ? prev : {
|
|
28
28
|
...prev,
|
|
29
29
|
[key]: width
|
|
30
|
-
})
|
|
30
|
+
});
|
|
31
31
|
} else if (hasFinishedLayoutRef.current) {
|
|
32
32
|
handle.current = requestAnimationFrame(() => {
|
|
33
|
-
|
|
33
|
+
const next = {
|
|
34
34
|
...measured.current
|
|
35
|
-
}
|
|
35
|
+
};
|
|
36
|
+
setWidths(prev => Object.keys(prev).length === Object.keys(next).length && Object.keys(next).every(key => prev[key] === next[key]) ? prev : next);
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useLayoutWidths","priorityKeys","widths","setWidths","useState","measured","useRef","handle","priorityKeysRef","useEffect","current","hasFinishedLayoutRef","useLayoutEffect","onMeasureWidth","useCallback","key","width","cancelAnimationFrame","includes","prev","requestAnimationFrame"],"sourceRoot":"../../src","sources":["useLayoutWidths.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,YAAsB,EAAE;EACtD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAyB,CAAC,CAAC,CAAC;EAEtE,MAAMC,QAAQ,GAAGN,KAAK,CAACO,MAAM,CAAyB,CAAC,CAAC,CAAC;EACzD,MAAMC,MAAM,GAAGR,KAAK,CAACO,MAAM,CAA2C,IAAI,CAAC;EAE3E,MAAME,eAAe,GAAGT,KAAK,CAACO,MAAM,CAACL,YAAY,CAAC;EAElDF,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBD,eAAe,CAACE,OAAO,GAAGT,YAAY;EACxC,CAAC,CAAC;EAEF,MAAMU,oBAAoB,GAAGZ,KAAK,CAACO,MAAM,CAAC,KAAK,CAAC;EAEhDP,KAAK,CAACa,eAAe,CAAC,MAAM;IAC1BD,oBAAoB,CAACD,OAAO,GAAG,IAAI;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,cAAc,GAAGd,KAAK,CAACe,WAAW,CAAC,CAACC,GAAW,EAAEC,KAAa,KAAK;IACvEX,QAAQ,CAACK,OAAO,CAACK,GAAG,CAAC,GAAGC,KAAK;IAE7B,IAAIT,MAAM,CAACG,OAAO,IAAI,IAAI,EAAE;MAC1BO,oBAAoB,CAACV,MAAM,CAACG,OAAO,CAAC;IACtC;IAEA,IACEF,eAAe,CAACE,OAAO,CAACQ,QAAQ,CAACH,GAAG,CAAC,IACrC,CAACJ,oBAAoB,CAACD,OAAO,EAC7B;MACA;MACA;MACAP,SAAS,CAAEgB,IAAI,
|
|
1
|
+
{"version":3,"names":["React","useLayoutWidths","priorityKeys","widths","setWidths","useState","measured","useRef","handle","priorityKeysRef","useEffect","current","hasFinishedLayoutRef","useLayoutEffect","onMeasureWidth","useCallback","key","width","cancelAnimationFrame","includes","prev","requestAnimationFrame","next","Object","keys","length","every"],"sourceRoot":"../../src","sources":["useLayoutWidths.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,YAAsB,EAAE;EACtD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAyB,CAAC,CAAC,CAAC;EAEtE,MAAMC,QAAQ,GAAGN,KAAK,CAACO,MAAM,CAAyB,CAAC,CAAC,CAAC;EACzD,MAAMC,MAAM,GAAGR,KAAK,CAACO,MAAM,CAA2C,IAAI,CAAC;EAE3E,MAAME,eAAe,GAAGT,KAAK,CAACO,MAAM,CAACL,YAAY,CAAC;EAElDF,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBD,eAAe,CAACE,OAAO,GAAGT,YAAY;EACxC,CAAC,CAAC;EAEF,MAAMU,oBAAoB,GAAGZ,KAAK,CAACO,MAAM,CAAC,KAAK,CAAC;EAEhDP,KAAK,CAACa,eAAe,CAAC,MAAM;IAC1BD,oBAAoB,CAACD,OAAO,GAAG,IAAI;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,cAAc,GAAGd,KAAK,CAACe,WAAW,CAAC,CAACC,GAAW,EAAEC,KAAa,KAAK;IACvEX,QAAQ,CAACK,OAAO,CAACK,GAAG,CAAC,GAAGC,KAAK;IAE7B,IAAIT,MAAM,CAACG,OAAO,IAAI,IAAI,EAAE;MAC1BO,oBAAoB,CAACV,MAAM,CAACG,OAAO,CAAC;IACtC;IAEA,IACEF,eAAe,CAACE,OAAO,CAACQ,QAAQ,CAACH,GAAG,CAAC,IACrC,CAACJ,oBAAoB,CAACD,OAAO,EAC7B;MACA;MACA;MACAP,SAAS,CAAEgB,IAAI,IACbA,IAAI,CAACJ,GAAG,CAAC,KAAKC,KAAK,GAAGG,IAAI,GAAG;QAAE,GAAGA,IAAI;QAAE,CAACJ,GAAG,GAAGC;MAAM,CACvD,CAAC;IACH,CAAC,MAAM,IAAIL,oBAAoB,CAACD,OAAO,EAAE;MACvCH,MAAM,CAACG,OAAO,GAAGU,qBAAqB,CAAC,MAAM;QAC3C,MAAMC,IAAI,GAAG;UAAE,GAAGhB,QAAQ,CAACK;QAAQ,CAAC;QAEpCP,SAAS,CAAEgB,IAAI,IACbG,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC,CAACK,MAAM,KAAKF,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,IACrDF,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACI,KAAK,CAAEV,GAAG,IAAKI,IAAI,CAACJ,GAAG,CAAC,KAAKM,IAAI,CAACN,GAAG,CAAC,CAAC,GACrDI,IAAI,GACJE,IACN,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,OAAO,MAAM;MACX,IAAId,MAAM,CAACG,OAAO,IAAI,IAAI,EAAE;QAC1BO,oBAAoB,CAACV,MAAM,CAACG,OAAO,CAAC;MACtC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,CAACR,MAAM,EAAEW,cAAc,CAAC;AACjC","ignoreList":[]}
|
|
@@ -2,10 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
import { type ViewProps } from 'react-native';
|
|
3
3
|
import type { AdapterProps } from './types.js';
|
|
4
4
|
export type ScrollViewAdapterProps = AdapterProps & Omit<ViewProps, 'children'> & {
|
|
5
|
-
decelerationRate?: 'fast' | 'normal';
|
|
6
|
-
keyboardShouldPersistTaps?: 'always' | 'never' | 'handled';
|
|
7
|
-
bounces?: boolean;
|
|
8
|
-
overScrollMode?: 'always' | 'never' | 'auto';
|
|
5
|
+
decelerationRate?: 'fast' | 'normal' | undefined;
|
|
6
|
+
keyboardShouldPersistTaps?: 'always' | 'never' | 'handled' | undefined;
|
|
7
|
+
bounces?: boolean | undefined;
|
|
8
|
+
overScrollMode?: 'always' | 'never' | 'auto' | undefined;
|
|
9
9
|
};
|
|
10
10
|
export declare function ScrollViewAdapter({ keyboardDismissMode, swipeEnabled, navigationState, onIndexChange, onTabSelect, onSwipeStart, onSwipeEnd, children, style, animationEnabled, layoutDirection, decelerationRate, bounces, overScrollMode, keyboardShouldPersistTaps, ...rest }: ScrollViewAdapterProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
11
11
|
//# sourceMappingURL=ScrollViewAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollViewAdapter.d.ts","sourceRoot":"","sources":["../../../src/ScrollViewAdapter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAS,CAAC;AAGtD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAC/C,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ScrollViewAdapter.d.ts","sourceRoot":"","sources":["../../../src/ScrollViewAdapter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAS,CAAC;AAGtD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAC/C,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,yBAAyB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACvE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1D,CAAC;AAMJ,wBAAgB,iBAAiB,CAAC,EAChC,mBAAmB,EACnB,YAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,KAAK,EACL,gBAAuB,EACvB,eAAuB,EACvB,gBAAyB,EACzB,OAAe,EACf,cAAwB,EACxB,yBAAoC,EACpC,GAAG,IAAI,EACR,EAAE,sBAAsB,0EAqRxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabView.d.ts","sourceRoot":"","sources":["../../../src/TabView.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TabView.d.ts","sourceRoot":"","sources":["../../../src/TabView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLayoutWidths.d.ts","sourceRoot":"","sources":["../../../src/useLayoutWidths.tsx"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,2CAkBL,MAAM,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"useLayoutWidths.d.ts","sourceRoot":"","sources":["../../../src/useLayoutWidths.tsx"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,2CAkBL,MAAM,SAAS,MAAM,iBAqCrE"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-tab-view",
|
|
3
3
|
"description": "Tab view component for React Native",
|
|
4
|
-
"version": "5.0.0-alpha.
|
|
4
|
+
"version": "5.0.0-alpha.17",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
]
|
|
86
86
|
]
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "110f8e897f476977b7227e5f0326996106a742f0"
|
|
89
89
|
}
|
|
@@ -15,10 +15,10 @@ import { useMeasureLayout } from './useMeasureLayout';
|
|
|
15
15
|
|
|
16
16
|
export type ScrollViewAdapterProps = AdapterProps &
|
|
17
17
|
Omit<ViewProps, 'children'> & {
|
|
18
|
-
decelerationRate?: 'fast' | 'normal';
|
|
19
|
-
keyboardShouldPersistTaps?: 'always' | 'never' | 'handled';
|
|
20
|
-
bounces?: boolean;
|
|
21
|
-
overScrollMode?: 'always' | 'never' | 'auto';
|
|
18
|
+
decelerationRate?: 'fast' | 'normal' | undefined;
|
|
19
|
+
keyboardShouldPersistTaps?: 'always' | 'never' | 'handled' | undefined;
|
|
20
|
+
bounces?: boolean | undefined;
|
|
21
|
+
overScrollMode?: 'always' | 'never' | 'auto' | undefined;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
type ScrollEvent = Parameters<
|
package/src/TabView.tsx
CHANGED
|
@@ -187,16 +187,42 @@ export function TabView<T extends Route>({
|
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
190
|
+
const optionsCache = React.useRef<
|
|
191
|
+
| {
|
|
192
|
+
commonOptions: Props<T>['commonOptions'];
|
|
193
|
+
sceneOptions: Props<T>['options'];
|
|
194
|
+
options: Record<string, TabDescriptor<T>>;
|
|
195
|
+
}
|
|
196
|
+
| undefined
|
|
197
|
+
>(undefined);
|
|
198
|
+
|
|
199
|
+
const options = React.useMemo(
|
|
200
|
+
() =>
|
|
201
|
+
Object.fromEntries(
|
|
202
|
+
navigationState.routes.map((route) => {
|
|
203
|
+
const previous = optionsCache.current;
|
|
204
|
+
const routeOptions = sceneOptions?.[route.key];
|
|
205
|
+
const cachedOptions = previous?.options[route.key];
|
|
206
|
+
|
|
207
|
+
return [
|
|
208
|
+
route.key,
|
|
209
|
+
previous &&
|
|
210
|
+
cachedOptions &&
|
|
211
|
+
Object.hasOwn(previous.options, route.key) &&
|
|
212
|
+
previous.commonOptions === commonOptions &&
|
|
213
|
+
previous.sceneOptions?.[route.key] === routeOptions
|
|
214
|
+
? cachedOptions
|
|
215
|
+
: { ...commonOptions, ...routeOptions },
|
|
216
|
+
];
|
|
217
|
+
})
|
|
218
|
+
),
|
|
219
|
+
[navigationState.routes, commonOptions, sceneOptions, optionsCache]
|
|
198
220
|
);
|
|
199
221
|
|
|
222
|
+
React.useInsertionEffect(() => {
|
|
223
|
+
optionsCache.current = { commonOptions, sceneOptions, options };
|
|
224
|
+
});
|
|
225
|
+
|
|
200
226
|
const element = renderAdapter({
|
|
201
227
|
navigationState,
|
|
202
228
|
keyboardDismissMode,
|
package/src/useLayoutWidths.tsx
CHANGED
|
@@ -33,10 +33,19 @@ export function useLayoutWidths(priorityKeys: string[]) {
|
|
|
33
33
|
) {
|
|
34
34
|
// Synchronously set widths during the initial layout phase
|
|
35
35
|
// So we don't have to wait for the next frame to render the indicator
|
|
36
|
-
setWidths((prev) =>
|
|
36
|
+
setWidths((prev) =>
|
|
37
|
+
prev[key] === width ? prev : { ...prev, [key]: width }
|
|
38
|
+
);
|
|
37
39
|
} else if (hasFinishedLayoutRef.current) {
|
|
38
40
|
handle.current = requestAnimationFrame(() => {
|
|
39
|
-
|
|
41
|
+
const next = { ...measured.current };
|
|
42
|
+
|
|
43
|
+
setWidths((prev) =>
|
|
44
|
+
Object.keys(prev).length === Object.keys(next).length &&
|
|
45
|
+
Object.keys(next).every((key) => prev[key] === next[key])
|
|
46
|
+
? prev
|
|
47
|
+
: next
|
|
48
|
+
);
|
|
40
49
|
});
|
|
41
50
|
}
|
|
42
51
|
|