react-native-persona 2.2.0 → 2.2.3
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.
- package/CHANGELOG.md +29 -0
- package/README.md +149 -2
- package/RNPersonaInquiry2.podspec +1 -1
- package/android/build.gradle +1 -2
- package/android/src/main/java/com/withpersona/sdk2/reactnative/PersonaInquiryModule2.java +8 -2
- package/bin/persona-tool +1 -2
- package/ios/PersonaInquiry2.swift +4 -0
- package/lib/commonjs/index.js +66 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/persona-tool/AndroidResourcePrinter.js +497 -0
- package/lib/commonjs/persona-tool/AndroidResourcePrinter.js.map +1 -0
- package/lib/commonjs/persona-tool/Config.js +95 -0
- package/lib/commonjs/persona-tool/Config.js.map +1 -0
- package/lib/commonjs/persona-tool/Theme.js +199 -0
- package/lib/commonjs/persona-tool/Theme.js.map +1 -0
- package/lib/commonjs/persona-tool/index.js +41 -0
- package/lib/commonjs/persona-tool/index.js.map +1 -0
- package/lib/commonjs/persona-tool/prompts.js +48 -0
- package/lib/commonjs/persona-tool/prompts.js.map +1 -0
- package/lib/commonjs/persona-tool/tools/AndroidThemeGenerator.js +99 -0
- package/lib/commonjs/persona-tool/tools/AndroidThemeGenerator.js.map +1 -0
- package/lib/commonjs/persona-tool/tools/IosThemeInstructions.js +50 -0
- package/lib/commonjs/persona-tool/tools/IosThemeInstructions.js.map +1 -0
- package/lib/commonjs/versions.js +25 -0
- package/lib/commonjs/versions.js.map +1 -0
- package/lib/module/index.js +58 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/persona-tool/AndroidResourcePrinter.js +489 -0
- package/lib/module/persona-tool/AndroidResourcePrinter.js.map +1 -0
- package/lib/module/persona-tool/Config.js +82 -0
- package/lib/module/persona-tool/Config.js.map +1 -0
- package/lib/module/persona-tool/Theme.js +183 -0
- package/lib/module/persona-tool/Theme.js.map +1 -0
- package/lib/module/persona-tool/index.js +33 -0
- package/lib/module/persona-tool/index.js.map +1 -0
- package/lib/module/persona-tool/prompts.js +31 -0
- package/lib/module/persona-tool/prompts.js.map +1 -0
- package/lib/module/persona-tool/tools/AndroidThemeGenerator.js +72 -0
- package/lib/module/persona-tool/tools/AndroidThemeGenerator.js.map +1 -0
- package/lib/module/persona-tool/tools/IosThemeInstructions.js +37 -0
- package/lib/module/persona-tool/tools/IosThemeInstructions.js.map +1 -0
- package/lib/module/versions.js +14 -0
- package/lib/module/versions.js.map +1 -0
- package/lib/typescript/{src/fields.d.ts → fields.d.ts} +0 -0
- package/lib/typescript/{src/index.d.ts → index.d.ts} +50 -0
- package/lib/typescript/{persona-tools/lib → persona-tool}/AndroidResourcePrinter.d.ts +2 -2
- package/lib/typescript/{persona-tools → persona-tool}/Config.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/Theme.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/index.d.ts +0 -0
- package/lib/typescript/{persona-tools/lib → persona-tool}/prompts.d.ts +1 -1
- package/lib/typescript/{persona-tools → persona-tool}/tools/AndroidThemeGenerator.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/tools/IosThemeInstructions.d.ts +0 -0
- package/lib/typescript/{src/util.d.ts → util.d.ts} +0 -0
- package/lib/typescript/versions.d.ts +6 -0
- package/package.json +4 -5
- package/src/index.ts +65 -3
- package/{persona-tools/lib → src/persona-tool}/AndroidResourcePrinter.ts +182 -182
- package/{persona-tools → src/persona-tool}/Config.ts +0 -0
- package/{persona-tools → src/persona-tool}/Theme.ts +0 -0
- package/{persona-tools → src/persona-tool}/index.ts +1 -1
- package/{persona-tools/lib → src/persona-tool}/prompts.ts +11 -11
- package/{persona-tools → src/persona-tool}/tools/AndroidThemeGenerator.ts +2 -2
- package/{persona-tools → src/persona-tool}/tools/IosThemeInstructions.ts +1 -1
- package/src/versions.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["AndroidResourcePrinter.ts"],"names":["create","createXml","AndroidResourcePrinter","constructor","theme","root","version","ele","buttonDrawable","buttonColor","process","hasTheme","up","print","style","primaryColor","accentColor","darkPrimaryColor","backgroundColor","titleText","bodyText","footnoteText","textField","pickerText","button","progressColor","successAsset","failAsset","loadingAnimationAsset","selfieAnimationAsset","preprintQueue","forEach","fn","name","parent","printQueue","postPrintQueue","Object","keys","length","values","filter","Boolean","push","txt","titleTextColor","titleTextFont","bodyTextColor","bodyTextFont","footnoteTextColor","footnoteTextFont","textFieldTextColor","textFieldTextFont","pickerTextColor","pickerTextFont","buttonBackgroundColor","buttonDisabledBackgroundColor","buttonTouchedBackgroundColor","buttonTextColor","buttonDisabledTextColor","buttonCornerRadius","buttonFont","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 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.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 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.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.Inquiry2.Theme',\n parent: 'Base.Persona.Inquiry2.Theme',\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: 'colorSecondary' })\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: 'colorPrimaryVariant' })\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 (this.theme.titleTextColor || this.theme.titleTextFont) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'textAppearanceHeadline6' })\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.Inquiry2.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 this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt('26sp')\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: 'textAppearanceHeadline6' })\n .txt('@style/Persona.Text.Title')\n .up();\n });\n }\n }\n\n private bodyText() {\n if (this.theme.bodyTextColor || this.theme.bodyTextFont) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'textAppearanceSubtitle1' })\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.Inquiry2.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 // Default values taken from `Persona.Text.Body`\n // in shared/src/main/res/values/styles.xml\n this.root = this.root\n .ele('item', { name: 'android:textSize' })\n .txt('18sp')\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: 'textAppearanceSubtitle1' })\n .txt('@style/Persona.Inquiry2.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:textSize' })\n // Used default value found in the Android SDK\n .txt('@dimen/abc_text_size_small_material')\n .up()\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\n this.root = this.root.up();\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: 'Persona.Inquiry2.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.TextAppearance.MaterialComponents.Body1',\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: 'Persona.Inquiry2.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.Inquiry2.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: 'Persona.Inquiry2.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.Inquiry2.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 ) {\n this.printQueue.push(() => {\n this.root = this.root\n .ele('item', { name: 'buttonStyle' })\n .txt('@style/RN.Persona.Button')\n .up();\n });\n\n this.postPrintQueue.push(() => {\n this.root = this.root\n .ele('style', {\n name: 'RN.Persona.Button',\n parent: 'Persona.Inquiry2.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('18sp')\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 // 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/colorPrimaryVariant',\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/colorPrimaryVariant',\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 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,82 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
3
|
+
import { cosmiconfig } from 'cosmiconfig';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { ANDROID_THEME_CONFIG_KEY, IOS_THEME_CONFIG_KEY } from './Theme';
|
|
6
|
+
|
|
7
|
+
class Configuration {
|
|
8
|
+
constructor() {
|
|
9
|
+
_defineProperty(this, "config", void 0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async loadConfig() {
|
|
13
|
+
if (this.config) return this.config;
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
const explorer = cosmiconfig('persona', {
|
|
17
|
+
packageProp: 'persona'
|
|
18
|
+
});
|
|
19
|
+
const result = await explorer.search();
|
|
20
|
+
|
|
21
|
+
if (result == null) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
this.config = result.config;
|
|
26
|
+
return this.config;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
console.error(e);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async get() {
|
|
34
|
+
let config = await this.loadConfig();
|
|
35
|
+
const androidThemeLines = [];
|
|
36
|
+
|
|
37
|
+
for (const key in ANDROID_THEME_CONFIG_KEY) {
|
|
38
|
+
androidThemeLines.push(` "${key}": null`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const iosThemeLines = [];
|
|
42
|
+
|
|
43
|
+
for (const key in IOS_THEME_CONFIG_KEY) {
|
|
44
|
+
iosThemeLines.push(` "${key}": null`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (config == null) {
|
|
48
|
+
console.log(`
|
|
49
|
+
Missing configuration.
|
|
50
|
+
|
|
51
|
+
In order to use this tool, it must be configured using a ${chalk.yellow('persona')} object within
|
|
52
|
+
your package.json.
|
|
53
|
+
|
|
54
|
+
To get started, paste the following configuration into your package.json
|
|
55
|
+
|
|
56
|
+
{
|
|
57
|
+
...
|
|
58
|
+
|
|
59
|
+
"persona": {
|
|
60
|
+
"androidTheme": {
|
|
61
|
+
` + androidThemeLines.join(',\n') + `
|
|
62
|
+
},
|
|
63
|
+
"iosTheme": {
|
|
64
|
+
` + iosThemeLines.join(',\n') + `
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
...
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
and re-run this tool :).
|
|
72
|
+
`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return config;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default new Configuration();
|
|
82
|
+
//# sourceMappingURL=Config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Config.ts"],"names":["cosmiconfig","chalk","ANDROID_THEME_CONFIG_KEY","IOS_THEME_CONFIG_KEY","Configuration","loadConfig","config","explorer","packageProp","result","search","e","console","error","process","exit","get","androidThemeLines","key","push","iosThemeLines","log","yellow","join"],"mappings":";;AAAA,SAASA,WAAT,QAA4B,aAA5B;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,wBAAT,EAAmCC,oBAAnC,QAA+D,SAA/D;;AAOA,MAAMC,aAAN,CAAoB;AAAA;AAAA;AAAA;;AAGF,QAAVC,UAAU,GAA6C;AAC3D,QAAI,KAAKC,MAAT,EAAiB,OAAO,KAAKA,MAAZ;;AAEjB,QAAI;AACF,YAAMC,QAAQ,GAAGP,WAAW,CAAC,SAAD,EAAY;AAAEQ,QAAAA,WAAW,EAAE;AAAf,OAAZ,CAA5B;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,IAAkBhB,wBAAlB,EAA4C;AAC1Ce,MAAAA,iBAAiB,CAACE,IAAlB,CAAwB,UAASD,GAAI,SAArC;AACD;;AAED,UAAME,aAAa,GAAG,EAAtB;;AACA,SAAK,MAAMF,GAAX,IAAkBf,oBAAlB,EAAwC;AACtCiB,MAAAA,aAAa,CAACD,IAAd,CAAoB,UAASD,GAAI,SAAjC;AACD;;AAED,QAAIZ,MAAM,IAAI,IAAd,EAAoB;AAClBM,MAAAA,OAAO,CAACS,GAAR,CACG;AACT;AACA;AACA,2DAA2DpB,KAAK,CAACqB,MAAN,CACjD,SADiD,CAEjD;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAfQ,GAgBEL,iBAAiB,CAACM,IAAlB,CAAuB,KAAvB,CAhBF,GAiBG;AACX;AACA;AACA,CApBQ,GAqBEH,aAAa,CAACG,IAAd,CAAmB,KAAnB,CArBF,GAsBG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA/BM;AAiCAT,MAAAA,OAAO,CAACC,IAAR,CAAa,CAAb;AACD;;AAED,WAAOT,MAAP;AACD;;AAzEiB;;AA4EpB,eAAe,IAAIF,aAAJ,EAAf","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,183 @@
|
|
|
1
|
+
import Table from 'cli-table';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import Config from './Config';
|
|
4
|
+
const COLOR_REGEX = /^[a-zA-Z0-9]{6}$/;
|
|
5
|
+
export let ANDROID_THEME_CONFIG_KEY;
|
|
6
|
+
|
|
7
|
+
(function (ANDROID_THEME_CONFIG_KEY) {
|
|
8
|
+
ANDROID_THEME_CONFIG_KEY["backgroundColor"] = "backgroundColor";
|
|
9
|
+
ANDROID_THEME_CONFIG_KEY["primaryColor"] = "primaryColor";
|
|
10
|
+
ANDROID_THEME_CONFIG_KEY["darkPrimaryColor"] = "darkPrimaryColor";
|
|
11
|
+
ANDROID_THEME_CONFIG_KEY["accentColor"] = "accentColor";
|
|
12
|
+
ANDROID_THEME_CONFIG_KEY["titleTextColor"] = "titleTextColor";
|
|
13
|
+
ANDROID_THEME_CONFIG_KEY["titleTextFont"] = "titleTextFont";
|
|
14
|
+
ANDROID_THEME_CONFIG_KEY["bodyTextColor"] = "bodyTextColor";
|
|
15
|
+
ANDROID_THEME_CONFIG_KEY["bodyTextFont"] = "bodyTextFont";
|
|
16
|
+
ANDROID_THEME_CONFIG_KEY["footnoteTextColor"] = "footnoteTextColor";
|
|
17
|
+
ANDROID_THEME_CONFIG_KEY["footnoteTextFont"] = "footnoteTextFont";
|
|
18
|
+
ANDROID_THEME_CONFIG_KEY["textFieldTextColor"] = "textFieldTextColor";
|
|
19
|
+
ANDROID_THEME_CONFIG_KEY["textFieldTextFont"] = "textFieldTextFont";
|
|
20
|
+
ANDROID_THEME_CONFIG_KEY["pickerTextColor"] = "pickerTextColor";
|
|
21
|
+
ANDROID_THEME_CONFIG_KEY["pickerTextFont"] = "pickerTextFont";
|
|
22
|
+
ANDROID_THEME_CONFIG_KEY["buttonBackgroundColor"] = "buttonBackgroundColor";
|
|
23
|
+
ANDROID_THEME_CONFIG_KEY["buttonDisabledBackgroundColor"] = "buttonDisabledBackgroundColor";
|
|
24
|
+
ANDROID_THEME_CONFIG_KEY["buttonTouchedBackgroundColor"] = "buttonTouchedBackgroundColor";
|
|
25
|
+
ANDROID_THEME_CONFIG_KEY["buttonTextColor"] = "buttonTextColor";
|
|
26
|
+
ANDROID_THEME_CONFIG_KEY["buttonDisabledTextColor"] = "buttonDisabledTextColor";
|
|
27
|
+
ANDROID_THEME_CONFIG_KEY["buttonCornerRadius"] = "buttonCornerRadius";
|
|
28
|
+
ANDROID_THEME_CONFIG_KEY["buttonFont"] = "buttonFont";
|
|
29
|
+
ANDROID_THEME_CONFIG_KEY["progressColor"] = "progressColor";
|
|
30
|
+
ANDROID_THEME_CONFIG_KEY["successAsset"] = "successAsset";
|
|
31
|
+
ANDROID_THEME_CONFIG_KEY["failAsset"] = "failAsset";
|
|
32
|
+
ANDROID_THEME_CONFIG_KEY["loadingAnimationAsset"] = "loadingAnimationAsset";
|
|
33
|
+
ANDROID_THEME_CONFIG_KEY["loadingAnimationWidthPercent"] = "loadingAnimationWidthPercent";
|
|
34
|
+
ANDROID_THEME_CONFIG_KEY["selfieAnimationAsset"] = "selfieAnimationAsset";
|
|
35
|
+
ANDROID_THEME_CONFIG_KEY["selfieAnimationWidthPercent"] = "selfieAnimationWidthPercent";
|
|
36
|
+
})(ANDROID_THEME_CONFIG_KEY || (ANDROID_THEME_CONFIG_KEY = {}));
|
|
37
|
+
|
|
38
|
+
export let IOS_THEME_CONFIG_KEY;
|
|
39
|
+
|
|
40
|
+
(function (IOS_THEME_CONFIG_KEY) {
|
|
41
|
+
IOS_THEME_CONFIG_KEY["backgroundColor"] = "backgroundColor";
|
|
42
|
+
IOS_THEME_CONFIG_KEY["primaryColor"] = "primaryColor";
|
|
43
|
+
IOS_THEME_CONFIG_KEY["darkPrimaryColor"] = "darkPrimaryColor";
|
|
44
|
+
IOS_THEME_CONFIG_KEY["accentColor"] = "accentColor";
|
|
45
|
+
IOS_THEME_CONFIG_KEY["overlayBackgroundColor"] = "overlayBackgroundColor";
|
|
46
|
+
IOS_THEME_CONFIG_KEY["titleTextColor"] = "titleTextColor";
|
|
47
|
+
IOS_THEME_CONFIG_KEY["titleTextFont"] = "titleTextFont";
|
|
48
|
+
IOS_THEME_CONFIG_KEY["bodyTextColor"] = "bodyTextColor";
|
|
49
|
+
IOS_THEME_CONFIG_KEY["bodyTextFont"] = "bodyTextFont";
|
|
50
|
+
IOS_THEME_CONFIG_KEY["footnoteTextColor"] = "footnoteTextColor";
|
|
51
|
+
IOS_THEME_CONFIG_KEY["footnoteTextFont"] = "footnoteTextFont";
|
|
52
|
+
IOS_THEME_CONFIG_KEY["formLabelTextColor"] = "formLabelTextColor";
|
|
53
|
+
IOS_THEME_CONFIG_KEY["formLabelTextFont"] = "formLabelTextFont";
|
|
54
|
+
IOS_THEME_CONFIG_KEY["textFieldTextColor"] = "textFieldTextColor";
|
|
55
|
+
IOS_THEME_CONFIG_KEY["textFieldBackgroundColor"] = "textFieldBackgroundColor";
|
|
56
|
+
IOS_THEME_CONFIG_KEY["textFieldBorderColor"] = "textFieldBorderColor";
|
|
57
|
+
IOS_THEME_CONFIG_KEY["pickerTextColor"] = "pickerTextColor";
|
|
58
|
+
IOS_THEME_CONFIG_KEY["pickerTextFont"] = "pickerTextFont";
|
|
59
|
+
IOS_THEME_CONFIG_KEY["buttonBackgroundColor"] = "buttonBackgroundColor";
|
|
60
|
+
IOS_THEME_CONFIG_KEY["buttonDisabledBackgroundColor"] = "buttonDisabledBackgroundColor";
|
|
61
|
+
IOS_THEME_CONFIG_KEY["buttonTouchedBackgroundColor"] = "buttonTouchedBackgroundColor";
|
|
62
|
+
IOS_THEME_CONFIG_KEY["buttonImageTintColor"] = "buttonImageTintColor";
|
|
63
|
+
IOS_THEME_CONFIG_KEY["buttonTextColor"] = "buttonTextColor";
|
|
64
|
+
IOS_THEME_CONFIG_KEY["buttonDisabledTextColor"] = "buttonDisabledTextColor";
|
|
65
|
+
IOS_THEME_CONFIG_KEY["buttonTextAlignment"] = "buttonTextAlignment";
|
|
66
|
+
IOS_THEME_CONFIG_KEY["buttonCornerRadius"] = "buttonCornerRadius";
|
|
67
|
+
IOS_THEME_CONFIG_KEY["buttonFont"] = "buttonFont";
|
|
68
|
+
IOS_THEME_CONFIG_KEY["selectedCellBackgroundColor"] = "selectedCellBackgroundColor";
|
|
69
|
+
IOS_THEME_CONFIG_KEY["closeButtonTintColor"] = "closeButtonTintColor";
|
|
70
|
+
IOS_THEME_CONFIG_KEY["cancelButtonBackgroundColor"] = "cancelButtonBackgroundColor";
|
|
71
|
+
IOS_THEME_CONFIG_KEY["progressColor"] = "progressColor";
|
|
72
|
+
IOS_THEME_CONFIG_KEY["cameraGuideCornersColor"] = "cameraGuideCornersColor";
|
|
73
|
+
IOS_THEME_CONFIG_KEY["cameraButtonBackgroundColor"] = "cameraButtonBackgroundColor";
|
|
74
|
+
IOS_THEME_CONFIG_KEY["successAssetName"] = "successAssetName";
|
|
75
|
+
IOS_THEME_CONFIG_KEY["successAssetWidth"] = "successAssetWidth";
|
|
76
|
+
IOS_THEME_CONFIG_KEY["successAssetHeight"] = "successAssetHeight";
|
|
77
|
+
IOS_THEME_CONFIG_KEY["verificationFailAssetName"] = "verificationFailAssetName";
|
|
78
|
+
IOS_THEME_CONFIG_KEY["verificationFailAssetWidth"] = "verificationFailAssetWidth";
|
|
79
|
+
IOS_THEME_CONFIG_KEY["verificationFailAssetHeight"] = "verificationFailAssetHeight";
|
|
80
|
+
IOS_THEME_CONFIG_KEY["failAssetName"] = "failAssetName";
|
|
81
|
+
IOS_THEME_CONFIG_KEY["failAssetWidth"] = "failAssetWidth";
|
|
82
|
+
IOS_THEME_CONFIG_KEY["failAssetHeight"] = "failAssetHeight";
|
|
83
|
+
IOS_THEME_CONFIG_KEY["loadingAnimationAssetName"] = "loadingAnimationAssetName";
|
|
84
|
+
IOS_THEME_CONFIG_KEY["loadingAnimationAssetWidth"] = "loadingAnimationAssetWidth";
|
|
85
|
+
IOS_THEME_CONFIG_KEY["loadingAnimationAssetHeight"] = "loadingAnimationAssetHeight";
|
|
86
|
+
IOS_THEME_CONFIG_KEY["processingAnimationAssetName"] = "processingAnimationAssetName";
|
|
87
|
+
IOS_THEME_CONFIG_KEY["processingAnimationAssetWidth"] = "processingAnimationAssetWidth";
|
|
88
|
+
IOS_THEME_CONFIG_KEY["processingAnimationAssetHeight"] = "processingAnimationAssetHeight";
|
|
89
|
+
IOS_THEME_CONFIG_KEY["selfieAnimationAssetName"] = "selfieAnimationAssetName";
|
|
90
|
+
IOS_THEME_CONFIG_KEY["selfieAnimationAssetWidth"] = "selfieAnimationAssetWidth";
|
|
91
|
+
IOS_THEME_CONFIG_KEY["selfieAnimationAssetHeight"] = "selfieAnimationAssetHeight";
|
|
92
|
+
})(IOS_THEME_CONFIG_KEY || (IOS_THEME_CONFIG_KEY = {}));
|
|
93
|
+
|
|
94
|
+
class Theme {
|
|
95
|
+
async print() {
|
|
96
|
+
let platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'android';
|
|
97
|
+
const config = await Config.get();
|
|
98
|
+
const themeConfig = platform === 'android' ? config.androidTheme : config.iosTheme;
|
|
99
|
+
let usesCustomFontAndroid = false;
|
|
100
|
+
let usesCustomFontIos = false;
|
|
101
|
+
const head = platform === 'android' ? ['Style Item', 'Value', 'Note'] : ['Style Item', 'Value', 'Note'];
|
|
102
|
+
const table = new Table({
|
|
103
|
+
head,
|
|
104
|
+
// prettier-ignore
|
|
105
|
+
chars: {
|
|
106
|
+
'mid': '',
|
|
107
|
+
'left-mid': '',
|
|
108
|
+
'mid-mid': '',
|
|
109
|
+
'right-mid': ''
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
console.log('Specified theme values:');
|
|
113
|
+
const keyEnum = platform === 'android' ? ANDROID_THEME_CONFIG_KEY : IOS_THEME_CONFIG_KEY;
|
|
114
|
+
|
|
115
|
+
for (const key in keyEnum) {
|
|
116
|
+
let override = themeConfig[key];
|
|
117
|
+
let colorOverride = key.includes('Color') || key.includes('color');
|
|
118
|
+
|
|
119
|
+
if (override) {
|
|
120
|
+
if (colorOverride) {
|
|
121
|
+
override = normalizeColor(override, key);
|
|
122
|
+
} else {
|
|
123
|
+
override = override.toString();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (key.includes('Font')) {
|
|
128
|
+
if (platform == 'android') {
|
|
129
|
+
usesCustomFontAndroid = true;
|
|
130
|
+
} else {
|
|
131
|
+
usesCustomFontIos = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
let row;
|
|
136
|
+
row = [key, override ? valueColor(colorOverride, override) : chalk.yellow('unspecified'), key.includes('Font') ? chalk.cyan('Fonts that are not built-in need to be installed.') : ''];
|
|
137
|
+
table.push(row);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
console.log(table.toString());
|
|
141
|
+
|
|
142
|
+
if (usesCustomFontAndroid) {
|
|
143
|
+
console.log(chalk.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');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (usesCustomFontIos) {
|
|
147
|
+
console.log(chalk.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');
|
|
148
|
+
} // Add newline for spacing
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
console.log('');
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
} // set default print color for non-color overrides
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
function valueColor(isColorOverride, override) {
|
|
158
|
+
return isColorOverride ? chalk.hex(override)(override) : chalk.magentaBright(override);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function normalizeColor(colorHex, themeKey) {
|
|
162
|
+
let hex = colorHex;
|
|
163
|
+
|
|
164
|
+
if (colorHex[0] === '#') {
|
|
165
|
+
hex = colorHex.slice(1);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (!COLOR_REGEX.test(hex)) {
|
|
169
|
+
if (themeKey) {
|
|
170
|
+
console.error(`Received a color value of ${chalk.yellow(colorHex)} for ${chalk.red(themeKey)}.\nFormat must follow standard 6 character hexadecimal color code. Eg. ${chalk.bgHex('#FFFFFF').hex('#7E66B7')('#290087')}`);
|
|
171
|
+
} else {
|
|
172
|
+
console.error(`Received a color value of ${chalk.yellow(colorHex)}.\nFormat must follow standard 6 character hexadecimal color code. Eg. ${chalk.bgHex('#FFFFFF').hex('#7E66B7')('#290087')}`);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
console.log('');
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return colorHex;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export default new Theme();
|
|
183
|
+
//# sourceMappingURL=Theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Theme.ts"],"names":["Table","chalk","Config","COLOR_REGEX","ANDROID_THEME_CONFIG_KEY","IOS_THEME_CONFIG_KEY","Theme","print","platform","config","get","themeConfig","androidTheme","iosTheme","usesCustomFontAndroid","usesCustomFontIos","head","table","chars","console","log","keyEnum","key","override","colorOverride","includes","normalizeColor","toString","row","valueColor","yellow","cyan","push","isColorOverride","hex","magentaBright","colorHex","themeKey","slice","test","error","red","bgHex","process","exit"],"mappings":"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","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\n bodyTextColor = 'bodyTextColor',\n bodyTextFont = 'bodyTextFont',\n\n footnoteTextColor = 'footnoteTextColor',\n footnoteTextFont = 'footnoteTextFont',\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 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 overlayBackgroundColor = 'overlayBackgroundColor',\n titleTextColor = 'titleTextColor',\n titleTextFont = 'titleTextFont',\n bodyTextColor = 'bodyTextColor',\n bodyTextFont = 'bodyTextFont',\n footnoteTextColor = 'footnoteTextColor',\n footnoteTextFont = 'footnoteTextFont',\n formLabelTextColor = 'formLabelTextColor',\n formLabelTextFont = 'formLabelTextFont',\n textFieldTextColor = 'textFieldTextColor',\n textFieldBackgroundColor = 'textFieldBackgroundColor',\n textFieldBorderColor = 'textFieldBorderColor',\n pickerTextColor = 'pickerTextColor',\n pickerTextFont = 'pickerTextFont',\n buttonBackgroundColor = 'buttonBackgroundColor',\n buttonDisabledBackgroundColor = 'buttonDisabledBackgroundColor',\n buttonTouchedBackgroundColor = 'buttonTouchedBackgroundColor',\n buttonImageTintColor = 'buttonImageTintColor',\n buttonTextColor = 'buttonTextColor',\n buttonDisabledTextColor = 'buttonDisabledTextColor',\n buttonTextAlignment = 'buttonTextAlignment',\n buttonCornerRadius = 'buttonCornerRadius',\n buttonFont = 'buttonFont',\n selectedCellBackgroundColor = 'selectedCellBackgroundColor',\n closeButtonTintColor = 'closeButtonTintColor',\n cancelButtonBackgroundColor = 'cancelButtonBackgroundColor',\n progressColor = 'progressColor',\n cameraGuideCornersColor = 'cameraGuideCornersColor',\n cameraButtonBackgroundColor = 'cameraButtonBackgroundColor',\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,33 @@
|
|
|
1
|
+
import Config from './Config';
|
|
2
|
+
import { TOOL_CHOICE, whatWouldYouLikePrompt } from './prompts';
|
|
3
|
+
import AndroidThemeGenerator from './tools/AndroidThemeGenerator';
|
|
4
|
+
import IosThemeInstructions from './tools/IosThemeInstructions';
|
|
5
|
+
console.log('');
|
|
6
|
+
console.log('============================================');
|
|
7
|
+
console.log('Persona React Native SDK customization tool.');
|
|
8
|
+
console.log('============================================');
|
|
9
|
+
console.log('');
|
|
10
|
+
|
|
11
|
+
const run = async () => {
|
|
12
|
+
// Run this once to print warning messages if it's not configured.
|
|
13
|
+
await Config.get();
|
|
14
|
+
const {
|
|
15
|
+
choice
|
|
16
|
+
} = await whatWouldYouLikePrompt();
|
|
17
|
+
|
|
18
|
+
switch (choice) {
|
|
19
|
+
case TOOL_CHOICE.AndroidTheme:
|
|
20
|
+
await AndroidThemeGenerator.run();
|
|
21
|
+
break;
|
|
22
|
+
|
|
23
|
+
case TOOL_CHOICE.iosTheme:
|
|
24
|
+
await IosThemeInstructions.run();
|
|
25
|
+
break;
|
|
26
|
+
|
|
27
|
+
default:
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
run();
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["Config","TOOL_CHOICE","whatWouldYouLikePrompt","AndroidThemeGenerator","IosThemeInstructions","console","log","run","get","choice","AndroidTheme","iosTheme"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,UAAnB;AACA,SAASC,WAAT,EAAsBC,sBAAtB,QAAoD,WAApD;AACA,OAAOC,qBAAP,MAAkC,+BAAlC;AACA,OAAOC,oBAAP,MAAiC,8BAAjC;AAEAC,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,QAAMP,MAAM,CAACQ,GAAP,EAAN;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAa,MAAMP,sBAAsB,EAA/C;;AAEA,UAAQO,MAAR;AACE,SAAKR,WAAW,CAACS,YAAjB;AACE,YAAMP,qBAAqB,CAACI,GAAtB,EAAN;AACA;;AACF,SAAKN,WAAW,CAACU,QAAjB;AACE,YAAMP,oBAAoB,CAACG,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,31 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
export const TOOL_CHOICE = {
|
|
3
|
+
AndroidTheme: 'Update Android theme',
|
|
4
|
+
iosTheme: 'Update iOS theme'
|
|
5
|
+
};
|
|
6
|
+
export async function whatWouldYouLikePrompt() {
|
|
7
|
+
const questions = {
|
|
8
|
+
name: 'choice',
|
|
9
|
+
type: 'list',
|
|
10
|
+
choices: [TOOL_CHOICE.AndroidTheme, TOOL_CHOICE.iosTheme],
|
|
11
|
+
message: 'What would you like to do?'
|
|
12
|
+
};
|
|
13
|
+
return inquirer.prompt(questions);
|
|
14
|
+
}
|
|
15
|
+
export async function confirmThemeValues() {
|
|
16
|
+
const questions = {
|
|
17
|
+
name: 'isConfirmed',
|
|
18
|
+
type: 'confirm',
|
|
19
|
+
message: 'Do these values look right?'
|
|
20
|
+
};
|
|
21
|
+
return inquirer.prompt(questions);
|
|
22
|
+
}
|
|
23
|
+
export async function confirmResourceFiles() {
|
|
24
|
+
const questions = {
|
|
25
|
+
name: 'isConfirmed',
|
|
26
|
+
type: 'confirm',
|
|
27
|
+
message: `Continue?`
|
|
28
|
+
};
|
|
29
|
+
return inquirer.prompt(questions);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["prompts.ts"],"names":["inquirer","TOOL_CHOICE","AndroidTheme","iosTheme","whatWouldYouLikePrompt","questions","name","type","choices","message","prompt","confirmThemeValues","confirmResourceFiles"],"mappings":"AAAA,OAAOA,QAAP,MAA6C,UAA7C;AAEA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,YAAY,EAAE,sBADW;AAEzBC,EAAAA,QAAQ,EAAE;AAFe,CAApB;AAIP,OAAO,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,SAAOT,QAAQ,CAACU,MAAT,CAAgBL,SAAhB,CAAP;AACD;AAED,OAAO,eAAeM,kBAAf,GAAoC;AACzC,QAAMN,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAE,aADU;AAEhBC,IAAAA,IAAI,EAAE,SAFU;AAGhBE,IAAAA,OAAO,EAAE;AAHO,GAAlB;AAMA,SAAOT,QAAQ,CAACU,MAAT,CAAgBL,SAAhB,CAAP;AACD;AAED,OAAO,eAAeO,oBAAf,GAAsC;AAC3C,QAAMP,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAE,aADU;AAEhBC,IAAAA,IAAI,EAAE,SAFU;AAGhBE,IAAAA,OAAO,EAAG;AAHM,GAAlB;AAMA,SAAOT,QAAQ,CAACU,MAAT,CAAgBL,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"]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import Theme from '../Theme';
|
|
5
|
+
import { confirmThemeValues, confirmResourceFiles } from '../prompts';
|
|
6
|
+
import AndroidResourcePrinter from '../AndroidResourcePrinter';
|
|
7
|
+
import Configuration from '../Config';
|
|
8
|
+
const ANDROID_STYLES_RESOURCE_PATH = './android/app/src/main/res/values/styles_persona.xml';
|
|
9
|
+
const ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH = './android/app/src/main/res/drawable/rn_persona_button.xml';
|
|
10
|
+
const ANDROID_BUTTON_COLOR_RESOURCE_PATH = './android/app/src/main/res/color/rn_persona_button.xml';
|
|
11
|
+
|
|
12
|
+
class ThemeGenerator {
|
|
13
|
+
async run() {
|
|
14
|
+
await Theme.print();
|
|
15
|
+
const {
|
|
16
|
+
isConfirmed: themeValuesConfirmed
|
|
17
|
+
} = await confirmThemeValues();
|
|
18
|
+
|
|
19
|
+
if (!themeValuesConfirmed) {
|
|
20
|
+
console.log(chalk.yellow('\nPlease adjust the values in package.json.\n'));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
console.log(`\n${chalk.yellow('Creating an Android Resource files for your project at:')}\n
|
|
25
|
+
- ${ANDROID_STYLES_RESOURCE_PATH}
|
|
26
|
+
- ${ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH}
|
|
27
|
+
- ${ANDROID_BUTTON_COLOR_RESOURCE_PATH}\n`);
|
|
28
|
+
console.log('Building your application with this resource file themes your Persona Inquiry flow.\n');
|
|
29
|
+
const config = await Configuration.get();
|
|
30
|
+
const theme = config.androidTheme;
|
|
31
|
+
const {
|
|
32
|
+
style,
|
|
33
|
+
buttonDrawable,
|
|
34
|
+
buttonColor
|
|
35
|
+
} = new AndroidResourcePrinter(theme).process();
|
|
36
|
+
let {
|
|
37
|
+
isConfirmed: confirmed
|
|
38
|
+
} = await confirmResourceFiles();
|
|
39
|
+
|
|
40
|
+
if (!confirmed) {
|
|
41
|
+
process.exit(1);
|
|
42
|
+
} // Add a line after confirmation
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
console.log('');
|
|
46
|
+
fs.mkdirSync(path.dirname(ANDROID_STYLES_RESOURCE_PATH), {
|
|
47
|
+
recursive: true
|
|
48
|
+
});
|
|
49
|
+
fs.writeFileSync(ANDROID_STYLES_RESOURCE_PATH, style.end({
|
|
50
|
+
prettyPrint: true
|
|
51
|
+
}));
|
|
52
|
+
console.log(`${chalk.green('Saved an Android style file at path:')} ${ANDROID_STYLES_RESOURCE_PATH}.`);
|
|
53
|
+
fs.mkdirSync(path.dirname(ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH), {
|
|
54
|
+
recursive: true
|
|
55
|
+
});
|
|
56
|
+
fs.writeFileSync(ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH, buttonDrawable.end({
|
|
57
|
+
prettyPrint: true
|
|
58
|
+
}));
|
|
59
|
+
console.log(`${chalk.green('Saved an Android drawable file at path:')} ${ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH}.`);
|
|
60
|
+
fs.mkdirSync(path.dirname(ANDROID_BUTTON_COLOR_RESOURCE_PATH), {
|
|
61
|
+
recursive: true
|
|
62
|
+
});
|
|
63
|
+
fs.writeFileSync(ANDROID_BUTTON_COLOR_RESOURCE_PATH, buttonColor.end({
|
|
64
|
+
prettyPrint: true
|
|
65
|
+
}));
|
|
66
|
+
console.log(`${chalk.green('Saved an Android color file at path:')} ${ANDROID_BUTTON_COLOR_RESOURCE_PATH}.`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export default new ThemeGenerator();
|
|
72
|
+
//# sourceMappingURL=AndroidThemeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["AndroidThemeGenerator.ts"],"names":["fs","chalk","path","Theme","confirmThemeValues","confirmResourceFiles","AndroidResourcePrinter","Configuration","ANDROID_STYLES_RESOURCE_PATH","ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH","ANDROID_BUTTON_COLOR_RESOURCE_PATH","ThemeGenerator","run","print","isConfirmed","themeValuesConfirmed","console","log","yellow","config","get","theme","androidTheme","style","buttonDrawable","buttonColor","process","confirmed","exit","mkdirSync","dirname","recursive","writeFileSync","end","prettyPrint","green"],"mappings":"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","sourcesContent":["import fs from 'fs';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport Theme, { AndroidThemeObject } from '../Theme';\nimport { confirmThemeValues, confirmResourceFiles } from '../prompts';\nimport AndroidResourcePrinter from '../AndroidResourcePrinter';\nimport Configuration from '../Config';\n\nconst ANDROID_STYLES_RESOURCE_PATH =\n './android/app/src/main/res/values/styles_persona.xml';\nconst ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH =\n './android/app/src/main/res/drawable/rn_persona_button.xml';\nconst ANDROID_BUTTON_COLOR_RESOURCE_PATH =\n './android/app/src/main/res/color/rn_persona_button.xml';\n\nclass ThemeGenerator {\n async run() {\n await Theme.print();\n\n const { isConfirmed: themeValuesConfirmed } = await confirmThemeValues();\n\n if (!themeValuesConfirmed) {\n console.log(\n chalk.yellow('\\nPlease adjust the values in package.json.\\n')\n );\n return;\n }\n\n console.log(\n `\\n${chalk.yellow(\n 'Creating an Android Resource files for your project at:'\n )}\\n\n - ${ANDROID_STYLES_RESOURCE_PATH}\n - ${ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH}\n - ${ANDROID_BUTTON_COLOR_RESOURCE_PATH}\\n`\n );\n console.log(\n 'Building your application with this resource file themes your Persona Inquiry flow.\\n'\n );\n\n const config = await Configuration.get();\n const theme = config.androidTheme as AndroidThemeObject;\n\n const { style, buttonDrawable, buttonColor } = new AndroidResourcePrinter(\n theme\n ).process();\n\n let { isConfirmed: confirmed } = await confirmResourceFiles();\n\n if (!confirmed) {\n process.exit(1);\n }\n\n // Add a line after confirmation\n console.log('');\n\n fs.mkdirSync(path.dirname(ANDROID_STYLES_RESOURCE_PATH), {\n recursive: true,\n });\n fs.writeFileSync(\n ANDROID_STYLES_RESOURCE_PATH,\n style.end({ prettyPrint: true })\n );\n\n console.log(\n `${chalk.green(\n 'Saved an Android style file at path:'\n )} ${ANDROID_STYLES_RESOURCE_PATH}.`\n );\n\n fs.mkdirSync(path.dirname(ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH), {\n recursive: true,\n });\n fs.writeFileSync(\n ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH,\n buttonDrawable.end({ prettyPrint: true })\n );\n console.log(\n `${chalk.green(\n 'Saved an Android drawable file at path:'\n )} ${ANDROID_BUTTON_DRAWABLE_RESOURCE_PATH}.`\n );\n\n fs.mkdirSync(path.dirname(ANDROID_BUTTON_COLOR_RESOURCE_PATH), {\n recursive: true,\n });\n fs.writeFileSync(\n ANDROID_BUTTON_COLOR_RESOURCE_PATH,\n buttonColor.end({ prettyPrint: true })\n );\n console.log(\n `${chalk.green(\n 'Saved an Android color file at path:'\n )} ${ANDROID_BUTTON_COLOR_RESOURCE_PATH}.`\n );\n }\n}\n\nexport default new ThemeGenerator();\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Theme from '../Theme';
|
|
2
|
+
import { confirmThemeValues } from '../prompts';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
|
|
5
|
+
class IosThemeInstructions {
|
|
6
|
+
async run() {
|
|
7
|
+
await Theme.print('ios');
|
|
8
|
+
const {
|
|
9
|
+
isConfirmed: themeValuesConfirmed
|
|
10
|
+
} = await confirmThemeValues();
|
|
11
|
+
|
|
12
|
+
if (!themeValuesConfirmed) {
|
|
13
|
+
console.log(chalk.yellow('\nPlease adjust the values in package.json.\n'));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
console.log(`\n${chalk.yellow('To theme the Persona Inquiry flow for iOS:')}`);
|
|
18
|
+
console.log('Add the theme values to the Persona Inquiry SDK client by using the `.iosTheme` builder function');
|
|
19
|
+
console.log(`
|
|
20
|
+
${chalk.green(`+ import { persona } from '../package.json'`)}
|
|
21
|
+
...
|
|
22
|
+
Inquiry.fromTemplate(selectedTemplateId)
|
|
23
|
+
.onSuccess(handleSuccess)
|
|
24
|
+
.onCanceled(handleCanceled)
|
|
25
|
+
.onFailed(handleFailed)
|
|
26
|
+
.onError(handleError)
|
|
27
|
+
${chalk.green('+ .iosTheme(persona.iosTheme)')}
|
|
28
|
+
.build()
|
|
29
|
+
.start();
|
|
30
|
+
...
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default new IosThemeInstructions();
|
|
37
|
+
//# sourceMappingURL=IosThemeInstructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["IosThemeInstructions.ts"],"names":["Theme","confirmThemeValues","chalk","IosThemeInstructions","run","print","isConfirmed","themeValuesConfirmed","console","log","yellow","green"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,UAAlB;AACA,SAASC,kBAAT,QAAmC,YAAnC;AACA,OAAOC,KAAP,MAAkB,OAAlB;;AAEA,MAAMC,oBAAN,CAA2B;AAChB,QAAHC,GAAG,GAAG;AACV,UAAMJ,KAAK,CAACK,KAAN,CAAY,KAAZ,CAAN;AAEA,UAAM;AAAEC,MAAAA,WAAW,EAAEC;AAAf,QAAwC,MAAMN,kBAAkB,EAAtE;;AAEA,QAAI,CAACM,oBAAL,EAA2B;AACzBC,MAAAA,OAAO,CAACC,GAAR,CACEP,KAAK,CAACQ,MAAN,CAAa,+CAAb,CADF;AAGA;AACD;;AAEDF,IAAAA,OAAO,CAACC,GAAR,CACG,KAAIP,KAAK,CAACQ,MAAN,CAAa,4CAAb,CAA2D,EADlE;AAGAF,IAAAA,OAAO,CAACC,GAAR,CACE,kGADF;AAIAD,IAAAA,OAAO,CAACC,GAAR,CAAa;AACjB,MAAMP,KAAK,CAACS,KAAN,CAAa,6CAAb,CAA2D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,MAAMT,KAAK,CAACS,KAAN,CAAY,iCAAZ,CAA+C;AACrD;AACA;AACA;AACA,KAZI;AAaD;;AAjCwB;;AAoC3B,eAAe,IAAIR,oBAAJ,EAAf","sourcesContent":["import Theme from '../Theme';\nimport { confirmThemeValues } from '../prompts';\nimport chalk from 'chalk';\n\nclass IosThemeInstructions {\n async run() {\n await Theme.print('ios');\n\n const { isConfirmed: themeValuesConfirmed } = await confirmThemeValues();\n\n if (!themeValuesConfirmed) {\n console.log(\n chalk.yellow('\\nPlease adjust the values in package.json.\\n')\n );\n return;\n }\n\n console.log(\n `\\n${chalk.yellow('To theme the Persona Inquiry flow for iOS:')}`\n );\n console.log(\n 'Add the theme values to the Persona Inquiry SDK client by using the `.iosTheme` builder function'\n );\n\n console.log(`\n ${chalk.green(`+ import { persona } from '../package.json'`)}\n ...\n Inquiry.fromTemplate(selectedTemplateId)\n .onSuccess(handleSuccess)\n .onCanceled(handleCanceled)\n .onFailed(handleFailed)\n .onError(handleError)\n ${chalk.green('+ .iosTheme(persona.iosTheme)')}\n .build()\n .start();\n ...\n `);\n }\n}\n\nexport default new IosThemeInstructions();\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
const {
|
|
3
|
+
PersonaInquiry2
|
|
4
|
+
} = NativeModules;
|
|
5
|
+
export class Versions {
|
|
6
|
+
/**
|
|
7
|
+
* @return version of the underlying Android/iOS Inquiry SDK
|
|
8
|
+
*/
|
|
9
|
+
static nativeSdkVersion() {
|
|
10
|
+
return PersonaInquiry2.getConstants().INQUIRY_SDK_VERSION;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["versions.ts"],"names":["NativeModules","PersonaInquiry2","Versions","nativeSdkVersion","getConstants","INQUIRY_SDK_VERSION"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAsBD,aAA5B;AAEA,OAAO,MAAME,QAAN,CAAe;AACpB;AACF;AACA;AACyB,SAAhBC,gBAAgB,GAAW;AAChC,WAAOF,eAAe,CAACG,YAAhB,GAA+BC,mBAAtC;AACD;;AANmB","sourcesContent":["import { NativeModules } from 'react-native';\n\nconst { PersonaInquiry2 } = NativeModules;\n\nexport class Versions {\n /**\n * @return version of the underlying Android/iOS Inquiry SDK\n */\n static nativeSdkVersion(): String {\n return PersonaInquiry2.getConstants().INQUIRY_SDK_VERSION;\n }\n}\n"]}
|
|
File without changes
|