expo-pip
Version:
A library that provides access to Picture In Picture API for Android only
41 lines • 1.34 kB
JavaScript
import { requireOptionalNativeModule } from "expo";
import { useEffect, useState } from "react";
import { Platform } from "react-native";
const ExpoPipModule = requireOptionalNativeModule("ExpoPip");
function addPictureInPictureModeListener(listener) {
if (!ExpoPipModule) {
console.warn("expo-pip is not properly linked or it's not supported on this platform.");
return {
remove: () => { },
};
}
return ExpoPipModule.addListener("onPipModeChange", listener);
}
function useIsInPip() {
const [isInPipMode, setInPipMode] = useState(false);
useEffect(() => {
const subscription = addPictureInPictureModeListener(({ isInPipMode }) => {
setInPipMode(isInPipMode);
});
return () => subscription.remove();
}, [setInPipMode]);
return { isInPipMode };
}
class ExpoPip {
static useIsInPip;
static isInPipMode() {
return ExpoPipModule?.isInPipMode();
}
static setPictureInPictureParams(options) {
ExpoPipModule?.setPictureInPictureParams(options);
}
static enterPipMode(options) {
ExpoPipModule?.enterPipMode(options);
}
static isAvailable() {
return Platform.OS === "android";
}
}
ExpoPip.useIsInPip = useIsInPip;
export default ExpoPip;
//# sourceMappingURL=ExpoPipModule.js.map