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.
Files changed (37) hide show
  1. package/ios/RNShare.m +7 -0
  2. package/ios/RNShareActivityItemSource.m +1 -1
  3. package/ios/RNShareUtils.h +1 -0
  4. package/ios/RNShareUtils.m +11 -0
  5. package/lib/commonjs/components/Button.js.map +1 -1
  6. package/lib/commonjs/components/Overlay.js +24 -39
  7. package/lib/commonjs/components/Overlay.js.map +1 -1
  8. package/lib/commonjs/components/ShareSheet.js +34 -38
  9. package/lib/commonjs/components/ShareSheet.js.map +1 -1
  10. package/lib/commonjs/components/Sheet.js +15 -25
  11. package/lib/commonjs/components/Sheet.js.map +1 -1
  12. package/lib/commonjs/index.js +0 -1
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/types.js.map +1 -1
  15. package/lib/module/components/Button.js.map +1 -1
  16. package/lib/module/components/Overlay.js +24 -39
  17. package/lib/module/components/Overlay.js.map +1 -1
  18. package/lib/module/components/ShareSheet.js +32 -36
  19. package/lib/module/components/ShareSheet.js.map +1 -1
  20. package/lib/module/components/Sheet.js +15 -25
  21. package/lib/module/components/Sheet.js.map +1 -1
  22. package/lib/module/index.js +0 -1
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/types.js.map +1 -1
  25. package/lib/typescript/components/Button.d.ts +1 -1
  26. package/lib/typescript/components/Overlay.d.ts +1 -19
  27. package/lib/typescript/components/ShareSheet.d.ts +2 -8
  28. package/lib/typescript/components/Sheet.d.ts +1 -11
  29. package/lib/typescript/index.d.ts +5 -4
  30. package/lib/typescript/types.d.ts +5 -4
  31. package/package.json +1 -1
  32. package/src/components/Button.tsx +7 -1
  33. package/src/components/Overlay.tsx +17 -30
  34. package/src/components/ShareSheet.tsx +38 -33
  35. package/src/components/Sheet.tsx +8 -18
  36. package/src/index.tsx +0 -1
  37. package/src/types.ts +6 -4
@@ -1,48 +1,43 @@
1
1
  import * as React from 'react';
2
- import { View, StyleSheet, TouchableOpacity, BackHandler } from 'react-native';
2
+ import { View, TouchableOpacity, BackHandler, StyleSheet } from 'react-native';
3
3
  import Overlay from './Overlay';
4
4
  import Sheet from './Sheet';
5
5
 
6
- class ShareSheet extends React.Component {
7
- componentDidMount() {
8
- this.backButtonHandler = this.backButtonHandler.bind(this);
9
- BackHandler.addEventListener('hardwareBackPress', this.backButtonHandler);
10
- }
11
-
12
- componentWillUnmount() {
13
- BackHandler.removeEventListener('hardwareBackPress', this.backButtonHandler);
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","StyleSheet","TouchableOpacity","BackHandler","Overlay","Sheet","ShareSheet","Component","componentDidMount","backButtonHandler","bind","addEventListener","componentWillUnmount","removeEventListener","props","visible","onCancel","render","style","overlayStyle","styles","actionSheetContainer","button","buttonContainer","children","create","backgroundColor","flex","justifyContent","paddingBottom","paddingTop","overflow"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT,EAAeC,UAAf,EAA2BC,gBAA3B,EAA6CC,WAA7C,QAAgE,cAAhE;AAGA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,KAAP,MAAkB,SAAlB;;AAUA,MAAMC,UAAN,SAAyBP,KAAK,CAACQ,SAA/B,CAA0D;AACxDC,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;AACAP,IAAAA,WAAW,CAACQ,gBAAZ,CAA6B,mBAA7B,EAAkD,KAAKF,iBAAvD;AACD;;AAEDG,EAAAA,oBAAoB,GAAG;AACrBT,IAAAA,WAAW,CAACU,mBAAZ,CAAgC,mBAAhC,EAAqD,KAAKJ,iBAA1D;AACD;;AAEDA,EAAAA,iBAAiB,GAAY;AAC3B,QAAI,KAAKK,KAAL,CAAWC,OAAf,EAAwB;AACtB,WAAKD,KAAL,CAAWE,QAAX;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDC,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,KAAK,GAAG,EAAV;AAAcC,MAAAA,YAAY,GAAG,EAA7B;AAAiC,SAAGL;AAApC,QAA8C,KAAKA,KAAzD;AAEA,wBACE,oBAAC,OAAD,EAAaA,KAAb,eACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACM,MAAM,CAACC,oBAAR,EAA8BF,YAA9B;AAAb,oBACE,oBAAC,gBAAD;AAAkB,MAAA,KAAK,EAAEC,MAAM,CAACE,MAAhC;AAAwC,MAAA,OAAO,EAAE,KAAKR,KAAL,CAAWE;AAA5D,MADF,eAEE,oBAAC,KAAD;AAAO,MAAA,OAAO,EAAE,KAAKF,KAAL,CAAWC;AAA3B,oBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACK,MAAM,CAACG,eAAR,EAAyBL,KAAzB;AAAb,OAA+C,KAAKJ,KAAL,CAAWU,QAA1D,CADF,CAFF,CADF,CADF;AAUD;;AA/BuD;;AAkC1D,eAAelB,UAAf;AAEA,MAAMc,MAAM,GAAGnB,UAAU,CAACwB,MAAX,CAAkB;AAC/BJ,EAAAA,oBAAoB,EAAE;AACpBK,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/BP,EAAAA,eAAe,EAAE;AACfG,IAAAA,eAAe,EAAE,OADF;AAEfK,IAAAA,QAAQ,EAAE,QAFK;AAGfF,IAAAA,aAAa,EAAE,CAHA;AAIfC,IAAAA,UAAU,EAAE;AAJG,GARc;AAc/BR,EAAAA,MAAM,EAAE;AACNK,IAAAA,IAAI,EAAE;AADA;AAduB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { View, StyleSheet, TouchableOpacity, BackHandler } from 'react-native';\nimport type { ViewStyle, StyleProp } from 'react-native';\n\nimport Overlay from './Overlay';\nimport Sheet from './Sheet';\n\nexport interface ShareSheetProps {\n visible: boolean;\n onCancel: () => void;\n children: React.ReactChildren;\n style?: StyleProp<ViewStyle>;\n overlayStyle?: StyleProp<ViewStyle>;\n}\n\nclass ShareSheet extends React.Component<ShareSheetProps> {\n componentDidMount() {\n this.backButtonHandler = this.backButtonHandler.bind(this);\n BackHandler.addEventListener('hardwareBackPress', this.backButtonHandler);\n }\n\n componentWillUnmount() {\n BackHandler.removeEventListener('hardwareBackPress', this.backButtonHandler);\n }\n\n backButtonHandler(): boolean {\n if (this.props.visible) {\n this.props.onCancel();\n return true;\n }\n return false;\n }\n\n render() {\n const { style = {}, overlayStyle = {}, ...props } = this.props;\n\n return (\n <Overlay {...props}>\n <View style={[styles.actionSheetContainer, overlayStyle]}>\n <TouchableOpacity style={styles.button} onPress={this.props.onCancel} />\n <Sheet visible={this.props.visible}>\n <View style={[styles.buttonContainer, style]}>{this.props.children}</View>\n </Sheet>\n </View>\n </Overlay>\n );\n }\n}\n\nexport default ShareSheet;\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"]}
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
- class Sheet extends React.Component {
9
- constructor(...args) {
10
- super(...args);
11
-
12
- _defineProperty(this, "state", {
13
- bottom: new Animated.Value(DEFAULT_BOTTOM)
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
- render() {
26
- return /*#__PURE__*/React.createElement(Animated.View, {
27
- style: {
28
- bottom: this.state.bottom
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","Component","bottom","Value","UNSAFE_componentWillReceiveProps","newProps","timing","state","toValue","visible","duration","useNativeDriver","start","render","props","children"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,MAAMC,cAAc,GAAG,CAAC,GAAxB;AACA,MAAMC,oBAAoB,GAAG,GAA7B;;AAUA,MAAMC,KAAN,SAAoBJ,KAAK,CAACK,SAA1B,CAAuD;AAAA;AAAA;;AAAA,mCAC7C;AACNC,MAAAA,MAAM,EAAE,IAAIL,QAAQ,CAACM,KAAb,CAAmBL,cAAnB;AADF,KAD6C;AAAA;;AAKrDM,EAAAA,gCAAgC,CAACC,QAAD,EAAuB;AACrD,WAAOR,QAAQ,CAACS,MAAT,CAAgB,KAAKC,KAAL,CAAWL,MAA3B,EAAmC;AACxCM,MAAAA,OAAO,EAAEH,QAAQ,CAACI,OAAT,GAAmB,CAAnB,GAAuBX,cADQ;AAExCY,MAAAA,QAAQ,EAAEX,oBAF8B;AAGxCY,MAAAA,eAAe,EAAE;AAHuB,KAAnC,EAIJC,KAJI,EAAP;AAKD;;AAEDC,EAAAA,MAAM,GAAG;AACP,wBACE,oBAAC,QAAD,CAAU,IAAV;AAAe,MAAA,KAAK,EAAE;AAAEX,QAAAA,MAAM,EAAE,KAAKK,KAAL,CAAWL;AAArB;AAAtB,OAAsD,KAAKY,KAAL,CAAWC,QAAjE,CADF;AAGD;;AAjBoD;;AAoBvD,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\ninterface State {\n bottom: Animated.Value;\n}\n\nclass Sheet extends React.Component<SheetProps, State> {\n state = {\n bottom: new Animated.Value(DEFAULT_BOTTOM),\n };\n\n UNSAFE_componentWillReceiveProps(newProps: SheetProps) {\n return Animated.timing(this.state.bottom, {\n toValue: newProps.visible ? 0 : DEFAULT_BOTTOM,\n duration: DEFAULT_ANIMATE_TIME,\n useNativeDriver: false,\n }).start();\n }\n\n render() {\n return (\n <Animated.View style={{ bottom: this.state.bottom }}>{this.props.children}</Animated.View>\n );\n }\n}\n\nexport default Sheet;\n"]}
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"]}
@@ -41,7 +41,6 @@ const RNShare = {
41
41
 
42
42
  if (options.filename && !options.filenames) {
43
43
  options.filenames = [options.filename];
44
- delete options.filename;
45
44
  }
46
45
  }
47
46
 
@@ -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"]}
@@ -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 ActivityType]?: ActivityItem | null | undefined };\n subject?: { [key in ActivityType]?: string };\n dataTypeIdentifier?: { [key in ActivityType]?: string };\n thumbnailImage?: { [key in ActivityType]?: 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 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"]}
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: ({ buttonStyle, onPress, iconSrc, textStyle, children }: ButtonProps) => JSX.Element;
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
- interface State {
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 type { ViewStyle, StyleProp } from 'react-native';
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 class ShareSheet extends React.Component<ShareSheetProps> {
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
- interface State {
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: ({ buttonStyle, onPress, iconSrc, textStyle, children }: import("./components/Button").ButtonProps) => JSX.Element;
8
- readonly ShareSheet: typeof ShareSheet;
9
- readonly Overlay: typeof Overlay;
10
- readonly Sheet: typeof 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 ActivityType]?: ActivityItem | null | undefined;
42
+ [key in ActivityTypeItemSource]?: ActivityItem | null | undefined;
43
43
  };
44
44
  subject?: {
45
- [key in ActivityType]?: string;
45
+ [key in ActivityTypeItemSource]?: string;
46
46
  };
47
47
  dataTypeIdentifier?: {
48
- [key in ActivityType]?: string;
48
+ [key in ActivityTypeItemSource]?: string;
49
49
  };
50
50
  thumbnailImage?: {
51
- [key in ActivityType]?: string;
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-share",
3
3
  "description": "Social share, sending simple data to other apps.",
4
- "version": "8.0.1",
4
+ "version": "8.2.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/react-native-community/react-native-share.git"
@@ -18,7 +18,13 @@ export interface ButtonProps {
18
18
  children: React.ReactNode;
19
19
  }
20
20
 
21
- const Button = ({ buttonStyle, onPress, iconSrc, textStyle, children }: ButtonProps) => (
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
- interface State {
27
- fadeAnim: Animated.Value;
28
- overlayStyle: StyleProp<ViewStyle>;
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
- class Overlay extends React.Component<OverlayProps, State> {
32
- state = {
33
- fadeAnim: new Animated.Value(0),
34
- overlayStyle: styles.emptyOverlay,
35
- };
30
+ const onAnimatedEnd = React.useCallback(() => {
31
+ if (!visible) {
32
+ setOverlayStyle(styles.emptyOverlay);
33
+ }
34
+ }, [visible]);
36
35
 
37
- UNSAFE_componentWillReceiveProps(newProps: OverlayProps) {
38
- if (newProps.visible) {
39
- this.setState({ overlayStyle: styles.fullOverlay });
36
+ React.useEffect(() => {
37
+ if (visible) {
38
+ setOverlayStyle(styles.fullOverlay);
40
39
  }
41
- return Animated.timing(this.state.fadeAnim, {
42
- toValue: newProps.visible ? 1 : 0,
40
+ return Animated.timing(fadeAnim, {
41
+ toValue: visible ? 1 : 0,
43
42
  duration: DEFAULT_ANIMATE_TIME,
44
43
  useNativeDriver: false,
45
- }).start(this.onAnimatedEnd.bind(this));
46
- }
44
+ }).start(onAnimatedEnd);
45
+ }, [visible, fadeAnim, onAnimatedEnd]);
47
46
 
48
- onAnimatedEnd() {
49
- if (!this.props.visible) {
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 { View, StyleSheet, TouchableOpacity, BackHandler } from 'react-native';
3
- import type { ViewStyle, StyleProp } from 'react-native';
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
- class ShareSheet extends React.Component<ShareSheetProps> {
17
- componentDidMount() {
18
- this.backButtonHandler = this.backButtonHandler.bind(this);
19
- BackHandler.addEventListener('hardwareBackPress', this.backButtonHandler);
20
- }
21
-
22
- componentWillUnmount() {
23
- BackHandler.removeEventListener('hardwareBackPress', this.backButtonHandler);
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
- render() {
35
- const { style = {}, overlayStyle = {}, ...props } = this.props;
36
+ React.useEffect(() => {
37
+ BackHandler.addEventListener('hardwareBackPress', backButtonHandler);
38
+ return () => {
39
+ BackHandler.removeEventListener('hardwareBackPress', backButtonHandler);
40
+ };
41
+ }, [backButtonHandler]);
36
42
 
37
- return (
38
- <Overlay {...props}>
39
- <View style={[styles.actionSheetContainer, overlayStyle]}>
40
- <TouchableOpacity style={styles.button} onPress={this.props.onCancel} />
41
- <Sheet visible={this.props.visible}>
42
- <View style={[styles.buttonContainer, style]}>{this.props.children}</View>
43
- </Sheet>
44
- </View>
45
- </Overlay>
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;
@@ -8,28 +8,18 @@ export interface SheetProps {
8
8
  visible: boolean;
9
9
  }
10
10
 
11
- interface State {
12
- bottom: Animated.Value;
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
- UNSAFE_componentWillReceiveProps(newProps: SheetProps) {
21
- return Animated.timing(this.state.bottom, {
22
- toValue: newProps.visible ? 0 : DEFAULT_BOTTOM,
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
- render() {
29
- return (
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;
package/src/index.tsx CHANGED
@@ -55,7 +55,6 @@ const RNShare = {
55
55
 
56
56
  if (options.filename && !options.filenames) {
57
57
  options.filenames = [options.filename];
58
- delete options.filename;
59
58
  }
60
59
  }
61
60