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,MAAD,IAAY;EACxD,OAAO,IAAAC,8BAAA,EAAiBD,MAAjB,EAAyB,MAAOA,MAAP,IAAkB;IAChDA,MAAM,CAACE,UAAP,GAAoB,MAAMC,eAAe,CAACH,MAAD,EAAS;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IADgC,CAAT,CAAzC;IAGA,OAAOF,MAAP;EACD,CALM,CAAP;AAMD,CAPM;;;;AASA,SAASK,iBAAT,CAA2BL,MAA3B,EAAqE;EAAA;;EAC1E,OAAO,CAAC,iBAACA,MAAM,CAACM,GAAR,wCAAC,YAAYC,cAAb,CAAR;AACD;;AAEM,SAASC,eAAT,CAAyBR,MAAzB,EAAmE;EAAA;;EACxE,OAAO,CAAC,EAACA,MAAD,aAACA,MAAD,+BAACA,MAAM,CAAEM,GAAT,yCAAC,aAAaG,YAAd,CAAR;AACD;;AAEM,SAASC,iBAAT,CAA2BV,MAA3B,EAAsE;EAAA;;EAC3E,MAAMO,cAAc,GAAGF,iBAAiB,CAACL,MAAD,CAAxC;EACA,MAAMS,YAAY,GAAGD,eAAe,CAACR,MAAD,CAApC;;EAEA,IAAIS,YAAY,IAAI,iBAAAT,MAAM,CAACM,GAAP,8DAAYC,cAAZ,MAA+B,KAAnD,EAA0D;IACxD,IAAAI,yBAAA,EACE,oBADF,EAEG,2HAFH;EAID,CAT0E,CAW3E;;;EACA,IAAIF,YAAJ,EAAkB;IAChB,OAAO,CAAC,CAAD,CAAP;EACD,CAFD,MAEO,IAAIF,cAAJ,EAAoB;IACzB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EACD,CAFM,MAEA;IACL;IACA,OAAO,CAAC,CAAD,CAAP;EACD;AACF;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASK,oBAAT,CAA8BC,cAA9B,EAAgE;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAf,CAAoB,GAApB,CAAyB,GAApC;AACD;AAED;AACA;AACA;;;AACO,SAASX,eAAT,CACLH,MADK,EAEL;EAAEI;AAAF,CAFK,EAGS;EACd,MAAMS,cAAc,GAAGD,oBAAoB,CAACF,iBAAiB,CAACV,MAAD,CAAlB,CAA3C;EAEA,MAAMe,cAAc,GAAGX,OAAO,CAACY,8BAAR,EAAvB,CAHc,CAId;;EACA,KAAK,MAAM;IAAEC;EAAF,CAAX,IAAgCC,MAAM,CAACC,MAAP,CAAcJ,cAAc,IAAI,EAAhC,CAAhC,EAAqE;IACnE;IACA;IACA,IAAI,QAAOE,aAAP,aAAOA,aAAP,uBAAOA,aAAa,CAAEG,YAAtB,MAAuC,WAA3C,EAAwD;MACtDH,aAAa,CAACI,sBAAd,GAAuCR,cAAvC;IACD;EACF;;EAED,OAAOT,OAAP;AACD"}