react-native-audio-player-button 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
- # react-native-audio-player-button
2
- <span><img src="https://user-images.githubusercontent.com/18114944/215944532-c1ce1e50-9744-4f75-899e-a801d4a2b080.png" width="250" height="500" /></span>
1
+ React Native Audio Player Button is a custom button with an icon for playing audio. The user is able to use this button as many as they want on the same screen without having the issue of overlapping playing audio.
3
2
 
4
- React Native Audio Player Button is a custom button with an icon for playing the audio and it is able to prevent playing the audio overlap each other.
3
+ <span><img src="https://user-images.githubusercontent.com/18114944/215944532-c1ce1e50-9744-4f75-899e-a801d4a2b080.png" width="250" height="500" /></span>
5
4
 
6
5
  ## Support
7
6
  iOS & Android
@@ -30,7 +29,7 @@ import FAIcon from 'react-native-vector-icons/FontAwesome';
30
29
  const [playingUuid, setPlayingUuid] = React.useState(null);
31
30
 
32
31
  <AudioPlayerButton
33
- audio={require('./assets/audios/sample.mp3')}
32
+ audio={require('sample.mp3')}
34
33
  itemUuid='abcdefg'
35
34
  isSpeakerIcon={true}
36
35
  rippled={true}
@@ -62,7 +61,7 @@ const [playingUuid, setPlayingUuid] = React.useState(null);
62
61
  | iconSize | 24 or 26 | `number` | `true` | The size of the icons (play and pause icon) |
63
62
  | iconPrimaryColor | '#000000' | `string` | `true` | The color of the icon before playing the audio |
64
63
  | iconSecondaryColor | '#808080' | `string` | `true` | The color of the icon while playing the audio |
65
- | playingUuid | '' | `string` | `false` | The uuid of the playing auido component (to prevent playing audio overlap each other) |
64
+ | playingUuid | '' | `string` | `false` | The uuid of the playing audio component (to prevent playing audio overlap each other) |
66
65
  | hasShadow | false | `boolean` | `true` | The shadow of the button (Android only) |
67
66
  | allowPause | false | `boolean` | `true` | Allow to pause the audio when toggle the button |
68
67
  | isFromAppBundle | false | `boolean` | `false` | Set to `true` to play the audio that is stored in the app bundle (ex: the downloaded audio) |
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
8
9
  var _color_constant = _interopRequireDefault(require("../constants/color_constant"));
9
10
  var _component_constant = require("../constants/component_constant");
10
11
  var _audio_icon_helper = _interopRequireDefault(require("../helpers/audio_icon_helper"));
@@ -16,16 +17,37 @@ const AudioIconComponent = props => {
16
17
  return props.isPlaying ? secondaryColor : primaryColor;
17
18
  };
18
19
  const iconSize = props.iconSize || _component_constant.defaultIconSize;
20
+ const renderStrikeLine = () => {
21
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
22
+ style: {
23
+ height: 3,
24
+ width: iconSize,
25
+ transform: [{
26
+ rotate: '45deg'
27
+ }],
28
+ backgroundColor: 'white',
29
+ justifyContent: 'center',
30
+ position: 'absolute',
31
+ top: iconSize / 2.4,
32
+ left: -2,
33
+ zIndex: 10
34
+ }
35
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
36
+ style: {
37
+ height: 1.5,
38
+ backgroundColor: _color_constant.default.muted
39
+ }
40
+ }));
41
+ };
19
42
  {/* CloneElement is used so we can pass different type of icon and still using the same configuration */}
20
- return /*#__PURE__*/_react.default.cloneElement(_audio_icon_helper.default.getIcon(props.customIcon, props.isSpeakerIcon), {
43
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, !props.audio && !props.isSpeakerIcon && !props.customIcon && renderStrikeLine(), /*#__PURE__*/_react.default.cloneElement(_audio_icon_helper.default.getIcon(props.customIcon, props.isSpeakerIcon), {
21
44
  name: _audio_icon_helper.default.getIconName(props.customIconSet, props.isSpeakerIcon, props.audio, props.isPlaying),
22
45
  size: iconSize,
23
46
  color: !!props.audio ? getIconColor() : _color_constant.default.muted,
24
- style: [props.iconStyle, {
25
- width: iconSize,
26
- marginLeft: props.isPlaying && !props.isSpeakerIcon ? -2 : 0
27
- }]
28
- });
47
+ style: [{
48
+ width: iconSize
49
+ }, _audio_icon_helper.default.getIconMargin(props.isPlaying, props.isSpeakerIcon, !!props.customIcon), props.iconStyle]
50
+ }));
29
51
  };
30
52
  var _default = AudioIconComponent;
31
53
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["AudioIconComponent","props","getIconColor","primaryColor","iconPrimaryColor","primaryIconColor","secondaryColor","iconSecondaryColor","secondaryIconColor","isPlaying","iconSize","defaultIconSize","React","cloneElement","audioIconHelper","getIcon","customIcon","isSpeakerIcon","name","getIconName","customIconSet","audio","size","color","muted","style","iconStyle","width","marginLeft"],"sourceRoot":"../../src","sources":["AudioIconComponent.js"],"mappings":";;;;;;AAAA;AAEA;AACA;AACA;AAA2D;AAE3D,MAAMA,kBAAkB,GAAIC,KAAK,IAAK;EACpC,MAAMC,YAAY,GAAG,MAAM;IACzB,MAAMC,YAAY,GAAGF,KAAK,CAACG,gBAAgB,IAAIC,oCAAgB;IAC/D,MAAMC,cAAc,GAAGL,KAAK,CAACM,kBAAkB,IAAIC,sCAAkB;IACrE,OAAOP,KAAK,CAACQ,SAAS,GAAGH,cAAc,GAAGH,YAAY;EACxD,CAAC;EAED,MAAMO,QAAQ,GAAGT,KAAK,CAACS,QAAQ,IAAIC,mCAAe;EAElD,CAAC;EACD,oBACEC,cAAK,CAACC,YAAY,CAACC,0BAAe,CAACC,OAAO,CAACd,KAAK,CAACe,UAAU,EAAEf,KAAK,CAACgB,aAAa,CAAC,EAAE;IACjFC,IAAI,EAAEJ,0BAAe,CAACK,WAAW,CAAClB,KAAK,CAACmB,aAAa,EAAEnB,KAAK,CAACgB,aAAa,EAAEhB,KAAK,CAACoB,KAAK,EAAEpB,KAAK,CAACQ,SAAS,CAAC;IACzGa,IAAI,EAAEZ,QAAQ;IAAEa,KAAK,EAAE,CAAC,CAACtB,KAAK,CAACoB,KAAK,GAAGnB,YAAY,EAAE,GAAGqB,uBAAK,CAACC,KAAK;IACnEC,KAAK,EAAE,CAACxB,KAAK,CAACyB,SAAS,EAAE;MAAEC,KAAK,EAAEjB,QAAQ;MAAEkB,UAAU,EAAG3B,KAAK,CAACQ,SAAS,IAAK,CAACR,KAAK,CAACgB,aAAa,GAAI,CAAC,CAAC,GAAG;IAAE,CAAC;EAC/G,CAAC,CAAC;AAEN,CAAC;AAAA,eAEcjB,kBAAkB;AAAA;AAEjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAZC"}
1
+ {"version":3,"names":["AudioIconComponent","props","getIconColor","primaryColor","iconPrimaryColor","primaryIconColor","secondaryColor","iconSecondaryColor","secondaryIconColor","isPlaying","iconSize","defaultIconSize","renderStrikeLine","height","width","transform","rotate","backgroundColor","justifyContent","position","top","left","zIndex","color","muted","audio","isSpeakerIcon","customIcon","React","cloneElement","audioIconHelper","getIcon","name","getIconName","customIconSet","size","style","getIconMargin","iconStyle"],"sourceRoot":"../../src","sources":["AudioIconComponent.js"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;AACA;AAA2D;AAE3D,MAAMA,kBAAkB,GAAIC,KAAK,IAAK;EACpC,MAAMC,YAAY,GAAG,MAAM;IACzB,MAAMC,YAAY,GAAGF,KAAK,CAACG,gBAAgB,IAAIC,oCAAgB;IAC/D,MAAMC,cAAc,GAAGL,KAAK,CAACM,kBAAkB,IAAIC,sCAAkB;IACrE,OAAOP,KAAK,CAACQ,SAAS,GAAGH,cAAc,GAAGH,YAAY;EACxD,CAAC;EAED,MAAMO,QAAQ,GAAGT,KAAK,CAACS,QAAQ,IAAIC,mCAAe;EAElD,MAAMC,gBAAgB,GAAG,MAAM;IAC7B,oBAAO,6BAAC,iBAAI;MAAC,KAAK,EAAE;QAACC,MAAM,EAAE,CAAC;QAAEC,KAAK,EAAEJ,QAAQ;QAAEK,SAAS,EAAE,CAAC;UAACC,MAAM,EAAE;QAAO,CAAC,CAAC;QAAEC,eAAe,EAAE,OAAO;QAAEC,cAAc,EAAE,QAAQ;QAAEC,QAAQ,EAAE,UAAU;QAAEC,GAAG,EAAEV,QAAQ,GAAG,GAAG;QAAEW,IAAI,EAAE,CAAC,CAAC;QAAEC,MAAM,EAAE;MAAE;IAAE,gBAC5L,6BAAC,iBAAI;MAAC,KAAK,EAAE;QAACT,MAAM,EAAE,GAAG;QAAEI,eAAe,EAAEM,uBAAK,CAACC;MAAK;IAAE,EAAG,CACxD;EAChB,CAAC;EAED,CAAC;EACD,oBACE,6BAAC,iBAAI,QACD,CAACvB,KAAK,CAACwB,KAAK,IAAI,CAACxB,KAAK,CAACyB,aAAa,IAAI,CAACzB,KAAK,CAAC0B,UAAU,IAAKf,gBAAgB,EAAE,eAEhFgB,cAAK,CAACC,YAAY,CAACC,0BAAe,CAACC,OAAO,CAAC9B,KAAK,CAAC0B,UAAU,EAAE1B,KAAK,CAACyB,aAAa,CAAC,EAAE;IACjFM,IAAI,EAAEF,0BAAe,CAACG,WAAW,CAAChC,KAAK,CAACiC,aAAa,EAAEjC,KAAK,CAACyB,aAAa,EAAEzB,KAAK,CAACwB,KAAK,EAAExB,KAAK,CAACQ,SAAS,CAAC;IACzG0B,IAAI,EAAEzB,QAAQ;IAAEa,KAAK,EAAE,CAAC,CAACtB,KAAK,CAACwB,KAAK,GAAGvB,YAAY,EAAE,GAAGqB,uBAAK,CAACC,KAAK;IACnEY,KAAK,EAAE,CAAC;MAAEtB,KAAK,EAAEJ;IAAS,CAAC,EAAEoB,0BAAe,CAACO,aAAa,CAACpC,KAAK,CAACQ,SAAS,EAAER,KAAK,CAACyB,aAAa,EAAE,CAAC,CAACzB,KAAK,CAAC0B,UAAU,CAAC,EAAE1B,KAAK,CAACqC,SAAS;EACvI,CAAC,CAAC,CAEC;AAEX,CAAC;AAAA,eAEctC,kBAAkB;AAAA;AAEjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAZC"}
@@ -12,7 +12,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  const audioIconHelper = (() => {
13
13
  return {
14
14
  getIcon,
15
- getIconName
15
+ getIconName,
16
+ getIconMargin
16
17
  };
17
18
  function getIcon(customIcon, isSpeakerIcon) {
18
19
  return customIcon ? customIcon : isSpeakerIcon ? /*#__PURE__*/_react.default.createElement(_Ionicons.default, null) : /*#__PURE__*/_react.default.createElement(_Feather.default, null);
@@ -22,6 +23,14 @@ const audioIconHelper = (() => {
22
23
  if (!audio) return icon.mute;
23
24
  return isPlaying ? icon.pause : icon.play;
24
25
  }
26
+ function getIconMargin(isPlaying, isSpeakerIcon) {
27
+ if (isPlaying && !isSpeakerIcon) return {
28
+ marginLeft: -1
29
+ };
30
+ return {
31
+ marginLeft: 0
32
+ };
33
+ }
25
34
  })();
26
35
  var _default = audioIconHelper;
27
36
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["audioIconHelper","getIcon","getIconName","customIcon","isSpeakerIcon","customIconSet","audio","isPlaying","icon","defaultAudioIconSet","mute","pause","play"],"sourceRoot":"../../src","sources":["audio_icon_helper.js"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAA+D;AAE/D,MAAMA,eAAe,GAAG,CAAC,MAAM;EAC7B,OAAO;IACLC,OAAO;IACPC;EACF,CAAC;EAED,SAASD,OAAO,CAACE,UAAU,EAAEC,aAAa,EAAE;IAC1C,OAAOD,UAAU,GAAGA,UAAU,GAAGC,aAAa,gBAAG,6BAAC,iBAAO,OAAE,gBAAG,6BAAC,gBAAW,OAAE;EAC9E;EAEA,SAASF,WAAW,CAACG,aAAa,EAAED,aAAa,EAAEE,KAAK,EAAEC,SAAS,EAAE;IACnE,MAAMC,IAAI,GAAGH,aAAa,GAAGA,aAAa,GAAGD,aAAa,GAAGK,kCAAmB,CAAC,UAAU,CAAC,GAAGA,kCAAmB,CAAC,SAAS,CAAC;IAC7H,IAAI,CAACH,KAAK,EACR,OAAOE,IAAI,CAACE,IAAI;IAElB,OAAOH,SAAS,GAAGC,IAAI,CAACG,KAAK,GAAGH,IAAI,CAACI,IAAI;EAC3C;AACF,CAAC,GAAG;AAAA,eAEWZ,eAAe;AAAA"}
1
+ {"version":3,"names":["audioIconHelper","getIcon","getIconName","getIconMargin","customIcon","isSpeakerIcon","customIconSet","audio","isPlaying","icon","defaultAudioIconSet","mute","pause","play","marginLeft"],"sourceRoot":"../../src","sources":["audio_icon_helper.js"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAA+D;AAE/D,MAAMA,eAAe,GAAG,CAAC,MAAM;EAC7B,OAAO;IACLC,OAAO;IACPC,WAAW;IACXC;EACF,CAAC;EAED,SAASF,OAAO,CAACG,UAAU,EAAEC,aAAa,EAAE;IAC1C,OAAOD,UAAU,GAAGA,UAAU,GAAGC,aAAa,gBAAG,6BAAC,iBAAO,OAAE,gBAAG,6BAAC,gBAAW,OAAE;EAC9E;EAEA,SAASH,WAAW,CAACI,aAAa,EAAED,aAAa,EAAEE,KAAK,EAAEC,SAAS,EAAE;IACnE,MAAMC,IAAI,GAAGH,aAAa,GAAGA,aAAa,GAAGD,aAAa,GAAGK,kCAAmB,CAAC,UAAU,CAAC,GAAGA,kCAAmB,CAAC,SAAS,CAAC;IAC7H,IAAI,CAACH,KAAK,EACR,OAAOE,IAAI,CAACE,IAAI;IAElB,OAAOH,SAAS,GAAGC,IAAI,CAACG,KAAK,GAAGH,IAAI,CAACI,IAAI;EAC3C;EAEA,SAASV,aAAa,CAACK,SAAS,EAAEH,aAAa,EAAE;IAC/C,IAAIG,SAAS,IAAI,CAACH,aAAa,EAAE,OAAO;MAAES,UAAU,EAAE,CAAC;IAAE,CAAC;IAC1D,OAAO;MAAEA,UAAU,EAAE;IAAE,CAAC;EAC1B;AACF,CAAC,GAAG;AAAA,eAEWd,eAAe;AAAA"}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { View } from 'react-native';
2
3
  import color from '../constants/color_constant';
3
4
  import { defaultIconSize, primaryIconColor, secondaryIconColor } from '../constants/component_constant';
4
5
  import audioIconHelper from '../helpers/audio_icon_helper';
@@ -9,16 +10,37 @@ const AudioIconComponent = props => {
9
10
  return props.isPlaying ? secondaryColor : primaryColor;
10
11
  };
11
12
  const iconSize = props.iconSize || defaultIconSize;
13
+ const renderStrikeLine = () => {
14
+ return /*#__PURE__*/React.createElement(View, {
15
+ style: {
16
+ height: 3,
17
+ width: iconSize,
18
+ transform: [{
19
+ rotate: '45deg'
20
+ }],
21
+ backgroundColor: 'white',
22
+ justifyContent: 'center',
23
+ position: 'absolute',
24
+ top: iconSize / 2.4,
25
+ left: -2,
26
+ zIndex: 10
27
+ }
28
+ }, /*#__PURE__*/React.createElement(View, {
29
+ style: {
30
+ height: 1.5,
31
+ backgroundColor: color.muted
32
+ }
33
+ }));
34
+ };
12
35
  {/* CloneElement is used so we can pass different type of icon and still using the same configuration */}
13
- return /*#__PURE__*/React.cloneElement(audioIconHelper.getIcon(props.customIcon, props.isSpeakerIcon), {
36
+ return /*#__PURE__*/React.createElement(View, null, !props.audio && !props.isSpeakerIcon && !props.customIcon && renderStrikeLine(), /*#__PURE__*/React.cloneElement(audioIconHelper.getIcon(props.customIcon, props.isSpeakerIcon), {
14
37
  name: audioIconHelper.getIconName(props.customIconSet, props.isSpeakerIcon, props.audio, props.isPlaying),
15
38
  size: iconSize,
16
39
  color: !!props.audio ? getIconColor() : color.muted,
17
- style: [props.iconStyle, {
18
- width: iconSize,
19
- marginLeft: props.isPlaying && !props.isSpeakerIcon ? -2 : 0
20
- }]
21
- });
40
+ style: [{
41
+ width: iconSize
42
+ }, audioIconHelper.getIconMargin(props.isPlaying, props.isSpeakerIcon, !!props.customIcon), props.iconStyle]
43
+ }));
22
44
  };
23
45
  export default AudioIconComponent;
24
46
  {/*
@@ -1 +1 @@
1
- {"version":3,"names":["React","color","defaultIconSize","primaryIconColor","secondaryIconColor","audioIconHelper","AudioIconComponent","props","getIconColor","primaryColor","iconPrimaryColor","secondaryColor","iconSecondaryColor","isPlaying","iconSize","cloneElement","getIcon","customIcon","isSpeakerIcon","name","getIconName","customIconSet","audio","size","muted","style","iconStyle","width","marginLeft"],"sourceRoot":"../../src","sources":["AudioIconComponent.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,KAAK,MAAM,6BAA6B;AAC/C,SAAQC,eAAe,EAAEC,gBAAgB,EAAEC,kBAAkB,QAAO,iCAAiC;AACrG,OAAOC,eAAe,MAAM,8BAA8B;AAE1D,MAAMC,kBAAkB,GAAIC,KAAK,IAAK;EACpC,MAAMC,YAAY,GAAG,MAAM;IACzB,MAAMC,YAAY,GAAGF,KAAK,CAACG,gBAAgB,IAAIP,gBAAgB;IAC/D,MAAMQ,cAAc,GAAGJ,KAAK,CAACK,kBAAkB,IAAIR,kBAAkB;IACrE,OAAOG,KAAK,CAACM,SAAS,GAAGF,cAAc,GAAGF,YAAY;EACxD,CAAC;EAED,MAAMK,QAAQ,GAAGP,KAAK,CAACO,QAAQ,IAAIZ,eAAe;EAElD,CAAC;EACD,oBACEF,KAAK,CAACe,YAAY,CAACV,eAAe,CAACW,OAAO,CAACT,KAAK,CAACU,UAAU,EAAEV,KAAK,CAACW,aAAa,CAAC,EAAE;IACjFC,IAAI,EAAEd,eAAe,CAACe,WAAW,CAACb,KAAK,CAACc,aAAa,EAAEd,KAAK,CAACW,aAAa,EAAEX,KAAK,CAACe,KAAK,EAAEf,KAAK,CAACM,SAAS,CAAC;IACzGU,IAAI,EAAET,QAAQ;IAAEb,KAAK,EAAE,CAAC,CAACM,KAAK,CAACe,KAAK,GAAGd,YAAY,EAAE,GAAGP,KAAK,CAACuB,KAAK;IACnEC,KAAK,EAAE,CAAClB,KAAK,CAACmB,SAAS,EAAE;MAAEC,KAAK,EAAEb,QAAQ;MAAEc,UAAU,EAAGrB,KAAK,CAACM,SAAS,IAAK,CAACN,KAAK,CAACW,aAAa,GAAI,CAAC,CAAC,GAAG;IAAE,CAAC;EAC/G,CAAC,CAAC;AAEN,CAAC;AAED,eAAeZ,kBAAkB;AAEjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAZC"}
1
+ {"version":3,"names":["React","View","color","defaultIconSize","primaryIconColor","secondaryIconColor","audioIconHelper","AudioIconComponent","props","getIconColor","primaryColor","iconPrimaryColor","secondaryColor","iconSecondaryColor","isPlaying","iconSize","renderStrikeLine","height","width","transform","rotate","backgroundColor","justifyContent","position","top","left","zIndex","muted","audio","isSpeakerIcon","customIcon","cloneElement","getIcon","name","getIconName","customIconSet","size","style","getIconMargin","iconStyle"],"sourceRoot":"../../src","sources":["AudioIconComponent.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,QAAO,cAAc;AAEjC,OAAOC,KAAK,MAAM,6BAA6B;AAC/C,SAAQC,eAAe,EAAEC,gBAAgB,EAAEC,kBAAkB,QAAO,iCAAiC;AACrG,OAAOC,eAAe,MAAM,8BAA8B;AAE1D,MAAMC,kBAAkB,GAAIC,KAAK,IAAK;EACpC,MAAMC,YAAY,GAAG,MAAM;IACzB,MAAMC,YAAY,GAAGF,KAAK,CAACG,gBAAgB,IAAIP,gBAAgB;IAC/D,MAAMQ,cAAc,GAAGJ,KAAK,CAACK,kBAAkB,IAAIR,kBAAkB;IACrE,OAAOG,KAAK,CAACM,SAAS,GAAGF,cAAc,GAAGF,YAAY;EACxD,CAAC;EAED,MAAMK,QAAQ,GAAGP,KAAK,CAACO,QAAQ,IAAIZ,eAAe;EAElD,MAAMa,gBAAgB,GAAG,MAAM;IAC7B,oBAAO,oBAAC,IAAI;MAAC,KAAK,EAAE;QAACC,MAAM,EAAE,CAAC;QAAEC,KAAK,EAAEH,QAAQ;QAAEI,SAAS,EAAE,CAAC;UAACC,MAAM,EAAE;QAAO,CAAC,CAAC;QAAEC,eAAe,EAAE,OAAO;QAAEC,cAAc,EAAE,QAAQ;QAAEC,QAAQ,EAAE,UAAU;QAAEC,GAAG,EAAET,QAAQ,GAAG,GAAG;QAAEU,IAAI,EAAE,CAAC,CAAC;QAAEC,MAAM,EAAE;MAAE;IAAE,gBAC5L,oBAAC,IAAI;MAAC,KAAK,EAAE;QAACT,MAAM,EAAE,GAAG;QAAEI,eAAe,EAAEnB,KAAK,CAACyB;MAAK;IAAE,EAAG,CACxD;EAChB,CAAC;EAED,CAAC;EACD,oBACE,oBAAC,IAAI,QACD,CAACnB,KAAK,CAACoB,KAAK,IAAI,CAACpB,KAAK,CAACqB,aAAa,IAAI,CAACrB,KAAK,CAACsB,UAAU,IAAKd,gBAAgB,EAAE,eAEhFhB,KAAK,CAAC+B,YAAY,CAACzB,eAAe,CAAC0B,OAAO,CAACxB,KAAK,CAACsB,UAAU,EAAEtB,KAAK,CAACqB,aAAa,CAAC,EAAE;IACjFI,IAAI,EAAE3B,eAAe,CAAC4B,WAAW,CAAC1B,KAAK,CAAC2B,aAAa,EAAE3B,KAAK,CAACqB,aAAa,EAAErB,KAAK,CAACoB,KAAK,EAAEpB,KAAK,CAACM,SAAS,CAAC;IACzGsB,IAAI,EAAErB,QAAQ;IAAEb,KAAK,EAAE,CAAC,CAACM,KAAK,CAACoB,KAAK,GAAGnB,YAAY,EAAE,GAAGP,KAAK,CAACyB,KAAK;IACnEU,KAAK,EAAE,CAAC;MAAEnB,KAAK,EAAEH;IAAS,CAAC,EAAET,eAAe,CAACgC,aAAa,CAAC9B,KAAK,CAACM,SAAS,EAAEN,KAAK,CAACqB,aAAa,EAAE,CAAC,CAACrB,KAAK,CAACsB,UAAU,CAAC,EAAEtB,KAAK,CAAC+B,SAAS;EACvI,CAAC,CAAC,CAEC;AAEX,CAAC;AAED,eAAehC,kBAAkB;AAEjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAZC"}
@@ -5,7 +5,8 @@ import { defaultAudioIconSet } from '../constants/icon_constant';
5
5
  const audioIconHelper = (() => {
6
6
  return {
7
7
  getIcon,
8
- getIconName
8
+ getIconName,
9
+ getIconMargin
9
10
  };
10
11
  function getIcon(customIcon, isSpeakerIcon) {
11
12
  return customIcon ? customIcon : isSpeakerIcon ? /*#__PURE__*/React.createElement(IonIcon, null) : /*#__PURE__*/React.createElement(FeatherIcon, null);
@@ -15,6 +16,14 @@ const audioIconHelper = (() => {
15
16
  if (!audio) return icon.mute;
16
17
  return isPlaying ? icon.pause : icon.play;
17
18
  }
19
+ function getIconMargin(isPlaying, isSpeakerIcon) {
20
+ if (isPlaying && !isSpeakerIcon) return {
21
+ marginLeft: -1
22
+ };
23
+ return {
24
+ marginLeft: 0
25
+ };
26
+ }
18
27
  })();
19
28
  export default audioIconHelper;
20
29
  //# sourceMappingURL=audio_icon_helper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","FeatherIcon","IonIcon","defaultAudioIconSet","audioIconHelper","getIcon","getIconName","customIcon","isSpeakerIcon","customIconSet","audio","isPlaying","icon","mute","pause","play"],"sourceRoot":"../../src","sources":["audio_icon_helper.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAM,mCAAmC;AAC3D,OAAOC,OAAO,MAAM,oCAAoC;AACxD,SAAQC,mBAAmB,QAAO,4BAA4B;AAE9D,MAAMC,eAAe,GAAG,CAAC,MAAM;EAC7B,OAAO;IACLC,OAAO;IACPC;EACF,CAAC;EAED,SAASD,OAAO,CAACE,UAAU,EAAEC,aAAa,EAAE;IAC1C,OAAOD,UAAU,GAAGA,UAAU,GAAGC,aAAa,gBAAG,oBAAC,OAAO,OAAE,gBAAG,oBAAC,WAAW,OAAE;EAC9E;EAEA,SAASF,WAAW,CAACG,aAAa,EAAED,aAAa,EAAEE,KAAK,EAAEC,SAAS,EAAE;IACnE,MAAMC,IAAI,GAAGH,aAAa,GAAGA,aAAa,GAAGD,aAAa,GAAGL,mBAAmB,CAAC,UAAU,CAAC,GAAGA,mBAAmB,CAAC,SAAS,CAAC;IAC7H,IAAI,CAACO,KAAK,EACR,OAAOE,IAAI,CAACC,IAAI;IAElB,OAAOF,SAAS,GAAGC,IAAI,CAACE,KAAK,GAAGF,IAAI,CAACG,IAAI;EAC3C;AACF,CAAC,GAAG;AAEJ,eAAeX,eAAe"}
1
+ {"version":3,"names":["React","FeatherIcon","IonIcon","defaultAudioIconSet","audioIconHelper","getIcon","getIconName","getIconMargin","customIcon","isSpeakerIcon","customIconSet","audio","isPlaying","icon","mute","pause","play","marginLeft"],"sourceRoot":"../../src","sources":["audio_icon_helper.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAM,mCAAmC;AAC3D,OAAOC,OAAO,MAAM,oCAAoC;AACxD,SAAQC,mBAAmB,QAAO,4BAA4B;AAE9D,MAAMC,eAAe,GAAG,CAAC,MAAM;EAC7B,OAAO;IACLC,OAAO;IACPC,WAAW;IACXC;EACF,CAAC;EAED,SAASF,OAAO,CAACG,UAAU,EAAEC,aAAa,EAAE;IAC1C,OAAOD,UAAU,GAAGA,UAAU,GAAGC,aAAa,gBAAG,oBAAC,OAAO,OAAE,gBAAG,oBAAC,WAAW,OAAE;EAC9E;EAEA,SAASH,WAAW,CAACI,aAAa,EAAED,aAAa,EAAEE,KAAK,EAAEC,SAAS,EAAE;IACnE,MAAMC,IAAI,GAAGH,aAAa,GAAGA,aAAa,GAAGD,aAAa,GAAGN,mBAAmB,CAAC,UAAU,CAAC,GAAGA,mBAAmB,CAAC,SAAS,CAAC;IAC7H,IAAI,CAACQ,KAAK,EACR,OAAOE,IAAI,CAACC,IAAI;IAElB,OAAOF,SAAS,GAAGC,IAAI,CAACE,KAAK,GAAGF,IAAI,CAACG,IAAI;EAC3C;EAEA,SAAST,aAAa,CAACK,SAAS,EAAEH,aAAa,EAAE;IAC/C,IAAIG,SAAS,IAAI,CAACH,aAAa,EAAE,OAAO;MAAEQ,UAAU,EAAE,CAAC;IAAE,CAAC;IAC1D,OAAO;MAAEA,UAAU,EAAE;IAAE,CAAC;EAC1B;AACF,CAAC,GAAG;AAEJ,eAAeb,eAAe"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-audio-player-button",
3
- "version": "1.0.3",
4
- "description": "test",
3
+ "version": "1.0.5",
4
+ "description": "A custom button with an icon for playing audio. It is able to play the audio without overlapping each other.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/index.d.ts",
@@ -1,4 +1,5 @@
1
1
  import React from 'react'
2
+ import {View} from 'react-native'
2
3
 
3
4
  import color from '../constants/color_constant';
4
5
  import {defaultIconSize, primaryIconColor, secondaryIconColor} from '../constants/component_constant';
@@ -13,13 +14,24 @@ const AudioIconComponent = (props) => {
13
14
 
14
15
  const iconSize = props.iconSize || defaultIconSize
15
16
 
17
+ const renderStrikeLine = () => {
18
+ return <View style={{height: 3, width: iconSize, transform: [{rotate: '45deg'}], backgroundColor: 'white', justifyContent: 'center', position: 'absolute', top: iconSize / 2.4, left: -2, zIndex: 10}}>
19
+ <View style={{height: 1.5, backgroundColor: color.muted}} />
20
+ </View>
21
+ }
22
+
16
23
  {/* CloneElement is used so we can pass different type of icon and still using the same configuration */}
17
24
  return (
18
- React.cloneElement(audioIconHelper.getIcon(props.customIcon, props.isSpeakerIcon), {
19
- name: audioIconHelper.getIconName(props.customIconSet, props.isSpeakerIcon, props.audio, props.isPlaying),
20
- size: iconSize, color: !!props.audio ? getIconColor() : color.muted,
21
- style: [props.iconStyle, { width: iconSize, marginLeft: (props.isPlaying && !props.isSpeakerIcon) ? -2 : 0 }]
22
- })
25
+ <View>
26
+ {(!props.audio && !props.isSpeakerIcon && !props.customIcon) && renderStrikeLine()}
27
+ {
28
+ React.cloneElement(audioIconHelper.getIcon(props.customIcon, props.isSpeakerIcon), {
29
+ name: audioIconHelper.getIconName(props.customIconSet, props.isSpeakerIcon, props.audio, props.isPlaying),
30
+ size: iconSize, color: !!props.audio ? getIconColor() : color.muted,
31
+ style: [{ width: iconSize }, audioIconHelper.getIconMargin(props.isPlaying, props.isSpeakerIcon, !!props.customIcon), props.iconStyle]
32
+ })
33
+ }
34
+ </View>
23
35
  )
24
36
  }
25
37
 
@@ -7,6 +7,7 @@ const audioIconHelper = (() => {
7
7
  return {
8
8
  getIcon,
9
9
  getIconName,
10
+ getIconMargin,
10
11
  }
11
12
 
12
13
  function getIcon(customIcon, isSpeakerIcon) {
@@ -20,6 +21,11 @@ const audioIconHelper = (() => {
20
21
 
21
22
  return isPlaying ? icon.pause : icon.play;
22
23
  }
24
+
25
+ function getIconMargin(isPlaying, isSpeakerIcon) {
26
+ if (isPlaying && !isSpeakerIcon) return { marginLeft: -1 }
27
+ return { marginLeft: 0 }
28
+ }
23
29
  })()
24
30
 
25
31
  export default audioIconHelper