@react-native-tvos/config-tv
Version:
Config plugin to reconfigure native directories for Apple TV and Android TV development if needed
93 lines (92 loc) • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.appleTVImageTypes = exports.packageNameAndVersion = void 0;
exports.isTVEnabled = isTVEnabled;
exports.tvosDeploymentTarget = tvosDeploymentTarget;
exports.shouldRemoveFlipperOnAndroid = shouldRemoveFlipperOnAndroid;
exports.isAndroidTVRequired = isAndroidTVRequired;
exports.androidTVBanner = androidTVBanner;
exports.androidTVIcon = androidTVIcon;
exports.appleTVImagePathForType = appleTVImagePathForType;
const getenv_1 = require("getenv");
class Env {
/** Enable prebuild for TV */
get EXPO_TV() {
return (0, getenv_1.boolish)("EXPO_TV", false);
}
}
const env = new Env();
const pkg = require("../../package.json");
const defaultTvosDeploymentVersion = "15.1";
exports.packageNameAndVersion = `${pkg.name}@${pkg.version}`;
function isTVEnabled(params) {
return env.EXPO_TV || (params?.isTV ?? false);
}
/**
* Returns the iOS deployment target from the expo-build-properties plugin, if present.
*/
function iosDeploymentTargetFromBuildProperties(config) {
const plugins = config?.plugins;
if (!Array.isArray(plugins)) {
return undefined;
}
for (const plugin of plugins) {
if (Array.isArray(plugin) && plugin[0] === "expo-build-properties") {
return plugin[1]?.ios?.deploymentTarget;
}
}
return undefined;
}
function tvosDeploymentTarget(params, config, expoDefaultIosDeploymentTarget) {
if (params?.tvosDeploymentTarget) {
return params.tvosDeploymentTarget;
}
if (config) {
const buildPropsTarget = iosDeploymentTargetFromBuildProperties(config);
if (buildPropsTarget) {
return buildPropsTarget;
}
}
return expoDefaultIosDeploymentTarget ?? defaultTvosDeploymentVersion;
}
function shouldRemoveFlipperOnAndroid(params) {
return params?.removeFlipperOnAndroid ?? false;
}
function isAndroidTVRequired(params) {
return params?.androidTVRequired ?? false;
}
function androidTVBanner(params) {
return params?.androidTVBanner;
}
function androidTVIcon(params) {
return params?.androidTVIcon;
}
exports.appleTVImageTypes = [
"icon",
"iconSmall",
"iconSmall2x",
"topShelf",
"topShelf2x",
"topShelfWide",
"topShelfWide2x",
];
function appleTVImagePathForType(params, imageType) {
switch (imageType) {
case "icon":
return params?.appleTVImages?.icon;
case "iconSmall":
return params?.appleTVImages?.iconSmall;
case "iconSmall2x":
return params?.appleTVImages?.iconSmall2x;
case "topShelf":
return params?.appleTVImages?.topShelf;
case "topShelf2x":
return params?.appleTVImages?.topShelf2x;
case "topShelfWide":
return params?.appleTVImages?.topShelfWide;
case "topShelfWide2x":
return params?.appleTVImages?.topShelfWide2x;
default:
return undefined;
}
}