react-native-share 8.0.1 → 8.2.0
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/ios/RNShare.m +7 -0
- package/ios/RNShareActivityItemSource.m +1 -1
- package/ios/RNShareUtils.h +1 -0
- package/ios/RNShareUtils.m +11 -0
- package/lib/commonjs/components/Button.js.map +1 -1
- package/lib/commonjs/components/Overlay.js +24 -39
- package/lib/commonjs/components/Overlay.js.map +1 -1
- package/lib/commonjs/components/ShareSheet.js +34 -38
- package/lib/commonjs/components/ShareSheet.js.map +1 -1
- package/lib/commonjs/components/Sheet.js +15 -25
- package/lib/commonjs/components/Sheet.js.map +1 -1
- package/lib/commonjs/index.js +0 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/components/Button.js.map +1 -1
- package/lib/module/components/Overlay.js +24 -39
- package/lib/module/components/Overlay.js.map +1 -1
- package/lib/module/components/ShareSheet.js +32 -36
- package/lib/module/components/ShareSheet.js.map +1 -1
- package/lib/module/components/Sheet.js +15 -25
- package/lib/module/components/Sheet.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/components/Button.d.ts +1 -1
- package/lib/typescript/components/Overlay.d.ts +1 -19
- package/lib/typescript/components/ShareSheet.d.ts +2 -8
- package/lib/typescript/components/Sheet.d.ts +1 -11
- package/lib/typescript/index.d.ts +5 -4
- package/lib/typescript/types.d.ts +5 -4
- package/package.json +1 -1
- package/src/components/Button.tsx +7 -1
- package/src/components/Overlay.tsx +17 -30
- package/src/components/ShareSheet.tsx +38 -33
- package/src/components/Sheet.tsx +8 -18
- package/src/index.tsx +0 -1
- package/src/types.ts +6 -4
|
@@ -1,48 +1,43 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { View,
|
|
2
|
+
import { View, TouchableOpacity, BackHandler, StyleSheet } from 'react-native';
|
|
3
3
|
import Overlay from './Overlay';
|
|
4
4
|
import Sheet from './Sheet';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
backButtonHandler() {
|
|
17
|
-
if (this.props.visible) {
|
|
18
|
-
this.props.onCancel();
|
|
6
|
+
const ShareSheet = ({
|
|
7
|
+
style = {},
|
|
8
|
+
overlayStyle = {},
|
|
9
|
+
visible,
|
|
10
|
+
onCancel,
|
|
11
|
+
children
|
|
12
|
+
}) => {
|
|
13
|
+
const backButtonHandler = React.useCallback(() => {
|
|
14
|
+
if (visible) {
|
|
15
|
+
onCancel();
|
|
19
16
|
return true;
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
return false;
|
|
23
|
-
}
|
|
20
|
+
}, [visible, onCancel]);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
BackHandler.addEventListener('hardwareBackPress', backButtonHandler);
|
|
23
|
+
return () => {
|
|
24
|
+
BackHandler.removeEventListener('hardwareBackPress', backButtonHandler);
|
|
25
|
+
};
|
|
26
|
+
}, [backButtonHandler]);
|
|
27
|
+
return /*#__PURE__*/React.createElement(Overlay, {
|
|
28
|
+
visible: visible
|
|
29
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
30
|
+
style: [styles.actionSheetContainer, overlayStyle]
|
|
31
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
32
|
+
style: styles.button,
|
|
33
|
+
onPress: onCancel
|
|
34
|
+
}), /*#__PURE__*/React.createElement(Sheet, {
|
|
35
|
+
visible: visible
|
|
36
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
37
|
+
style: [styles.buttonContainer, style]
|
|
38
|
+
}, children))));
|
|
39
|
+
};
|
|
24
40
|
|
|
25
|
-
render() {
|
|
26
|
-
const {
|
|
27
|
-
style = {},
|
|
28
|
-
overlayStyle = {},
|
|
29
|
-
...props
|
|
30
|
-
} = this.props;
|
|
31
|
-
return /*#__PURE__*/React.createElement(Overlay, props, /*#__PURE__*/React.createElement(View, {
|
|
32
|
-
style: [styles.actionSheetContainer, overlayStyle]
|
|
33
|
-
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
34
|
-
style: styles.button,
|
|
35
|
-
onPress: this.props.onCancel
|
|
36
|
-
}), /*#__PURE__*/React.createElement(Sheet, {
|
|
37
|
-
visible: this.props.visible
|
|
38
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
39
|
-
style: [styles.buttonContainer, style]
|
|
40
|
-
}, this.props.children))));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export default ShareSheet;
|
|
46
41
|
const styles = StyleSheet.create({
|
|
47
42
|
actionSheetContainer: {
|
|
48
43
|
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
@@ -61,4 +56,5 @@ const styles = StyleSheet.create({
|
|
|
61
56
|
flex: 1
|
|
62
57
|
}
|
|
63
58
|
});
|
|
59
|
+
export default ShareSheet;
|
|
64
60
|
//# sourceMappingURL=ShareSheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ShareSheet.tsx"],"names":["React","View","
|
|
1
|
+
{"version":3,"sources":["ShareSheet.tsx"],"names":["React","View","TouchableOpacity","BackHandler","StyleSheet","Overlay","Sheet","ShareSheet","style","overlayStyle","visible","onCancel","children","backButtonHandler","useCallback","useEffect","addEventListener","removeEventListener","styles","actionSheetContainer","button","buttonContainer","create","backgroundColor","flex","justifyContent","paddingBottom","paddingTop","overflow"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,IADF,EAEEC,gBAFF,EAGEC,WAHF,EAMEC,UANF,QAOO,cAPP;AASA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,KAAP,MAAkB,SAAlB;;AASA,MAAMC,UAA8D,GAAG,CAAC;AACtEC,EAAAA,KAAK,GAAG,EAD8D;AAEtEC,EAAAA,YAAY,GAAG,EAFuD;AAGtEC,EAAAA,OAHsE;AAItEC,EAAAA,QAJsE;AAKtEC,EAAAA;AALsE,CAAD,KAMjE;AACJ,QAAMC,iBAAiB,GAAGb,KAAK,CAACc,WAAN,CAAkB,MAAM;AAChD,QAAIJ,OAAJ,EAAa;AACXC,MAAAA,QAAQ;AACR,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD,GANyB,EAMvB,CAACD,OAAD,EAAUC,QAAV,CANuB,CAA1B;AAQAX,EAAAA,KAAK,CAACe,SAAN,CAAgB,MAAM;AACpBZ,IAAAA,WAAW,CAACa,gBAAZ,CAA6B,mBAA7B,EAAkDH,iBAAlD;AACA,WAAO,MAAM;AACXV,MAAAA,WAAW,CAACc,mBAAZ,CAAgC,mBAAhC,EAAqDJ,iBAArD;AACD,KAFD;AAGD,GALD,EAKG,CAACA,iBAAD,CALH;AAOA,sBACE,oBAAC,OAAD;AAAS,IAAA,OAAO,EAAEH;AAAlB,kBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACQ,MAAM,CAACC,oBAAR,EAA8BV,YAA9B;AAAb,kBACE,oBAAC,gBAAD;AAAkB,IAAA,KAAK,EAAES,MAAM,CAACE,MAAhC;AAAwC,IAAA,OAAO,EAAET;AAAjD,IADF,eAEE,oBAAC,KAAD;AAAO,IAAA,OAAO,EAAED;AAAhB,kBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACQ,MAAM,CAACG,eAAR,EAAyBb,KAAzB;AAAb,KAA+CI,QAA/C,CADF,CAFF,CADF,CADF;AAUD,CAhCD;;AAkCA,MAAMM,MAAM,GAAGd,UAAU,CAACkB,MAAX,CAAkB;AAC/BH,EAAAA,oBAAoB,EAAE;AACpBI,IAAAA,eAAe,EAAE,oBADG;AAEpBC,IAAAA,IAAI,EAAE,CAFc;AAGpBC,IAAAA,cAAc,EAAE,UAHI;AAIpBC,IAAAA,aAAa,EAAE,CAJK;AAKpBC,IAAAA,UAAU,EAAE;AALQ,GADS;AAQ/BN,EAAAA,eAAe,EAAE;AACfE,IAAAA,eAAe,EAAE,OADF;AAEfK,IAAAA,QAAQ,EAAE,QAFK;AAGfF,IAAAA,aAAa,EAAE,CAHA;AAIfC,IAAAA,UAAU,EAAE;AAJG,GARc;AAc/BP,EAAAA,MAAM,EAAE;AACNI,IAAAA,IAAI,EAAE;AADA;AAduB,CAAlB,CAAf;AAmBA,eAAejB,UAAf","sourcesContent":["import * as React from 'react';\nimport {\n View,\n TouchableOpacity,\n BackHandler,\n ViewStyle,\n StyleProp,\n StyleSheet,\n} from 'react-native';\n\nimport Overlay from './Overlay';\nimport Sheet from './Sheet';\n\nexport interface ShareSheetProps {\n visible: boolean;\n onCancel: () => void;\n style?: StyleProp<ViewStyle>;\n overlayStyle?: StyleProp<ViewStyle>;\n}\n\nconst ShareSheet: React.FC<React.PropsWithChildren<ShareSheetProps>> = ({\n style = {},\n overlayStyle = {},\n visible,\n onCancel,\n children,\n}) => {\n const backButtonHandler = React.useCallback(() => {\n if (visible) {\n onCancel();\n return true;\n }\n return false;\n }, [visible, onCancel]);\n\n React.useEffect(() => {\n BackHandler.addEventListener('hardwareBackPress', backButtonHandler);\n return () => {\n BackHandler.removeEventListener('hardwareBackPress', backButtonHandler);\n };\n }, [backButtonHandler]);\n\n return (\n <Overlay visible={visible}>\n <View style={[styles.actionSheetContainer, overlayStyle]}>\n <TouchableOpacity style={styles.button} onPress={onCancel} />\n <Sheet visible={visible}>\n <View style={[styles.buttonContainer, style]}>{children}</View>\n </Sheet>\n </View>\n </Overlay>\n );\n};\n\nconst styles = StyleSheet.create({\n actionSheetContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n flex: 1,\n justifyContent: 'flex-end',\n paddingBottom: 0,\n paddingTop: 10,\n },\n buttonContainer: {\n backgroundColor: 'white',\n overflow: 'hidden',\n paddingBottom: 5,\n paddingTop: 5,\n },\n button: {\n flex: 1,\n },\n});\n\nexport default ShareSheet;\n"]}
|
|
@@ -1,36 +1,26 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
1
|
import * as React from 'react';
|
|
4
2
|
import { Animated } from 'react-native';
|
|
5
3
|
const DEFAULT_BOTTOM = -300;
|
|
6
4
|
const DEFAULT_ANIMATE_TIME = 300;
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
UNSAFE_componentWillReceiveProps(newProps) {
|
|
18
|
-
return Animated.timing(this.state.bottom, {
|
|
19
|
-
toValue: newProps.visible ? 0 : DEFAULT_BOTTOM,
|
|
6
|
+
const Sheet = ({
|
|
7
|
+
visible,
|
|
8
|
+
children
|
|
9
|
+
}) => {
|
|
10
|
+
const [bottom] = React.useState(new Animated.Value(DEFAULT_BOTTOM));
|
|
11
|
+
React.useEffect(() => {
|
|
12
|
+
return Animated.timing(bottom, {
|
|
13
|
+
toValue: visible ? 0 : DEFAULT_BOTTOM,
|
|
20
14
|
duration: DEFAULT_ANIMATE_TIME,
|
|
21
15
|
useNativeDriver: false
|
|
22
16
|
}).start();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}, this.props.children);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
}
|
|
17
|
+
}, [visible, bottom]);
|
|
18
|
+
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
19
|
+
style: {
|
|
20
|
+
bottom
|
|
21
|
+
}
|
|
22
|
+
}, children);
|
|
23
|
+
};
|
|
34
24
|
|
|
35
25
|
export default Sheet;
|
|
36
26
|
//# sourceMappingURL=Sheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Sheet.tsx"],"names":["React","Animated","DEFAULT_BOTTOM","DEFAULT_ANIMATE_TIME","Sheet","
|
|
1
|
+
{"version":3,"sources":["Sheet.tsx"],"names":["React","Animated","DEFAULT_BOTTOM","DEFAULT_ANIMATE_TIME","Sheet","visible","children","bottom","useState","Value","useEffect","timing","toValue","duration","useNativeDriver","start"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,MAAMC,cAAc,GAAG,CAAC,GAAxB;AACA,MAAMC,oBAAoB,GAAG,GAA7B;;AAMA,MAAMC,KAAoD,GAAG,CAAC;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAD,KAA2B;AACtF,QAAM,CAACC,MAAD,IAAWP,KAAK,CAACQ,QAAN,CAAe,IAAIP,QAAQ,CAACQ,KAAb,CAAmBP,cAAnB,CAAf,CAAjB;AAEAF,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpB,WAAOT,QAAQ,CAACU,MAAT,CAAgBJ,MAAhB,EAAwB;AAC7BK,MAAAA,OAAO,EAAEP,OAAO,GAAG,CAAH,GAAOH,cADM;AAE7BW,MAAAA,QAAQ,EAAEV,oBAFmB;AAG7BW,MAAAA,eAAe,EAAE;AAHY,KAAxB,EAIJC,KAJI,EAAP;AAKD,GAND,EAMG,CAACV,OAAD,EAAUE,MAAV,CANH;AAQA,sBAAO,oBAAC,QAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE;AAAEA,MAAAA;AAAF;AAAtB,KAAmCD,QAAnC,CAAP;AACD,CAZD;;AAcA,eAAeF,KAAf","sourcesContent":["import * as React from 'react';\nimport { Animated } from 'react-native';\n\nconst DEFAULT_BOTTOM = -300;\nconst DEFAULT_ANIMATE_TIME = 300;\n\nexport interface SheetProps {\n visible: boolean;\n}\n\nconst Sheet: React.FC<React.PropsWithChildren<SheetProps>> = ({ visible, children }) => {\n const [bottom] = React.useState(new Animated.Value(DEFAULT_BOTTOM));\n\n React.useEffect(() => {\n return Animated.timing(bottom, {\n toValue: visible ? 0 : DEFAULT_BOTTOM,\n duration: DEFAULT_ANIMATE_TIME,\n useNativeDriver: false,\n }).start();\n }, [visible, bottom]);\n\n return <Animated.View style={{ bottom }}>{children}</Animated.View>;\n};\n\nexport default Sheet;\n"]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["NativeModules","Platform","Overlay","Sheet","Button","ShareSheet","requireAndAskPermissions","Social","ShareAsset","RNShare","FACEBOOK","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","Promise","resolve","reject","then","OS","url","urls","filename","filenames","error","success","message","failOnCancel","dismissedAction","Error","catch","e","shareSingle","social","appId","Boolean","isPackageInstalled","packageName","isInstalled"],"mappings":"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","sourcesContent":["import { NativeModules, Platform } from 'react-native';\n\nimport Overlay from './components/Overlay';\nimport Sheet from './components/Sheet';\nimport Button from './components/Button';\nimport ShareSheet from './components/ShareSheet';\nimport requireAndAskPermissions from './helpers/requireAndAskPermissions';\nimport {\n Social,\n IsPackageInstalledResult,\n ActivityType,\n ShareOpenResult,\n ShareAsset,\n ShareOptions,\n ShareSingleOptions,\n ShareSingleResult,\n} from './types';\n\nconst RNShare = {\n Button,\n ShareSheet,\n Overlay,\n Sheet,\n\n Social: {\n FACEBOOK: NativeModules.RNShare.FACEBOOK || Social.Facebook,\n FACEBOOK_STORIES: NativeModules.RNShare.FACEBOOKSTORIES || Social.FacebookStories,\n PAGESMANAGER: NativeModules.RNShare.PAGESMANAGER || Social.Pagesmanager,\n TWITTER: NativeModules.RNShare.TWITTER || Social.Twitter,\n WHATSAPP: NativeModules.RNShare.WHATSAPP || Social.Whatsapp,\n WHATSAPPBUSINESS: NativeModules.RNShare.WHATSAPPBUSINESS || Social.Whatsappbusiness,\n INSTAGRAM: NativeModules.RNShare.INSTAGRAM || Social.Instagram,\n INSTAGRAM_STORIES: NativeModules.RNShare.INSTAGRAMSTORIES || Social.InstagramStories,\n GOOGLEPLUS: NativeModules.RNShare.GOOGLEPLUS || Social.Googleplus,\n EMAIL: NativeModules.RNShare.EMAIL || Social.Email,\n PINTEREST: NativeModules.RNShare.PINTEREST || Social.Pinterest,\n LINKEDIN: NativeModules.RNShare.LINKEDIN || Social.Linkedin,\n SMS: NativeModules.RNShare.SMS || Social.Sms,\n TELEGRAM: NativeModules.RNShare.TELEGRAM || Social.Telegram,\n MESSENGER: NativeModules.RNShare.MESSENGER || Social.Messenger,\n SNAPCHAT: NativeModules.RNShare.SNAPCHAT || Social.Snapchat,\n VIBER: NativeModules.RNShare.VIBER || Social.Viber,\n },\n\n open(options: ShareOptions): Promise<ShareOpenResult | never> {\n return new Promise((resolve, reject) => {\n requireAndAskPermissions(options)\n .then(() => {\n if (Platform.OS === 'ios' && options.url && !options.urls) {\n // Backward compatibility with { Share } from react-native\n const url = options.url;\n delete options.url;\n\n options.urls = [url];\n\n if (options.filename && !options.filenames) {\n options.filenames = [options.filename];\n delete options.filename;\n }\n }\n\n NativeModules.RNShare.open(\n options,\n (error) => {\n return reject({ error });\n },\n (success, message) => {\n if (success) {\n return resolve({\n success,\n message,\n });\n } else if (options.failOnCancel === false) {\n return resolve({\n dismissedAction: true,\n success,\n message,\n });\n } else {\n reject(new Error('User did not share'));\n }\n },\n );\n })\n .catch((e: unknown) => reject(e));\n });\n },\n\n shareSingle(options: ShareSingleOptions): Promise<ShareSingleResult | never> {\n if (Platform.OS === 'ios' || Platform.OS === 'android') {\n return new Promise((resolve, reject) => {\n requireAndAskPermissions(options)\n .then(() => {\n if (options.url) {\n options.urls = [options.url];\n }\n\n if (options.social === RNShare.Social.INSTAGRAM_STORIES && !options.appId) {\n return reject({\n success: false,\n message: 'Instagram Story share requires an appId based on Meta policy.',\n });\n }\n\n NativeModules.RNShare.shareSingle(\n options,\n (error) => {\n return reject({ error });\n },\n (success, message) => {\n return resolve({\n success: Boolean(success),\n message,\n });\n },\n );\n })\n .catch((e: unknown) => reject(e));\n });\n } else {\n throw new Error('Not implemented');\n }\n },\n\n isPackageInstalled(packageName: string): Promise<IsPackageInstalledResult | never> {\n if (Platform.OS === 'android') {\n return new Promise((resolve, reject) => {\n NativeModules.RNShare.isPackageInstalled(\n packageName,\n (error) => {\n return reject({ error });\n },\n (isInstalled) => {\n return resolve({\n isInstalled,\n message: 'Package is Installed',\n });\n },\n );\n });\n } else {\n throw new Error('Not implemented');\n }\n },\n} as const;\n\nexport { Overlay, Sheet, Button, ShareSheet, ShareAsset, Social };\nexport type { ShareSingleOptions, ShareOptions, ActivityType, IsPackageInstalledResult };\nexport type { OverlayProps } from './components/Overlay';\nexport type { SheetProps } from './components/Sheet';\nexport type { ButtonProps } from './components/Button';\nexport type { ShareSheetProps } from './components/ShareSheet';\nexport default RNShare;\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["NativeModules","Platform","Overlay","Sheet","Button","ShareSheet","requireAndAskPermissions","Social","ShareAsset","RNShare","FACEBOOK","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","Promise","resolve","reject","then","OS","url","urls","filename","filenames","error","success","message","failOnCancel","dismissedAction","Error","catch","e","shareSingle","social","appId","Boolean","isPackageInstalled","packageName","isInstalled"],"mappings":"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","sourcesContent":["import { NativeModules, Platform } from 'react-native';\n\nimport Overlay from './components/Overlay';\nimport Sheet from './components/Sheet';\nimport Button from './components/Button';\nimport ShareSheet from './components/ShareSheet';\nimport requireAndAskPermissions from './helpers/requireAndAskPermissions';\nimport {\n Social,\n IsPackageInstalledResult,\n ActivityType,\n ShareOpenResult,\n ShareAsset,\n ShareOptions,\n ShareSingleOptions,\n ShareSingleResult,\n} from './types';\n\nconst RNShare = {\n Button,\n ShareSheet,\n Overlay,\n Sheet,\n\n Social: {\n FACEBOOK: NativeModules.RNShare.FACEBOOK || Social.Facebook,\n FACEBOOK_STORIES: NativeModules.RNShare.FACEBOOKSTORIES || Social.FacebookStories,\n PAGESMANAGER: NativeModules.RNShare.PAGESMANAGER || Social.Pagesmanager,\n TWITTER: NativeModules.RNShare.TWITTER || Social.Twitter,\n WHATSAPP: NativeModules.RNShare.WHATSAPP || Social.Whatsapp,\n WHATSAPPBUSINESS: NativeModules.RNShare.WHATSAPPBUSINESS || Social.Whatsappbusiness,\n INSTAGRAM: NativeModules.RNShare.INSTAGRAM || Social.Instagram,\n INSTAGRAM_STORIES: NativeModules.RNShare.INSTAGRAMSTORIES || Social.InstagramStories,\n GOOGLEPLUS: NativeModules.RNShare.GOOGLEPLUS || Social.Googleplus,\n EMAIL: NativeModules.RNShare.EMAIL || Social.Email,\n PINTEREST: NativeModules.RNShare.PINTEREST || Social.Pinterest,\n LINKEDIN: NativeModules.RNShare.LINKEDIN || Social.Linkedin,\n SMS: NativeModules.RNShare.SMS || Social.Sms,\n TELEGRAM: NativeModules.RNShare.TELEGRAM || Social.Telegram,\n MESSENGER: NativeModules.RNShare.MESSENGER || Social.Messenger,\n SNAPCHAT: NativeModules.RNShare.SNAPCHAT || Social.Snapchat,\n VIBER: NativeModules.RNShare.VIBER || Social.Viber,\n },\n\n open(options: ShareOptions): Promise<ShareOpenResult | never> {\n return new Promise((resolve, reject) => {\n requireAndAskPermissions(options)\n .then(() => {\n if (Platform.OS === 'ios' && options.url && !options.urls) {\n // Backward compatibility with { Share } from react-native\n const url = options.url;\n delete options.url;\n\n options.urls = [url];\n\n if (options.filename && !options.filenames) {\n options.filenames = [options.filename];\n }\n }\n\n NativeModules.RNShare.open(\n options,\n (error) => {\n return reject({ error });\n },\n (success, message) => {\n if (success) {\n return resolve({\n success,\n message,\n });\n } else if (options.failOnCancel === false) {\n return resolve({\n dismissedAction: true,\n success,\n message,\n });\n } else {\n reject(new Error('User did not share'));\n }\n },\n );\n })\n .catch((e: unknown) => reject(e));\n });\n },\n\n shareSingle(options: ShareSingleOptions): Promise<ShareSingleResult | never> {\n if (Platform.OS === 'ios' || Platform.OS === 'android') {\n return new Promise((resolve, reject) => {\n requireAndAskPermissions(options)\n .then(() => {\n if (options.url) {\n options.urls = [options.url];\n }\n\n if (options.social === RNShare.Social.INSTAGRAM_STORIES && !options.appId) {\n return reject({\n success: false,\n message: 'Instagram Story share requires an appId based on Meta policy.',\n });\n }\n\n NativeModules.RNShare.shareSingle(\n options,\n (error) => {\n return reject({ error });\n },\n (success, message) => {\n return resolve({\n success: Boolean(success),\n message,\n });\n },\n );\n })\n .catch((e: unknown) => reject(e));\n });\n } else {\n throw new Error('Not implemented');\n }\n },\n\n isPackageInstalled(packageName: string): Promise<IsPackageInstalledResult | never> {\n if (Platform.OS === 'android') {\n return new Promise((resolve, reject) => {\n NativeModules.RNShare.isPackageInstalled(\n packageName,\n (error) => {\n return reject({ error });\n },\n (isInstalled) => {\n return resolve({\n isInstalled,\n message: 'Package is Installed',\n });\n },\n );\n });\n } else {\n throw new Error('Not implemented');\n }\n },\n} as const;\n\nexport { Overlay, Sheet, Button, ShareSheet, ShareAsset, Social };\nexport type { ShareSingleOptions, ShareOptions, ActivityType, IsPackageInstalledResult };\nexport type { OverlayProps } from './components/Overlay';\nexport type { SheetProps } from './components/Sheet';\nexport type { ButtonProps } from './components/Button';\nexport type { ShareSheetProps } from './components/ShareSheet';\nexport default RNShare;\n"]}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["types.ts"],"names":["Social","ShareAsset"],"mappings":"AAAA,WAAYA,MAAZ;;WAAYA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;GAAAA,M,KAAAA,M;;AAoBZ,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U","sourcesContent":["export enum Social {\n Facebook = 'facebook',\n FacebookStories = 'facebookstories',\n Pagesmanager = 'pagesmanager',\n Twitter = 'twitter',\n Whatsapp = 'whatsapp',\n Whatsappbusiness = 'whatsappbusiness',\n Instagram = 'instagram',\n InstagramStories = 'instagramstories',\n Googleplus = 'googleplus',\n Email = 'email',\n Pinterest = 'pinterest',\n Linkedin = 'linkedin',\n Sms = 'sms',\n Telegram = 'telegram',\n Snapchat = 'snapchat',\n Messenger = 'messenger',\n Viber = 'viber',\n}\n\nexport enum ShareAsset {\n BackgroundImage = 'shareBackgroundImage',\n BackgroundVideo = 'shareBackgroundVideo',\n StickerImage = 'shareStickerImage',\n BackgroundAndStickerImage = 'shareBackgroundAndStickerImage',\n}\n\nexport interface LinkMetadata {\n originalUrl?: string;\n url?: string;\n title?: string;\n icon?: string;\n image?: string;\n remoteVideoUrl?: string;\n video?: string;\n}\n\nexport interface ActivityItem {\n type: 'text' | 'url';\n content: string;\n}\n\nexport interface ActivityItemSource {\n placeholderItem: ActivityItem;\n item: { [key in
|
|
1
|
+
{"version":3,"sources":["types.ts"],"names":["Social","ShareAsset"],"mappings":"AAAA,WAAYA,MAAZ;;WAAYA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;GAAAA,M,KAAAA,M;;AAoBZ,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U","sourcesContent":["export enum Social {\n Facebook = 'facebook',\n FacebookStories = 'facebookstories',\n Pagesmanager = 'pagesmanager',\n Twitter = 'twitter',\n Whatsapp = 'whatsapp',\n Whatsappbusiness = 'whatsappbusiness',\n Instagram = 'instagram',\n InstagramStories = 'instagramstories',\n Googleplus = 'googleplus',\n Email = 'email',\n Pinterest = 'pinterest',\n Linkedin = 'linkedin',\n Sms = 'sms',\n Telegram = 'telegram',\n Snapchat = 'snapchat',\n Messenger = 'messenger',\n Viber = 'viber',\n}\n\nexport enum ShareAsset {\n BackgroundImage = 'shareBackgroundImage',\n BackgroundVideo = 'shareBackgroundVideo',\n StickerImage = 'shareStickerImage',\n BackgroundAndStickerImage = 'shareBackgroundAndStickerImage',\n}\n\nexport interface LinkMetadata {\n originalUrl?: string;\n url?: string;\n title?: string;\n icon?: string;\n image?: string;\n remoteVideoUrl?: string;\n video?: string;\n}\n\nexport interface ActivityItem {\n type: 'text' | 'url';\n content: string;\n}\n\nexport interface ActivityItemSource {\n placeholderItem: ActivityItem;\n item: { [key in ActivityTypeItemSource]?: ActivityItem | null | undefined };\n subject?: { [key in ActivityTypeItemSource]?: string };\n dataTypeIdentifier?: { [key in ActivityTypeItemSource]?: string };\n thumbnailImage?: { [key in ActivityTypeItemSource]?: string };\n linkMetadata?: LinkMetadata;\n}\n\ninterface BaseShareSingleOptions {\n urls?: string[];\n url?: string;\n type?: string;\n filename?: string;\n message?: string;\n title?: string;\n subject?: string;\n email?: string;\n recipient?: string;\n social: Exclude<Social, Social.FacebookStories | Social.InstagramStories>;\n forceDialog?: boolean;\n}\n\ninterface BaseSocialStoriesShareSingleOptions extends Omit<BaseShareSingleOptions, 'social'> {\n backgroundImage?: string;\n stickerImage?: string;\n backgroundBottomColor?: string;\n backgroundTopColor?: string;\n attributionURL?: string;\n backgroundVideo?: string;\n}\n\nexport interface InstagramStoriesShareSingleOptions extends BaseSocialStoriesShareSingleOptions {\n social: Social.InstagramStories;\n appId: string;\n}\n\nexport interface FacebookStoriesShareSingleOptions extends BaseSocialStoriesShareSingleOptions {\n social: Social.FacebookStories;\n appId: string;\n}\n\nexport type ShareSingleOptions =\n | BaseShareSingleOptions\n | InstagramStoriesShareSingleOptions\n | FacebookStoriesShareSingleOptions;\n\nexport interface ShareOptions {\n message?: string;\n title?: string;\n url?: string;\n urls?: string[];\n type?: string;\n subject?: string;\n email?: string;\n recipient?: string;\n excludedActivityTypes?: ActivityType[] | string[];\n failOnCancel?: boolean;\n showAppsToView?: boolean;\n filename?: string;\n filenames?: string[];\n saveToFiles?: boolean;\n activityItemSources?: ActivityItemSource[];\n isNewTask?: boolean;\n}\n\nexport type ActivityType =\n | 'default'\n | 'addToReadingList'\n | 'airDrop'\n | 'assignToContact'\n | 'copyToPasteBoard'\n | 'mail'\n | 'message'\n | 'openInIBooks' // iOS 9 or later\n | 'postToFacebook'\n | 'postToFlickr'\n | 'postToTencentWeibo'\n | 'postToTwitter'\n | 'postToVimeo'\n | 'postToWeibo'\n | 'print'\n | 'saveToCameraRoll'\n | 'markupAsPDF'; // iOS 11 or late\n\nexport type ActivityTypeItemSource = ActivityType | string;\n\nexport interface ShareSingleResult {\n message: string;\n success: boolean;\n}\n\nexport interface ShareOpenResult extends ShareSingleResult {\n dismissedAction?: boolean;\n}\nexport interface IsPackageInstalledResult {\n message: string;\n isInstalled: boolean;\n}\n"]}
|
|
@@ -7,5 +7,5 @@ export interface ButtonProps {
|
|
|
7
7
|
textStyle?: StyleProp<TextStyle>;
|
|
8
8
|
children: React.ReactNode;
|
|
9
9
|
}
|
|
10
|
-
declare const Button:
|
|
10
|
+
declare const Button: React.FC<ButtonProps>;
|
|
11
11
|
export default Button;
|
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Animated, StyleProp, ViewStyle } from 'react-native';
|
|
3
2
|
export interface OverlayProps {
|
|
4
3
|
visible: boolean;
|
|
5
4
|
}
|
|
6
|
-
|
|
7
|
-
fadeAnim: Animated.Value;
|
|
8
|
-
overlayStyle: StyleProp<ViewStyle>;
|
|
9
|
-
}
|
|
10
|
-
declare class Overlay extends React.Component<OverlayProps, State> {
|
|
11
|
-
state: {
|
|
12
|
-
fadeAnim: Animated.Value;
|
|
13
|
-
overlayStyle: {
|
|
14
|
-
backgroundColor: string;
|
|
15
|
-
height: number;
|
|
16
|
-
position: "absolute";
|
|
17
|
-
width: number;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
UNSAFE_componentWillReceiveProps(newProps: OverlayProps): void;
|
|
21
|
-
onAnimatedEnd(): void;
|
|
22
|
-
render(): JSX.Element;
|
|
23
|
-
}
|
|
5
|
+
declare const Overlay: React.FC<React.PropsWithChildren<OverlayProps>>;
|
|
24
6
|
export default Overlay;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { ViewStyle, StyleProp } from 'react-native';
|
|
3
3
|
export interface ShareSheetProps {
|
|
4
4
|
visible: boolean;
|
|
5
5
|
onCancel: () => void;
|
|
6
|
-
children: React.ReactChildren;
|
|
7
6
|
style?: StyleProp<ViewStyle>;
|
|
8
7
|
overlayStyle?: StyleProp<ViewStyle>;
|
|
9
8
|
}
|
|
10
|
-
declare
|
|
11
|
-
componentDidMount(): void;
|
|
12
|
-
componentWillUnmount(): void;
|
|
13
|
-
backButtonHandler(): boolean;
|
|
14
|
-
render(): JSX.Element;
|
|
15
|
-
}
|
|
9
|
+
declare const ShareSheet: React.FC<React.PropsWithChildren<ShareSheetProps>>;
|
|
16
10
|
export default ShareSheet;
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Animated } from 'react-native';
|
|
3
2
|
export interface SheetProps {
|
|
4
3
|
visible: boolean;
|
|
5
4
|
}
|
|
6
|
-
|
|
7
|
-
bottom: Animated.Value;
|
|
8
|
-
}
|
|
9
|
-
declare class Sheet extends React.Component<SheetProps, State> {
|
|
10
|
-
state: {
|
|
11
|
-
bottom: Animated.Value;
|
|
12
|
-
};
|
|
13
|
-
UNSAFE_componentWillReceiveProps(newProps: SheetProps): void;
|
|
14
|
-
render(): JSX.Element;
|
|
15
|
-
}
|
|
5
|
+
declare const Sheet: React.FC<React.PropsWithChildren<SheetProps>>;
|
|
16
6
|
export default Sheet;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import Overlay from './components/Overlay';
|
|
2
3
|
import Sheet from './components/Sheet';
|
|
3
4
|
import Button from './components/Button';
|
|
4
5
|
import ShareSheet from './components/ShareSheet';
|
|
5
6
|
import { Social, IsPackageInstalledResult, ActivityType, ShareOpenResult, ShareAsset, ShareOptions, ShareSingleOptions, ShareSingleResult } from './types';
|
|
6
7
|
declare const RNShare: {
|
|
7
|
-
readonly Button: (
|
|
8
|
-
readonly ShareSheet:
|
|
9
|
-
readonly Overlay:
|
|
10
|
-
readonly Sheet:
|
|
8
|
+
readonly Button: import("react").FC<import("./components/Button").ButtonProps>;
|
|
9
|
+
readonly ShareSheet: import("react").FC<import("react").PropsWithChildren<import("./components/ShareSheet").ShareSheetProps>>;
|
|
10
|
+
readonly Overlay: import("react").FC<import("react").PropsWithChildren<import("./components/Overlay").OverlayProps>>;
|
|
11
|
+
readonly Sheet: import("react").FC<import("react").PropsWithChildren<import("./components/Sheet").SheetProps>>;
|
|
11
12
|
readonly Social: {
|
|
12
13
|
readonly FACEBOOK: Social.Facebook;
|
|
13
14
|
readonly FACEBOOK_STORIES: Social.FacebookStories;
|
|
@@ -39,16 +39,16 @@ export interface ActivityItem {
|
|
|
39
39
|
export interface ActivityItemSource {
|
|
40
40
|
placeholderItem: ActivityItem;
|
|
41
41
|
item: {
|
|
42
|
-
[key in
|
|
42
|
+
[key in ActivityTypeItemSource]?: ActivityItem | null | undefined;
|
|
43
43
|
};
|
|
44
44
|
subject?: {
|
|
45
|
-
[key in
|
|
45
|
+
[key in ActivityTypeItemSource]?: string;
|
|
46
46
|
};
|
|
47
47
|
dataTypeIdentifier?: {
|
|
48
|
-
[key in
|
|
48
|
+
[key in ActivityTypeItemSource]?: string;
|
|
49
49
|
};
|
|
50
50
|
thumbnailImage?: {
|
|
51
|
-
[key in
|
|
51
|
+
[key in ActivityTypeItemSource]?: string;
|
|
52
52
|
};
|
|
53
53
|
linkMetadata?: LinkMetadata;
|
|
54
54
|
}
|
|
@@ -101,6 +101,7 @@ export interface ShareOptions {
|
|
|
101
101
|
isNewTask?: boolean;
|
|
102
102
|
}
|
|
103
103
|
export declare type ActivityType = 'default' | 'addToReadingList' | 'airDrop' | 'assignToContact' | 'copyToPasteBoard' | 'mail' | 'message' | 'openInIBooks' | 'postToFacebook' | 'postToFlickr' | 'postToTencentWeibo' | 'postToTwitter' | 'postToVimeo' | 'postToWeibo' | 'print' | 'saveToCameraRoll' | 'markupAsPDF';
|
|
104
|
+
export declare type ActivityTypeItemSource = ActivityType | string;
|
|
104
105
|
export interface ShareSingleResult {
|
|
105
106
|
message: string;
|
|
106
107
|
success: boolean;
|
package/package.json
CHANGED
|
@@ -18,7 +18,13 @@ export interface ButtonProps {
|
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const Button
|
|
21
|
+
const Button: React.FC<ButtonProps> = ({
|
|
22
|
+
buttonStyle,
|
|
23
|
+
onPress,
|
|
24
|
+
iconSrc,
|
|
25
|
+
textStyle,
|
|
26
|
+
children,
|
|
27
|
+
}: ButtonProps) => (
|
|
22
28
|
<TouchableOpacity activeOpacity={0.5} style={[styles.button, buttonStyle]} onPress={onPress}>
|
|
23
29
|
<Image style={styles.icon} source={iconSrc} />
|
|
24
30
|
<Text style={[styles.buttonText, textStyle]}>{children}</Text>
|
|
@@ -23,41 +23,28 @@ export interface OverlayProps {
|
|
|
23
23
|
visible: boolean;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
fadeAnim
|
|
28
|
-
overlayStyle
|
|
29
|
-
}
|
|
26
|
+
const Overlay: React.FC<React.PropsWithChildren<OverlayProps>> = ({ visible, children }) => {
|
|
27
|
+
const [fadeAnim] = React.useState(new Animated.Value(0));
|
|
28
|
+
const [overlayStyle, setOverlayStyle] = React.useState<StyleProp<ViewStyle>>(styles.emptyOverlay);
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
30
|
+
const onAnimatedEnd = React.useCallback(() => {
|
|
31
|
+
if (!visible) {
|
|
32
|
+
setOverlayStyle(styles.emptyOverlay);
|
|
33
|
+
}
|
|
34
|
+
}, [visible]);
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
|
|
36
|
+
React.useEffect(() => {
|
|
37
|
+
if (visible) {
|
|
38
|
+
setOverlayStyle(styles.fullOverlay);
|
|
40
39
|
}
|
|
41
|
-
return Animated.timing(
|
|
42
|
-
toValue:
|
|
40
|
+
return Animated.timing(fadeAnim, {
|
|
41
|
+
toValue: visible ? 1 : 0,
|
|
43
42
|
duration: DEFAULT_ANIMATE_TIME,
|
|
44
43
|
useNativeDriver: false,
|
|
45
|
-
}).start(
|
|
46
|
-
}
|
|
44
|
+
}).start(onAnimatedEnd);
|
|
45
|
+
}, [visible, fadeAnim, onAnimatedEnd]);
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.setState({ overlayStyle: styles.emptyOverlay });
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
render() {
|
|
55
|
-
return (
|
|
56
|
-
<Animated.View style={[this.state.overlayStyle, { opacity: this.state.fadeAnim }]}>
|
|
57
|
-
{this.props.children}
|
|
58
|
-
</Animated.View>
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
47
|
+
return <Animated.View style={[overlayStyle, { opacity: fadeAnim }]}>{children}</Animated.View>;
|
|
48
|
+
};
|
|
62
49
|
|
|
63
50
|
export default Overlay;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
TouchableOpacity,
|
|
5
|
+
BackHandler,
|
|
6
|
+
ViewStyle,
|
|
7
|
+
StyleProp,
|
|
8
|
+
StyleSheet,
|
|
9
|
+
} from 'react-native';
|
|
4
10
|
|
|
5
11
|
import Overlay from './Overlay';
|
|
6
12
|
import Sheet from './Sheet';
|
|
@@ -8,46 +14,43 @@ import Sheet from './Sheet';
|
|
|
8
14
|
export interface ShareSheetProps {
|
|
9
15
|
visible: boolean;
|
|
10
16
|
onCancel: () => void;
|
|
11
|
-
children: React.ReactChildren;
|
|
12
17
|
style?: StyleProp<ViewStyle>;
|
|
13
18
|
overlayStyle?: StyleProp<ViewStyle>;
|
|
14
19
|
}
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
backButtonHandler(): boolean {
|
|
27
|
-
if (this.props.visible) {
|
|
28
|
-
this.props.onCancel();
|
|
21
|
+
const ShareSheet: React.FC<React.PropsWithChildren<ShareSheetProps>> = ({
|
|
22
|
+
style = {},
|
|
23
|
+
overlayStyle = {},
|
|
24
|
+
visible,
|
|
25
|
+
onCancel,
|
|
26
|
+
children,
|
|
27
|
+
}) => {
|
|
28
|
+
const backButtonHandler = React.useCallback(() => {
|
|
29
|
+
if (visible) {
|
|
30
|
+
onCancel();
|
|
29
31
|
return true;
|
|
30
32
|
}
|
|
31
33
|
return false;
|
|
32
|
-
}
|
|
34
|
+
}, [visible, onCancel]);
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
React.useEffect(() => {
|
|
37
|
+
BackHandler.addEventListener('hardwareBackPress', backButtonHandler);
|
|
38
|
+
return () => {
|
|
39
|
+
BackHandler.removeEventListener('hardwareBackPress', backButtonHandler);
|
|
40
|
+
};
|
|
41
|
+
}, [backButtonHandler]);
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export default ShareSheet;
|
|
43
|
+
return (
|
|
44
|
+
<Overlay visible={visible}>
|
|
45
|
+
<View style={[styles.actionSheetContainer, overlayStyle]}>
|
|
46
|
+
<TouchableOpacity style={styles.button} onPress={onCancel} />
|
|
47
|
+
<Sheet visible={visible}>
|
|
48
|
+
<View style={[styles.buttonContainer, style]}>{children}</View>
|
|
49
|
+
</Sheet>
|
|
50
|
+
</View>
|
|
51
|
+
</Overlay>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
51
54
|
|
|
52
55
|
const styles = StyleSheet.create({
|
|
53
56
|
actionSheetContainer: {
|
|
@@ -67,3 +70,5 @@ const styles = StyleSheet.create({
|
|
|
67
70
|
flex: 1,
|
|
68
71
|
},
|
|
69
72
|
});
|
|
73
|
+
|
|
74
|
+
export default ShareSheet;
|
package/src/components/Sheet.tsx
CHANGED
|
@@ -8,28 +8,18 @@ export interface SheetProps {
|
|
|
8
8
|
visible: boolean;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
bottom
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
class Sheet extends React.Component<SheetProps, State> {
|
|
16
|
-
state = {
|
|
17
|
-
bottom: new Animated.Value(DEFAULT_BOTTOM),
|
|
18
|
-
};
|
|
11
|
+
const Sheet: React.FC<React.PropsWithChildren<SheetProps>> = ({ visible, children }) => {
|
|
12
|
+
const [bottom] = React.useState(new Animated.Value(DEFAULT_BOTTOM));
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
return Animated.timing(
|
|
22
|
-
toValue:
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
return Animated.timing(bottom, {
|
|
16
|
+
toValue: visible ? 0 : DEFAULT_BOTTOM,
|
|
23
17
|
duration: DEFAULT_ANIMATE_TIME,
|
|
24
18
|
useNativeDriver: false,
|
|
25
19
|
}).start();
|
|
26
|
-
}
|
|
20
|
+
}, [visible, bottom]);
|
|
27
21
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<Animated.View style={{ bottom: this.state.bottom }}>{this.props.children}</Animated.View>
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
22
|
+
return <Animated.View style={{ bottom }}>{children}</Animated.View>;
|
|
23
|
+
};
|
|
34
24
|
|
|
35
25
|
export default Sheet;
|