react-native-bootsplash 4.1.4 β 4.2.0
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/README.md +19 -7
- package/android/.npmignore +11 -0
- package/android/build.gradle +2 -2
- package/dist/commonjs/generate.js +15 -13
- package/dist/commonjs/generate.js.map +1 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/module/generate.js +14 -12
- package/dist/module/generate.js.map +1 -1
- package/dist/module/index.js.map +1 -1
- package/example/android/app/debug.keystore +0 -0
- package/ios/.npmignore +8 -0
- package/package.json +18 -15
- package/react-native.config.js +8 -1
- package/src/generate.ts +14 -18
package/README.md
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
# π react-native-bootsplash
|
|
2
2
|
|
|
3
|
-
<a href="https://github.com/sponsors/zoontek">
|
|
4
|
-
<img align="right" width="160" alt="This library helped you? Consider sponsoring!" src=".github/funding-octocat.svg">
|
|
5
|
-
</a>
|
|
6
|
-
|
|
7
3
|
Show a bootsplash during app startup. Hide it when you are ready.<br>
|
|
8
4
|
**For migration from the v3, check the [`MIGRATION.md` guide](https://github.com/zoontek/react-native-bootsplash/blob/master/MIGRATION.md).**
|
|
9
5
|
|
|
@@ -18,6 +14,16 @@ Show a bootsplash during app startup. Hide it when you are ready.<br>
|
|
|
18
14
|
<img height="500" src="https://raw.githubusercontent.com/zoontek/react-native-bootsplash/HEAD/docs/android_demo.gif?raw=true" alt="android demo"></img>
|
|
19
15
|
</p>
|
|
20
16
|
|
|
17
|
+
## Funding
|
|
18
|
+
|
|
19
|
+
<a href="https://github.com/sponsors/zoontek">
|
|
20
|
+
<img align="right" width="150" alt="This library helped you? Consider sponsoring!" src=".github/funding-octocat.svg">
|
|
21
|
+
</a>
|
|
22
|
+
|
|
23
|
+
This module is provided **as is**, I work on it in my free time.
|
|
24
|
+
|
|
25
|
+
If your company uses it in a production app, consider sponsoring this project π°. You also can contact me for **premium** enterprise support, help with issues, prioritize bugfixes, feature requests, etc.
|
|
26
|
+
|
|
21
27
|
## Support
|
|
22
28
|
|
|
23
29
|
| version | react-native version |
|
|
@@ -25,7 +31,7 @@ Show a bootsplash during app startup. Hide it when you are ready.<br>
|
|
|
25
31
|
| 4.0.0+ | 0.65.0+ |
|
|
26
32
|
| 3.0.0+ | 0.63.0+ |
|
|
27
33
|
|
|
28
|
-
##
|
|
34
|
+
## Setup
|
|
29
35
|
|
|
30
36
|
```bash
|
|
31
37
|
$ npm install --save react-native-bootsplash
|
|
@@ -172,7 +178,9 @@ ios/YourProjectName/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.p
|
|
|
172
178
|
|
|
173
179
|
### iOS
|
|
174
180
|
|
|
175
|
-
_β οΈ
|
|
181
|
+
_β οΈΒ Β Only `.storyboard` files are supported ([Apple has deprecated other methods in April 2020](https://developer.apple.com/news/?id=01132020b))._
|
|
182
|
+
|
|
183
|
+
---
|
|
176
184
|
|
|
177
185
|
Edit the `ios/YourProjectName/AppDelegate.mm` file:
|
|
178
186
|
|
|
@@ -206,6 +214,10 @@ Set the `BootSplash.storyboard` as launch screen file:
|
|
|
206
214
|
|
|
207
215
|
### Android
|
|
208
216
|
|
|
217
|
+
_β οΈΒ Β On Android 12, the splash screen will not appear if you start your app from the terminal / Android Studio. To see it, kill your app and restart it in normal conditions (tap on your app icon in the app launcher)._
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
209
221
|
1. As this library only support Android 6+, you probably have to edit your `android/build.gradle` file:
|
|
210
222
|
|
|
211
223
|
```gradle
|
|
@@ -226,7 +238,7 @@ dependencies {
|
|
|
226
238
|
// β¦
|
|
227
239
|
|
|
228
240
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
|
229
|
-
implementation "androidx.core:core-splashscreen:1.0.0-
|
|
241
|
+
implementation "androidx.core:core-splashscreen:1.0.0-rc01" // Add this line
|
|
230
242
|
|
|
231
243
|
// β¦
|
|
232
244
|
```
|
package/android/build.gradle
CHANGED
|
@@ -12,7 +12,7 @@ buildscript {
|
|
|
12
12
|
mavenCentral()
|
|
13
13
|
}
|
|
14
14
|
dependencies {
|
|
15
|
-
classpath("com.android.tools.build:gradle:7.
|
|
15
|
+
classpath("com.android.tools.build:gradle:7.1.1")
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -49,5 +49,5 @@ repositories {
|
|
|
49
49
|
dependencies {
|
|
50
50
|
//noinspection GradleDynamicVersion
|
|
51
51
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
52
|
-
implementation "androidx.core:core-splashscreen:${safeExtGet("androidXSplashScreenVersion", "1.0.0-
|
|
52
|
+
implementation "androidx.core:core-splashscreen:${safeExtGet("androidXSplashScreenVersion", "1.0.0-rc01")}"
|
|
53
53
|
}
|
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.generate = void 0;
|
|
7
7
|
|
|
8
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
8
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
11
9
|
|
|
12
10
|
var _jimp = _interopRequireDefault(require("jimp"));
|
|
13
11
|
|
|
14
12
|
var _path = _interopRequireDefault(require("path"));
|
|
15
13
|
|
|
14
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
15
|
+
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
const logoFileName = "bootsplash_logo";
|
|
@@ -105,7 +105,7 @@ const getStoryboard = _ref => {
|
|
|
105
105
|
|
|
106
106
|
const log = function (text) {
|
|
107
107
|
let dim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
108
|
-
console.log(dim ?
|
|
108
|
+
console.log(dim ? _picocolors.default.dim(text) : text);
|
|
109
109
|
};
|
|
110
110
|
|
|
111
111
|
const isValidHexadecimal = value => /^#?([0-9A-F]{3}){1,2}$/i.test(value);
|
|
@@ -140,7 +140,7 @@ const generate = async _ref2 => {
|
|
|
140
140
|
const logWrite = (emoji, filePath, dimensions) => log(`${emoji} ${_path.default.relative(workingPath, filePath)}` + (dimensions != null ? ` (${dimensions.width}x${dimensions.height})` : ""));
|
|
141
141
|
|
|
142
142
|
if (assetsPath && _fsExtra.default.existsSync(assetsPath)) {
|
|
143
|
-
log(`\n ${
|
|
143
|
+
log(`\n ${_picocolors.default.underline("Assets")}`);
|
|
144
144
|
await Promise.all([{
|
|
145
145
|
ratio: 1,
|
|
146
146
|
suffix: ""
|
|
@@ -177,7 +177,7 @@ const generate = async _ref2 => {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
if (android) {
|
|
180
|
-
log(`\n ${
|
|
180
|
+
log(`\n ${_picocolors.default.underline("Android")}`);
|
|
181
181
|
const appPath = android.appName ? _path.default.resolve(android.sourceDir, android.appName) : _path.default.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support
|
|
182
182
|
|
|
183
183
|
const resPath = _path.default.resolve(appPath, "src", flavor, "res");
|
|
@@ -248,8 +248,10 @@ const generate = async _ref2 => {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
if (ios) {
|
|
251
|
-
log(`\n ${
|
|
252
|
-
const
|
|
251
|
+
log(`\n ${_picocolors.default.underline("iOS")}`);
|
|
252
|
+
const {
|
|
253
|
+
projectPath
|
|
254
|
+
} = ios;
|
|
253
255
|
|
|
254
256
|
const imagesPath = _path.default.resolve(projectPath, "Images.xcassets");
|
|
255
257
|
|
|
@@ -307,13 +309,13 @@ const generate = async _ref2 => {
|
|
|
307
309
|
}
|
|
308
310
|
|
|
309
311
|
log(`
|
|
310
|
-
${
|
|
311
|
-
${
|
|
312
|
-
${
|
|
313
|
-
${
|
|
314
|
-
${
|
|
312
|
+
${_picocolors.default.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
313
|
+
${_picocolors.default.blue("β")} π ${_picocolors.default.bold("Love this library? Consider sponsoring!")} ${_picocolors.default.blue("β")}
|
|
314
|
+
${_picocolors.default.blue("β")} One-time amounts are available. ${_picocolors.default.blue("β")}
|
|
315
|
+
${_picocolors.default.blue("β")} ${_picocolors.default.underline("https://github.com/sponsors/zoontek")} ${_picocolors.default.blue("β")}
|
|
316
|
+
${_picocolors.default.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
315
317
|
`);
|
|
316
|
-
log(`β
Done! Thanks for using ${
|
|
318
|
+
log(`β
Done! Thanks for using ${_picocolors.default.underline("react-native-bootsplash")}.`);
|
|
317
319
|
};
|
|
318
320
|
|
|
319
321
|
exports.generate = generate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["generate.ts"],"names":["logoFileName","xcassetName","splashScreenIconSizeNoBackground","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","log","text","dim","console","chalk","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingPath","logoPath","logoWidth","flavor","assetsPath","Error","image","Jimp","read","backgroundColorHex","getHeight","size","Math","ceil","bitmap","logWrite","emoji","filePath","dimensions","path","relative","fs","existsSync","underline","Promise","all","ratio","suffix","map","fileName","resolve","clone","resize","quality","writeAsync","then","appPath","appName","sourceDir","resPath","valuesPath","ensureDirSync","colorsXmlPath","colorsXmlEntry","colorsXml","readFileSync","match","writeFileSync","replace","directory","canvasSize","canvas","logo","x","y","blit","projectPath","imagesPath","storyboardPath","imageSetPath","blue","bold"],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport Jimp from \"jimp\";\nimport path from \"path\";\n\nconst logoFileName = \"bootsplash_logo\";\nconst xcassetName = \"BootSplashLogo\";\n// https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22\nconst splashScreenIconSizeNoBackground = 288;\nconst androidColorName = \"bootsplash_background\";\nconst androidColorRegex = /<color name=\"bootsplash_background\">#\\w+<\\/color>/g;\n\nconst ContentsJson = `{\n \"images\": [\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}.png\",\n \"scale\": \"1x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@2x.png\",\n \"scale\": \"2x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@3x.png\",\n \"scale\": \"3x\"\n }\n ],\n \"info\": {\n \"version\": 1,\n \"author\": \"xcode\"\n }\n}\n`;\n\nconst getStoryboard = ({\n height,\n width,\n backgroundColor: hex,\n}: {\n height: number;\n width: number;\n backgroundColor: string;\n}) => {\n const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);\n const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);\n const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"17147\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"17120\"/>\n <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <!--View Controller-->\n <scene sceneID=\"EHf-IW-A2E\">\n <objects>\n <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n <view key=\"view\" autoresizesSubviews=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n <autoresizingMask key=\"autoresizingMask\"/>\n <subviews>\n <imageView autoresizesSubviews=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" image=\"BootSplashLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3lX-Ut-9ad\">\n <rect key=\"frame\" x=\"${(375 - width) / 2}\" y=\"${\n (667 - height) / 2\n }\" width=\"${width}\" height=\"${height}\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" image=\"YES\" notEnabled=\"YES\"/>\n </accessibility>\n </imageView>\n </subviews>\n <viewLayoutGuide key=\"safeArea\" id=\"Bcu-3y-fUS\"/>\n <color key=\"backgroundColor\" red=\"${r}\" green=\"${g}\" blue=\"${b}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" notEnabled=\"YES\"/>\n </accessibility>\n <constraints>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"Fh9-Fy-1nT\"/>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"nvB-Ic-PnI\"/>\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n <point key=\"canvasLocation\" x=\"0.0\" y=\"0.0\"/>\n </scene>\n </scenes>\n <resources>\n <image name=\"${xcassetName}\" width=\"${width}\" height=\"${height}\"/>\n </resources>\n</document>\n`;\n};\n\nconst log = (text: string, dim = false) => {\n console.log(dim ? chalk.dim(text) : text);\n};\n\nconst isValidHexadecimal = (value: string) =>\n /^#?([0-9A-F]{3}){1,2}$/i.test(value);\n\nconst toFullHexadecimal = (hex: string) => {\n const prefixed = hex[0] === \"#\" ? hex : `#${hex}`;\n const up = prefixed.toUpperCase();\n\n return up.length === 4\n ? \"#\" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3]\n : up;\n};\n\nexport const generate = async ({\n android,\n ios,\n\n workingPath,\n logoPath,\n backgroundColor,\n logoWidth,\n flavor,\n assetsPath,\n}: {\n android: {\n sourceDir: string;\n appName: string;\n } | null;\n ios: {\n projectPath: string;\n } | null;\n\n workingPath: string;\n logoPath: string;\n assetsPath?: string;\n\n backgroundColor: string;\n flavor: string;\n logoWidth: number;\n}) => {\n if (!isValidHexadecimal(backgroundColor)) {\n throw new Error(\n \"--background-color value is not a valid hexadecimal color.\",\n );\n }\n\n const image = await Jimp.read(logoPath);\n const backgroundColorHex = toFullHexadecimal(backgroundColor);\n\n const getHeight = (size: number) =>\n Math.ceil(size * (image.bitmap.height / image.bitmap.width));\n\n const logWrite = (\n emoji: string,\n filePath: string,\n dimensions?: { width: number; height: number },\n ) =>\n log(\n `${emoji} ${path.relative(workingPath, filePath)}` +\n (dimensions != null\n ? ` (${dimensions.width}x${dimensions.height})`\n : \"\"),\n );\n\n if (assetsPath && fs.existsSync(assetsPath)) {\n log(`\\n ${chalk.underline(\"Assets\")}`);\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 1.5, suffix: \"@1,5x\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n { ratio: 4, suffix: \"@4x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(assetsPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n }\n\n if (android) {\n log(`\\n ${chalk.underline(\"Android\")}`);\n\n const appPath = android.appName\n ? path.resolve(android.sourceDir, android.appName)\n : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support\n\n const resPath = path.resolve(appPath, \"src\", flavor, \"res\");\n const valuesPath = path.resolve(resPath, \"values\");\n\n fs.ensureDirSync(valuesPath);\n\n const colorsXmlPath = path.resolve(valuesPath, \"colors.xml\");\n const colorsXmlEntry = `<color name=\"${androidColorName}\">${backgroundColorHex}</color>`;\n\n if (fs.existsSync(colorsXmlPath)) {\n const colorsXml = fs.readFileSync(colorsXmlPath, \"utf-8\");\n\n if (colorsXml.match(androidColorRegex)) {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(androidColorRegex, colorsXmlEntry),\n \"utf-8\",\n );\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(\n /<\\/resources>/g,\n ` ${colorsXmlEntry}\\n</resources>`,\n ),\n \"utf-8\",\n );\n }\n\n logWrite(\"βοΈ \", colorsXmlPath);\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n `<resources>\\n ${colorsXmlEntry}\\n</resources>\\n`,\n \"utf-8\",\n );\n\n logWrite(\"β¨\", colorsXmlPath);\n }\n\n await Promise.all(\n [\n { ratio: 1, directory: \"mipmap-mdpi\" },\n { ratio: 1.5, directory: \"mipmap-hdpi\" },\n { ratio: 2, directory: \"mipmap-xhdpi\" },\n { ratio: 3, directory: \"mipmap-xxhdpi\" },\n { ratio: 4, directory: \"mipmap-xxxhdpi\" },\n ].map(({ ratio, directory }) => {\n const fileName = `${logoFileName}.png`;\n const filePath = path.resolve(resPath, directory, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n const canvasSize = splashScreenIconSizeNoBackground * ratio;\n\n // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images\n const canvas = new Jimp(canvasSize, canvasSize, 0xffffff00);\n const logo = image.clone().resize(width, height);\n\n const x = (canvasSize - width) / 2;\n const y = (canvasSize - height) / 2;\n\n return canvas\n .blit(logo, x, y)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width: canvasSize, height: canvasSize });\n });\n }),\n );\n }\n\n if (ios) {\n log(`\\n ${chalk.underline(\"iOS\")}`);\n\n const projectPath = ios.projectPath.replace(/.xcodeproj$/, \"\");\n const imagesPath = path.resolve(projectPath, \"Images.xcassets\");\n\n if (fs.existsSync(projectPath)) {\n const storyboardPath = path.resolve(projectPath, \"BootSplash.storyboard\");\n\n fs.writeFileSync(\n storyboardPath,\n getStoryboard({\n height: getHeight(logoWidth),\n width: logoWidth,\n backgroundColor: backgroundColorHex,\n }),\n \"utf-8\",\n );\n\n logWrite(\"β¨\", storyboardPath);\n } else {\n log(\n `No \"${projectPath}\" directory found. Skipping iOS storyboard generationβ¦`,\n );\n }\n\n if (fs.existsSync(imagesPath)) {\n const imageSetPath = path.resolve(imagesPath, xcassetName + \".imageset\");\n fs.ensureDirSync(imageSetPath);\n\n fs.writeFileSync(\n path.resolve(imageSetPath, \"Contents.json\"),\n ContentsJson,\n \"utf-8\",\n );\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(imageSetPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n } else {\n log(\n `No \"${imagesPath}\" directory found. Skipping iOS images generationβ¦`,\n );\n }\n }\n\n log(`\n ${chalk.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n ${chalk.blue(\"β\")} π ${chalk.bold(\n \"Love this library? Consider sponsoring!\",\n )} ${chalk.blue(\"β\")}\n ${chalk.blue(\"β\")} One-time amounts are available. ${chalk.blue(\n \"β\",\n )}\n ${chalk.blue(\"β\")} ${chalk.underline(\n \"https://github.com/sponsors/zoontek\",\n )} ${chalk.blue(\"β\")}\n ${chalk.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n`);\n\n log(\n `β
Done! Thanks for using ${chalk.underline(\"react-native-bootsplash\")}.`,\n );\n};\n"]}
|
|
1
|
+
{"version":3,"names":["logoFileName","xcassetName","splashScreenIconSizeNoBackground","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","log","text","dim","console","pc","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingPath","logoPath","logoWidth","flavor","assetsPath","Error","image","Jimp","read","backgroundColorHex","getHeight","size","Math","ceil","bitmap","logWrite","emoji","filePath","dimensions","path","relative","fs","existsSync","underline","Promise","all","ratio","suffix","map","fileName","resolve","clone","resize","quality","writeAsync","then","appPath","appName","sourceDir","resPath","valuesPath","ensureDirSync","colorsXmlPath","colorsXmlEntry","colorsXml","readFileSync","match","writeFileSync","replace","directory","canvasSize","canvas","logo","x","y","blit","projectPath","imagesPath","storyboardPath","imageSetPath","blue","bold"],"sources":["generate.ts"],"sourcesContent":["import fs from \"fs-extra\";\nimport Jimp from \"jimp\";\nimport path from \"path\";\nimport pc from \"picocolors\";\n\nconst logoFileName = \"bootsplash_logo\";\nconst xcassetName = \"BootSplashLogo\";\n// https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22\nconst splashScreenIconSizeNoBackground = 288;\nconst androidColorName = \"bootsplash_background\";\nconst androidColorRegex = /<color name=\"bootsplash_background\">#\\w+<\\/color>/g;\n\nconst ContentsJson = `{\n \"images\": [\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}.png\",\n \"scale\": \"1x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@2x.png\",\n \"scale\": \"2x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@3x.png\",\n \"scale\": \"3x\"\n }\n ],\n \"info\": {\n \"version\": 1,\n \"author\": \"xcode\"\n }\n}\n`;\n\nconst getStoryboard = ({\n height,\n width,\n backgroundColor: hex,\n}: {\n height: number;\n width: number;\n backgroundColor: string;\n}) => {\n const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);\n const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);\n const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"17147\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"17120\"/>\n <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <!--View Controller-->\n <scene sceneID=\"EHf-IW-A2E\">\n <objects>\n <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n <view key=\"view\" autoresizesSubviews=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n <autoresizingMask key=\"autoresizingMask\"/>\n <subviews>\n <imageView autoresizesSubviews=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" image=\"BootSplashLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3lX-Ut-9ad\">\n <rect key=\"frame\" x=\"${(375 - width) / 2}\" y=\"${\n (667 - height) / 2\n }\" width=\"${width}\" height=\"${height}\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" image=\"YES\" notEnabled=\"YES\"/>\n </accessibility>\n </imageView>\n </subviews>\n <viewLayoutGuide key=\"safeArea\" id=\"Bcu-3y-fUS\"/>\n <color key=\"backgroundColor\" red=\"${r}\" green=\"${g}\" blue=\"${b}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" notEnabled=\"YES\"/>\n </accessibility>\n <constraints>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"Fh9-Fy-1nT\"/>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"nvB-Ic-PnI\"/>\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n <point key=\"canvasLocation\" x=\"0.0\" y=\"0.0\"/>\n </scene>\n </scenes>\n <resources>\n <image name=\"${xcassetName}\" width=\"${width}\" height=\"${height}\"/>\n </resources>\n</document>\n`;\n};\n\nconst log = (text: string, dim = false) => {\n console.log(dim ? pc.dim(text) : text);\n};\n\nconst isValidHexadecimal = (value: string) =>\n /^#?([0-9A-F]{3}){1,2}$/i.test(value);\n\nconst toFullHexadecimal = (hex: string) => {\n const prefixed = hex[0] === \"#\" ? hex : `#${hex}`;\n const up = prefixed.toUpperCase();\n\n return up.length === 4\n ? \"#\" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3]\n : up;\n};\n\nexport const generate = async ({\n android,\n ios,\n\n workingPath,\n logoPath,\n backgroundColor,\n logoWidth,\n flavor,\n assetsPath,\n}: {\n android: {\n sourceDir: string;\n appName: string;\n } | null;\n ios: {\n projectPath: string;\n } | null;\n\n workingPath: string;\n logoPath: string;\n assetsPath?: string;\n\n backgroundColor: string;\n flavor: string;\n logoWidth: number;\n}) => {\n if (!isValidHexadecimal(backgroundColor)) {\n throw new Error(\n \"--background-color value is not a valid hexadecimal color.\",\n );\n }\n\n const image = await Jimp.read(logoPath);\n const backgroundColorHex = toFullHexadecimal(backgroundColor);\n\n const getHeight = (size: number) =>\n Math.ceil(size * (image.bitmap.height / image.bitmap.width));\n\n const logWrite = (\n emoji: string,\n filePath: string,\n dimensions?: { width: number; height: number },\n ) =>\n log(\n `${emoji} ${path.relative(workingPath, filePath)}` +\n (dimensions != null\n ? ` (${dimensions.width}x${dimensions.height})`\n : \"\"),\n );\n\n if (assetsPath && fs.existsSync(assetsPath)) {\n log(`\\n ${pc.underline(\"Assets\")}`);\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 1.5, suffix: \"@1,5x\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n { ratio: 4, suffix: \"@4x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(assetsPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n }\n\n if (android) {\n log(`\\n ${pc.underline(\"Android\")}`);\n\n const appPath = android.appName\n ? path.resolve(android.sourceDir, android.appName)\n : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support\n\n const resPath = path.resolve(appPath, \"src\", flavor, \"res\");\n const valuesPath = path.resolve(resPath, \"values\");\n\n fs.ensureDirSync(valuesPath);\n\n const colorsXmlPath = path.resolve(valuesPath, \"colors.xml\");\n const colorsXmlEntry = `<color name=\"${androidColorName}\">${backgroundColorHex}</color>`;\n\n if (fs.existsSync(colorsXmlPath)) {\n const colorsXml = fs.readFileSync(colorsXmlPath, \"utf-8\");\n\n if (colorsXml.match(androidColorRegex)) {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(androidColorRegex, colorsXmlEntry),\n \"utf-8\",\n );\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(\n /<\\/resources>/g,\n ` ${colorsXmlEntry}\\n</resources>`,\n ),\n \"utf-8\",\n );\n }\n\n logWrite(\"βοΈ \", colorsXmlPath);\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n `<resources>\\n ${colorsXmlEntry}\\n</resources>\\n`,\n \"utf-8\",\n );\n\n logWrite(\"β¨\", colorsXmlPath);\n }\n\n await Promise.all(\n [\n { ratio: 1, directory: \"mipmap-mdpi\" },\n { ratio: 1.5, directory: \"mipmap-hdpi\" },\n { ratio: 2, directory: \"mipmap-xhdpi\" },\n { ratio: 3, directory: \"mipmap-xxhdpi\" },\n { ratio: 4, directory: \"mipmap-xxxhdpi\" },\n ].map(({ ratio, directory }) => {\n const fileName = `${logoFileName}.png`;\n const filePath = path.resolve(resPath, directory, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n const canvasSize = splashScreenIconSizeNoBackground * ratio;\n\n // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images\n const canvas = new Jimp(canvasSize, canvasSize, 0xffffff00);\n const logo = image.clone().resize(width, height);\n\n const x = (canvasSize - width) / 2;\n const y = (canvasSize - height) / 2;\n\n return canvas\n .blit(logo, x, y)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width: canvasSize, height: canvasSize });\n });\n }),\n );\n }\n\n if (ios) {\n log(`\\n ${pc.underline(\"iOS\")}`);\n\n const { projectPath } = ios;\n const imagesPath = path.resolve(projectPath, \"Images.xcassets\");\n\n if (fs.existsSync(projectPath)) {\n const storyboardPath = path.resolve(projectPath, \"BootSplash.storyboard\");\n\n fs.writeFileSync(\n storyboardPath,\n getStoryboard({\n height: getHeight(logoWidth),\n width: logoWidth,\n backgroundColor: backgroundColorHex,\n }),\n \"utf-8\",\n );\n\n logWrite(\"β¨\", storyboardPath);\n } else {\n log(\n `No \"${projectPath}\" directory found. Skipping iOS storyboard generationβ¦`,\n );\n }\n\n if (fs.existsSync(imagesPath)) {\n const imageSetPath = path.resolve(imagesPath, xcassetName + \".imageset\");\n fs.ensureDirSync(imageSetPath);\n\n fs.writeFileSync(\n path.resolve(imageSetPath, \"Contents.json\"),\n ContentsJson,\n \"utf-8\",\n );\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(imageSetPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n } else {\n log(\n `No \"${imagesPath}\" directory found. Skipping iOS images generationβ¦`,\n );\n }\n }\n\n log(`\n ${pc.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n ${pc.blue(\"β\")} π ${pc.bold(\n \"Love this library? Consider sponsoring!\",\n )} ${pc.blue(\"β\")}\n ${pc.blue(\"β\")} One-time amounts are available. ${pc.blue(\"β\")}\n ${pc.blue(\"β\")} ${pc.underline(\n \"https://github.com/sponsors/zoontek\",\n )} ${pc.blue(\"β\")}\n ${pc.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n`);\n\n log(`β
Done! Thanks for using ${pc.underline(\"react-native-bootsplash\")}.`);\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["NativeModule","NativeModules","RNBootSplash","hide","config","fade","then","getVisibilityStatus"],"sources":["index.ts"],"sourcesContent":["import { NativeModules } from \"react-native\";\n\nexport type VisibilityStatus = \"visible\" | \"hidden\" | \"transitioning\";\nexport type Config = { fade?: boolean };\n\nconst NativeModule: {\n hide: (fade: boolean) => Promise<true>;\n getVisibilityStatus: () => Promise<VisibilityStatus>;\n} = NativeModules.RNBootSplash;\n\nexport function hide(config: Config = {}): Promise<void> {\n return NativeModule.hide({ fade: false, ...config }.fade).then(() => {});\n}\n\nexport function getVisibilityStatus(): Promise<VisibilityStatus> {\n return NativeModule.getVisibilityStatus();\n}\n\nexport default {\n hide,\n getVisibilityStatus,\n};\n"],"mappings":";;;;;;;;;AAAA;;AAKA,MAAMA,YAGL,GAAGC,0BAAA,CAAcC,YAHlB;;AAKO,SAASC,IAAT,GAAkD;EAAA,IAApCC,MAAoC,uEAAnB,EAAmB;EACvD,OAAOJ,YAAY,CAACG,IAAb,CAAkB;IAAEE,IAAI,EAAE,KAAR;IAAe,GAAGD;EAAlB,EAA2BC,IAA7C,EAAmDC,IAAnD,CAAwD,MAAM,CAAE,CAAhE,CAAP;AACD;;AAEM,SAASC,mBAAT,GAA0D;EAC/D,OAAOP,YAAY,CAACO,mBAAb,EAAP;AACD;;eAEc;EACbJ,IADa;EAEbI;AAFa,C"}
|
package/dist/module/generate.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import fs from "fs-extra";
|
|
3
2
|
import Jimp from "jimp";
|
|
4
3
|
import path from "path";
|
|
4
|
+
import pc from "picocolors";
|
|
5
5
|
const logoFileName = "bootsplash_logo";
|
|
6
6
|
const xcassetName = "BootSplashLogo"; // https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22
|
|
7
7
|
|
|
@@ -92,7 +92,7 @@ const getStoryboard = _ref => {
|
|
|
92
92
|
|
|
93
93
|
const log = function (text) {
|
|
94
94
|
let dim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
95
|
-
console.log(dim ?
|
|
95
|
+
console.log(dim ? pc.dim(text) : text);
|
|
96
96
|
};
|
|
97
97
|
|
|
98
98
|
const isValidHexadecimal = value => /^#?([0-9A-F]{3}){1,2}$/i.test(value);
|
|
@@ -127,7 +127,7 @@ export const generate = async _ref2 => {
|
|
|
127
127
|
const logWrite = (emoji, filePath, dimensions) => log(`${emoji} ${path.relative(workingPath, filePath)}` + (dimensions != null ? ` (${dimensions.width}x${dimensions.height})` : ""));
|
|
128
128
|
|
|
129
129
|
if (assetsPath && fs.existsSync(assetsPath)) {
|
|
130
|
-
log(`\n ${
|
|
130
|
+
log(`\n ${pc.underline("Assets")}`);
|
|
131
131
|
await Promise.all([{
|
|
132
132
|
ratio: 1,
|
|
133
133
|
suffix: ""
|
|
@@ -162,7 +162,7 @@ export const generate = async _ref2 => {
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
if (android) {
|
|
165
|
-
log(`\n ${
|
|
165
|
+
log(`\n ${pc.underline("Android")}`);
|
|
166
166
|
const appPath = android.appName ? path.resolve(android.sourceDir, android.appName) : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support
|
|
167
167
|
|
|
168
168
|
const resPath = path.resolve(appPath, "src", flavor, "res");
|
|
@@ -226,8 +226,10 @@ export const generate = async _ref2 => {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
if (ios) {
|
|
229
|
-
log(`\n ${
|
|
230
|
-
const
|
|
229
|
+
log(`\n ${pc.underline("iOS")}`);
|
|
230
|
+
const {
|
|
231
|
+
projectPath
|
|
232
|
+
} = ios;
|
|
231
233
|
const imagesPath = path.resolve(projectPath, "Images.xcassets");
|
|
232
234
|
|
|
233
235
|
if (fs.existsSync(projectPath)) {
|
|
@@ -277,12 +279,12 @@ export const generate = async _ref2 => {
|
|
|
277
279
|
}
|
|
278
280
|
|
|
279
281
|
log(`
|
|
280
|
-
${
|
|
281
|
-
${
|
|
282
|
-
${
|
|
283
|
-
${
|
|
284
|
-
${
|
|
282
|
+
${pc.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
283
|
+
${pc.blue("β")} π ${pc.bold("Love this library? Consider sponsoring!")} ${pc.blue("β")}
|
|
284
|
+
${pc.blue("β")} One-time amounts are available. ${pc.blue("β")}
|
|
285
|
+
${pc.blue("β")} ${pc.underline("https://github.com/sponsors/zoontek")} ${pc.blue("β")}
|
|
286
|
+
${pc.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
285
287
|
`);
|
|
286
|
-
log(`β
Done! Thanks for using ${
|
|
288
|
+
log(`β
Done! Thanks for using ${pc.underline("react-native-bootsplash")}.`);
|
|
287
289
|
};
|
|
288
290
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["generate.ts"],"names":["chalk","fs","Jimp","path","logoFileName","xcassetName","splashScreenIconSizeNoBackground","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","log","text","dim","console","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingPath","logoPath","logoWidth","flavor","assetsPath","Error","image","read","backgroundColorHex","getHeight","size","Math","ceil","bitmap","logWrite","emoji","filePath","dimensions","relative","existsSync","underline","Promise","all","ratio","suffix","map","fileName","resolve","clone","resize","quality","writeAsync","then","appPath","appName","sourceDir","resPath","valuesPath","ensureDirSync","colorsXmlPath","colorsXmlEntry","colorsXml","readFileSync","match","writeFileSync","replace","directory","canvasSize","canvas","logo","x","y","blit","projectPath","imagesPath","storyboardPath","imageSetPath","blue","bold"],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport Jimp from \"jimp\";\nimport path from \"path\";\n\nconst logoFileName = \"bootsplash_logo\";\nconst xcassetName = \"BootSplashLogo\";\n// https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22\nconst splashScreenIconSizeNoBackground = 288;\nconst androidColorName = \"bootsplash_background\";\nconst androidColorRegex = /<color name=\"bootsplash_background\">#\\w+<\\/color>/g;\n\nconst ContentsJson = `{\n \"images\": [\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}.png\",\n \"scale\": \"1x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@2x.png\",\n \"scale\": \"2x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@3x.png\",\n \"scale\": \"3x\"\n }\n ],\n \"info\": {\n \"version\": 1,\n \"author\": \"xcode\"\n }\n}\n`;\n\nconst getStoryboard = ({\n height,\n width,\n backgroundColor: hex,\n}: {\n height: number;\n width: number;\n backgroundColor: string;\n}) => {\n const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);\n const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);\n const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"17147\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"17120\"/>\n <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <!--View Controller-->\n <scene sceneID=\"EHf-IW-A2E\">\n <objects>\n <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n <view key=\"view\" autoresizesSubviews=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n <autoresizingMask key=\"autoresizingMask\"/>\n <subviews>\n <imageView autoresizesSubviews=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" image=\"BootSplashLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3lX-Ut-9ad\">\n <rect key=\"frame\" x=\"${(375 - width) / 2}\" y=\"${\n (667 - height) / 2\n }\" width=\"${width}\" height=\"${height}\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" image=\"YES\" notEnabled=\"YES\"/>\n </accessibility>\n </imageView>\n </subviews>\n <viewLayoutGuide key=\"safeArea\" id=\"Bcu-3y-fUS\"/>\n <color key=\"backgroundColor\" red=\"${r}\" green=\"${g}\" blue=\"${b}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" notEnabled=\"YES\"/>\n </accessibility>\n <constraints>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"Fh9-Fy-1nT\"/>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"nvB-Ic-PnI\"/>\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n <point key=\"canvasLocation\" x=\"0.0\" y=\"0.0\"/>\n </scene>\n </scenes>\n <resources>\n <image name=\"${xcassetName}\" width=\"${width}\" height=\"${height}\"/>\n </resources>\n</document>\n`;\n};\n\nconst log = (text: string, dim = false) => {\n console.log(dim ? chalk.dim(text) : text);\n};\n\nconst isValidHexadecimal = (value: string) =>\n /^#?([0-9A-F]{3}){1,2}$/i.test(value);\n\nconst toFullHexadecimal = (hex: string) => {\n const prefixed = hex[0] === \"#\" ? hex : `#${hex}`;\n const up = prefixed.toUpperCase();\n\n return up.length === 4\n ? \"#\" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3]\n : up;\n};\n\nexport const generate = async ({\n android,\n ios,\n\n workingPath,\n logoPath,\n backgroundColor,\n logoWidth,\n flavor,\n assetsPath,\n}: {\n android: {\n sourceDir: string;\n appName: string;\n } | null;\n ios: {\n projectPath: string;\n } | null;\n\n workingPath: string;\n logoPath: string;\n assetsPath?: string;\n\n backgroundColor: string;\n flavor: string;\n logoWidth: number;\n}) => {\n if (!isValidHexadecimal(backgroundColor)) {\n throw new Error(\n \"--background-color value is not a valid hexadecimal color.\",\n );\n }\n\n const image = await Jimp.read(logoPath);\n const backgroundColorHex = toFullHexadecimal(backgroundColor);\n\n const getHeight = (size: number) =>\n Math.ceil(size * (image.bitmap.height / image.bitmap.width));\n\n const logWrite = (\n emoji: string,\n filePath: string,\n dimensions?: { width: number; height: number },\n ) =>\n log(\n `${emoji} ${path.relative(workingPath, filePath)}` +\n (dimensions != null\n ? ` (${dimensions.width}x${dimensions.height})`\n : \"\"),\n );\n\n if (assetsPath && fs.existsSync(assetsPath)) {\n log(`\\n ${chalk.underline(\"Assets\")}`);\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 1.5, suffix: \"@1,5x\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n { ratio: 4, suffix: \"@4x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(assetsPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n }\n\n if (android) {\n log(`\\n ${chalk.underline(\"Android\")}`);\n\n const appPath = android.appName\n ? path.resolve(android.sourceDir, android.appName)\n : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support\n\n const resPath = path.resolve(appPath, \"src\", flavor, \"res\");\n const valuesPath = path.resolve(resPath, \"values\");\n\n fs.ensureDirSync(valuesPath);\n\n const colorsXmlPath = path.resolve(valuesPath, \"colors.xml\");\n const colorsXmlEntry = `<color name=\"${androidColorName}\">${backgroundColorHex}</color>`;\n\n if (fs.existsSync(colorsXmlPath)) {\n const colorsXml = fs.readFileSync(colorsXmlPath, \"utf-8\");\n\n if (colorsXml.match(androidColorRegex)) {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(androidColorRegex, colorsXmlEntry),\n \"utf-8\",\n );\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(\n /<\\/resources>/g,\n ` ${colorsXmlEntry}\\n</resources>`,\n ),\n \"utf-8\",\n );\n }\n\n logWrite(\"βοΈ \", colorsXmlPath);\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n `<resources>\\n ${colorsXmlEntry}\\n</resources>\\n`,\n \"utf-8\",\n );\n\n logWrite(\"β¨\", colorsXmlPath);\n }\n\n await Promise.all(\n [\n { ratio: 1, directory: \"mipmap-mdpi\" },\n { ratio: 1.5, directory: \"mipmap-hdpi\" },\n { ratio: 2, directory: \"mipmap-xhdpi\" },\n { ratio: 3, directory: \"mipmap-xxhdpi\" },\n { ratio: 4, directory: \"mipmap-xxxhdpi\" },\n ].map(({ ratio, directory }) => {\n const fileName = `${logoFileName}.png`;\n const filePath = path.resolve(resPath, directory, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n const canvasSize = splashScreenIconSizeNoBackground * ratio;\n\n // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images\n const canvas = new Jimp(canvasSize, canvasSize, 0xffffff00);\n const logo = image.clone().resize(width, height);\n\n const x = (canvasSize - width) / 2;\n const y = (canvasSize - height) / 2;\n\n return canvas\n .blit(logo, x, y)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width: canvasSize, height: canvasSize });\n });\n }),\n );\n }\n\n if (ios) {\n log(`\\n ${chalk.underline(\"iOS\")}`);\n\n const projectPath = ios.projectPath.replace(/.xcodeproj$/, \"\");\n const imagesPath = path.resolve(projectPath, \"Images.xcassets\");\n\n if (fs.existsSync(projectPath)) {\n const storyboardPath = path.resolve(projectPath, \"BootSplash.storyboard\");\n\n fs.writeFileSync(\n storyboardPath,\n getStoryboard({\n height: getHeight(logoWidth),\n width: logoWidth,\n backgroundColor: backgroundColorHex,\n }),\n \"utf-8\",\n );\n\n logWrite(\"β¨\", storyboardPath);\n } else {\n log(\n `No \"${projectPath}\" directory found. Skipping iOS storyboard generationβ¦`,\n );\n }\n\n if (fs.existsSync(imagesPath)) {\n const imageSetPath = path.resolve(imagesPath, xcassetName + \".imageset\");\n fs.ensureDirSync(imageSetPath);\n\n fs.writeFileSync(\n path.resolve(imageSetPath, \"Contents.json\"),\n ContentsJson,\n \"utf-8\",\n );\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(imageSetPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n } else {\n log(\n `No \"${imagesPath}\" directory found. Skipping iOS images generationβ¦`,\n );\n }\n }\n\n log(`\n ${chalk.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n ${chalk.blue(\"β\")} π ${chalk.bold(\n \"Love this library? Consider sponsoring!\",\n )} ${chalk.blue(\"β\")}\n ${chalk.blue(\"β\")} One-time amounts are available. ${chalk.blue(\n \"β\",\n )}\n ${chalk.blue(\"β\")} ${chalk.underline(\n \"https://github.com/sponsors/zoontek\",\n )} ${chalk.blue(\"β\")}\n ${chalk.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n`);\n\n log(\n `β
Done! Thanks for using ${chalk.underline(\"react-native-bootsplash\")}.`,\n );\n};\n"]}
|
|
1
|
+
{"version":3,"names":["fs","Jimp","path","pc","logoFileName","xcassetName","splashScreenIconSizeNoBackground","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","log","text","dim","console","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingPath","logoPath","logoWidth","flavor","assetsPath","Error","image","read","backgroundColorHex","getHeight","size","Math","ceil","bitmap","logWrite","emoji","filePath","dimensions","relative","existsSync","underline","Promise","all","ratio","suffix","map","fileName","resolve","clone","resize","quality","writeAsync","then","appPath","appName","sourceDir","resPath","valuesPath","ensureDirSync","colorsXmlPath","colorsXmlEntry","colorsXml","readFileSync","match","writeFileSync","replace","directory","canvasSize","canvas","logo","x","y","blit","projectPath","imagesPath","storyboardPath","imageSetPath","blue","bold"],"sources":["generate.ts"],"sourcesContent":["import fs from \"fs-extra\";\nimport Jimp from \"jimp\";\nimport path from \"path\";\nimport pc from \"picocolors\";\n\nconst logoFileName = \"bootsplash_logo\";\nconst xcassetName = \"BootSplashLogo\";\n// https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22\nconst splashScreenIconSizeNoBackground = 288;\nconst androidColorName = \"bootsplash_background\";\nconst androidColorRegex = /<color name=\"bootsplash_background\">#\\w+<\\/color>/g;\n\nconst ContentsJson = `{\n \"images\": [\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}.png\",\n \"scale\": \"1x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@2x.png\",\n \"scale\": \"2x\"\n },\n {\n \"idiom\": \"universal\",\n \"filename\": \"${logoFileName}@3x.png\",\n \"scale\": \"3x\"\n }\n ],\n \"info\": {\n \"version\": 1,\n \"author\": \"xcode\"\n }\n}\n`;\n\nconst getStoryboard = ({\n height,\n width,\n backgroundColor: hex,\n}: {\n height: number;\n width: number;\n backgroundColor: string;\n}) => {\n const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);\n const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);\n const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"17147\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"17120\"/>\n <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <!--View Controller-->\n <scene sceneID=\"EHf-IW-A2E\">\n <objects>\n <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n <view key=\"view\" autoresizesSubviews=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n <autoresizingMask key=\"autoresizingMask\"/>\n <subviews>\n <imageView autoresizesSubviews=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" image=\"BootSplashLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3lX-Ut-9ad\">\n <rect key=\"frame\" x=\"${(375 - width) / 2}\" y=\"${\n (667 - height) / 2\n }\" width=\"${width}\" height=\"${height}\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" image=\"YES\" notEnabled=\"YES\"/>\n </accessibility>\n </imageView>\n </subviews>\n <viewLayoutGuide key=\"safeArea\" id=\"Bcu-3y-fUS\"/>\n <color key=\"backgroundColor\" red=\"${r}\" green=\"${g}\" blue=\"${b}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n <accessibility key=\"accessibilityConfiguration\">\n <accessibilityTraits key=\"traits\" notEnabled=\"YES\"/>\n </accessibility>\n <constraints>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"Fh9-Fy-1nT\"/>\n <constraint firstItem=\"3lX-Ut-9ad\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"nvB-Ic-PnI\"/>\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n <point key=\"canvasLocation\" x=\"0.0\" y=\"0.0\"/>\n </scene>\n </scenes>\n <resources>\n <image name=\"${xcassetName}\" width=\"${width}\" height=\"${height}\"/>\n </resources>\n</document>\n`;\n};\n\nconst log = (text: string, dim = false) => {\n console.log(dim ? pc.dim(text) : text);\n};\n\nconst isValidHexadecimal = (value: string) =>\n /^#?([0-9A-F]{3}){1,2}$/i.test(value);\n\nconst toFullHexadecimal = (hex: string) => {\n const prefixed = hex[0] === \"#\" ? hex : `#${hex}`;\n const up = prefixed.toUpperCase();\n\n return up.length === 4\n ? \"#\" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3]\n : up;\n};\n\nexport const generate = async ({\n android,\n ios,\n\n workingPath,\n logoPath,\n backgroundColor,\n logoWidth,\n flavor,\n assetsPath,\n}: {\n android: {\n sourceDir: string;\n appName: string;\n } | null;\n ios: {\n projectPath: string;\n } | null;\n\n workingPath: string;\n logoPath: string;\n assetsPath?: string;\n\n backgroundColor: string;\n flavor: string;\n logoWidth: number;\n}) => {\n if (!isValidHexadecimal(backgroundColor)) {\n throw new Error(\n \"--background-color value is not a valid hexadecimal color.\",\n );\n }\n\n const image = await Jimp.read(logoPath);\n const backgroundColorHex = toFullHexadecimal(backgroundColor);\n\n const getHeight = (size: number) =>\n Math.ceil(size * (image.bitmap.height / image.bitmap.width));\n\n const logWrite = (\n emoji: string,\n filePath: string,\n dimensions?: { width: number; height: number },\n ) =>\n log(\n `${emoji} ${path.relative(workingPath, filePath)}` +\n (dimensions != null\n ? ` (${dimensions.width}x${dimensions.height})`\n : \"\"),\n );\n\n if (assetsPath && fs.existsSync(assetsPath)) {\n log(`\\n ${pc.underline(\"Assets\")}`);\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 1.5, suffix: \"@1,5x\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n { ratio: 4, suffix: \"@4x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(assetsPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n }\n\n if (android) {\n log(`\\n ${pc.underline(\"Android\")}`);\n\n const appPath = android.appName\n ? path.resolve(android.sourceDir, android.appName)\n : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support\n\n const resPath = path.resolve(appPath, \"src\", flavor, \"res\");\n const valuesPath = path.resolve(resPath, \"values\");\n\n fs.ensureDirSync(valuesPath);\n\n const colorsXmlPath = path.resolve(valuesPath, \"colors.xml\");\n const colorsXmlEntry = `<color name=\"${androidColorName}\">${backgroundColorHex}</color>`;\n\n if (fs.existsSync(colorsXmlPath)) {\n const colorsXml = fs.readFileSync(colorsXmlPath, \"utf-8\");\n\n if (colorsXml.match(androidColorRegex)) {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(androidColorRegex, colorsXmlEntry),\n \"utf-8\",\n );\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n colorsXml.replace(\n /<\\/resources>/g,\n ` ${colorsXmlEntry}\\n</resources>`,\n ),\n \"utf-8\",\n );\n }\n\n logWrite(\"βοΈ \", colorsXmlPath);\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n `<resources>\\n ${colorsXmlEntry}\\n</resources>\\n`,\n \"utf-8\",\n );\n\n logWrite(\"β¨\", colorsXmlPath);\n }\n\n await Promise.all(\n [\n { ratio: 1, directory: \"mipmap-mdpi\" },\n { ratio: 1.5, directory: \"mipmap-hdpi\" },\n { ratio: 2, directory: \"mipmap-xhdpi\" },\n { ratio: 3, directory: \"mipmap-xxhdpi\" },\n { ratio: 4, directory: \"mipmap-xxxhdpi\" },\n ].map(({ ratio, directory }) => {\n const fileName = `${logoFileName}.png`;\n const filePath = path.resolve(resPath, directory, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n const canvasSize = splashScreenIconSizeNoBackground * ratio;\n\n // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images\n const canvas = new Jimp(canvasSize, canvasSize, 0xffffff00);\n const logo = image.clone().resize(width, height);\n\n const x = (canvasSize - width) / 2;\n const y = (canvasSize - height) / 2;\n\n return canvas\n .blit(logo, x, y)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width: canvasSize, height: canvasSize });\n });\n }),\n );\n }\n\n if (ios) {\n log(`\\n ${pc.underline(\"iOS\")}`);\n\n const { projectPath } = ios;\n const imagesPath = path.resolve(projectPath, \"Images.xcassets\");\n\n if (fs.existsSync(projectPath)) {\n const storyboardPath = path.resolve(projectPath, \"BootSplash.storyboard\");\n\n fs.writeFileSync(\n storyboardPath,\n getStoryboard({\n height: getHeight(logoWidth),\n width: logoWidth,\n backgroundColor: backgroundColorHex,\n }),\n \"utf-8\",\n );\n\n logWrite(\"β¨\", storyboardPath);\n } else {\n log(\n `No \"${projectPath}\" directory found. Skipping iOS storyboard generationβ¦`,\n );\n }\n\n if (fs.existsSync(imagesPath)) {\n const imageSetPath = path.resolve(imagesPath, xcassetName + \".imageset\");\n fs.ensureDirSync(imageSetPath);\n\n fs.writeFileSync(\n path.resolve(imageSetPath, \"Contents.json\"),\n ContentsJson,\n \"utf-8\",\n );\n\n await Promise.all(\n [\n { ratio: 1, suffix: \"\" },\n { ratio: 2, suffix: \"@2x\" },\n { ratio: 3, suffix: \"@3x\" },\n ].map(({ ratio, suffix }) => {\n const fileName = `${logoFileName}${suffix}.png`;\n const filePath = path.resolve(imageSetPath, fileName);\n const width = logoWidth * ratio;\n const height = getHeight(width);\n\n return image\n .clone()\n .resize(width, height)\n .quality(100)\n .writeAsync(filePath)\n .then(() => {\n logWrite(\"β¨\", filePath, { width, height });\n });\n }),\n );\n } else {\n log(\n `No \"${imagesPath}\" directory found. Skipping iOS images generationβ¦`,\n );\n }\n }\n\n log(`\n ${pc.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n ${pc.blue(\"β\")} π ${pc.bold(\n \"Love this library? Consider sponsoring!\",\n )} ${pc.blue(\"β\")}\n ${pc.blue(\"β\")} One-time amounts are available. ${pc.blue(\"β\")}\n ${pc.blue(\"β\")} ${pc.underline(\n \"https://github.com/sponsors/zoontek\",\n )} ${pc.blue(\"β\")}\n ${pc.blue(\"βββββββββββββββββββββββββββββββββββββββββββββββββ\")}\n`);\n\n log(`β
Done! Thanks for using ${pc.underline(\"react-native-bootsplash\")}.`);\n};\n"],"mappings":"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"}
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["NativeModules","NativeModule","RNBootSplash","hide","config","fade","then","getVisibilityStatus"],"sources":["index.ts"],"sourcesContent":["import { NativeModules } from \"react-native\";\n\nexport type VisibilityStatus = \"visible\" | \"hidden\" | \"transitioning\";\nexport type Config = { fade?: boolean };\n\nconst NativeModule: {\n hide: (fade: boolean) => Promise<true>;\n getVisibilityStatus: () => Promise<VisibilityStatus>;\n} = NativeModules.RNBootSplash;\n\nexport function hide(config: Config = {}): Promise<void> {\n return NativeModule.hide({ fade: false, ...config }.fade).then(() => {});\n}\n\nexport function getVisibilityStatus(): Promise<VisibilityStatus> {\n return NativeModule.getVisibilityStatus();\n}\n\nexport default {\n hide,\n getVisibilityStatus,\n};\n"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AAKA,MAAMC,YAGL,GAAGD,aAAa,CAACE,YAHlB;AAKA,OAAO,SAASC,IAAT,GAAkD;EAAA,IAApCC,MAAoC,uEAAnB,EAAmB;EACvD,OAAOH,YAAY,CAACE,IAAb,CAAkB;IAAEE,IAAI,EAAE,KAAR;IAAe,GAAGD;EAAlB,EAA2BC,IAA7C,EAAmDC,IAAnD,CAAwD,MAAM,CAAE,CAAhE,CAAP;AACD;AAED,OAAO,SAASC,mBAAT,GAA0D;EAC/D,OAAON,YAAY,CAACM,mBAAb,EAAP;AACD;AAED,eAAe;EACbJ,IADa;EAEbI;AAFa,CAAf"}
|
|
Binary file
|
package/ios/.npmignore
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-bootsplash",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Display a bootsplash on your app starts. Hide it when you want.",
|
|
6
6
|
"author": "Mathieu Acthernoene <zoontek@gmail.com>",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"launchscreen"
|
|
37
37
|
],
|
|
38
38
|
"scripts": {
|
|
39
|
-
"format": "prettier '
|
|
39
|
+
"format": "prettier '**/*' -u -w",
|
|
40
40
|
"setup-hooks": "git config --local core.hooksPath .hooks",
|
|
41
41
|
"prepare": "yarn setup-hooks && bob build"
|
|
42
42
|
},
|
|
@@ -53,29 +53,32 @@
|
|
|
53
53
|
"trailingComma": "all"
|
|
54
54
|
},
|
|
55
55
|
"lint-staged": {
|
|
56
|
-
"
|
|
56
|
+
"*": "prettier -u -w"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"react-native": ">=0.65.0"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
62
|
+
"fs-extra": "^10.1.0",
|
|
63
|
+
"jimp": "^0.16.1",
|
|
64
|
+
"picocolors": "^1.0.0"
|
|
65
|
+
},
|
|
66
|
+
"overrides": {
|
|
67
|
+
"jpeg-js": "0.4.4"
|
|
65
68
|
},
|
|
66
69
|
"resolutions": {
|
|
67
|
-
"
|
|
70
|
+
"jpeg-js": "0.4.4"
|
|
68
71
|
},
|
|
69
72
|
"devDependencies": {
|
|
70
73
|
"@types/fs-extra": "^9.0.13",
|
|
71
|
-
"@types/react-native": "^0.
|
|
72
|
-
"lint-staged": "^
|
|
73
|
-
"prettier": "^2.
|
|
74
|
-
"prettier-plugin-organize-imports": "^
|
|
75
|
-
"react": "^
|
|
76
|
-
"react-native": "^0.
|
|
77
|
-
"react-native-builder-bob": "^0.18.
|
|
74
|
+
"@types/react-native": "^0.68.0",
|
|
75
|
+
"lint-staged": "^13.0.2",
|
|
76
|
+
"prettier": "^2.7.1",
|
|
77
|
+
"prettier-plugin-organize-imports": "^3.0.0",
|
|
78
|
+
"react": "^18.0.0",
|
|
79
|
+
"react-native": "^0.69.0",
|
|
80
|
+
"react-native-builder-bob": "^0.18.3",
|
|
78
81
|
"rescript": "^9.1.4",
|
|
79
|
-
"typescript": "^4.
|
|
82
|
+
"typescript": "^4.7.4"
|
|
80
83
|
}
|
|
81
84
|
}
|
package/react-native.config.js
CHANGED
|
@@ -54,7 +54,14 @@ module.exports = {
|
|
|
54
54
|
|
|
55
55
|
return generate({
|
|
56
56
|
android,
|
|
57
|
-
ios
|
|
57
|
+
ios: {
|
|
58
|
+
...ios,
|
|
59
|
+
// Fix to support previous CLI versions
|
|
60
|
+
projectPath: (ios.xcodeProject
|
|
61
|
+
? path.resolve(ios.sourceDir, ios.xcodeProject.name)
|
|
62
|
+
: ios.projectPath
|
|
63
|
+
).replace(/\.xc(xcodeproj|workspace)$/, ""),
|
|
64
|
+
},
|
|
58
65
|
|
|
59
66
|
workingPath,
|
|
60
67
|
logoPath: path.resolve(workingPath, logoPath),
|
package/src/generate.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import fs from "fs-extra";
|
|
3
2
|
import Jimp from "jimp";
|
|
4
3
|
import path from "path";
|
|
4
|
+
import pc from "picocolors";
|
|
5
5
|
|
|
6
6
|
const logoFileName = "bootsplash_logo";
|
|
7
7
|
const xcassetName = "BootSplashLogo";
|
|
@@ -99,7 +99,7 @@ const getStoryboard = ({
|
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
const log = (text: string, dim = false) => {
|
|
102
|
-
console.log(dim ?
|
|
102
|
+
console.log(dim ? pc.dim(text) : text);
|
|
103
103
|
};
|
|
104
104
|
|
|
105
105
|
const isValidHexadecimal = (value: string) =>
|
|
@@ -166,7 +166,7 @@ export const generate = async ({
|
|
|
166
166
|
);
|
|
167
167
|
|
|
168
168
|
if (assetsPath && fs.existsSync(assetsPath)) {
|
|
169
|
-
log(`\n ${
|
|
169
|
+
log(`\n ${pc.underline("Assets")}`);
|
|
170
170
|
|
|
171
171
|
await Promise.all(
|
|
172
172
|
[
|
|
@@ -194,7 +194,7 @@ export const generate = async ({
|
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
if (android) {
|
|
197
|
-
log(`\n ${
|
|
197
|
+
log(`\n ${pc.underline("Android")}`);
|
|
198
198
|
|
|
199
199
|
const appPath = android.appName
|
|
200
200
|
? path.resolve(android.sourceDir, android.appName)
|
|
@@ -273,9 +273,9 @@ export const generate = async ({
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
if (ios) {
|
|
276
|
-
log(`\n ${
|
|
276
|
+
log(`\n ${pc.underline("iOS")}`);
|
|
277
277
|
|
|
278
|
-
const projectPath = ios
|
|
278
|
+
const { projectPath } = ios;
|
|
279
279
|
const imagesPath = path.resolve(projectPath, "Images.xcassets");
|
|
280
280
|
|
|
281
281
|
if (fs.existsSync(projectPath)) {
|
|
@@ -337,20 +337,16 @@ export const generate = async ({
|
|
|
337
337
|
}
|
|
338
338
|
|
|
339
339
|
log(`
|
|
340
|
-
${
|
|
341
|
-
${
|
|
340
|
+
${pc.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
341
|
+
${pc.blue("β")} π ${pc.bold(
|
|
342
342
|
"Love this library? Consider sponsoring!",
|
|
343
|
-
)} ${
|
|
344
|
-
${
|
|
345
|
-
|
|
346
|
-
)}
|
|
347
|
-
${chalk.blue("β")} ${chalk.underline(
|
|
343
|
+
)} ${pc.blue("β")}
|
|
344
|
+
${pc.blue("β")} One-time amounts are available. ${pc.blue("β")}
|
|
345
|
+
${pc.blue("β")} ${pc.underline(
|
|
348
346
|
"https://github.com/sponsors/zoontek",
|
|
349
|
-
)} ${
|
|
350
|
-
${
|
|
347
|
+
)} ${pc.blue("β")}
|
|
348
|
+
${pc.blue("βββββββββββββββββββββββββββββββββββββββββββββββββ")}
|
|
351
349
|
`);
|
|
352
350
|
|
|
353
|
-
log(
|
|
354
|
-
`β
Done! Thanks for using ${chalk.underline("react-native-bootsplash")}.`,
|
|
355
|
-
);
|
|
351
|
+
log(`β
Done! Thanks for using ${pc.underline("react-native-bootsplash")}.`);
|
|
356
352
|
};
|