@unif/react-native-design 0.4.36 → 0.4.37
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/components/ui/Reveal/Reveal.js +28 -0
- package/lib/module/components/ui/Reveal/Reveal.js.map +1 -0
- package/lib/module/components/ui/Reveal/Reveal.web.js +48 -0
- package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -0
- package/lib/module/components/ui/Reveal/index.js +4 -0
- package/lib/module/components/ui/Reveal/index.js.map +1 -0
- package/lib/module/components/ui/Reveal/types.js +4 -0
- package/lib/module/components/ui/Reveal/types.js.map +1 -0
- package/lib/module/components/ui/index.js +1 -0
- package/lib/module/components/ui/index.js.map +1 -1
- package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts +11 -0
- package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +10 -0
- package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Reveal/index.d.ts +3 -0
- package/lib/typescript/src/components/ui/Reveal/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Reveal/types.d.ts +12 -0
- package/lib/typescript/src/components/ui/Reveal/types.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/index.d.ts +2 -0
- package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/ui/Reveal/Reveal.tsx +29 -0
- package/src/components/ui/Reveal/Reveal.web.tsx +46 -0
- package/src/components/ui/Reveal/index.ts +2 -0
- package/src/components/ui/Reveal/types.ts +12 -0
- package/src/components/ui/index.ts +2 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
|
|
5
|
+
import { motion } from "../../../theme/index.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
|
|
9
|
+
*
|
|
10
|
+
* web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
|
|
11
|
+
* (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
|
|
12
|
+
* React state + CSS transition 复刻入场淡入。
|
|
13
|
+
*/
|
|
14
|
+
export function Reveal({
|
|
15
|
+
children,
|
|
16
|
+
style,
|
|
17
|
+
duration = motion.base,
|
|
18
|
+
testID
|
|
19
|
+
}) {
|
|
20
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
21
|
+
entering: FadeIn.duration(duration),
|
|
22
|
+
exiting: FadeOut.duration(duration),
|
|
23
|
+
style: style,
|
|
24
|
+
testID: testID,
|
|
25
|
+
children: children
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=Reveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","FadeIn","FadeOut","motion","jsx","_jsx","Reveal","children","style","duration","base","testID","View","entering","exiting"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/Reveal.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,IAAIC,MAAM,EAAEC,OAAO,QAAQ,yBAAyB;AACnE,SAASC,MAAM,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,QAAQ;EACRC,KAAK;EACLC,QAAQ,GAAGN,MAAM,CAACO,IAAI;EACtBC;AACW,CAAC,EAAqB;EACjC,oBACEN,IAAA,CAACL,QAAQ,CAACY,IAAI;IACZC,QAAQ,EAAEZ,MAAM,CAACQ,QAAQ,CAACA,QAAQ,CAAE;IACpCK,OAAO,EAAEZ,OAAO,CAACO,QAAQ,CAACA,QAAQ,CAAE;IACpCD,KAAK,EAAEA,KAAM;IACbG,MAAM,EAAEA,MAAO;IAAAJ,QAAA,EAEdA;EAAQ,CACI,CAAC;AAEpB","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { motion } from "../../../theme/index.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
|
|
9
|
+
* _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
|
|
10
|
+
* 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
|
|
11
|
+
* native 走 Reveal.tsx 的 reanimated 实现。
|
|
12
|
+
*/
|
|
13
|
+
export function Reveal({
|
|
14
|
+
children,
|
|
15
|
+
style,
|
|
16
|
+
duration = motion.base,
|
|
17
|
+
testID
|
|
18
|
+
}) {
|
|
19
|
+
const [visible, setVisible] = useState(false);
|
|
20
|
+
const rafRef = useRef(null);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
let cancelled = false;
|
|
23
|
+
// 双 RAF 过一帧 commit/paint,确保 CSS transition 有 opacity:0 起点(仿 ToastHost.web)。
|
|
24
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
25
|
+
if (cancelled) return;
|
|
26
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
27
|
+
if (!cancelled) setVisible(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
return () => {
|
|
31
|
+
cancelled = true;
|
|
32
|
+
if (rafRef.current != null) cancelAnimationFrame(rafRef.current);
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
const animatedWebStyle = {
|
|
36
|
+
opacity: visible ? 1 : 0,
|
|
37
|
+
transition: `opacity ${duration}ms ease-out`
|
|
38
|
+
};
|
|
39
|
+
return /*#__PURE__*/_jsx(View, {
|
|
40
|
+
style: style,
|
|
41
|
+
testID: testID,
|
|
42
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
43
|
+
style: animatedWebStyle,
|
|
44
|
+
children: children
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Reveal.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","View","motion","jsx","_jsx","Reveal","children","style","duration","base","testID","visible","setVisible","rafRef","cancelled","current","requestAnimationFrame","cancelAnimationFrame","animatedWebStyle","opacity","transition"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/Reveal.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,MAAM,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,QAAQ;EACRC,KAAK;EACLC,QAAQ,GAAGN,MAAM,CAACO,IAAI;EACtBC;AACW,CAAC,EAAqB;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMa,MAAM,GAAGd,MAAM,CAAgB,IAAI,CAAC;EAE1CD,SAAS,CAAC,MAAM;IACd,IAAIgB,SAAS,GAAG,KAAK;IACrB;IACAD,MAAM,CAACE,OAAO,GAAGC,qBAAqB,CAAC,MAAM;MAC3C,IAAIF,SAAS,EAAE;MACfD,MAAM,CAACE,OAAO,GAAGC,qBAAqB,CAAC,MAAM;QAC3C,IAAI,CAACF,SAAS,EAAEF,UAAU,CAAC,IAAI,CAAC;MAClC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,MAAM;MACXE,SAAS,GAAG,IAAI;MAChB,IAAID,MAAM,CAACE,OAAO,IAAI,IAAI,EAAEE,oBAAoB,CAACJ,MAAM,CAACE,OAAO,CAAC;IAClE,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,gBAAqC,GAAG;IAC5CC,OAAO,EAAER,OAAO,GAAG,CAAC,GAAG,CAAC;IACxBS,UAAU,EAAE,WAAWZ,QAAQ;EACjC,CAAC;EAED,oBACEJ,IAAA,CAACH,IAAI;IAACM,KAAK,EAAEA,KAAM;IAACG,MAAM,EAAEA,MAAO;IAAAJ,QAAA,eACjCF,IAAA;MAAKG,KAAK,EAAEW,gBAAiB;MAAAZ,QAAA,EAAEA;IAAQ,CAAM;EAAC,CAC1C,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Reveal"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -23,6 +23,7 @@ export { NavBar } from "./NavBar/index.js";
|
|
|
23
23
|
export { PasswordInput } from "./PasswordInput/index.js";
|
|
24
24
|
export { Pulse, PulseDot, usePulse } from "./Pulse/index.js";
|
|
25
25
|
export { Radio } from "./Radio/index.js";
|
|
26
|
+
export { Reveal } from "./Reveal/index.js";
|
|
26
27
|
export { Search } from "./Search/index.js";
|
|
27
28
|
export { Skeleton } from "./Skeleton/index.js";
|
|
28
29
|
export { Segmented } from "./Segmented/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Avatar","BottomSheet","BlurLayer","Button","Card","Carousel","Cell","List","Checkbox","Chip","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAEjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAEnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,KAAK,EAAEC,SAAS,QAAQ,kBAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Avatar","BottomSheet","BlurLayer","Button","Card","Carousel","Cell","List","Checkbox","Chip","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Reveal","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAEjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAEnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,KAAK,EAAEC,SAAS,QAAQ,kBAAS","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RevealProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
|
|
5
|
+
*
|
|
6
|
+
* web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
|
|
7
|
+
* (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
|
|
8
|
+
* React state + CSS transition 复刻入场淡入。
|
|
9
|
+
*/
|
|
10
|
+
export declare function Reveal({ children, style, duration, testID, }: RevealProps): React.JSX.Element;
|
|
11
|
+
//# sourceMappingURL=Reveal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reveal.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/Reveal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,QAAsB,EACtB,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWjC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RevealProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
|
|
5
|
+
* _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
|
|
6
|
+
* 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
|
|
7
|
+
* native 走 Reveal.tsx 的 reanimated 实现。
|
|
8
|
+
*/
|
|
9
|
+
export declare function Reveal({ children, style, duration, testID, }: RevealProps): React.JSX.Element;
|
|
10
|
+
//# sourceMappingURL=Reveal.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reveal.web.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/Reveal.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,QAAsB,EACtB,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6BjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
export type RevealProps = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** 容器样式 */
|
|
6
|
+
style?: StyleProp<ViewStyle>;
|
|
7
|
+
/** 入/出场时长(毫秒,默认 motion.base = 200) */
|
|
8
|
+
duration?: number;
|
|
9
|
+
/** E2E / 测试定位 */
|
|
10
|
+
testID?: string;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -44,6 +44,8 @@ export { Pulse, PulseDot, usePulse } from './Pulse';
|
|
|
44
44
|
export type { PulseOptions, PulseProps, PulseDotProps } from './Pulse';
|
|
45
45
|
export { Radio } from './Radio';
|
|
46
46
|
export type { GroupProps as RadioGroupProps, RadioProps } from './Radio';
|
|
47
|
+
export { Reveal } from './Reveal';
|
|
48
|
+
export type { RevealProps } from './Reveal';
|
|
47
49
|
export { Search } from './Search';
|
|
48
50
|
export type { SearchProps } from './Search';
|
|
49
51
|
export { Skeleton } from './Skeleton';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
|
|
3
|
+
import { motion } from '../../../theme';
|
|
4
|
+
import type { RevealProps } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
|
|
8
|
+
*
|
|
9
|
+
* web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
|
|
10
|
+
* (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
|
|
11
|
+
* React state + CSS transition 复刻入场淡入。
|
|
12
|
+
*/
|
|
13
|
+
export function Reveal({
|
|
14
|
+
children,
|
|
15
|
+
style,
|
|
16
|
+
duration = motion.base,
|
|
17
|
+
testID,
|
|
18
|
+
}: RevealProps): React.JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<Animated.View
|
|
21
|
+
entering={FadeIn.duration(duration)}
|
|
22
|
+
exiting={FadeOut.duration(duration)}
|
|
23
|
+
style={style}
|
|
24
|
+
testID={testID}
|
|
25
|
+
>
|
|
26
|
+
{children}
|
|
27
|
+
</Animated.View>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { motion } from '../../../theme';
|
|
4
|
+
import type { RevealProps } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
|
|
8
|
+
* _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
|
|
9
|
+
* 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
|
|
10
|
+
* native 走 Reveal.tsx 的 reanimated 实现。
|
|
11
|
+
*/
|
|
12
|
+
export function Reveal({
|
|
13
|
+
children,
|
|
14
|
+
style,
|
|
15
|
+
duration = motion.base,
|
|
16
|
+
testID,
|
|
17
|
+
}: RevealProps): React.JSX.Element {
|
|
18
|
+
const [visible, setVisible] = useState(false);
|
|
19
|
+
const rafRef = useRef<number | null>(null);
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
let cancelled = false;
|
|
23
|
+
// 双 RAF 过一帧 commit/paint,确保 CSS transition 有 opacity:0 起点(仿 ToastHost.web)。
|
|
24
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
25
|
+
if (cancelled) return;
|
|
26
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
27
|
+
if (!cancelled) setVisible(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
return () => {
|
|
31
|
+
cancelled = true;
|
|
32
|
+
if (rafRef.current != null) cancelAnimationFrame(rafRef.current);
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
|
|
36
|
+
const animatedWebStyle: React.CSSProperties = {
|
|
37
|
+
opacity: visible ? 1 : 0,
|
|
38
|
+
transition: `opacity ${duration}ms ease-out`,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<View style={style} testID={testID}>
|
|
43
|
+
<div style={animatedWebStyle}>{children}</div>
|
|
44
|
+
</View>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export type RevealProps = {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** 容器样式 */
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
/** 入/出场时长(毫秒,默认 motion.base = 200) */
|
|
9
|
+
duration?: number;
|
|
10
|
+
/** E2E / 测试定位 */
|
|
11
|
+
testID?: string;
|
|
12
|
+
};
|
|
@@ -44,6 +44,8 @@ export { Pulse, PulseDot, usePulse } from './Pulse';
|
|
|
44
44
|
export type { PulseOptions, PulseProps, PulseDotProps } from './Pulse';
|
|
45
45
|
export { Radio } from './Radio';
|
|
46
46
|
export type { GroupProps as RadioGroupProps, RadioProps } from './Radio';
|
|
47
|
+
export { Reveal } from './Reveal';
|
|
48
|
+
export type { RevealProps } from './Reveal';
|
|
47
49
|
export { Search } from './Search';
|
|
48
50
|
export type { SearchProps } from './Search';
|
|
49
51
|
export { Skeleton } from './Skeleton';
|