react-native-persona 1.2.10 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/RNPersonaInquiry.podspec +1 -1
  3. package/android/README.md +14 -0
  4. package/android/build.gradle +21 -100
  5. package/bin/persona-tool +1 -2
  6. package/lib/commonjs/index.js +477 -0
  7. package/lib/commonjs/index.js.map +1 -0
  8. package/lib/commonjs/persona-tools/AndroidResourcePrinter.js +694 -0
  9. package/lib/commonjs/persona-tools/AndroidResourcePrinter.js.map +1 -0
  10. package/lib/commonjs/persona-tools/Config.js +95 -0
  11. package/lib/commonjs/persona-tools/Config.js.map +1 -0
  12. package/lib/commonjs/persona-tools/Theme.js +228 -0
  13. package/lib/commonjs/persona-tools/Theme.js.map +1 -0
  14. package/lib/commonjs/persona-tools/index.js +41 -0
  15. package/lib/commonjs/persona-tools/index.js.map +1 -0
  16. package/lib/commonjs/persona-tools/prompts.js +48 -0
  17. package/lib/commonjs/persona-tools/prompts.js.map +1 -0
  18. package/lib/commonjs/persona-tools/tools/AndroidThemeGenerator.js +112 -0
  19. package/lib/commonjs/persona-tools/tools/AndroidThemeGenerator.js.map +1 -0
  20. package/lib/commonjs/persona-tools/tools/IosThemeInstructions.js +50 -0
  21. package/lib/commonjs/persona-tools/tools/IosThemeInstructions.js.map +1 -0
  22. package/lib/commonjs/util.js +36 -0
  23. package/lib/commonjs/util.js.map +1 -0
  24. package/lib/module/index.js +452 -0
  25. package/lib/module/index.js.map +1 -0
  26. package/lib/module/persona-tools/AndroidResourcePrinter.js +686 -0
  27. package/lib/module/persona-tools/AndroidResourcePrinter.js.map +1 -0
  28. package/lib/module/persona-tools/Config.js +82 -0
  29. package/lib/module/persona-tools/Config.js.map +1 -0
  30. package/lib/module/persona-tools/Theme.js +212 -0
  31. package/lib/module/persona-tools/Theme.js.map +1 -0
  32. package/lib/module/persona-tools/index.js +33 -0
  33. package/lib/module/persona-tools/index.js.map +1 -0
  34. package/lib/module/persona-tools/prompts.js +31 -0
  35. package/lib/module/persona-tools/prompts.js.map +1 -0
  36. package/lib/module/persona-tools/tools/AndroidThemeGenerator.js +82 -0
  37. package/lib/module/persona-tools/tools/AndroidThemeGenerator.js.map +1 -0
  38. package/lib/module/persona-tools/tools/IosThemeInstructions.js +37 -0
  39. package/lib/module/persona-tools/tools/IosThemeInstructions.js.map +1 -0
  40. package/lib/module/util.js +29 -0
  41. package/lib/module/util.js.map +1 -0
  42. package/{generatedTypes → lib/typescript}/index.d.ts +67 -3
  43. package/lib/typescript/persona-tools/AndroidResourcePrinter.d.ts +40 -0
  44. package/lib/typescript/persona-tools/Config.d.ts +15 -0
  45. package/lib/typescript/persona-tools/Theme.d.ts +124 -0
  46. package/lib/typescript/persona-tools/index.d.ts +1 -0
  47. package/lib/typescript/persona-tools/prompts.d.ts +8 -0
  48. package/lib/typescript/persona-tools/tools/AndroidThemeGenerator.d.ts +5 -0
  49. package/lib/typescript/persona-tools/tools/IosThemeInstructions.d.ts +5 -0
  50. package/lib/typescript/util.d.ts +3 -0
  51. package/package.json +79 -22
  52. package/src/index.ts +17 -18
  53. package/{persona-tools/lib → src/persona-tools}/AndroidResourcePrinter.ts +314 -278
  54. package/{persona-tools/config.ts → src/persona-tools/Config.ts} +7 -7
  55. package/src/persona-tools/Theme.ts +262 -0
  56. package/src/persona-tools/index.ts +30 -0
  57. package/{persona-tools/lib → src/persona-tools}/prompts.ts +11 -11
  58. package/{persona-tools → src/persona-tools}/tools/AndroidThemeGenerator.ts +31 -32
  59. package/{persona-tools → src/persona-tools}/tools/IosThemeInstructions.ts +8 -8
  60. package/src/util.ts +3 -3
  61. package/jest.config.js +0 -10
  62. package/persona-tools/Theme.js +0 -213
  63. package/persona-tools/Theme.ts +0 -260
  64. package/persona-tools/config.js +0 -72
  65. package/persona-tools/index.js +0 -30
  66. package/persona-tools/index.ts +0 -30
  67. package/persona-tools/lib/AndroidResourcePrinter.js +0 -832
  68. package/persona-tools/lib/AndroidResourcePrinter.spec.js +0 -1135
  69. package/persona-tools/lib/AndroidResourcePrinter.spec.ts +0 -1229
  70. package/persona-tools/lib/prompts.js +0 -39
  71. package/persona-tools/tools/AndroidThemeGenerator.js +0 -59
  72. package/persona-tools/tools/IosThemeInstructions.js +0 -34
  73. package/src/index.js +0 -307
  74. package/src/util.js +0 -29
  75. package/src/util.spec.js +0 -15
  76. package/src/util.spec.ts +0 -16
  77. package/tsconfig.json +0 -29
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["AndroidResourcePrinter.ts"],"names":["AndroidResourcePrinter","constructor","theme","root","version","ele","buttonDrawable","buttonSecondaryDrawable","buttonColor","process","hasTheme","up","print","style","primaryColor","accentColor","darkPrimaryColor","backgroundColor","titleText","bodyText","footnoteText","cameraInstructionsText","cameraHintText","cameraGuideHintText","textField","pickerText","button","progressColor","successAsset","failAsset","loadingAnimationAsset","selfieAnimationAsset","preprintQueue","forEach","fn","name","parent","printQueue","postPrintQueue","Object","keys","length","values","filter","Boolean","push","txt","titleTextColor","titleTextSize","titleTextFont","textSize","bodyTextColor","bodyTextSize","bodyTextFont","footnoteTextColor","footnoteTextFont","footnoteTextSize","cameraInstructionsTextColor","cameraInstructionsTextSize","cameraInstructionsTextFont","cameraHintTextColor","cameraHintTextSize","cameraHintTextFont","cameraGuideHintTextColor","cameraGuideHintTextSize","cameraGuideHintTextFont","textFieldTextColor","textFieldTextFont","pickerTextColor","pickerTextFont","buttonBackgroundColor","buttonDisabledBackgroundColor","buttonTouchedBackgroundColor","buttonTextColor","buttonDisabledTextColor","buttonCornerRadius","buttonFont","buttonTextSize","loadingAnimationWidthPercent","selfieAnimationWidthPercent"],"mappings":"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","sourcesContent":["import { create as createXml } from 'xmlbuilder2';\nimport type { AndroidThemeObject } from './Theme';\nimport type { XMLBuilder } from 'xmlbuilder2/lib/interfaces';\n\nclass AndroidResourcePrinter {\n theme: AndroidThemeObject;\n root: XMLBuilder;\n buttonDrawable: XMLBuilder;\n buttonSecondaryDrawable: XMLBuilder;\n buttonColor: XMLBuilder;\n preprintQueue: (() => void)[] = [];\n printQueue: (() => void)[] = [];\n postPrintQueue: (() => void)[] = [];\n\n constructor(theme: AndroidThemeObject) {\n this.theme = theme;\n this.root = createXml({ version: '1.0' }).ele('resources');\n this.buttonDrawable = createXml({ version: '1.0' }).ele('selector', {\n 'xmlns:android': 'http://schemas.android.com/apk/res/android',\n });\n this.buttonSecondaryDrawable = createXml({ version: '1.0' }).ele(\n 'selector',\n {\n 'xmlns:android': 'http://schemas.android.com/apk/res/android',\n }\n );\n this.buttonColor = createXml({ version: '1.0' }).ele('selector', {\n 'xmlns:android': 'http://schemas.android.com/apk/res/android',\n });\n }\n\n process() {\n if (!this.hasTheme()) {\n this.root = this.root.up();\n } else {\n this.print();\n }\n\n return {\n style: this.root,\n buttonDrawable: this.buttonDrawable,\n buttonSecondaryDrawable: this.buttonSecondaryDrawable,\n buttonColor: this.buttonColor,\n };\n }\n\n private print() {\n this.primaryColor();\n this.accentColor();\n this.darkPrimaryColor();\n this.backgroundColor();\n this.titleText();\n this.bodyText();\n this.footnoteText();\n this.cameraInstructionsText();\n this.cameraHintText();\n this.cameraGuideHintText();\n // this.formLabelText();\n this.textField();\n this.pickerText();\n this.button();\n this.progressColor();\n this.successAsset();\n this.failAsset();\n this.loadingAnimationAsset();\n this.selfieAnimationAsset();\n\n this.preprintQueue.forEach((fn) => fn());\n\n // Precreate some style namespaces\n this.root = this.root\n .ele('style', {\n name: 'RN',\n })\n .up();\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona',\n })\n .up();\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.Text',\n })\n .up();\n this.root = this.root.ele('style', {\n name: 'Persona.Inquiry.Theme',\n parent: 'Base.Persona.Inquiry.Theme.Light',\n });\n this.printQueue.forEach((fn) => fn());\n this.root = this.root.up();\n this.postPrintQueue.forEach((fn) => fn());\n }\n\n private hasTheme(): boolean {\n return (\n Object.keys(this.theme).length > 0 &&\n Object.values(this.theme).filter(Boolean).length > 0\n );\n }\n\n private primaryColor() {\n if (!this.theme.primaryColor) return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'colorPrimary' })\n .txt(this.theme.primaryColor as string)\n .up()\n .txt(' ');\n });\n }\n\n private accentColor() {\n if (!this.theme.accentColor) return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'colorAccent' })\n .txt(this.theme.accentColor as string)\n .up()\n .txt(' ');\n });\n }\n\n private darkPrimaryColor() {\n if (!this.theme.darkPrimaryColor) return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'colorPrimaryDark' })\n .txt(this.theme.darkPrimaryColor as string)\n .up()\n .txt(' ');\n });\n }\n\n private backgroundColor() {\n if (!this.theme.backgroundColor) return;\n\n this.preprintQueue.push(() => {\n this.root = this.root\n .ele('color', { name: 'customPersonaBackgroundColor' })\n .txt(this.theme.backgroundColor as string)\n .up()\n .txt(' ');\n });\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'android:colorBackground' })\n .txt('@color/customPersonaBackgroundColor')\n .up()\n .txt(' ');\n });\n }\n\n private titleText() {\n if (\n this.theme.titleTextColor ||\n this.theme.titleTextSize ||\n this.theme.titleTextFont\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaTitleTextAppearance' })\n .txt('@style/RN.Persona.Text.Title')\n .up();\n });\n\n // Create a text appearance\n this.postPrintQueue.push(() => {\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.Title',\n parent: 'Persona.Text.Body',\n });\n\n if (this.theme.titleTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.titleTextColor as string)\n .up();\n }\n\n if (this.theme.titleTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.titleTextFont as string)\n .up();\n }\n\n // Default values taken from `Persona.Text.Title`\n // in shared/src/main/res/values/styles.xml\n const textSize = this.theme.titleTextSize\n ? `${this.theme.titleTextSize}sp`\n : '26sp';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up()\n .ele('item', { name: 'android:textStyle' })\n .txt('bold')\n .up();\n\n this.root = this.root.up();\n });\n } else {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaTitleTextAppearance' })\n .txt('@style/Persona.Text.Title')\n .up();\n });\n }\n }\n\n private bodyText() {\n if (\n this.theme.bodyTextColor ||\n this.theme.bodyTextSize ||\n this.theme.bodyTextFont\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaBodyTextAppearance' })\n .txt('@style/RN.Persona.Text.Body')\n .up();\n });\n\n // Create a text appearance\n this.postPrintQueue.push(() => {\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.Body',\n parent: 'Persona.Text.Body',\n });\n\n if (this.theme.bodyTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.bodyTextColor as string)\n .up();\n }\n\n if (this.theme.bodyTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.bodyTextFont as string)\n .up();\n }\n\n const textSize = this.theme.bodyTextSize\n ? `${this.theme.bodyTextSize}sp`\n : '18sp';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up();\n\n this.root = this.root.up();\n });\n } else {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaBodyTextAppearance' })\n .txt('@style/Persona.Text.Body')\n .up();\n });\n }\n }\n\n private footnoteText() {\n if (this.theme.footnoteTextColor || this.theme.footnoteTextFont) {\n this.postPrintQueue.push(() => {\n this.root = this.root\n .ele('style', { name: 'TextAppearance.AppCompat.Small' })\n .ele('item', { name: 'android:textColor' })\n .txt(\n // Used default value found in the Android SDK\n this.theme.footnoteTextColor ?? '?android:attr/textColorTertiary'\n )\n .up();\n\n if (this.theme.footnoteTextFont) {\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(\n // Used default value found in the Android SDK\n this.theme.footnoteTextFont ?? '?android:attr/textColorTertiary'\n )\n .up();\n }\n // Default value found in the Android SDK\n const textSize = this.theme.footnoteTextSize\n ? `${this.theme.footnoteTextSize}sp`\n : '@dimen/abc_text_size_small_material';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up();\n\n this.root = this.root.up();\n });\n }\n }\n\n private cameraInstructionsText() {\n if (\n this.theme.cameraInstructionsTextColor ||\n this.theme.cameraInstructionsTextSize ||\n this.theme.cameraInstructionsTextFont\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraTitleTextAppearance' })\n .txt('@style/RN.Persona.Text.CameraTitle')\n .up();\n });\n\n // Create a text appearance\n this.postPrintQueue.push(() => {\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.CameraTitle',\n parent: 'Persona.Text.CameraTitle',\n });\n\n if (this.theme.cameraInstructionsTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.cameraInstructionsTextColor as string)\n .up();\n }\n\n if (this.theme.cameraInstructionsTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.cameraInstructionsTextFont as string)\n .up();\n }\n\n const textSize = this.theme.cameraInstructionsTextSize\n ? `${this.theme.cameraInstructionsTextSize}sp`\n : '20sp';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up();\n\n this.root = this.root.up();\n });\n } else {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraTitleTextAppearance' })\n .txt('@style/Persona.Text.CameraTitle')\n .up();\n });\n }\n }\n\n private cameraHintText() {\n if (\n this.theme.cameraHintTextColor ||\n this.theme.cameraHintTextSize ||\n this.theme.cameraHintTextFont\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraBodyTextAppearance' })\n .txt('@style/RN.Persona.Text.CameraBody')\n .up();\n });\n\n // Create a text appearance\n this.postPrintQueue.push(() => {\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.CameraBody',\n parent: 'Persona.Text.CameraBody',\n });\n\n if (this.theme.cameraHintTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.cameraHintTextColor as string)\n .up();\n }\n\n if (this.theme.cameraHintTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.cameraHintTextFont as string)\n .up();\n }\n\n const textSize = this.theme.cameraHintTextSize\n ? `${this.theme.cameraHintTextSize}sp`\n : '16sp';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up();\n\n this.root = this.root.up();\n });\n } else {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraBodyTextAppearance' })\n .txt('@style/Persona.Text.CameraBody')\n .up();\n });\n }\n }\n\n private cameraGuideHintText() {\n if (\n this.theme.cameraGuideHintTextColor ||\n this.theme.cameraGuideHintTextSize ||\n this.theme.cameraGuideHintTextFont\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraHintTextAppearance' })\n .txt('@style/RN.Persona.Text.CameraHint')\n .up();\n });\n\n // Create a text appearance\n this.postPrintQueue.push(() => {\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.CameraHint',\n parent: 'Persona.Text.CameraHint',\n });\n\n if (this.theme.cameraGuideHintTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.cameraGuideHintTextColor as string)\n .up();\n }\n\n if (this.theme.cameraGuideHintTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.cameraGuideHintTextFont as string)\n .up();\n }\n\n const textSize = this.theme.cameraGuideHintTextSize\n ? `${this.theme.cameraGuideHintTextSize}sp`\n : '20sp';\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt(textSize)\n .up();\n\n this.root = this.root.up();\n });\n } else {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaCameraHintTextAppearance' })\n .txt('@style/Persona.Text.CameraHint')\n .up();\n });\n }\n }\n\n private textField() {\n if (this.theme.textFieldTextColor || this.theme.textFieldTextFont) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'editTextStyle' })\n .txt('@style/RN.Persona.EditText')\n .up();\n });\n\n this.postPrintQueue.push(() => {\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.EditText',\n parent: 'Widget.AppCompat.EditText',\n })\n .ele('item', { name: 'android:textAppearance' })\n .txt('@style/RN.Persona.EditText.TextAppearance')\n .up()\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.textFieldTextColor as string)\n .up()\n .up();\n\n this.root = this.root.ele('style', {\n name: 'RN.Persona.EditText.TextAppearance',\n parent: 'Base.TextAppearance.AppCompat.Medium',\n });\n\n if (this.theme.textFieldTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt('18sp')\n .up();\n }\n\n if (this.theme.textFieldTextFont) {\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.textFieldTextFont as string)\n .up();\n }\n\n this.root = this.root.up();\n });\n }\n }\n\n private pickerText() {\n if (this.theme.pickerTextColor || this.theme.pickerTextFont) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'spinnerStyle' })\n .txt('@style/RN.Persona.Spinner')\n .up();\n\n this.root = this.root\n .ele('item', { name: 'spinnerDropDownItemStyle' })\n .txt('@style/RN.Persona.DropDownItem.Spinner')\n .up();\n });\n\n this.postPrintQueue.push(() => {\n // Build Rn.Persona.Spinner\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.Spinner',\n parent: 'Widget.AppCompat.Spinner',\n })\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.pickerTextColor ?? '?android:attr/textColorPrimary')\n .up()\n .ele('item', { name: 'android:textAppearance' })\n .txt(\n this.theme.pickerTextFont\n ? '@style/RN.Persona.Text.Spinner'\n : '@style/Persona.Text.Body'\n )\n .up()\n .up();\n\n // Build RN.Persona.DropDownItem.Spinner\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.DropDownItem.Spinner',\n parent: 'Widget.AppCompat.DropDownItem.Spinner',\n })\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.pickerTextColor ?? '?android:attr/textColorPrimary')\n .up()\n .ele('item', { name: 'android:textAppearance' })\n .txt(\n this.theme.pickerTextFont\n ? '@style/RN.Persona.Text.Spinner'\n : '@style/Persona.Text.Body'\n )\n .up()\n .up();\n\n // Build RN.Persona.Text.Spinner\n this.root = this.root.ele('style', {\n name: 'RN.Persona.Text.Spinner',\n });\n\n if (this.theme.pickerTextColor) {\n this.root = this.root\n .ele('item', { name: 'android:textColor' })\n .txt(this.theme.pickerTextColor as string)\n .up();\n }\n\n if (this.theme.pickerTextFont) {\n // TODO: Add notice about how to add a custom font that can be\n // referenced here on Android\n this.root = this.root\n .ele('item', { name: 'android:fontFamily' })\n .txt(this.theme.pickerTextFont as string)\n .up();\n }\n\n this.root = this.root.up();\n });\n }\n }\n\n private button() {\n if (\n this.theme.buttonBackgroundColor ||\n this.theme.buttonDisabledBackgroundColor ||\n this.theme.buttonTouchedBackgroundColor ||\n this.theme.buttonTextColor ||\n this.theme.buttonDisabledTextColor ||\n this.theme.buttonCornerRadius ||\n this.theme.buttonFont ||\n this.theme.buttonTextSize\n ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'buttonStyle' })\n .txt('@style/RN.Persona.Button')\n .up();\n\n this.root = this.root\n .ele('item', { name: 'buttonStyleSecondary' })\n .txt('@style/RN.Persona.Button.Secondary')\n .up();\n });\n\n const textSize = this.theme.buttonTextSize\n ? `${this.theme.buttonTextSize}sp`\n : '18sp';\n\n this.postPrintQueue.push(() => {\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.Button',\n parent: 'android:style/Widget.Button',\n })\n // Taken from\n // appcompat's res/values/values.xml\n .ele('item', {\n name: 'android:minHeight',\n })\n .txt('48dip')\n .up()\n // Taken from\n // appcompat's res/values/values.xml\n .ele('item', {\n name: 'android:minWidth',\n })\n .txt('88dip')\n .up()\n // Taken from\n // persona-android's shared/src/main/res/values/styles.xml\n .ele('item', {\n name: 'android:textSize',\n })\n .txt(textSize)\n .up()\n .ele('item', {\n name: 'android:background',\n })\n .txt('@drawable/rn_persona_button')\n .up()\n .ele('item', {\n name: 'android:textColor',\n })\n .txt('@color/rn_persona_button')\n .up()\n .up();\n\n // Build RN.Persona.Button.Secondary\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.Button.Secondary',\n parent: 'RN.Persona.Button',\n })\n .ele('item', {\n name: 'android:background',\n })\n .txt('@drawable/rn_persona_button_secondary')\n .up()\n .up();\n\n // Disabled\n this.buttonDrawable = this.buttonDrawable\n .ele('item', {\n 'android:state_enabled': 'false',\n })\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .ele('solid', {\n 'android:color': this.theme.buttonDisabledBackgroundColor\n ? this.theme.buttonDisabledBackgroundColor\n : '?attr/colorPrimaryDark',\n })\n .up()\n .up()\n .up();\n\n // touched\n this.buttonDrawable = this.buttonDrawable\n .ele('item', {\n 'android:state_pressed': 'true',\n })\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('solid', {\n 'android:color':\n this.theme.buttonTouchedBackgroundColor ??\n '?attr/colorPrimaryDark',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .up()\n .up();\n\n this.buttonDrawable = this.buttonDrawable\n .ele('item')\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('solid', {\n 'android:color':\n this.theme.buttonBackgroundColor ?? '?attr/colorPrimary',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .up()\n .up();\n\n // Finish button drawable\n this.buttonDrawable = this.buttonDrawable.up();\n\n this.buttonColor = this.buttonColor\n .ele('item', {\n 'android:state_enabled': 'false',\n 'android:color':\n this.theme.buttonDisabledTextColor ??\n '@android:color/darker_gray',\n })\n .up()\n .ele('item', {\n 'android:state_pressed': 'true',\n 'android:color':\n this.theme.buttonTextColor ?? '@android:color/white',\n })\n .up()\n .ele('item', {\n 'android:color':\n this.theme.buttonTextColor ?? '@android:color/white',\n })\n .up();\n\n this.buttonColor = this.buttonColor.up();\n\n // Disabled\n this.buttonSecondaryDrawable = this.buttonSecondaryDrawable\n .ele('item', {\n 'android:state_enabled': 'false',\n })\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .ele('solid', {\n 'android:color': '@android:color/darker_gray',\n })\n .up()\n .up()\n .up();\n\n // touched\n this.buttonSecondaryDrawable = this.buttonSecondaryDrawable\n .ele('item', {\n 'android:state_pressed': 'true',\n })\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('solid', {\n 'android:color': '@color/grayButtonDark',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .up()\n .up();\n\n this.buttonSecondaryDrawable = this.buttonSecondaryDrawable\n .ele('item')\n .ele('shape', { 'android:shape': 'rectangle' })\n .ele('corners', {\n 'android:radius': this.theme.buttonCornerRadius\n ? `${this.theme.buttonCornerRadius}dp`\n : '@dimen/abc_control_corner_material',\n })\n .up()\n .ele('solid', {\n 'android:color': '@color/grayButton',\n })\n .up()\n .ele('padding', {\n 'android:left': '@dimen/abc_button_padding_horizontal_material',\n 'android:top': '@dimen/abc_button_padding_vertical_material',\n 'android:right': '@dimen/abc_button_padding_horizontal_material',\n 'android:bottom': '@dimen/abc_button_padding_vertical_material',\n })\n .up()\n .up()\n .up();\n\n // Finish button drawable\n this.buttonSecondaryDrawable = this.buttonSecondaryDrawable.up();\n this.root = this.root.up();\n });\n }\n }\n\n private progressColor() {\n if (this.theme.progressColor) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'colorControlActivated' })\n .txt(this.theme.progressColor as string)\n .up();\n });\n }\n }\n\n private successAsset() {\n if (!this.theme.successAsset) return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaInquiryCompleteImage' })\n .txt(this.theme.successAsset as string)\n .up()\n .txt(' ');\n });\n }\n\n private failAsset() {\n if (!this.theme.failAsset) return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaInquiryFailImage' })\n .txt(this.theme.failAsset as string)\n .up()\n .txt(' ');\n });\n }\n\n private loadingAnimationAsset() {\n if (\n !this.theme.loadingAnimationAsset ||\n !this.theme.loadingAnimationWidthPercent\n )\n return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaInquiryLoadingLottieRaw' })\n .txt(this.theme.loadingAnimationAsset as string)\n .up()\n .txt(' ');\n\n this.root = this.root\n .ele('item', { name: 'personaInquiryLoadingLottieWidthPercent' })\n .txt(this.theme.loadingAnimationWidthPercent as string)\n .up()\n .txt(' ');\n });\n }\n\n private selfieAnimationAsset() {\n if (\n !this.theme.selfieAnimationAsset ||\n !this.theme.selfieAnimationWidthPercent\n )\n return;\n\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'personaInquirySelfieLottieRaw' })\n .txt(this.theme.selfieAnimationAsset as string)\n .up()\n .txt(' ');\n\n this.root = this.root\n .ele('item', { name: 'personaInquirySelfieLottieWidthPercent' })\n .txt(this.theme.selfieAnimationWidthPercent as string)\n .up()\n .txt(' ');\n });\n }\n}\n\nexport default AndroidResourcePrinter;\n"]}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _cosmiconfig = require("cosmiconfig");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _Theme = require("./Theme");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+
18
+ class Configuration {
19
+ constructor() {
20
+ _defineProperty(this, "config", void 0);
21
+ }
22
+
23
+ async loadConfig() {
24
+ if (this.config) return this.config;
25
+
26
+ try {
27
+ const explorer = (0, _cosmiconfig.cosmiconfig)('persona', {
28
+ packageProp: 'persona'
29
+ });
30
+ const result = await explorer.search();
31
+
32
+ if (result == null) {
33
+ return null;
34
+ }
35
+
36
+ this.config = result.config;
37
+ return this.config;
38
+ } catch (e) {
39
+ console.error(e);
40
+ process.exit(1);
41
+ }
42
+ }
43
+
44
+ async get() {
45
+ let config = await this.loadConfig();
46
+ const androidThemeLines = [];
47
+
48
+ for (const key in _Theme.ANDROID_THEME_CONFIG_KEY) {
49
+ androidThemeLines.push(` "${key}": null`);
50
+ }
51
+
52
+ const iosThemeLines = [];
53
+
54
+ for (const key in _Theme.IOS_THEME_CONFIG_KEY) {
55
+ iosThemeLines.push(` "${key}": null`);
56
+ }
57
+
58
+ if (config == null) {
59
+ console.log(`
60
+ Missing configuration.
61
+
62
+ In order to use this tool, it must be configured using a ${_chalk.default.yellow('persona')} object within
63
+ your package.json.
64
+
65
+ To get started, paste the following configuration into your package.json
66
+
67
+ {
68
+ ...
69
+
70
+ "persona": {
71
+ "androidTheme": {
72
+ ` + androidThemeLines.join(',\n') + `
73
+ },
74
+ "iosTheme": {
75
+ ` + iosThemeLines.join(',\n') + `
76
+ }
77
+ }
78
+
79
+ ...
80
+ }
81
+
82
+ and re-run this tool :).
83
+ `);
84
+ process.exit(1);
85
+ }
86
+
87
+ return config;
88
+ }
89
+
90
+ }
91
+
92
+ var _default = new Configuration();
93
+
94
+ exports.default = _default;
95
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Config.ts"],"names":["Configuration","loadConfig","config","explorer","packageProp","result","search","e","console","error","process","exit","get","androidThemeLines","key","ANDROID_THEME_CONFIG_KEY","push","iosThemeLines","IOS_THEME_CONFIG_KEY","log","chalk","yellow","join"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;AAOA,MAAMA,aAAN,CAAoB;AAAA;AAAA;AAAA;;AAGF,QAAVC,UAAU,GAA6C;AAC3D,QAAI,KAAKC,MAAT,EAAiB,OAAO,KAAKA,MAAZ;;AAEjB,QAAI;AACF,YAAMC,QAAQ,GAAG,8BAAY,SAAZ,EAAuB;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAvB,CAAjB;AACA,YAAMC,MAAM,GAAG,MAAMF,QAAQ,CAACG,MAAT,EAArB;;AACA,UAAID,MAAM,IAAI,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AAED,WAAKH,MAAL,GAAcG,MAAM,CAACH,MAArB;AAEA,aAAO,KAAKA,MAAZ;AACD,KAVD,CAUE,OAAOK,CAAP,EAAU;AACVC,MAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;AACAG,MAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;AACF;;AAEQ,QAAHC,GAAG,GAA0B;AACjC,QAAIV,MAAM,GAAG,MAAM,KAAKD,UAAL,EAAnB;AAEA,UAAMY,iBAAiB,GAAG,EAA1B;;AACA,SAAK,MAAMC,GAAX,IAAkBC,+BAAlB,EAA4C;AAC1CF,MAAAA,iBAAiB,CAACG,IAAlB,CAAwB,UAASF,GAAI,SAArC;AACD;;AAED,UAAMG,aAAa,GAAG,EAAtB;;AACA,SAAK,MAAMH,GAAX,IAAkBI,2BAAlB,EAAwC;AACtCD,MAAAA,aAAa,CAACD,IAAd,CAAoB,UAASF,GAAI,SAAjC;AACD;;AAED,QAAIZ,MAAM,IAAI,IAAd,EAAoB;AAClBM,MAAAA,OAAO,CAACW,GAAR,CACG;AACT;AACA;AACA,2DAA2DC,eAAMC,MAAN,CACjD,SADiD,CAEjD;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAfQ,GAgBER,iBAAiB,CAACS,IAAlB,CAAuB,KAAvB,CAhBF,GAiBG;AACX;AACA;AACA,CApBQ,GAqBEL,aAAa,CAACK,IAAd,CAAmB,KAAnB,CArBF,GAsBG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA/BM;AAiCAZ,MAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;;AAED,WAAOT,MAAP;AACD;;AAzEiB;;eA4EL,IAAIF,aAAJ,E","sourcesContent":["import { cosmiconfig } from 'cosmiconfig';\nimport chalk from 'chalk';\nimport { ANDROID_THEME_CONFIG_KEY, IOS_THEME_CONFIG_KEY } from './Theme';\n\nexport interface ConfigObject {\n androidTheme: { [key: string]: string | null | undefined };\n iosTheme: { [key: string]: string | null | undefined };\n}\n\nclass Configuration {\n config?: ConfigObject | null;\n\n async loadConfig(): Promise<ConfigObject | null | undefined> {\n if (this.config) return this.config;\n\n try {\n const explorer = cosmiconfig('persona', { packageProp: 'persona' });\n const result = await explorer.search();\n if (result == null) {\n return null;\n }\n\n this.config = result.config;\n\n return this.config;\n } catch (e) {\n console.error(e);\n process.exit(1);\n }\n }\n\n async get(): Promise<ConfigObject> {\n let config = await this.loadConfig();\n\n const androidThemeLines = [];\n for (const key in ANDROID_THEME_CONFIG_KEY) {\n androidThemeLines.push(` \"${key}\": null`);\n }\n\n const iosThemeLines = [];\n for (const key in IOS_THEME_CONFIG_KEY) {\n iosThemeLines.push(` \"${key}\": null`);\n }\n\n if (config == null) {\n console.log(\n `\nMissing configuration.\n\nIn order to use this tool, it must be configured using a ${chalk.yellow(\n 'persona'\n )} object within\nyour package.json.\n\nTo get started, paste the following configuration into your package.json\n\n{\n ...\n\n \"persona\": {\n \"androidTheme\": {\n` +\n androidThemeLines.join(',\\n') +\n `\n },\n \"iosTheme\": {\n` +\n iosThemeLines.join(',\\n') +\n `\n }\n }\n\n ...\n}\n\nand re-run this tool :).\n`\n );\n process.exit(1);\n }\n\n return config as ConfigObject;\n }\n}\n\nexport default new Configuration();\n"]}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.IOS_THEME_CONFIG_KEY = exports.ANDROID_THEME_CONFIG_KEY = void 0;
7
+
8
+ var _cliTable = _interopRequireDefault(require("cli-table"));
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _Config = _interopRequireDefault(require("./Config"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const COLOR_REGEX = /^[a-zA-Z0-9]{6}$/;
17
+ let ANDROID_THEME_CONFIG_KEY;
18
+ exports.ANDROID_THEME_CONFIG_KEY = ANDROID_THEME_CONFIG_KEY;
19
+
20
+ (function (ANDROID_THEME_CONFIG_KEY) {
21
+ ANDROID_THEME_CONFIG_KEY["backgroundColor"] = "backgroundColor";
22
+ ANDROID_THEME_CONFIG_KEY["primaryColor"] = "primaryColor";
23
+ ANDROID_THEME_CONFIG_KEY["darkPrimaryColor"] = "darkPrimaryColor";
24
+ ANDROID_THEME_CONFIG_KEY["accentColor"] = "accentColor";
25
+ ANDROID_THEME_CONFIG_KEY["titleTextColor"] = "titleTextColor";
26
+ ANDROID_THEME_CONFIG_KEY["titleTextFont"] = "titleTextFont";
27
+ ANDROID_THEME_CONFIG_KEY["titleTextSize"] = "titleTextSize";
28
+ ANDROID_THEME_CONFIG_KEY["bodyTextColor"] = "bodyTextColor";
29
+ ANDROID_THEME_CONFIG_KEY["bodyTextFont"] = "bodyTextFont";
30
+ ANDROID_THEME_CONFIG_KEY["bodyTextSize"] = "bodyTextSize";
31
+ ANDROID_THEME_CONFIG_KEY["footnoteTextColor"] = "footnoteTextColor";
32
+ ANDROID_THEME_CONFIG_KEY["footnoteTextFont"] = "footnoteTextFont";
33
+ ANDROID_THEME_CONFIG_KEY["footnoteTextSize"] = "footnoteTextSize";
34
+ ANDROID_THEME_CONFIG_KEY["cameraInstructionsTextColor"] = "cameraInstructionsTextColor";
35
+ ANDROID_THEME_CONFIG_KEY["cameraInstructionsTextFont"] = "cameraInstructionsTextFont";
36
+ ANDROID_THEME_CONFIG_KEY["cameraInstructionsTextSize"] = "cameraInstructionsTextSize";
37
+ ANDROID_THEME_CONFIG_KEY["cameraHintTextColor"] = "cameraHintTextColor";
38
+ ANDROID_THEME_CONFIG_KEY["cameraHintTextFont"] = "cameraHintTextFont";
39
+ ANDROID_THEME_CONFIG_KEY["cameraHintTextSize"] = "cameraHintTextSize";
40
+ ANDROID_THEME_CONFIG_KEY["cameraGuideHintTextColor"] = "cameraGuideHintTextColor";
41
+ ANDROID_THEME_CONFIG_KEY["cameraGuideHintTextFont"] = "cameraGuideHintTextFont";
42
+ ANDROID_THEME_CONFIG_KEY["cameraGuideHintTextSize"] = "cameraGuideHintTextSize";
43
+ ANDROID_THEME_CONFIG_KEY["textFieldTextColor"] = "textFieldTextColor";
44
+ ANDROID_THEME_CONFIG_KEY["textFieldTextFont"] = "textFieldTextFont";
45
+ ANDROID_THEME_CONFIG_KEY["pickerTextColor"] = "pickerTextColor";
46
+ ANDROID_THEME_CONFIG_KEY["pickerTextFont"] = "pickerTextFont";
47
+ ANDROID_THEME_CONFIG_KEY["buttonBackgroundColor"] = "buttonBackgroundColor";
48
+ ANDROID_THEME_CONFIG_KEY["buttonDisabledBackgroundColor"] = "buttonDisabledBackgroundColor";
49
+ ANDROID_THEME_CONFIG_KEY["buttonTouchedBackgroundColor"] = "buttonTouchedBackgroundColor";
50
+ ANDROID_THEME_CONFIG_KEY["buttonTextColor"] = "buttonTextColor";
51
+ ANDROID_THEME_CONFIG_KEY["buttonDisabledTextColor"] = "buttonDisabledTextColor";
52
+ ANDROID_THEME_CONFIG_KEY["buttonCornerRadius"] = "buttonCornerRadius";
53
+ ANDROID_THEME_CONFIG_KEY["buttonFont"] = "buttonFont";
54
+ ANDROID_THEME_CONFIG_KEY["buttonTextSize"] = "buttonTextSize";
55
+ ANDROID_THEME_CONFIG_KEY["progressColor"] = "progressColor";
56
+ ANDROID_THEME_CONFIG_KEY["successAsset"] = "successAsset";
57
+ ANDROID_THEME_CONFIG_KEY["failAsset"] = "failAsset";
58
+ ANDROID_THEME_CONFIG_KEY["loadingAnimationAsset"] = "loadingAnimationAsset";
59
+ ANDROID_THEME_CONFIG_KEY["loadingAnimationWidthPercent"] = "loadingAnimationWidthPercent";
60
+ ANDROID_THEME_CONFIG_KEY["selfieAnimationAsset"] = "selfieAnimationAsset";
61
+ ANDROID_THEME_CONFIG_KEY["selfieAnimationWidthPercent"] = "selfieAnimationWidthPercent";
62
+ })(ANDROID_THEME_CONFIG_KEY || (exports.ANDROID_THEME_CONFIG_KEY = ANDROID_THEME_CONFIG_KEY = {}));
63
+
64
+ let IOS_THEME_CONFIG_KEY;
65
+ exports.IOS_THEME_CONFIG_KEY = IOS_THEME_CONFIG_KEY;
66
+
67
+ (function (IOS_THEME_CONFIG_KEY) {
68
+ IOS_THEME_CONFIG_KEY["backgroundColor"] = "backgroundColor";
69
+ IOS_THEME_CONFIG_KEY["primaryColor"] = "primaryColor";
70
+ IOS_THEME_CONFIG_KEY["darkPrimaryColor"] = "darkPrimaryColor";
71
+ IOS_THEME_CONFIG_KEY["accentColor"] = "accentColor";
72
+ IOS_THEME_CONFIG_KEY["progressColor"] = "progressColor";
73
+ IOS_THEME_CONFIG_KEY["overlayBackgroundColor"] = "overlayBackgroundColor";
74
+ IOS_THEME_CONFIG_KEY["titleTextColor"] = "titleTextColor";
75
+ IOS_THEME_CONFIG_KEY["titleTextFont"] = "titleTextFont";
76
+ IOS_THEME_CONFIG_KEY["titleTextSize"] = "titleTextSize";
77
+ IOS_THEME_CONFIG_KEY["titleTextAlignment"] = "titleTextAlignment";
78
+ IOS_THEME_CONFIG_KEY["bodyTextColor"] = "bodyTextColor";
79
+ IOS_THEME_CONFIG_KEY["bodyTextFont"] = "bodyTextFont";
80
+ IOS_THEME_CONFIG_KEY["bodyTextSize"] = "bodyTextSize";
81
+ IOS_THEME_CONFIG_KEY["bodyTextAlignment"] = "bodyTextAlignment";
82
+ IOS_THEME_CONFIG_KEY["footnoteTextColor"] = "footnoteTextColor";
83
+ IOS_THEME_CONFIG_KEY["footnoteTextFont"] = "footnoteTextFont";
84
+ IOS_THEME_CONFIG_KEY["footnoteTextSize"] = "footnoteTextSize";
85
+ IOS_THEME_CONFIG_KEY["formLabelTextColor"] = "formLabelTextColor";
86
+ IOS_THEME_CONFIG_KEY["formLabelTextFont"] = "formLabelTextFont";
87
+ IOS_THEME_CONFIG_KEY["textFieldTextColor"] = "textFieldTextColor";
88
+ IOS_THEME_CONFIG_KEY["textFieldBackgroundColor"] = "textFieldBackgroundColor";
89
+ IOS_THEME_CONFIG_KEY["textFieldBorderColor"] = "textFieldBorderColor";
90
+ IOS_THEME_CONFIG_KEY["pickerTextColor"] = "pickerTextColor";
91
+ IOS_THEME_CONFIG_KEY["pickerTextFont"] = "pickerTextFont";
92
+ IOS_THEME_CONFIG_KEY["cameraInstructionsTextColor"] = "cameraInstructionsTextColor";
93
+ IOS_THEME_CONFIG_KEY["cameraInstructionsTextFont"] = "cameraInstructionsTextFont";
94
+ IOS_THEME_CONFIG_KEY["cameraInstructionsTextSize"] = "cameraInstructionsTextFont";
95
+ IOS_THEME_CONFIG_KEY["cameraHintTextColor"] = "cameraHintTextColor";
96
+ IOS_THEME_CONFIG_KEY["cameraHintTextFont"] = "cameraHintTextFont";
97
+ IOS_THEME_CONFIG_KEY["cameraHintTextSize"] = "cameraHintTextSize";
98
+ IOS_THEME_CONFIG_KEY["cameraGuideHintTextColor"] = "cameraGuideHintTextColor";
99
+ IOS_THEME_CONFIG_KEY["cameraGuideHintTextFont"] = "cameraGuideHintTextFont";
100
+ IOS_THEME_CONFIG_KEY["cameraGuideHintTextSize"] = "cameraGuideHintTextSize";
101
+ IOS_THEME_CONFIG_KEY["buttonBackgroundColor"] = "buttonBackgroundColor";
102
+ IOS_THEME_CONFIG_KEY["buttonDisabledBackgroundColor"] = "buttonDisabledBackgroundColor";
103
+ IOS_THEME_CONFIG_KEY["buttonTouchedBackgroundColor"] = "buttonTouchedBackgroundColor";
104
+ IOS_THEME_CONFIG_KEY["buttonImageTintColor"] = "buttonImageTintColor";
105
+ IOS_THEME_CONFIG_KEY["buttonImageHidden"] = "buttonImageHidden";
106
+ IOS_THEME_CONFIG_KEY["buttonCornerRadius"] = "buttonCornerRadius";
107
+ IOS_THEME_CONFIG_KEY["buttonTextAlignment"] = "buttonTextAlignment";
108
+ IOS_THEME_CONFIG_KEY["buttonDisabledTextColor"] = "buttonDisabledTextColor";
109
+ IOS_THEME_CONFIG_KEY["buttonTextColor"] = "buttonTextColor";
110
+ IOS_THEME_CONFIG_KEY["buttonFont"] = "buttonFont";
111
+ IOS_THEME_CONFIG_KEY["buttonTextSize"] = "buttonTextSize";
112
+ IOS_THEME_CONFIG_KEY["selectedCellBackgroundColor"] = "selectedCellBackgroundColor";
113
+ IOS_THEME_CONFIG_KEY["closeButtonTintColor"] = "closeButtonTintColor";
114
+ IOS_THEME_CONFIG_KEY["cancelButtonBackgroundColor"] = "cancelButtonBackgroundColor";
115
+ IOS_THEME_CONFIG_KEY["cameraButtonBackgroundColor"] = "cameraButtonBackgroundColor";
116
+ IOS_THEME_CONFIG_KEY["cameraGuideCornersColor"] = "cameraGuideCornersColor";
117
+ IOS_THEME_CONFIG_KEY["successAssetName"] = "successAssetName";
118
+ IOS_THEME_CONFIG_KEY["successAssetWidth"] = "successAssetWidth";
119
+ IOS_THEME_CONFIG_KEY["successAssetHeight"] = "successAssetHeight";
120
+ IOS_THEME_CONFIG_KEY["verificationFailAssetName"] = "verificationFailAssetName";
121
+ IOS_THEME_CONFIG_KEY["verificationFailAssetWidth"] = "verificationFailAssetWidth";
122
+ IOS_THEME_CONFIG_KEY["verificationFailAssetHeight"] = "verificationFailAssetHeight";
123
+ IOS_THEME_CONFIG_KEY["failAssetName"] = "failAssetName";
124
+ IOS_THEME_CONFIG_KEY["failAssetWidth"] = "failAssetWidth";
125
+ IOS_THEME_CONFIG_KEY["failAssetHeight"] = "failAssetHeight";
126
+ IOS_THEME_CONFIG_KEY["loadingAnimationAssetName"] = "loadingAnimationAssetName";
127
+ IOS_THEME_CONFIG_KEY["loadingAnimationAssetWidth"] = "loadingAnimationAssetWidth";
128
+ IOS_THEME_CONFIG_KEY["loadingAnimationAssetHeight"] = "loadingAnimationAssetHeight";
129
+ IOS_THEME_CONFIG_KEY["processingAnimationAssetName"] = "processingAnimationAssetName";
130
+ IOS_THEME_CONFIG_KEY["processingAnimationAssetWidth"] = "processingAnimationAssetWidth";
131
+ IOS_THEME_CONFIG_KEY["processingAnimationAssetHeight"] = "processingAnimationAssetHeight";
132
+ IOS_THEME_CONFIG_KEY["selfieAnimationAssetName"] = "selfieAnimationAssetName";
133
+ IOS_THEME_CONFIG_KEY["selfieAnimationAssetWidth"] = "selfieAnimationAssetWidth";
134
+ IOS_THEME_CONFIG_KEY["selfieAnimationAssetHeight"] = "selfieAnimationAssetHeight";
135
+ })(IOS_THEME_CONFIG_KEY || (exports.IOS_THEME_CONFIG_KEY = IOS_THEME_CONFIG_KEY = {}));
136
+
137
+ class Theme {
138
+ async print() {
139
+ let platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'android';
140
+ const config = await _Config.default.get();
141
+ const themeConfig = platform === 'android' ? config.androidTheme : config.iosTheme;
142
+ let usesCustomFontAndroid = false;
143
+ let usesCustomFontIos = false;
144
+ const head = platform === 'android' ? ['Style Item', 'Value', 'Note'] : ['Style Item', 'Value', 'Note'];
145
+ const table = new _cliTable.default({
146
+ head,
147
+ // prettier-ignore
148
+ chars: {
149
+ 'mid': '',
150
+ 'left-mid': '',
151
+ 'mid-mid': '',
152
+ 'right-mid': ''
153
+ }
154
+ });
155
+ console.log('Specified theme values:');
156
+ const keyEnum = platform === 'android' ? ANDROID_THEME_CONFIG_KEY : IOS_THEME_CONFIG_KEY;
157
+
158
+ for (const key in keyEnum) {
159
+ let override = themeConfig[key];
160
+ let colorOverride = key.includes('Color') || key.includes('color');
161
+
162
+ if (override) {
163
+ if (colorOverride) {
164
+ override = normalizeColor(override, key);
165
+ } else {
166
+ override = override.toString();
167
+ }
168
+ }
169
+
170
+ if (key.includes('Font')) {
171
+ if (platform == 'android') {
172
+ usesCustomFontAndroid = true;
173
+ } else {
174
+ usesCustomFontIos = true;
175
+ }
176
+ }
177
+
178
+ let row;
179
+ row = [key, override ? valueColor(colorOverride, override) : _chalk.default.yellow('unspecified'), key.includes('Font') ? _chalk.default.cyan('Fonts that are not built-in need to be installed.') : ''];
180
+ table.push(row);
181
+ }
182
+
183
+ console.log(table.toString());
184
+
185
+ if (usesCustomFontAndroid) {
186
+ console.log(_chalk.default.yellow(' NOTE') + ': A font customization was made. If the font is not built-in to the Android platform (https://github.com/react-native-training/react-native-fonts#android), then the font(s) must first be installed. A guide to install a font can be found here: https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml');
187
+ }
188
+
189
+ if (usesCustomFontIos) {
190
+ console.log(_chalk.default.yellow(' NOTE') + ': A font customization was made. If the font is not built-in iOS (https://github.com/react-native-training/react-native-ios), then the font(s) must first be installed. A guide to install a font can be found here: https://developer.apple.com/documentation/uikit/text_display_and_fonts/adding_a_custom_font_to_your_app');
191
+ } // Add newline for spacing
192
+
193
+
194
+ console.log('');
195
+ }
196
+
197
+ } // set default print color for non-color overrides
198
+
199
+
200
+ function valueColor(isColorOverride, override) {
201
+ return isColorOverride ? _chalk.default.hex(override)(override) : _chalk.default.magentaBright(override);
202
+ }
203
+
204
+ function normalizeColor(colorHex, themeKey) {
205
+ let hex = colorHex;
206
+
207
+ if (colorHex[0] === '#') {
208
+ hex = colorHex.slice(1);
209
+ }
210
+
211
+ if (!COLOR_REGEX.test(hex)) {
212
+ if (themeKey) {
213
+ console.error(`Received a color value of ${_chalk.default.yellow(colorHex)} for ${_chalk.default.red(themeKey)}.\nFormat must follow standard 6 character hexadecimal color code. Eg. ${_chalk.default.bgHex('#FFFFFF').hex('#7E66B7')('#290087')}`);
214
+ } else {
215
+ console.error(`Received a color value of ${_chalk.default.yellow(colorHex)}.\nFormat must follow standard 6 character hexadecimal color code. Eg. ${_chalk.default.bgHex('#FFFFFF').hex('#7E66B7')('#290087')}`);
216
+ }
217
+
218
+ console.log('');
219
+ process.exit(1);
220
+ }
221
+
222
+ return colorHex;
223
+ }
224
+
225
+ var _default = new Theme();
226
+
227
+ exports.default = _default;
228
+ //# sourceMappingURL=Theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Theme.ts"],"names":["COLOR_REGEX","ANDROID_THEME_CONFIG_KEY","IOS_THEME_CONFIG_KEY","Theme","print","platform","config","Config","get","themeConfig","androidTheme","iosTheme","usesCustomFontAndroid","usesCustomFontIos","head","table","Table","chars","console","log","keyEnum","key","override","colorOverride","includes","normalizeColor","toString","row","valueColor","chalk","yellow","cyan","push","isColorOverride","hex","magentaBright","colorHex","themeKey","slice","test","error","red","bgHex","process","exit"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAEA,MAAMA,WAAW,GAAG,kBAApB;IAEYC,wB;;;WAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;AAAAA,EAAAA,wB;GAAAA,wB,wCAAAA,wB;;IAyDAC,oB;;;WAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;GAAAA,oB,oCAAAA,oB;;AAgFZ,MAAMC,KAAN,CAAY;AACC,QAALC,KAAK,GAA+B;AAAA,QAA9BC,QAA8B,uEAAX,SAAW;AACxC,UAAMC,MAAM,GAAG,MAAMC,gBAAOC,GAAP,EAArB;AACA,UAAMC,WAAW,GACfJ,QAAQ,KAAK,SAAb,GAAyBC,MAAM,CAACI,YAAhC,GAA+CJ,MAAM,CAACK,QADxD;AAEA,QAAIC,qBAAqB,GAAG,KAA5B;AACA,QAAIC,iBAAiB,GAAG,KAAxB;AAEA,UAAMC,IAAI,GACRT,QAAQ,KAAK,SAAb,GACI,CAAC,YAAD,EAAe,OAAf,EAAwB,MAAxB,CADJ,GAEI,CAAC,YAAD,EAAe,OAAf,EAAwB,MAAxB,CAHN;AAKA,UAAMU,KAAK,GAAG,IAAIC,iBAAJ,CAAU;AACtBF,MAAAA,IADsB;AAEtB;AACAG,MAAAA,KAAK,EAAE;AAAE,eAAO,EAAT;AAAa,oBAAY,EAAzB;AAA6B,mBAAW,EAAxC;AAA4C,qBAAa;AAAzD;AAHe,KAAV,CAAd;AAMAC,IAAAA,OAAO,CAACC,GAAR,CAAY,yBAAZ;AACA,UAAMC,OAAO,GACXf,QAAQ,KAAK,SAAb,GAAyBJ,wBAAzB,GAAoDC,oBADtD;;AAEA,SAAK,MAAMmB,GAAX,IAAkBD,OAAlB,EAA2B;AACzB,UAAIE,QAAQ,GACVb,WAAW,CAACY,GAAD,CADb;AAEA,UAAIE,aAAa,GAAGF,GAAG,CAACG,QAAJ,CAAa,OAAb,KAAyBH,GAAG,CAACG,QAAJ,CAAa,OAAb,CAA7C;;AAEA,UAAIF,QAAJ,EAAc;AACZ,YAAIC,aAAJ,EAAmB;AACjBD,UAAAA,QAAQ,GAAGG,cAAc,CAACH,QAAD,EAAWD,GAAX,CAAzB;AACD,SAFD,MAEO;AACLC,UAAAA,QAAQ,GAAGA,QAAQ,CAACI,QAAT,EAAX;AACD;AACF;;AAED,UAAIL,GAAG,CAACG,QAAJ,CAAa,MAAb,CAAJ,EAA0B;AACxB,YAAInB,QAAQ,IAAI,SAAhB,EAA2B;AACzBO,UAAAA,qBAAqB,GAAG,IAAxB;AACD,SAFD,MAEO;AACLC,UAAAA,iBAAiB,GAAG,IAApB;AACD;AACF;;AAED,UAAIc,GAAJ;AAEAA,MAAAA,GAAG,GAAG,CACJN,GADI,EAEJC,QAAQ,GACJM,UAAU,CAACL,aAAD,EAAgBD,QAAhB,CADN,GAEJO,eAAMC,MAAN,CAAa,aAAb,CAJA,EAKJT,GAAG,CAACG,QAAJ,CAAa,MAAb,IACIK,eAAME,IAAN,CAAW,mDAAX,CADJ,GAEI,EAPA,CAAN;AAUAhB,MAAAA,KAAK,CAACiB,IAAN,CAAWL,GAAX;AACD;;AAEDT,IAAAA,OAAO,CAACC,GAAR,CAAYJ,KAAK,CAACW,QAAN,EAAZ;;AAEA,QAAId,qBAAJ,EAA2B;AACzBM,MAAAA,OAAO,CAACC,GAAR,CACEU,eAAMC,MAAN,CAAa,QAAb,IACE,6TAFJ;AAID;;AAED,QAAIjB,iBAAJ,EAAuB;AACrBK,MAAAA,OAAO,CAACC,GAAR,CACEU,eAAMC,MAAN,CAAa,QAAb,IACE,8TAFJ;AAID,KAvEuC,CAyExC;;;AACAZ,IAAAA,OAAO,CAACC,GAAR,CAAY,EAAZ;AACD;;AA5ES,C,CA+EZ;;;AACA,SAASS,UAAT,CAAoBK,eAApB,EAA8CX,QAA9C,EAAgE;AAC9D,SAAOW,eAAe,GAClBJ,eAAMK,GAAN,CAAUZ,QAAV,EAAoBA,QAApB,CADkB,GAElBO,eAAMM,aAAN,CAAoBb,QAApB,CAFJ;AAGD;;AAED,SAASG,cAAT,CAAwBW,QAAxB,EAA0CC,QAA1C,EAA4D;AAC1D,MAAIH,GAAG,GAAGE,QAAV;;AACA,MAAIA,QAAQ,CAAC,CAAD,CAAR,KAAgB,GAApB,EAAyB;AACvBF,IAAAA,GAAG,GAAGE,QAAQ,CAACE,KAAT,CAAe,CAAf,CAAN;AACD;;AAED,MAAI,CAACtC,WAAW,CAACuC,IAAZ,CAAiBL,GAAjB,CAAL,EAA4B;AAC1B,QAAIG,QAAJ,EAAc;AACZnB,MAAAA,OAAO,CAACsB,KAAR,CACG,6BAA4BX,eAAMC,MAAN,CAAaM,QAAb,CAAuB,QAAOP,eAAMY,GAAN,CACzDJ,QADyD,CAEzD,0EAAyER,eACxEa,KADwE,CAClE,SADkE,EAExER,GAFwE,CAEpE,SAFoE,EAEzD,SAFyD,CAE9C,EAL/B;AAOD,KARD,MAQO;AACLhB,MAAAA,OAAO,CAACsB,KAAR,CACG,6BAA4BX,eAAMC,MAAN,CAC3BM,QAD2B,CAE3B,0EAAyEP,eACxEa,KADwE,CAClE,SADkE,EAExER,GAFwE,CAEpE,SAFoE,EAEzD,SAFyD,CAE9C,EAL/B;AAOD;;AACDhB,IAAAA,OAAO,CAACC,GAAR,CAAY,EAAZ;AACAwB,IAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;;AAED,SAAOR,QAAP;AACD;;eAEc,IAAIjC,KAAJ,E","sourcesContent":["import Table from 'cli-table';\nimport chalk from 'chalk';\n\nimport Config from './Config';\n\nconst COLOR_REGEX = /^[a-zA-Z0-9]{6}$/;\n\nexport enum ANDROID_THEME_CONFIG_KEY {\n backgroundColor = 'backgroundColor',\n primaryColor = 'primaryColor',\n darkPrimaryColor = 'darkPrimaryColor',\n accentColor = 'accentColor',\n\n titleTextColor = 'titleTextColor',\n titleTextFont = 'titleTextFont',\n titleTextSize = 'titleTextSize',\n\n bodyTextColor = 'bodyTextColor',\n bodyTextFont = 'bodyTextFont',\n bodyTextSize = 'bodyTextSize',\n\n footnoteTextColor = 'footnoteTextColor',\n footnoteTextFont = 'footnoteTextFont',\n footnoteTextSize = 'footnoteTextSize',\n\n cameraInstructionsTextColor = 'cameraInstructionsTextColor',\n cameraInstructionsTextFont = 'cameraInstructionsTextFont',\n cameraInstructionsTextSize = 'cameraInstructionsTextSize',\n\n cameraHintTextColor = 'cameraHintTextColor',\n cameraHintTextFont = 'cameraHintTextFont',\n cameraHintTextSize = 'cameraHintTextSize',\n\n cameraGuideHintTextColor = 'cameraGuideHintTextColor',\n cameraGuideHintTextFont = 'cameraGuideHintTextFont',\n cameraGuideHintTextSize = 'cameraGuideHintTextSize',\n\n // formLabelTextColor = \"formLabelTextColor\",\n // formLabelTextFont = \"formLabelTextFont\",\n\n textFieldTextColor = 'textFieldTextColor',\n textFieldTextFont = 'textFieldTextFont',\n\n pickerTextColor = 'pickerTextColor',\n pickerTextFont = 'pickerTextFont',\n\n buttonBackgroundColor = 'buttonBackgroundColor',\n buttonDisabledBackgroundColor = 'buttonDisabledBackgroundColor',\n buttonTouchedBackgroundColor = 'buttonTouchedBackgroundColor',\n buttonTextColor = 'buttonTextColor',\n buttonDisabledTextColor = 'buttonDisabledTextColor',\n // buttonTextAlignment = \"buttonTextAlignment\",\n buttonCornerRadius = 'buttonCornerRadius',\n buttonFont = 'buttonFont',\n buttonTextSize = 'buttonTextSize',\n progressColor = 'progressColor',\n successAsset = 'successAsset',\n failAsset = 'failAsset',\n loadingAnimationAsset = 'loadingAnimationAsset',\n loadingAnimationWidthPercent = 'loadingAnimationWidthPercent',\n selfieAnimationAsset = 'selfieAnimationAsset',\n selfieAnimationWidthPercent = 'selfieAnimationWidthPercent',\n}\n\nexport enum IOS_THEME_CONFIG_KEY {\n backgroundColor = 'backgroundColor',\n primaryColor = 'primaryColor',\n darkPrimaryColor = 'darkPrimaryColor',\n accentColor = 'accentColor',\n progressColor = 'progressColor',\n overlayBackgroundColor = 'overlayBackgroundColor',\n titleTextColor = 'titleTextColor',\n titleTextFont = 'titleTextFont',\n titleTextSize = 'titleTextSize',\n titleTextAlignment = 'titleTextAlignment',\n bodyTextColor = 'bodyTextColor',\n bodyTextFont = 'bodyTextFont',\n bodyTextSize = 'bodyTextSize',\n bodyTextAlignment = 'bodyTextAlignment',\n footnoteTextColor = 'footnoteTextColor',\n footnoteTextFont = 'footnoteTextFont',\n footnoteTextSize = 'footnoteTextSize',\n formLabelTextColor = 'formLabelTextColor',\n formLabelTextFont = 'formLabelTextFont',\n textFieldTextColor = 'textFieldTextColor',\n textFieldBackgroundColor = 'textFieldBackgroundColor',\n textFieldBorderColor = 'textFieldBorderColor',\n pickerTextColor = 'pickerTextColor',\n pickerTextFont = 'pickerTextFont',\n cameraInstructionsTextColor = 'cameraInstructionsTextColor',\n cameraInstructionsTextFont = 'cameraInstructionsTextFont',\n cameraInstructionsTextSize = 'cameraInstructionsTextFont',\n cameraHintTextColor = 'cameraHintTextColor',\n cameraHintTextFont = 'cameraHintTextFont',\n cameraHintTextSize = 'cameraHintTextSize',\n cameraGuideHintTextColor = 'cameraGuideHintTextColor',\n cameraGuideHintTextFont = 'cameraGuideHintTextFont',\n cameraGuideHintTextSize = 'cameraGuideHintTextSize',\n buttonBackgroundColor = 'buttonBackgroundColor',\n buttonDisabledBackgroundColor = 'buttonDisabledBackgroundColor',\n buttonTouchedBackgroundColor = 'buttonTouchedBackgroundColor',\n buttonImageTintColor = 'buttonImageTintColor',\n buttonImageHidden = 'buttonImageHidden',\n buttonCornerRadius = 'buttonCornerRadius',\n buttonTextAlignment = 'buttonTextAlignment',\n buttonDisabledTextColor = 'buttonDisabledTextColor',\n buttonTextColor = 'buttonTextColor',\n buttonFont = 'buttonFont',\n buttonTextSize = 'buttonTextSize',\n selectedCellBackgroundColor = 'selectedCellBackgroundColor',\n closeButtonTintColor = 'closeButtonTintColor',\n cancelButtonBackgroundColor = 'cancelButtonBackgroundColor',\n cameraButtonBackgroundColor = 'cameraButtonBackgroundColor',\n cameraGuideCornersColor = 'cameraGuideCornersColor',\n successAssetName = 'successAssetName',\n successAssetWidth = 'successAssetWidth',\n successAssetHeight = 'successAssetHeight',\n verificationFailAssetName = 'verificationFailAssetName',\n verificationFailAssetWidth = 'verificationFailAssetWidth',\n verificationFailAssetHeight = 'verificationFailAssetHeight',\n failAssetName = 'failAssetName',\n failAssetWidth = 'failAssetWidth',\n failAssetHeight = 'failAssetHeight',\n loadingAnimationAssetName = 'loadingAnimationAssetName',\n loadingAnimationAssetWidth = 'loadingAnimationAssetWidth',\n loadingAnimationAssetHeight = 'loadingAnimationAssetHeight',\n processingAnimationAssetName = 'processingAnimationAssetName',\n processingAnimationAssetWidth = 'processingAnimationAssetWidth',\n processingAnimationAssetHeight = 'processingAnimationAssetHeight',\n selfieAnimationAssetName = 'selfieAnimationAssetName',\n selfieAnimationAssetWidth = 'selfieAnimationAssetWidth',\n selfieAnimationAssetHeight = 'selfieAnimationAssetHeight',\n}\n\nexport type AndroidThemeObject = {\n [key in ANDROID_THEME_CONFIG_KEY]: string | null | undefined;\n};\n\nexport type IosThemeObject = {\n [key in IOS_THEME_CONFIG_KEY]: string | null | undefined;\n};\n\nexport type ThemeObject = AndroidThemeObject | IosThemeObject;\n\nclass Theme {\n async print(platform: string = 'android') {\n const config = await Config.get();\n const themeConfig =\n platform === 'android' ? config.androidTheme : config.iosTheme;\n let usesCustomFontAndroid = false;\n let usesCustomFontIos = false;\n\n const head =\n platform === 'android'\n ? ['Style Item', 'Value', 'Note']\n : ['Style Item', 'Value', 'Note'];\n\n const table = new Table({\n head,\n // prettier-ignore\n chars: { 'mid': '', 'left-mid': '', 'mid-mid': '', 'right-mid': '' },\n });\n\n console.log('Specified theme values:');\n const keyEnum =\n platform === 'android' ? ANDROID_THEME_CONFIG_KEY : IOS_THEME_CONFIG_KEY;\n for (const key in keyEnum) {\n let override =\n themeConfig[key as ANDROID_THEME_CONFIG_KEY | IOS_THEME_CONFIG_KEY];\n let colorOverride = key.includes('Color') || key.includes('color');\n\n if (override) {\n if (colorOverride) {\n override = normalizeColor(override, key);\n } else {\n override = override.toString();\n }\n }\n\n if (key.includes('Font')) {\n if (platform == 'android') {\n usesCustomFontAndroid = true;\n } else {\n usesCustomFontIos = true;\n }\n }\n\n let row;\n\n row = [\n key,\n override\n ? valueColor(colorOverride, override)\n : chalk.yellow('unspecified'),\n key.includes('Font')\n ? chalk.cyan('Fonts that are not built-in need to be installed.')\n : '',\n ];\n\n table.push(row);\n }\n\n console.log(table.toString());\n\n if (usesCustomFontAndroid) {\n console.log(\n chalk.yellow(' NOTE') +\n ': A font customization was made. If the font is not built-in to the Android platform (https://github.com/react-native-training/react-native-fonts#android), then the font(s) must first be installed. A guide to install a font can be found here: https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml'\n );\n }\n\n if (usesCustomFontIos) {\n console.log(\n chalk.yellow(' NOTE') +\n ': A font customization was made. If the font is not built-in iOS (https://github.com/react-native-training/react-native-ios), then the font(s) must first be installed. A guide to install a font can be found here: https://developer.apple.com/documentation/uikit/text_display_and_fonts/adding_a_custom_font_to_your_app'\n );\n }\n\n // Add newline for spacing\n console.log('');\n }\n}\n\n// set default print color for non-color overrides\nfunction valueColor(isColorOverride: boolean, override: string) {\n return isColorOverride\n ? chalk.hex(override)(override)\n : chalk.magentaBright(override);\n}\n\nfunction normalizeColor(colorHex: string, themeKey: string) {\n let hex = colorHex;\n if (colorHex[0] === '#') {\n hex = colorHex.slice(1);\n }\n\n if (!COLOR_REGEX.test(hex)) {\n if (themeKey) {\n console.error(\n `Received a color value of ${chalk.yellow(colorHex)} for ${chalk.red(\n themeKey\n )}.\\nFormat must follow standard 6 character hexadecimal color code. Eg. ${chalk\n .bgHex('#FFFFFF')\n .hex('#7E66B7')('#290087')}`\n );\n } else {\n console.error(\n `Received a color value of ${chalk.yellow(\n colorHex\n )}.\\nFormat must follow standard 6 character hexadecimal color code. Eg. ${chalk\n .bgHex('#FFFFFF')\n .hex('#7E66B7')('#290087')}`\n );\n }\n console.log('');\n process.exit(1);\n }\n\n return colorHex;\n}\n\nexport default new Theme();\n"]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _Config = _interopRequireDefault(require("./Config"));
4
+
5
+ var _prompts = require("./prompts");
6
+
7
+ var _AndroidThemeGenerator = _interopRequireDefault(require("./tools/AndroidThemeGenerator"));
8
+
9
+ var _IosThemeInstructions = _interopRequireDefault(require("./tools/IosThemeInstructions"));
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ console.log('');
14
+ console.log('============================================');
15
+ console.log('Persona React Native SDK customization tool.');
16
+ console.log('============================================');
17
+ console.log('');
18
+
19
+ const run = async () => {
20
+ // Run this once to print warning messages if it's not configured.
21
+ await _Config.default.get();
22
+ const {
23
+ choice
24
+ } = await (0, _prompts.whatWouldYouLikePrompt)();
25
+
26
+ switch (choice) {
27
+ case _prompts.TOOL_CHOICE.AndroidTheme:
28
+ await _AndroidThemeGenerator.default.run();
29
+ break;
30
+
31
+ case _prompts.TOOL_CHOICE.iosTheme:
32
+ await _IosThemeInstructions.default.run();
33
+ break;
34
+
35
+ default:
36
+ return;
37
+ }
38
+ };
39
+
40
+ run();
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["console","log","run","Config","get","choice","TOOL_CHOICE","AndroidTheme","AndroidThemeGenerator","iosTheme","IosThemeInstructions"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;;;AAEAA,OAAO,CAACC,GAAR,CAAY,EAAZ;AACAD,OAAO,CAACC,GAAR,CAAY,8CAAZ;AACAD,OAAO,CAACC,GAAR,CAAY,8CAAZ;AACAD,OAAO,CAACC,GAAR,CAAY,8CAAZ;AACAD,OAAO,CAACC,GAAR,CAAY,EAAZ;;AAEA,MAAMC,GAAG,GAAG,YAAY;AACtB;AACA,QAAMC,gBAAOC,GAAP,EAAN;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAa,MAAM,sCAAzB;;AAEA,UAAQA,MAAR;AACE,SAAKC,qBAAYC,YAAjB;AACE,YAAMC,+BAAsBN,GAAtB,EAAN;AACA;;AACF,SAAKI,qBAAYG,QAAjB;AACE,YAAMC,8BAAqBR,GAArB,EAAN;AACA;;AACF;AACE;AARJ;AAUD,CAhBD;;AAkBAA,GAAG","sourcesContent":["import Config from './Config';\nimport { TOOL_CHOICE, whatWouldYouLikePrompt } from './prompts';\nimport AndroidThemeGenerator from './tools/AndroidThemeGenerator';\nimport IosThemeInstructions from './tools/IosThemeInstructions';\n\nconsole.log('');\nconsole.log('============================================');\nconsole.log('Persona React Native SDK customization tool.');\nconsole.log('============================================');\nconsole.log('');\n\nconst run = async () => {\n // Run this once to print warning messages if it's not configured.\n await Config.get();\n\n const { choice } = await whatWouldYouLikePrompt();\n\n switch (choice) {\n case TOOL_CHOICE.AndroidTheme:\n await AndroidThemeGenerator.run();\n break;\n case TOOL_CHOICE.iosTheme:\n await IosThemeInstructions.run();\n break;\n default:\n return;\n }\n};\n\nrun();\n"]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TOOL_CHOICE = void 0;
7
+ exports.confirmResourceFiles = confirmResourceFiles;
8
+ exports.confirmThemeValues = confirmThemeValues;
9
+ exports.whatWouldYouLikePrompt = whatWouldYouLikePrompt;
10
+
11
+ var _inquirer = _interopRequireDefault(require("inquirer"));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ const TOOL_CHOICE = {
16
+ AndroidTheme: 'Update Android theme',
17
+ iosTheme: 'Update iOS theme'
18
+ };
19
+ exports.TOOL_CHOICE = TOOL_CHOICE;
20
+
21
+ async function whatWouldYouLikePrompt() {
22
+ const questions = {
23
+ name: 'choice',
24
+ type: 'list',
25
+ choices: [TOOL_CHOICE.AndroidTheme, TOOL_CHOICE.iosTheme],
26
+ message: 'What would you like to do?'
27
+ };
28
+ return _inquirer.default.prompt(questions);
29
+ }
30
+
31
+ async function confirmThemeValues() {
32
+ const questions = {
33
+ name: 'isConfirmed',
34
+ type: 'confirm',
35
+ message: 'Do these values look right?'
36
+ };
37
+ return _inquirer.default.prompt(questions);
38
+ }
39
+
40
+ async function confirmResourceFiles() {
41
+ const questions = {
42
+ name: 'isConfirmed',
43
+ type: 'confirm',
44
+ message: `Continue?`
45
+ };
46
+ return _inquirer.default.prompt(questions);
47
+ }
48
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["prompts.ts"],"names":["TOOL_CHOICE","AndroidTheme","iosTheme","whatWouldYouLikePrompt","questions","name","type","choices","message","inquirer","prompt","confirmThemeValues","confirmResourceFiles"],"mappings":";;;;;;;;;;AAAA;;;;AAEO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,YAAY,EAAE,sBADW;AAEzBC,EAAAA,QAAQ,EAAE;AAFe,CAApB;;;AAIA,eAAeC,sBAAf,GAAwC;AAC7C,QAAMC,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAE,QADU;AAEhBC,IAAAA,IAAI,EAAE,MAFU;AAGhBC,IAAAA,OAAO,EAAE,CAACP,WAAW,CAACC,YAAb,EAA2BD,WAAW,CAACE,QAAvC,CAHO;AAIhBM,IAAAA,OAAO,EAAE;AAJO,GAAlB;AAOA,SAAOC,kBAASC,MAAT,CAAgBN,SAAhB,CAAP;AACD;;AAEM,eAAeO,kBAAf,GAAoC;AACzC,QAAMP,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAE,aADU;AAEhBC,IAAAA,IAAI,EAAE,SAFU;AAGhBE,IAAAA,OAAO,EAAE;AAHO,GAAlB;AAMA,SAAOC,kBAASC,MAAT,CAAgBN,SAAhB,CAAP;AACD;;AAEM,eAAeQ,oBAAf,GAAsC;AAC3C,QAAMR,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAE,aADU;AAEhBC,IAAAA,IAAI,EAAE,SAFU;AAGhBE,IAAAA,OAAO,EAAG;AAHM,GAAlB;AAMA,SAAOC,kBAASC,MAAT,CAAgBN,SAAhB,CAAP;AACD","sourcesContent":["import inquirer, { QuestionCollection } from 'inquirer';\n\nexport const TOOL_CHOICE = {\n AndroidTheme: 'Update Android theme',\n iosTheme: 'Update iOS theme',\n};\nexport async function whatWouldYouLikePrompt() {\n const questions = {\n name: 'choice',\n type: 'list',\n choices: [TOOL_CHOICE.AndroidTheme, TOOL_CHOICE.iosTheme],\n message: 'What would you like to do?',\n } as QuestionCollection;\n\n return inquirer.prompt(questions);\n}\n\nexport async function confirmThemeValues() {\n const questions = {\n name: 'isConfirmed',\n type: 'confirm',\n message: 'Do these values look right?',\n } as QuestionCollection;\n\n return inquirer.prompt(questions);\n}\n\nexport async function confirmResourceFiles() {\n const questions = {\n name: 'isConfirmed',\n type: 'confirm',\n message: `Continue?`,\n } as QuestionCollection;\n\n return inquirer.prompt(questions);\n}\n"]}