diff --git a/.gitignore b/.gitignore
index b55368fb..27506cc4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,7 +33,6 @@ project.xcworkspace
.gradle
local.properties
*.iml
-example/android/gradle
example/android/build
# node.js
@@ -46,8 +45,6 @@ buck-out/
\.buckd/
example/android/app/libs
example/android/keystores/debug.keystore
-example/android/gradlew
-example/android/gradlew.bat
lib/
diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f3d88b1c
Binary files /dev/null and b/example/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..84226702
--- /dev/null
+++ b/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/example/android/gradlew b/example/android/gradlew
new file mode 100755
index 00000000..2fe81a7d
--- /dev/null
+++ b/example/android/gradlew
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/example/react-native-media-controls/react-native-media-controls.cjs.development.js b/example/react-native-media-controls/react-native-media-controls.cjs.development.js
index d0fdf062..b82178fe 100644
--- a/example/react-native-media-controls/react-native-media-controls.cjs.development.js
+++ b/example/react-native-media-controls/react-native-media-controls.cjs.development.js
@@ -151,7 +151,9 @@ var Controls = function Controls(props) {
style: [styles.playButton, {
backgroundColor: mainColor
}],
- onPress: pressAction
+ onPress: pressAction,
+ accessibilityLabel: exports.PLAYER_STATES.PAUSED ? "Tap to Play" : "Tap to Pause",
+ accessibilityHint: "Plays and Pauses the Video"
}, React__default.createElement(reactNative.Image, {
source: icon,
style: styles.playIcon
@@ -271,6 +273,10 @@ var MediaControls = function MediaControls(props) {
isVisible = _useState2[0],
setIsVisible = _useState2[1];
+ React.useEffect(function () {
+ fadeOutControls(fadeOutDelay);
+ }, []);
+
var fadeOutControls = function fadeOutControls(delay) {
if (delay === void 0) {
delay = 0;
@@ -353,6 +359,7 @@ var MediaControls = function MediaControls(props) {
};
return React__default.createElement(reactNative.TouchableWithoutFeedback, {
+ accessible: false,
onPress: toggleControls
}, React__default.createElement(reactNative.Animated.View, {
style: [styles.container, {
diff --git a/example/react-native-media-controls/react-native-media-controls.cjs.development.js.map b/example/react-native-media-controls/react-native-media-controls.cjs.development.js.map
index 8cbb4799..6a9741de 100644
--- a/example/react-native-media-controls/react-native-media-controls.cjs.development.js.map
+++ b/example/react-native-media-controls/react-native-media-controls.cjs.development.js.map
@@ -1 +1 @@
-{"version":3,"file":"react-native-media-controls.cjs.development.js","sources":["../../src/MediaControls.style.ts","../../src/constants/playerStates.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/Toolbar.tsx","../../src/MediaControls.tsx"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n","import React, { useState } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n"],"names":["containerBackgroundColor","playButtonBorderColor","white","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","PLAYER_STATES","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","getPlayerStateIcon","playerState","PAUSED","require","PLAYING","ENDED","Controls","props","isLoading","mainColor","onReplay","onPause","icon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","containerStyle","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","dragging","value","onSeeking","seekVideo","onSeek","Text","RNSlider","onValueChange","onSlidingComplete","maximumValue","Math","floor","minimumTrackTintColor","Boolean","Toolbar","children","MediaControls","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","useState","Animated","Value","opacity","isVisible","setIsVisible","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","fadeInControls","loop","cancelAnimation","stopAnimation","onPaused","newPlayerState","toggleControls","TouchableWithoutFeedback"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"react-native-media-controls.cjs.development.js","sources":["../../src/MediaControls.style.ts","../../src/constants/playerStates.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/Toolbar.tsx","../../src/MediaControls.tsx"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n","import React, { useState, useEffect } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n useEffect(() => {\n fadeOutControls(fadeOutDelay);\n }, []);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n"],"names":["containerBackgroundColor","playButtonBorderColor","white","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","PLAYER_STATES","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","getPlayerStateIcon","playerState","PAUSED","require","PLAYING","ENDED","Controls","props","isLoading","mainColor","onReplay","onPause","icon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","accessibilityLabel","accessibilityHint","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","containerStyle","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","dragging","value","onSeeking","seekVideo","onSeek","Text","RNSlider","onValueChange","onSlidingComplete","maximumValue","Math","floor","minimumTrackTintColor","Boolean","Toolbar","children","MediaControls","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","useState","Animated","Value","opacity","isVisible","setIsVisible","useEffect","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","fadeInControls","loop","cancelAnimation","stopAnimation","onPaused","newPlayerState","toggleControls","TouchableWithoutFeedback","accessible"],"mappings":"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"}
\ No newline at end of file
diff --git a/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js b/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js
index 4f6f3613..019d58da 100644
--- a/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js
+++ b/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js
@@ -1,2 +1,2 @@
-"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n=require("react"),r=e(n),o=require("react-native"),i=e(require("react-native-slider")),a=o.StyleSheet.create({container:{alignItems:"center",backgroundColor:"rgba(45, 59, 62, 0.4)",bottom:0,flex:1,flexDirection:"column",justifyContent:"space-between",left:0,paddingHorizontal:20,paddingVertical:13,position:"absolute",right:0,top:0},controlsRow:{alignItems:"center",alignSelf:"stretch",flex:1,justifyContent:"center"},fullScreenContainer:{alignItems:"center",alignSelf:"stretch",justifyContent:"center",paddingLeft:20},playButton:{alignItems:"center",borderColor:"rgba(255,255,255,0.5)",borderRadius:3,borderWidth:1.5,height:50,justifyContent:"center",width:50},playIcon:{height:22,resizeMode:"contain",width:22},progressColumnContainer:{flex:1},progressContainer:{flexDirection:"row",justifyContent:"flex-end",marginBottom:-25},progressSlider:{alignSelf:"stretch"},replayIcon:{height:20,resizeMode:"stretch",width:25},thumb:{backgroundColor:"#fff",borderRadius:50,borderWidth:3,height:20,width:20},timeRow:{alignSelf:"stretch"},timerLabel:{color:"#fff",fontSize:12},timerLabelsContainer:{alignSelf:"stretch",flexDirection:"row",justifyContent:"space-between",marginBottom:-7},toolbar:{flexDirection:"row",flex:1,justifyContent:"flex-end"},toolbarRow:{alignItems:"flex-start",flexDirection:"row",justifyContent:"flex-start"},track:{borderRadius:1,height:5}});(t=exports.PLAYER_STATES||(exports.PLAYER_STATES={}))[t.PLAYING=0]="PLAYING",t[t.PAUSED=1]="PAUSED",t[t.ENDED=2]="ENDED";var l=function(e){var t=e>=3600?[11,8]:[14,5],n=t[0],r=t[1],o=new Date(0);return o.setSeconds(e),o.toISOString().substr(n,r)},s=function(e){var t=e.isLoading,n=e.mainColor,i=e.playerState,l=e.onReplay,s=e.onPause,c=function(e){switch(e){case exports.PLAYER_STATES.PAUSED:return require("./assets/ic_play.png");case exports.PLAYER_STATES.PLAYING:return require("./assets/ic_pause.png");case exports.PLAYER_STATES.ENDED:return require("./assets/ic_replay.png");default:return null}}(i),u=i===exports.PLAYER_STATES.ENDED?l:s,d=t?r.createElement(o.ActivityIndicator,{size:"large",color:"#FFF"}):r.createElement(o.TouchableOpacity,{style:[a.playButton,{backgroundColor:n}],onPress:u},r.createElement(o.Image,{source:c,style:a.playIcon}));return r.createElement(o.View,{style:[a.controlsRow]},d)},c=require("./assets/ic_fullscreen.png"),u=function(e){var t=e.customSliderStyle,n=e.duration,s=e.mainColor,u=e.onFullScreen,d=e.onPause,S=e.progress,m=(null==t?void 0:t.trackStyle)||{},f=(null==t?void 0:t.thumbStyle)||{};return r.createElement(o.View,{style:[a.controlsRow,a.progressContainer,(null==t?void 0:t.containerStyle)||{}]},r.createElement(o.View,{style:a.progressColumnContainer},r.createElement(o.View,{style:[a.timerLabelsContainer]},r.createElement(o.Text,{style:a.timerLabel},l(S)),r.createElement(o.Text,{style:a.timerLabel},l(n))),r.createElement(i,{style:[a.progressSlider],onValueChange:function(t){var n=e.playerState;(0,e.onSeeking)(t),n!==exports.PLAYER_STATES.PAUSED&&d()},onSlidingComplete:function(t){e.onSeek(t),d()},maximumValue:Math.floor(n),value:Math.floor(S),trackStyle:[a.track,m],thumbStyle:[a.thumb,f,{borderColor:s}],minimumTrackTintColor:s})),Boolean(u)&&r.createElement(o.TouchableOpacity,{style:a.fullScreenContainer,onPress:u},r.createElement(o.Image,{source:c})))},d=function(e){var t=e.children,i=e.containerStyle,l=void 0===i?{}:i,c=e.duration,d=e.fadeOutDelay,S=void 0===d?5e3:d,m=e.isLoading,f=void 0!==m&&m,y=e.mainColor,p=void 0===y?"rgba(12, 83, 175, 0.9)":y,g=e.onFullScreen,E=e.onReplay,b=e.onSeek,h=e.onSeeking,A=e.playerState,C=e.progress,v=e.showOnStart,w=e.sliderStyle,x=e.toolbarStyle,P=void 0===x?{}:x,T=void 0===v||v?{initialOpacity:1,initialIsVisible:!0}:{initialOpacity:0,initialIsVisible:!1},D=T.initialIsVisible,L=n.useState(new o.Animated.Value(T.initialOpacity))[0],R=n.useState(D),I=R[1],k=function(e){void 0===e&&(e=0),o.Animated.timing(L,{toValue:0,duration:300,delay:e,useNativeDriver:!1}).start((function(e){e.finished&&I(!1)}))},V=function(){var t=e.playerState,n=e.onPaused,r=exports.PLAYER_STATES.PLAYING,o=exports.PLAYER_STATES.PAUSED;switch(t){case r:L.stopAnimation((function(){return I(!0)}));break;case o:k(S)}return n(t===r?o:r)};return r.createElement(o.TouchableWithoutFeedback,{onPress:function(){L.stopAnimation((function(e){return I(!!e),e?k():(void 0===t&&(t=!0),I(!0),void o.Animated.timing(L,{toValue:1,duration:300,delay:0,useNativeDriver:!1}).start((function(){t&&k(S)})));var t}))}},r.createElement(o.Animated.View,{style:[a.container,{opacity:L}]},R[0]&&r.createElement(o.View,{style:[a.container,l]},r.createElement(o.View,{style:[a.controlsRow,a.toolbarRow,P]},t),r.createElement(s,{onPause:V,onReplay:function(){k(S),E()},isLoading:f,mainColor:p,playerState:A}),r.createElement(u,{progress:C,duration:c,mainColor:p,onFullScreen:g,playerState:A,onSeek:b,onSeeking:h,onPause:V,customSliderStyle:w}))))};d.Toolbar=function(e){return r.createElement(r.Fragment,null,e.children)},exports.default=d;
+"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n=require("react"),r=e(n),o=require("react-native"),i=e(require("react-native-slider")),a=o.StyleSheet.create({container:{alignItems:"center",backgroundColor:"rgba(45, 59, 62, 0.4)",bottom:0,flex:1,flexDirection:"column",justifyContent:"space-between",left:0,paddingHorizontal:20,paddingVertical:13,position:"absolute",right:0,top:0},controlsRow:{alignItems:"center",alignSelf:"stretch",flex:1,justifyContent:"center"},fullScreenContainer:{alignItems:"center",alignSelf:"stretch",justifyContent:"center",paddingLeft:20},playButton:{alignItems:"center",borderColor:"rgba(255,255,255,0.5)",borderRadius:3,borderWidth:1.5,height:50,justifyContent:"center",width:50},playIcon:{height:22,resizeMode:"contain",width:22},progressColumnContainer:{flex:1},progressContainer:{flexDirection:"row",justifyContent:"flex-end",marginBottom:-25},progressSlider:{alignSelf:"stretch"},replayIcon:{height:20,resizeMode:"stretch",width:25},thumb:{backgroundColor:"#fff",borderRadius:50,borderWidth:3,height:20,width:20},timeRow:{alignSelf:"stretch"},timerLabel:{color:"#fff",fontSize:12},timerLabelsContainer:{alignSelf:"stretch",flexDirection:"row",justifyContent:"space-between",marginBottom:-7},toolbar:{flexDirection:"row",flex:1,justifyContent:"flex-end"},toolbarRow:{alignItems:"flex-start",flexDirection:"row",justifyContent:"flex-start"},track:{borderRadius:1,height:5}});(t=exports.PLAYER_STATES||(exports.PLAYER_STATES={}))[t.PLAYING=0]="PLAYING",t[t.PAUSED=1]="PAUSED",t[t.ENDED=2]="ENDED";var l=function(e){var t=e>=3600?[11,8]:[14,5],n=t[0],r=t[1],o=new Date(0);return o.setSeconds(e),o.toISOString().substr(n,r)},s=function(e){var t=e.isLoading,n=e.mainColor,i=e.playerState,l=e.onReplay,s=e.onPause,c=function(e){switch(e){case exports.PLAYER_STATES.PAUSED:return require("./assets/ic_play.png");case exports.PLAYER_STATES.PLAYING:return require("./assets/ic_pause.png");case exports.PLAYER_STATES.ENDED:return require("./assets/ic_replay.png");default:return null}}(i),u=i===exports.PLAYER_STATES.ENDED?l:s,d=t?r.createElement(o.ActivityIndicator,{size:"large",color:"#FFF"}):r.createElement(o.TouchableOpacity,{style:[a.playButton,{backgroundColor:n}],onPress:u,accessibilityLabel:exports.PLAYER_STATES.PAUSED?"Tap to Play":"Tap to Pause",accessibilityHint:"Plays and Pauses the Video"},r.createElement(o.Image,{source:c,style:a.playIcon}));return r.createElement(o.View,{style:[a.controlsRow]},d)},c=require("./assets/ic_fullscreen.png"),u=function(e){var t=e.customSliderStyle,n=e.duration,s=e.mainColor,u=e.onFullScreen,d=e.onPause,S=e.progress,f=(null==t?void 0:t.trackStyle)||{},m=(null==t?void 0:t.thumbStyle)||{};return r.createElement(o.View,{style:[a.controlsRow,a.progressContainer,(null==t?void 0:t.containerStyle)||{}]},r.createElement(o.View,{style:a.progressColumnContainer},r.createElement(o.View,{style:[a.timerLabelsContainer]},r.createElement(o.Text,{style:a.timerLabel},l(S)),r.createElement(o.Text,{style:a.timerLabel},l(n))),r.createElement(i,{style:[a.progressSlider],onValueChange:function(t){var n=e.playerState;(0,e.onSeeking)(t),n!==exports.PLAYER_STATES.PAUSED&&d()},onSlidingComplete:function(t){e.onSeek(t),d()},maximumValue:Math.floor(n),value:Math.floor(S),trackStyle:[a.track,f],thumbStyle:[a.thumb,m,{borderColor:s}],minimumTrackTintColor:s})),Boolean(u)&&r.createElement(o.TouchableOpacity,{style:a.fullScreenContainer,onPress:u},r.createElement(o.Image,{source:c})))},d=function(e){var t=e.children,i=e.containerStyle,l=void 0===i?{}:i,c=e.duration,d=e.fadeOutDelay,S=void 0===d?5e3:d,f=e.isLoading,m=void 0!==f&&f,y=e.mainColor,p=void 0===y?"rgba(12, 83, 175, 0.9)":y,g=e.onFullScreen,E=e.onReplay,b=e.onSeek,h=e.onSeeking,A=e.playerState,P=e.progress,v=e.showOnStart,C=e.sliderStyle,T=e.toolbarStyle,w=void 0===T?{}:T,x=void 0===v||v?{initialOpacity:1,initialIsVisible:!0}:{initialOpacity:0,initialIsVisible:!1},L=x.initialIsVisible,D=n.useState(new o.Animated.Value(x.initialOpacity))[0],R=n.useState(L),I=R[0],V=R[1];n.useEffect((function(){k(S)}),[]);var k=function(e){void 0===e&&(e=0),o.Animated.timing(D,{toValue:0,duration:300,delay:e,useNativeDriver:!1}).start((function(e){e.finished&&V(!1)}))},_=function(){var t=e.playerState,n=e.onPaused,r=exports.PLAYER_STATES.PLAYING,o=exports.PLAYER_STATES.PAUSED;switch(t){case r:D.stopAnimation((function(){return V(!0)}));break;case o:k(S)}return n(t===r?o:r)};return r.createElement(o.TouchableWithoutFeedback,{accessible:!1,onPress:function(){D.stopAnimation((function(e){return V(!!e),e?k():(void 0===t&&(t=!0),V(!0),void o.Animated.timing(D,{toValue:1,duration:300,delay:0,useNativeDriver:!1}).start((function(){t&&k(S)})));var t}))}},r.createElement(o.Animated.View,{style:[a.container,{opacity:D}]},I&&r.createElement(o.View,{style:[a.container,l]},r.createElement(o.View,{style:[a.controlsRow,a.toolbarRow,w]},t),r.createElement(s,{onPause:_,onReplay:function(){k(S),E()},isLoading:m,mainColor:p,playerState:A}),r.createElement(u,{progress:P,duration:c,mainColor:p,onFullScreen:g,playerState:A,onSeek:b,onSeeking:h,onPause:_,customSliderStyle:C}))))};d.Toolbar=function(e){return r.createElement(r.Fragment,null,e.children)},exports.default=d;
//# sourceMappingURL=react-native-media-controls.cjs.production.min.js.map
diff --git a/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js.map b/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js.map
index 5bdcde0d..b92992c2 100644
--- a/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js.map
+++ b/example/react-native-media-controls/react-native-media-controls.cjs.production.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"react-native-media-controls.cjs.production.min.js","sources":["../../src/constants/playerStates.ts","../../src/MediaControls.style.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/MediaControls.tsx","../../src/Toolbar.tsx"],"sourcesContent":["enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React, { useState } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n"],"names":["PLAYER_STATES","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","Controls","props","isLoading","mainColor","playerState","onReplay","onPause","icon","PAUSED","require","PLAYING","ENDED","getPlayerStateIcon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","containerStyle","Text","RNSlider","onValueChange","value","onSeeking","onSlidingComplete","onSeek","maximumValue","Math","floor","minimumTrackTintColor","Boolean","MediaControls","children","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","opacity","useState","Animated","Value","setIsVisible","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","onPaused","stopAnimation","TouchableWithoutFeedback","loop","Toolbar"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"react-native-media-controls.cjs.production.min.js","sources":["../../src/constants/playerStates.ts","../../src/MediaControls.style.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/MediaControls.tsx","../../src/Toolbar.tsx"],"sourcesContent":["enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React, { useState, useEffect } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n useEffect(() => {\n fadeOutControls(fadeOutDelay);\n }, []);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n"],"names":["PLAYER_STATES","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","Controls","props","isLoading","mainColor","playerState","onReplay","onPause","icon","PAUSED","require","PLAYING","ENDED","getPlayerStateIcon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","accessibilityLabel","accessibilityHint","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","containerStyle","Text","RNSlider","onValueChange","value","onSeeking","onSlidingComplete","onSeek","maximumValue","Math","floor","minimumTrackTintColor","Boolean","MediaControls","children","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","opacity","useState","Animated","Value","isVisible","setIsVisible","useEffect","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","onPaused","stopAnimation","TouchableWithoutFeedback","accessible","loop","Toolbar"],"mappings":"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"}
\ No newline at end of file
diff --git a/example/react-native-media-controls/react-native-media-controls.esm.js b/example/react-native-media-controls/react-native-media-controls.esm.js
index d104bc19..d4d752ce 100644
--- a/example/react-native-media-controls/react-native-media-controls.esm.js
+++ b/example/react-native-media-controls/react-native-media-controls.esm.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { useState, useEffect } from 'react';
import { StyleSheet, ActivityIndicator, TouchableOpacity, Image, View, Text, Animated, TouchableWithoutFeedback } from 'react-native';
import RNSlider from 'react-native-slider';
@@ -146,7 +146,9 @@ var Controls = function Controls(props) {
style: [styles.playButton, {
backgroundColor: mainColor
}],
- onPress: pressAction
+ onPress: pressAction,
+ accessibilityLabel: PLAYER_STATES.PAUSED ? "Tap to Play" : "Tap to Pause",
+ accessibilityHint: "Plays and Pauses the Video"
}, React.createElement(Image, {
source: icon,
style: styles.playIcon
@@ -266,6 +268,10 @@ var MediaControls = function MediaControls(props) {
isVisible = _useState2[0],
setIsVisible = _useState2[1];
+ useEffect(function () {
+ fadeOutControls(fadeOutDelay);
+ }, []);
+
var fadeOutControls = function fadeOutControls(delay) {
if (delay === void 0) {
delay = 0;
@@ -348,6 +354,7 @@ var MediaControls = function MediaControls(props) {
};
return React.createElement(TouchableWithoutFeedback, {
+ accessible: false,
onPress: toggleControls
}, React.createElement(Animated.View, {
style: [styles.container, {
diff --git a/example/react-native-media-controls/react-native-media-controls.esm.js.map b/example/react-native-media-controls/react-native-media-controls.esm.js.map
index 05d4bf79..73fecf8b 100644
--- a/example/react-native-media-controls/react-native-media-controls.esm.js.map
+++ b/example/react-native-media-controls/react-native-media-controls.esm.js.map
@@ -1 +1 @@
-{"version":3,"file":"react-native-media-controls.esm.js","sources":["../../src/MediaControls.style.ts","../../src/constants/playerStates.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/Toolbar.tsx","../../src/MediaControls.tsx"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n","import React, { useState } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n"],"names":["containerBackgroundColor","playButtonBorderColor","white","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","PLAYER_STATES","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","getPlayerStateIcon","playerState","PAUSED","require","PLAYING","ENDED","Controls","props","isLoading","mainColor","onReplay","onPause","icon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","containerStyle","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","dragging","value","onSeeking","seekVideo","onSeek","Text","RNSlider","onValueChange","onSlidingComplete","maximumValue","Math","floor","minimumTrackTintColor","Boolean","Toolbar","children","MediaControls","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","useState","Animated","Value","opacity","isVisible","setIsVisible","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","fadeInControls","loop","cancelAnimation","stopAnimation","onPaused","newPlayerState","toggleControls","TouchableWithoutFeedback"],"mappings":";;;;AAEA,IAAMA,wBAAwB,GAAG,uBAAjC;AACA,IAAMC,qBAAqB,GAAG,uBAA9B;AACA,IAAMC,KAAK,GAAG,MAAd;AAEA,0BAAeC,UAAU,CAACC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,eAAe,EAAEP,wBAFR;AAGTQ,IAAAA,MAAM,EAAE,CAHC;AAITC,IAAAA,IAAI,EAAE,CAJG;AAKTC,IAAAA,aAAa,EAAE,QALN;AAMTC,IAAAA,cAAc,EAAE,eANP;AAOTC,IAAAA,IAAI,EAAE,CAPG;AAQTC,IAAAA,iBAAiB,EAAE,EARV;AASTC,IAAAA,eAAe,EAAE,EATR;AAUTC,IAAAA,QAAQ,EAAE,UAVD;AAWTC,IAAAA,KAAK,EAAE,CAXE;AAYTC,IAAAA,GAAG,EAAE;AAZI,GADoB;AAe/BC,EAAAA,WAAW,EAAE;AACXZ,IAAAA,UAAU,EAAE,QADD;AAEXa,IAAAA,SAAS,EAAE,SAFA;AAGXV,IAAAA,IAAI,EAAE,CAHK;AAIXE,IAAAA,cAAc,EAAE;AAJL,GAfkB;AAqB/BS,EAAAA,mBAAmB,EAAE;AACnBd,IAAAA,UAAU,EAAE,QADO;AAEnBa,IAAAA,SAAS,EAAE,SAFQ;AAGnBR,IAAAA,cAAc,EAAE,QAHG;AAInBU,IAAAA,WAAW,EAAE;AAJM,GArBU;AA2B/BC,EAAAA,UAAU,EAAE;AACVhB,IAAAA,UAAU,EAAE,QADF;AAEViB,IAAAA,WAAW,EAAEtB,qBAFH;AAGVuB,IAAAA,YAAY,EAAE,CAHJ;AAIVC,IAAAA,WAAW,EAAE,GAJH;AAKVC,IAAAA,MAAM,EAAE,EALE;AAMVf,IAAAA,cAAc,EAAE,QANN;AAOVgB,IAAAA,KAAK,EAAE;AAPG,GA3BmB;AAoC/BC,EAAAA,QAAQ,EAAE;AACRF,IAAAA,MAAM,EAAE,EADA;AAERG,IAAAA,UAAU,EAAE,SAFJ;AAGRF,IAAAA,KAAK,EAAE;AAHC,GApCqB;AAyC/BG,EAAAA,uBAAuB,EAAE;AACvBrB,IAAAA,IAAI,EAAE;AADiB,GAzCM;AA4C/BsB,EAAAA,iBAAiB,EAAE;AACjBrB,IAAAA,aAAa,EAAE,KADE;AAEjBC,IAAAA,cAAc,EAAE,UAFC;AAGjBqB,IAAAA,YAAY,EAAE,CAAC;AAHE,GA5CY;AAiD/BC,EAAAA,cAAc,EAAE;AACdd,IAAAA,SAAS,EAAE;AADG,GAjDe;AAoD/Be,EAAAA,UAAU,EAAE;AACVR,IAAAA,MAAM,EAAE,EADE;AAEVG,IAAAA,UAAU,EAAE,SAFF;AAGVF,IAAAA,KAAK,EAAE;AAHG,GApDmB;AAyD/BQ,EAAAA,KAAK,EAAE;AACL5B,IAAAA,eAAe,EAAEL,KADZ;AAELsB,IAAAA,YAAY,EAAE,EAFT;AAGLC,IAAAA,WAAW,EAAE,CAHR;AAILC,IAAAA,MAAM,EAAE,EAJH;AAKLC,IAAAA,KAAK,EAAE;AALF,GAzDwB;AAgE/BS,EAAAA,OAAO,EAAE;AACPjB,IAAAA,SAAS,EAAE;AADJ,GAhEsB;AAmE/BkB,EAAAA,UAAU,EAAE;AACVC,IAAAA,KAAK,EAAEpC,KADG;AAEVqC,IAAAA,QAAQ,EAAE;AAFA,GAnEmB;AAuE/BC,EAAAA,oBAAoB,EAAE;AACpBrB,IAAAA,SAAS,EAAE,SADS;AAEpBT,IAAAA,aAAa,EAAE,KAFK;AAGpBC,IAAAA,cAAc,EAAE,eAHI;AAIpBqB,IAAAA,YAAY,EAAE,CAAC;AAJK,GAvES;AA6E/BS,EAAAA,OAAO,EAAE;AACP/B,IAAAA,aAAa,EAAE,KADR;AAEPD,IAAAA,IAAI,EAAE,CAFC;AAGPE,IAAAA,cAAc,EAAE;AAHT,GA7EsB;AAkF/B+B,EAAAA,UAAU,EAAE;AACVpC,IAAAA,UAAU,EAAE,YADF;AAEVI,IAAAA,aAAa,EAAE,KAFL;AAGVC,IAAAA,cAAc,EAAE;AAHN,GAlFmB;AAuF/BgC,EAAAA,KAAK,EAAE;AACLnB,IAAAA,YAAY,EAAE,CADT;AAELE,IAAAA,MAAM,EAAE;AAFH;AAvFwB,CAAlB,CAAf;;ICNKkB,aAAL;;AAAA,WAAKA;AACHA,EAAAA,2CAAA,YAAA;AACAA,EAAAA,0CAAA,WAAA;AACAA,EAAAA,yCAAA,UAAA;AACD,CAJD,EAAKA,aAAa,KAAbA,aAAa,KAAA,CAAlB;;ACEO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,OAAD;aACdA,OAAO,IAAI,IAAX,GAAkB,CAAC,EAAD,EAAK,CAAL,CAAlB,GAA4B,CAAC,EAAD,EAAK,CAAL;MAA1CC;MAAOC;;AACd,MAAMC,IAAI,GAAG,IAAIC,IAAJ,CAAS,CAAT,CAAb;AAEAD,EAAAA,IAAI,CAACE,UAAL,CAAgBL,OAAhB;AACA,SAAOG,IAAI,CAACG,WAAL,GAAmBC,MAAnB,CAA0BN,KAA1B,EAAiCC,GAAjC,CAAP;AACD,CANM;AAQP,AAEO,IAAMM,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,WAAD;AAChC,UAAQA,WAAR;AACE,SAAKX,aAAa,CAACY,MAAnB;AACE,aAAOC,OAAO,CAAC,sBAAD,CAAd;;AACF,SAAKb,aAAa,CAACc,OAAnB;AACE,aAAOD,OAAO,CAAC,uBAAD,CAAd;;AACF,SAAKb,aAAa,CAACe,KAAnB;AACE,aAAOF,OAAO,CAAC,wBAAD,CAAd;;AACF;AACE,aAAO,IAAP;AARJ;AAUD,CAXM;;ACEP,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;MACPC,YAAyDD,MAAzDC;MAAWC,YAA8CF,MAA9CE;MAAWR,cAAmCM,MAAnCN;MAAaS,WAAsBH,MAAtBG;MAAUC,UAAYJ,MAAZI;AACrD,MAAMC,IAAI,GAAGZ,kBAAkB,CAACC,WAAD,CAA/B;AACA,MAAMY,WAAW,GAAGZ,WAAW,KAAKX,aAAa,CAACe,KAA9B,GAAsCK,QAAtC,GAAiDC,OAArE;AAEA,MAAMG,OAAO,GAAGN,SAAS,GACvBO,mBAAA,CAACC,iBAAD;AAAmBC,IAAAA,IAAI,EAAC;AAAQjC,IAAAA,KAAK,EAAC;GAAtC,CADuB,GAGvB+B,mBAAA,CAACG,gBAAD;AACEC,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACpD,UAAR,EAAoB;AAAEf,MAAAA,eAAe,EAAEwD;AAAnB,KAApB;AACPY,IAAAA,OAAO,EAAER;GAFX,EAIEE,mBAAA,CAACO,KAAD;AAAOC,IAAAA,MAAM,EAAEX;AAAMO,IAAAA,KAAK,EAAEC,MAAM,CAAC9C;GAAnC,CAJF,CAHF;AAWA,SAAOyC,mBAAA,CAACS,IAAD;AAAML,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACxD,WAAR;GAAb,EAAoCkD,OAApC,CAAP;AACD,CAjBD;;ACcA,IAAMW,eAAe,gBAAGtB,OAAO,CAAC,4BAAD,CAA/B;;AAEA,IAAMuB,MAAM,GAAG,SAATA,MAAS,CAACnB,KAAD;MAEXoB,oBAMEpB,MANFoB;MACAC,WAKErB,MALFqB;MACAnB,YAIEF,MAJFE;MACAoB,eAGEtB,MAHFsB;MACAlB,UAEEJ,MAFFI;MACAmB,WACEvB,MADFuB;AAGF,MAAMC,cAAc,GAAG,CAAAJ,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEI,cAAnB,KAAqC,EAA5D;AACA,MAAMC,gBAAgB,GAAG,CAAAL,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEM,UAAnB,KAAiC,EAA1D;AACA,MAAMC,gBAAgB,GAAG,CAAAP,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEQ,UAAnB,KAAiC,EAA1D;;AAEA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;QACPC,YAA2B/B,MAA3B+B;QAAWrC,cAAgBM,MAAhBN;AACnBqC,IAAAA,SAAS,CAACD,KAAD,CAAT;;AAEA,QAAIpC,WAAW,KAAKX,aAAa,CAACY,MAAlC,EAA0C;AACxC;AACD;;AAEDS,IAAAA,OAAO;AACR,GATD;;AAWA,MAAM4B,SAAS,GAAG,SAAZA,SAAY,CAACF,KAAD;AAChB9B,IAAAA,KAAK,CAACiC,MAAN,CAAaH,KAAb;AACA1B,IAAAA,OAAO;AACR,GAHD;;AAKA,SACEI,mBAAA,CAACS,IAAD;AACEL,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACxD,WAAR,EAAqBwD,MAAM,CAAC3C,iBAA5B,EAA+CsD,cAA/C;GADT,EAGEhB,mBAAA,CAACS,IAAD;AAAML,IAAAA,KAAK,EAAEC,MAAM,CAAC5C;GAApB,EACEuC,mBAAA,CAACS,IAAD;AAAML,IAAAA,KAAK,EAAE,CAACC,MAAM,CAAClC,oBAAR;GAAb,EACE6B,mBAAA,CAAC0B,IAAD;AAAMtB,IAAAA,KAAK,EAAEC,MAAM,CAACrC;GAApB,EACGQ,qBAAqB,CAACuC,QAAD,CADxB,CADF,EAIEf,mBAAA,CAAC0B,IAAD;AAAMtB,IAAAA,KAAK,EAAEC,MAAM,CAACrC;GAApB,EACGQ,qBAAqB,CAACqC,QAAD,CADxB,CAJF,CADF,EASEb,mBAAA,CAAC2B,QAAD;AACEvB,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACzC,cAAR;AACPgE,IAAAA,aAAa,EAAEP;AACfQ,IAAAA,iBAAiB,EAAEL;AACnBM,IAAAA,YAAY,EAAEC,IAAI,CAACC,KAAL,CAAWnB,QAAX;AACdS,IAAAA,KAAK,EAAES,IAAI,CAACC,KAAL,CAAWjB,QAAX;AACPG,IAAAA,UAAU,EAAE,CAACb,MAAM,CAAC/B,KAAR,EAAe2C,gBAAf;AACZG,IAAAA,UAAU,EAAE,CACVf,MAAM,CAACvC,KADG,EAEVqD,gBAFU,EAGV;AAAEjE,MAAAA,WAAW,EAAEwC;AAAf,KAHU;AAKZuC,IAAAA,qBAAqB,EAAEvC;GAZzB,CATF,CAHF,EA2BGwC,OAAO,CAACpB,YAAD,CAAP,IACCd,mBAAA,CAACG,gBAAD;AACEC,IAAAA,KAAK,EAAEC,MAAM,CAACtD;AACduD,IAAAA,OAAO,EAAEQ;GAFX,EAIEd,mBAAA,CAACO,KAAD;AAAOC,IAAAA,MAAM,EAAEE;GAAf,CAJF,CA5BJ,CADF;AAsCD,CApED;;ACxBA,IAAMyB,OAAO,GAAG,SAAVA,OAAU;AAAA,MAAGC,QAAH,QAAGA,QAAH;AAAA,SAAyBpC,mBAAA,eAAA,MAAA,EAAGoC,QAAH,CAAzB;AAAA,CAAhB;;AC4BA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAAC7C,KAAD;MAElB4C,WAeE5C,MAfF4C;8BAeE5C,MAdFwB;MAAgBsB,0DAAuB;MACvCzB,WAaErB,MAbFqB;4BAaErB,MAZF+C;MAAAA,gDAAe;yBAYb/C,MAXFC;MAAAA,0CAAY;yBAWVD,MAVFE;MAAAA,0CAAY;MACZoB,eASEtB,MATFsB;MACU0B,mBAQRhD,MARFG;MACA8B,SAOEjC,MAPFiC;MACAF,YAME/B,MANF+B;MACArC,cAKEM,MALFN;MACA6B,WAIEvB,MAJFuB;2BAIEvB,MAHFiD;MAAAA,8CAAc;MACdC,cAEElD,MAFFkD;4BAEElD,MADFmD;MAAcC,sDAAqB;;aAES;AAC5C,QAAIH,WAAJ,EAAiB;AACf,aAAO;AACLI,QAAAA,cAAc,EAAE,CADX;AAELC,QAAAA,gBAAgB,EAAE;AAFb,OAAP;AAID;;AAED,WAAO;AACLD,MAAAA,cAAc,EAAE,CADX;AAELC,MAAAA,gBAAgB,EAAE;AAFb,KAAP;AAID,GAZ4C;MAArCD,sBAAAA;MAAgBC,wBAAAA;;kBAcNC,QAAQ,CAAC,IAAIC,QAAQ,CAACC,KAAb,CAAmBJ,cAAnB,CAAD;MAAnBK;;mBAC2BH,QAAQ,CAACD,gBAAD;MAAnCK;MAAWC;;AAElB,MAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD;QAACA;AAAAA,MAAAA,QAAQ;;;AAC/BN,IAAAA,QAAQ,CAACO,MAAT,CAAgBL,OAAhB,EAAyB;AACvBM,MAAAA,OAAO,EAAE,CADc;AAEvB3C,MAAAA,QAAQ,EAAE,GAFa;AAGvByC,MAAAA,KAAK,EAALA,KAHuB;AAIvBG,MAAAA,eAAe,EAAE;AAJM,KAAzB,EAKGC,KALH,CAKS,UAAAC,MAAM;AACb;;AAEA,UAAIA,MAAM,CAACC,QAAX,EAAqB;AACnBR,QAAAA,YAAY,CAAC,KAAD,CAAZ;AACD;AACF,KAXD;AAYD,GAbD;;AAeA,MAAMS,cAAc,GAAG,SAAjBA,cAAiB,CAACC,IAAD;QAACA;AAAAA,MAAAA,OAAO;;;AAC7BV,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACAJ,IAAAA,QAAQ,CAACO,MAAT,CAAgBL,OAAhB,EAAyB;AACvBM,MAAAA,OAAO,EAAE,CADc;AAEvB3C,MAAAA,QAAQ,EAAE,GAFa;AAGvByC,MAAAA,KAAK,EAAE,CAHgB;AAIvBG,MAAAA,eAAe,EAAE;AAJM,KAAzB,EAKGC,KALH,CAKS;AACP,UAAII,IAAJ,EAAU;AACRT,QAAAA,eAAe,CAACd,YAAD,CAAf;AACD;AACF,KATD;AAUD,GAZD;;AAcA,MAAM5C,QAAQ,GAAG,SAAXA,QAAW;AACf0D,IAAAA,eAAe,CAACd,YAAD,CAAf;AACAC,IAAAA,gBAAgB;AACjB,GAHD;;AAKA,MAAMuB,eAAe,GAAG,SAAlBA,eAAkB;AAAA,WAAMb,OAAO,CAACc,aAAR,CAAsB;AAAA,aAAMZ,YAAY,CAAC,IAAD,CAAlB;AAAA,KAAtB,CAAN;AAAA,GAAxB;;AAEA,MAAMxD,OAAO,GAAG,SAAVA,OAAU;QACNV,cAA0BM,MAA1BN;QAAa+E,WAAazE,MAAbyE;QACb5E,UAA2Bd,cAA3Bc;QAASF,SAAkBZ,cAAlBY;;AACjB,YAAQD,WAAR;AACE,WAAKG,OAAL;AAAc;AACZ0E,UAAAA,eAAe;AACf;AACD;;AACD,WAAK5E,MAAL;AAAa;AACXkE,UAAAA,eAAe,CAACd,YAAD,CAAf;AACA;AACD;AARH;;AAaA,QAAM2B,cAAc,GAAGhF,WAAW,KAAKG,OAAhB,GAA0BF,MAA1B,GAAmCE,OAA1D;AACA,WAAO4E,QAAQ,CAACC,cAAD,CAAf;AACD,GAlBD;;AAoBA,MAAMC,cAAc,GAAG,SAAjBA,cAAiB;AACrB;AACA;AACAjB,IAAAA,OAAO,CAACc,aAAR,CAAsB,UAAC1C,KAAD;AACpB8B,MAAAA,YAAY,CAAC,CAAC,CAAC9B,KAAH,CAAZ;AACA,aAAOA,KAAK,GAAG+B,eAAe,EAAlB,GAAuBQ,cAAc,EAAjD;AACD,KAHD;AAID,GAPD;;AASA,SACE7D,mBAAA,CAACoE,wBAAD;AAA0B9D,IAAAA,OAAO,EAAE6D;GAAnC,EACEnE,mBAAA,CAACgD,QAAQ,CAACvC,IAAV;AAAeL,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACrE,SAAR,EAAmB;AAAEkH,MAAAA,OAAO,EAAPA;AAAF,KAAnB;GAAtB,EACGC,SAAS,IACRnD,mBAAA,CAACS,IAAD;AAAML,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACrE,SAAR,EAAmBsG,oBAAnB;GAAb,EACEtC,mBAAA,CAACS,IAAD;AACEL,IAAAA,KAAK,EAAE,CACLC,MAAM,CAACxD,WADF,EAELwD,MAAM,CAAChC,UAFF,EAGLuE,kBAHK;GADT,EAOGR,QAPH,CADF,EAUEpC,mBAAA,CAACT,QAAD;AACEK,IAAAA,OAAO,EAAEA;AACTD,IAAAA,QAAQ,EAAEA;AACVF,IAAAA,SAAS,EAAEA;AACXC,IAAAA,SAAS,EAAEA;AACXR,IAAAA,WAAW,EAAEA;GALf,CAVF,EAiBEc,mBAAA,CAACW,MAAD;AACEI,IAAAA,QAAQ,EAAEA;AACVF,IAAAA,QAAQ,EAAEA;AACVnB,IAAAA,SAAS,EAAEA;AACXoB,IAAAA,YAAY,EAAEA;AACd5B,IAAAA,WAAW,EAAEA;AACbuC,IAAAA,MAAM,EAAEA;AACRF,IAAAA,SAAS,EAAEA;AACX3B,IAAAA,OAAO,EAAEA;AACTgB,IAAAA,iBAAiB,EAAE8B;GATrB,CAjBF,CAFJ,CADF,CADF;AAqCD,CAzID;;AA2IAL,aAAa,CAACF,OAAd,GAAwBA,OAAxB;;;;;"}
\ No newline at end of file
+{"version":3,"file":"react-native-media-controls.esm.js","sources":["../../src/MediaControls.style.ts","../../src/constants/playerStates.ts","../../src/utils.ts","../../src/Controls.tsx","../../src/Slider.tsx","../../src/Toolbar.tsx","../../src/MediaControls.tsx"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nconst containerBackgroundColor = \"rgba(45, 59, 62, 0.4)\";\nconst playButtonBorderColor = \"rgba(255,255,255,0.5)\";\nconst white = \"#fff\";\n\nexport default StyleSheet.create({\n container: {\n alignItems: \"center\",\n backgroundColor: containerBackgroundColor,\n bottom: 0,\n flex: 1,\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n left: 0,\n paddingHorizontal: 20,\n paddingVertical: 13,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n controlsRow: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n flex: 1,\n justifyContent: \"center\",\n },\n fullScreenContainer: {\n alignItems: \"center\",\n alignSelf: \"stretch\",\n justifyContent: \"center\",\n paddingLeft: 20,\n },\n playButton: {\n alignItems: \"center\",\n borderColor: playButtonBorderColor,\n borderRadius: 3,\n borderWidth: 1.5,\n height: 50,\n justifyContent: \"center\",\n width: 50,\n },\n playIcon: {\n height: 22,\n resizeMode: \"contain\",\n width: 22,\n },\n progressColumnContainer: {\n flex: 1,\n },\n progressContainer: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginBottom: -25,\n },\n progressSlider: {\n alignSelf: \"stretch\",\n },\n replayIcon: {\n height: 20,\n resizeMode: \"stretch\",\n width: 25,\n },\n thumb: {\n backgroundColor: white,\n borderRadius: 50,\n borderWidth: 3,\n height: 20,\n width: 20,\n },\n timeRow: {\n alignSelf: \"stretch\",\n },\n timerLabel: {\n color: white,\n fontSize: 12,\n },\n timerLabelsContainer: {\n alignSelf: \"stretch\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginBottom: -7,\n },\n toolbar: {\n flexDirection: \"row\",\n flex: 1,\n justifyContent: \"flex-end\",\n },\n toolbarRow: {\n alignItems: \"flex-start\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n },\n track: {\n borderRadius: 1,\n height: 5,\n },\n});\n","enum PLAYER_STATES {\n PLAYING = 0,\n PAUSED = 1,\n ENDED = 2,\n}\n\nexport { PLAYER_STATES };\n","import { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport const humanizeVideoDuration = (seconds: number) => {\n const [begin, end] = seconds >= 3600 ? [11, 8] : [14, 5];\n const date = new Date(0);\n\n date.setSeconds(seconds);\n return date.toISOString().substr(begin, end);\n};\n\nexport const noop = () => {};\n\nexport const getPlayerStateIcon = (playerState: PLAYER_STATES) => {\n switch (playerState) {\n case PLAYER_STATES.PAUSED:\n return require(\"./assets/ic_play.png\");\n case PLAYER_STATES.PLAYING:\n return require(\"./assets/ic_pause.png\");\n case PLAYER_STATES.ENDED:\n return require(\"./assets/ic_replay.png\");\n default:\n return null;\n }\n};\n","import React from \"react\";\nimport { TouchableOpacity, View, ActivityIndicator, Image } from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { getPlayerStateIcon } from \"./utils\";\nimport { Props } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\ntype ControlsProps = Pick<\n Props,\n \"isLoading\" | \"mainColor\" | \"playerState\" | \"onReplay\"\n> & {\n onPause: () => void;\n};\n\nconst Controls = (props: ControlsProps) => {\n const { isLoading, mainColor, playerState, onReplay, onPause } = props;\n const icon = getPlayerStateIcon(playerState);\n const pressAction = playerState === PLAYER_STATES.ENDED ? onReplay : onPause;\n\n const content = isLoading ? (\n \n ) : (\n \n \n \n );\n\n return {content};\n};\n\nexport { Controls };\n","import React from \"react\";\nimport { TouchableOpacity, View, Text, Image, ViewStyle } from \"react-native\";\nimport RNSlider from \"react-native-slider\";\nimport styles from \"./MediaControls.style\";\nimport { humanizeVideoDuration } from \"./utils\";\nimport { Props as MediaControlsProps } from \"./MediaControls\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\n\nexport type CustomSliderStyle = {\n containerStyle: ViewStyle;\n trackStyle: ViewStyle;\n thumbStyle: ViewStyle;\n};\n\ntype Props = Pick<\n MediaControlsProps,\n | \"progress\"\n | \"duration\"\n | \"mainColor\"\n | \"onFullScreen\"\n | \"playerState\"\n | \"onSeek\"\n | \"onSeeking\"\n> & {\n onPause: () => void;\n customSliderStyle?: CustomSliderStyle;\n};\n\nconst fullScreenImage = require(\"./assets/ic_fullscreen.png\");\n\nconst Slider = (props: Props) => {\n const {\n customSliderStyle,\n duration,\n mainColor,\n onFullScreen,\n onPause,\n progress,\n } = props;\n\n const containerStyle = customSliderStyle?.containerStyle || {};\n const customTrackStyle = customSliderStyle?.trackStyle || {};\n const customThumbStyle = customSliderStyle?.thumbStyle || {};\n\n const dragging = (value: number) => {\n const { onSeeking, playerState } = props;\n onSeeking(value);\n\n if (playerState === PLAYER_STATES.PAUSED) {\n return;\n }\n\n onPause();\n };\n\n const seekVideo = (value: number) => {\n props.onSeek(value);\n onPause();\n };\n\n return (\n \n \n \n \n {humanizeVideoDuration(progress)}\n \n \n {humanizeVideoDuration(duration)}\n \n \n \n \n {Boolean(onFullScreen) && (\n \n \n \n )}\n \n );\n};\n\nexport { Slider };\n","import React from \"react\";\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst Toolbar = ({ children }: Props) => <>{children}>;\n\nexport { Toolbar };\n","import React, { useState, useEffect } from \"react\";\nimport {\n View,\n Animated,\n TouchableWithoutFeedback,\n GestureResponderEvent,\n ViewStyle,\n} from \"react-native\";\nimport styles from \"./MediaControls.style\";\nimport { PLAYER_STATES } from \"./constants/playerStates\";\nimport { Controls } from \"./Controls\";\nimport { Slider, CustomSliderStyle } from \"./Slider\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport type Props = {\n children: React.ReactNode;\n containerStyle: ViewStyle;\n duration: number;\n fadeOutDelay?: number;\n isFullScreen: boolean;\n isLoading: boolean;\n mainColor: string;\n onFullScreen?: (event: GestureResponderEvent) => void;\n onPaused: (playerState: PLAYER_STATES) => void;\n onReplay: () => void;\n onSeek: (value: number) => void;\n onSeeking: (value: number) => void;\n playerState: PLAYER_STATES;\n progress: number;\n showOnStart?: boolean;\n sliderStyle: CustomSliderStyle;\n toolbarStyle: ViewStyle;\n};\n\nconst MediaControls = (props: Props) => {\n const {\n children,\n containerStyle: customContainerStyle = {},\n duration,\n fadeOutDelay = 5000,\n isLoading = false,\n mainColor = \"rgba(12, 83, 175, 0.9)\",\n onFullScreen,\n onReplay: onReplayCallback,\n onSeek,\n onSeeking,\n playerState,\n progress,\n showOnStart = true,\n sliderStyle, // defaults are applied in Slider.tsx\n toolbarStyle: customToolbarStyle = {},\n } = props;\n const { initialOpacity, initialIsVisible } = (() => {\n if (showOnStart) {\n return {\n initialOpacity: 1,\n initialIsVisible: true,\n };\n }\n\n return {\n initialOpacity: 0,\n initialIsVisible: false,\n };\n })();\n\n const [opacity] = useState(new Animated.Value(initialOpacity));\n const [isVisible, setIsVisible] = useState(initialIsVisible);\n\n useEffect(() => {\n fadeOutControls(fadeOutDelay);\n }, []);\n\n const fadeOutControls = (delay = 0) => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n delay,\n useNativeDriver: false,\n }).start(result => {\n /* I noticed that the callback is called twice, when it is invoked and when it completely finished\n This prevents some flickering */\n if (result.finished) {\n setIsVisible(false);\n }\n });\n };\n\n const fadeInControls = (loop = true) => {\n setIsVisible(true);\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n delay: 0,\n useNativeDriver: false,\n }).start(() => {\n if (loop) {\n fadeOutControls(fadeOutDelay);\n }\n });\n };\n\n const onReplay = () => {\n fadeOutControls(fadeOutDelay);\n onReplayCallback();\n };\n\n const cancelAnimation = () => opacity.stopAnimation(() => setIsVisible(true));\n\n const onPause = () => {\n const { playerState, onPaused } = props;\n const { PLAYING, PAUSED, ENDED } = PLAYER_STATES;\n switch (playerState) {\n case PLAYING: {\n cancelAnimation();\n break;\n }\n case PAUSED: {\n fadeOutControls(fadeOutDelay);\n break;\n }\n case ENDED:\n break;\n }\n\n const newPlayerState = playerState === PLAYING ? PAUSED : PLAYING;\n return onPaused(newPlayerState);\n };\n\n const toggleControls = () => {\n // value is the last value of the animation when stop animation was called.\n // As this is an opacity effect, I (Charlie) used the value (0 or 1) as a boolean\n opacity.stopAnimation((value: number) => {\n setIsVisible(!!value);\n return value ? fadeOutControls() : fadeInControls();\n });\n };\n\n return (\n \n \n {isVisible && (\n \n \n {children}\n \n \n \n \n )}\n \n \n );\n};\n\nMediaControls.Toolbar = Toolbar;\n\nexport default MediaControls;\n"],"names":["containerBackgroundColor","playButtonBorderColor","white","StyleSheet","create","container","alignItems","backgroundColor","bottom","flex","flexDirection","justifyContent","left","paddingHorizontal","paddingVertical","position","right","top","controlsRow","alignSelf","fullScreenContainer","paddingLeft","playButton","borderColor","borderRadius","borderWidth","height","width","playIcon","resizeMode","progressColumnContainer","progressContainer","marginBottom","progressSlider","replayIcon","thumb","timeRow","timerLabel","color","fontSize","timerLabelsContainer","toolbar","toolbarRow","track","PLAYER_STATES","humanizeVideoDuration","seconds","begin","end","date","Date","setSeconds","toISOString","substr","getPlayerStateIcon","playerState","PAUSED","require","PLAYING","ENDED","Controls","props","isLoading","mainColor","onReplay","onPause","icon","pressAction","content","React","ActivityIndicator","size","TouchableOpacity","style","styles","onPress","accessibilityLabel","accessibilityHint","Image","source","View","fullScreenImage","Slider","customSliderStyle","duration","onFullScreen","progress","containerStyle","customTrackStyle","trackStyle","customThumbStyle","thumbStyle","dragging","value","onSeeking","seekVideo","onSeek","Text","RNSlider","onValueChange","onSlidingComplete","maximumValue","Math","floor","minimumTrackTintColor","Boolean","Toolbar","children","MediaControls","customContainerStyle","fadeOutDelay","onReplayCallback","showOnStart","sliderStyle","toolbarStyle","customToolbarStyle","initialOpacity","initialIsVisible","useState","Animated","Value","opacity","isVisible","setIsVisible","useEffect","fadeOutControls","delay","timing","toValue","useNativeDriver","start","result","finished","fadeInControls","loop","cancelAnimation","stopAnimation","onPaused","newPlayerState","toggleControls","TouchableWithoutFeedback","accessible"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/Controls.tsx b/src/Controls.tsx
index 21896726..692f9593 100644
--- a/src/Controls.tsx
+++ b/src/Controls.tsx
@@ -23,9 +23,7 @@ const Controls = (props: ControlsProps) => {
diff --git a/src/MediaControls.tsx b/src/MediaControls.tsx
index 95444901..2b052182 100644
--- a/src/MediaControls.tsx
+++ b/src/MediaControls.tsx
@@ -1,4 +1,4 @@
-import React, { useState } from "react";
+import React, { useState, useEffect } from "react";
import {
View,
Animated,
@@ -67,6 +67,10 @@ const MediaControls = (props: Props) => {
const [opacity] = useState(new Animated.Value(initialOpacity));
const [isVisible, setIsVisible] = useState(initialIsVisible);
+ useEffect(() => {
+ fadeOutControls(fadeOutDelay);
+ }, []);
+
const fadeOutControls = (delay = 0) => {
Animated.timing(opacity, {
toValue: 0,