You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.8 KiB
109 lines
2.8 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.formatDeviceFamilies = formatDeviceFamilies;
|
|
exports.getDeviceFamilies = getDeviceFamilies;
|
|
exports.getIsTabletOnly = getIsTabletOnly;
|
|
exports.getSupportsTablet = getSupportsTablet;
|
|
exports.setDeviceFamily = setDeviceFamily;
|
|
exports.withDeviceFamily = void 0;
|
|
|
|
function _iosPlugins() {
|
|
const data = require("../plugins/ios-plugins");
|
|
|
|
_iosPlugins = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _warnings() {
|
|
const data = require("../utils/warnings");
|
|
|
|
_warnings = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
const withDeviceFamily = config => {
|
|
return (0, _iosPlugins().withXcodeProject)(config, async config => {
|
|
config.modResults = await setDeviceFamily(config, {
|
|
project: config.modResults
|
|
});
|
|
return config;
|
|
});
|
|
};
|
|
|
|
exports.withDeviceFamily = withDeviceFamily;
|
|
|
|
function getSupportsTablet(config) {
|
|
var _config$ios;
|
|
|
|
return !!((_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.supportsTablet);
|
|
}
|
|
|
|
function getIsTabletOnly(config) {
|
|
var _config$ios2;
|
|
|
|
return !!(config !== null && config !== void 0 && (_config$ios2 = config.ios) !== null && _config$ios2 !== void 0 && _config$ios2.isTabletOnly);
|
|
}
|
|
|
|
function getDeviceFamilies(config) {
|
|
var _config$ios3;
|
|
|
|
const supportsTablet = getSupportsTablet(config);
|
|
const isTabletOnly = getIsTabletOnly(config);
|
|
|
|
if (isTabletOnly && ((_config$ios3 = config.ios) === null || _config$ios3 === void 0 ? void 0 : _config$ios3.supportsTablet) === false) {
|
|
(0, _warnings().addWarningIOS)('ios.supportsTablet', `Found contradictory values: \`{ ios: { isTabletOnly: true, supportsTablet: false } }\`. Using \`{ isTabletOnly: true }\`.`);
|
|
} // 1 is iPhone, 2 is iPad
|
|
|
|
|
|
if (isTabletOnly) {
|
|
return [2];
|
|
} else if (supportsTablet) {
|
|
return [1, 2];
|
|
} else {
|
|
// is iPhone only
|
|
return [1];
|
|
}
|
|
}
|
|
/**
|
|
* Wrapping the families in double quotes is the only way to set a value with a comma in it.
|
|
*
|
|
* @param deviceFamilies
|
|
*/
|
|
|
|
|
|
function formatDeviceFamilies(deviceFamilies) {
|
|
return `"${deviceFamilies.join(',')}"`;
|
|
}
|
|
/**
|
|
* Add to pbxproj under TARGETED_DEVICE_FAMILY
|
|
*/
|
|
|
|
|
|
function setDeviceFamily(config, {
|
|
project
|
|
}) {
|
|
const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));
|
|
const configurations = project.pbxXCBuildConfigurationSection(); // @ts-ignore
|
|
|
|
for (const {
|
|
buildSettings
|
|
} of Object.values(configurations || {})) {
|
|
// Guessing that this is the best way to emulate Xcode.
|
|
// Using `project.addToBuildSettings` modifies too many targets.
|
|
if (typeof (buildSettings === null || buildSettings === void 0 ? void 0 : buildSettings.PRODUCT_NAME) !== 'undefined') {
|
|
buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;
|
|
}
|
|
}
|
|
|
|
return project;
|
|
}
|
|
//# sourceMappingURL=DeviceFamily.js.map
|