1{"version":3,"file":"DeviceFamily.js","names":["withDeviceFamily","config","withXcodeProject","modResults","setDeviceFamily","project","getSupportsTablet","ios","supportsTablet","getIsTabletOnly","isTabletOnly","getDeviceFamilies","addWarningIOS","formatDeviceFamilies","deviceFamilies","join","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","TARGETED_DEVICE_FAMILY"],"sources":["../../src/ios/DeviceFamily.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\n\nexport const withDeviceFamily: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setDeviceFamily(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getSupportsTablet(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config.ios?.supportsTablet;\n}\n\nexport function getIsTabletOnly(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config?.ios?.isTabletOnly;\n}\n\nexport function getDeviceFamilies(config: Pick<ExpoConfig, 'ios'>): number[] {\n const supportsTablet = getSupportsTablet(config);\n const isTabletOnly = getIsTabletOnly(config);\n\n if (isTabletOnly && config.ios?.supportsTablet === false) {\n addWarningIOS(\n 'ios.supportsTablet',\n `Found contradictory values: \\`{ ios: { isTabletOnly: true, supportsTablet: false } }\\`. Using \\`{ isTabletOnly: true }\\`.`\n );\n }\n\n // 1 is iPhone, 2 is iPad\n if (isTabletOnly) {\n return [2];\n } else if (supportsTablet) {\n return [1, 2];\n } else {\n // is iPhone only\n return [1];\n }\n}\n\n/**\n * Wrapping the families in double quotes is the only way to set a value with a comma in it.\n *\n * @param deviceFamilies\n */\nexport function formatDeviceFamilies(deviceFamilies: number[]): string {\n return `\"${deviceFamilies.join(',')}\"`;\n}\n\n/**\n * Add to pbxproj under TARGETED_DEVICE_FAMILY\n */\nexport function setDeviceFamily(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));\n\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;\n }\n }\n\n return project;\n}\n"],"mappings":";;;;;;;;;;;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,gBAA8B,GAAIC,MAAM,IAAK;EACxD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,eAAe,CAACH,MAAM,EAAE;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,SAASK,iBAAiB,CAACL,MAA+B,EAAW;EAAA;EAC1E,OAAO,CAAC,iBAACA,MAAM,CAACM,GAAG,wCAAV,YAAYC,cAAc;AACrC;AAEO,SAASC,eAAe,CAACR,MAA+B,EAAW;EAAA;EACxE,OAAO,CAAC,EAACA,MAAM,aAANA,MAAM,+BAANA,MAAM,CAAEM,GAAG,yCAAX,aAAaG,YAAY;AACpC;AAEO,SAASC,iBAAiB,CAACV,MAA+B,EAAY;EAAA;EAC3E,MAAMO,cAAc,GAAGF,iBAAiB,CAACL,MAAM,CAAC;EAChD,MAAMS,YAAY,GAAGD,eAAe,CAACR,MAAM,CAAC;EAE5C,IAAIS,YAAY,IAAI,iBAAAT,MAAM,CAACM,GAAG,iDAAV,aAAYC,cAAc,MAAK,KAAK,EAAE;IACxD,IAAAI,yBAAa,EACX,oBAAoB,EACnB,2HAA0H,CAC5H;EACH;;EAEA;EACA,IAAIF,YAAY,EAAE;IAChB,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,MAAM,IAAIF,cAAc,EAAE;IACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EACf,CAAC,MAAM;IACL;IACA,OAAO,CAAC,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASK,oBAAoB,CAACC,cAAwB,EAAU;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAI,CAAC,GAAG,CAAE,GAAE;AACxC;;AAEA;AACA;AACA;AACO,SAASX,eAAe,CAC7BH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAMS,cAAc,GAAGD,oBAAoB,CAACF,iBAAiB,CAACV,MAAM,CAAC,CAAC;EAEtE,MAAMe,cAAc,GAAGX,OAAO,CAACY,8BAA8B,EAAE;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtDH,aAAa,CAACI,sBAAsB,GAAGR,cAAc;IACvD;EACF;EAEA,OAAOT,OAAO;AAChB"}