UNPKG

4.39 kBSource Map (JSON)View Raw
1{"version":3,"file":"UserInterfaceStyle.js","sourceRoot":"","sources":["../../src/android/UserInterfaceStyle.ts"],"names":[],"mappings":";;AAGa,QAAA,wBAAwB,GAAG,uBAAuB,CAAC;AAEnD,QAAA,wBAAwB,GAAG;;;;;;;;;;;CAWvC,CAAC;AAEF,SAAgB,qBAAqB,CAAC,MAAkB;;IACtD,IAAI,MAAM,eAAG,MAAM,CAAC,OAAO,0CAAE,kBAAkB,uCAAI,MAAM,CAAC,kBAAkB,EAAA,CAAC;IAC7E,QAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,EAAC;AACxB,CAAC;AAHD,sDAGC;AAEM,KAAK,UAAU,wBAAwB,CAAC,MAAkB,EAAE,gBAA0B;IAC3F,IAAI,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,kBAAkB,EAAE;QACvB,OAAO,gBAAgB,CAAC;KACzB;IAED,IAAI,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CACzE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,eAAe,CACvD,CAAC;IACF,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gCAAwB,CAAC;QAC5C,uDAAuD,CAAC;IAE1D,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAbD,4DAaC;AAED,SAAgB,qCAAqC,CACnD,MAAkB,EAClB,YAAoB;;IAEpB,IAAI,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,kBAAkB,EAAE;QACvB,OAAO,YAAY,CAAC;KACrB;IAED,qGAAqG;IACrG,UAAI,YAAY,CAAC,KAAK,CAAC,wBAAwB,CAAC,0CAAE,MAAM,EAAE;QACxD,OAAO,YAAY,CAAC;KACrB;IAED,IAAI,uBAAuB,GAAG,cAAc,CAAC,YAAY,EAAE;QACzD,wBAAwB;QACxB,mCAAmC;KACpC,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,mDAAmD,CAAC,CAAC;IAC9E,OAAO,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,gCAAwB,CAAC,CAAC;AAC5E,CAAC;AArBD,sFAqBC;AAED,wDAAwD;AACxD,SAAS,cAAc,CAAC,UAAkB,EAAE,WAAqB;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,+BAA+B,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7F,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;QAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACpC,MAAM,eAAe,GAAG,UAAU,UAAU,GAAG,CAAC;YAChD,KAAK,CAAC,MAAM,CAAC,+BAA+B,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;SACvE;KACF;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { ExpoConfig } from '../Config.types';\nimport { Document } from './Manifest';\n\nexport const CONFIG_CHANGES_ATTRIBUTE = 'android:configChanges';\n\nexport const ON_CONFIGURATION_CHANGED = `\npublic class MainActivity extends ReactActivity {\n\n // Added automatically by Expo Config\n @Override\n public void onConfigurationChanged(Configuration newConfig) {\n super.onConfigurationChanged(newConfig);\n Intent intent = new Intent(\"onConfigurationChanged\");\n intent.putExtra(\"newConfig\", newConfig);\n sendBroadcast(intent);\n }\n`;\n\nexport function getUserInterfaceStyle(config: ExpoConfig): string {\n let result = config.android?.userInterfaceStyle ?? config.userInterfaceStyle;\n return result ?? null;\n}\n\nexport async function setUiModeAndroidManifest(config: ExpoConfig, manifestDocument: Document) {\n let userInterfaceStyle = getUserInterfaceStyle(config);\n if (!userInterfaceStyle) {\n return manifestDocument;\n }\n\n let mainActivity = manifestDocument.manifest.application[0].activity.filter(\n (e: any) => e['$']['android:name'] === '.MainActivity'\n );\n mainActivity[0]['$'][CONFIG_CHANGES_ATTRIBUTE] =\n 'keyboard|keyboardHidden|orientation|screenSize|uiMode';\n\n return manifestDocument;\n}\n\nexport function addOnConfigurationChangedMainActivity(\n config: ExpoConfig,\n MainActivity: string\n): string {\n let userInterfaceStyle = getUserInterfaceStyle(config);\n if (!userInterfaceStyle) {\n return MainActivity;\n }\n\n // Cruzan: this is not ideal, but I'm not sure of a better way to handle writing to MainActivity.java\n if (MainActivity.match(`onConfigurationChanged`)?.length) {\n return MainActivity;\n }\n\n let MainActivityWithImports = addJavaImports(MainActivity, [\n 'android.content.Intent',\n 'android.content.res.Configuration',\n ]);\n\n let pattern = new RegExp(`public class MainActivity extends ReactActivity {`);\n return MainActivityWithImports.replace(pattern, ON_CONFIGURATION_CHANGED);\n}\n\n// TODO: we should have a generic utility for doing this\nfunction addJavaImports(javaSource: string, javaImports: string[]): string {\n const lines = javaSource.split('\\n');\n const lineIndexWithPackageDeclaration = lines.findIndex(line => line.match(/^package .*;$/));\n for (let javaImport of javaImports) {\n if (!javaSource.includes(javaImport)) {\n const importStatement = `import ${javaImport};`;\n lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n"]}
\No newline at end of file