This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

1 line
4.0 KiB
Plaintext

{"version":3,"file":"DeviceFamily.js","sourceRoot":"","sources":["../../src/ios/DeviceFamily.ts"],"names":[],"mappings":";;;;;;;;;AAIA,wDAA0D;AAC1D,qEAAuD;AAE1C,QAAA,gBAAgB,GAAiB,MAAM,CAAC,EAAE;IACrD,OAAO,8BAAgB,CAAC,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QAC7C,MAAM,CAAC,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE;YAChD,OAAO,EAAE,MAAM,CAAC,UAAU;SAC3B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAgB,iBAAiB,CAAC,MAA+B;;IAC/D,OAAO,CAAC,QAAC,MAAM,CAAC,GAAG,0CAAE,cAAc,CAAA,CAAC;AACtC,CAAC;AAFD,8CAEC;AAED,SAAgB,eAAe,CAAC,MAA+B;;IAC7D,OAAO,CAAC,QAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,0CAAE,YAAY,CAAA,CAAC;AACrC,CAAC;AAFD,0CAEC;AAED,SAAgB,iBAAiB,CAAC,MAA+B;;IAC/D,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,YAAY,IAAI,OAAA,MAAM,CAAC,GAAG,0CAAE,cAAc,MAAK,KAAK,EAAE;QACxD,iBAAiB,CAAC,aAAa,CAC7B,eAAe,EACf,2HAA2H,CAC5H,CAAC;KACH;IAED,yBAAyB;IACzB,IAAI,YAAY,EAAE;QAChB,OAAO,CAAC,CAAC,CAAC,CAAC;KACZ;SAAM,IAAI,cAAc,EAAE;QACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACf;SAAM;QACL,iBAAiB;QACjB,OAAO,CAAC,CAAC,CAAC,CAAC;KACZ;AACH,CAAC;AApBD,8CAoBC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,cAAwB;IAC3D,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACzC,CAAC;AAFD,oDAEC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,MAA+B,EAC/B,EAAE,OAAO,EAA6B;IAEtC,MAAM,cAAc,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,MAAM,cAAc,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;IAChE,aAAa;IACb,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE;QACnE,uDAAuD;QACvD,gEAAgE;QAChE,IAAI,QAAO,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAA,KAAK,WAAW,EAAE;YACtD,aAAa,CAAC,sBAAsB,GAAG,cAAc,CAAC;SACvD;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAjBD,0CAiBC","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport * as WarningAggregator 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 WarningAggregator.addWarningIOS(\n 'device-family',\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"]}