react-native-bootsplash 4.1.6 → 4.2.2

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # 🚀 react-native-bootsplash
2
2
 
3
- Show a bootsplash during app startup. Hide it when you are ready.<br>
3
+ Show a splash screen during app startup. Hide it when you are ready.<br>
4
4
  **For migration from the v3, check the [`MIGRATION.md` guide](https://github.com/zoontek/react-native-bootsplash/blob/master/MIGRATION.md).**
5
5
 
6
6
  [![npm version](https://badge.fury.io/js/react-native-bootsplash.svg)](https://www.npmjs.org/package/react-native-bootsplash)
@@ -238,7 +238,7 @@ dependencies {
238
238
  // …
239
239
 
240
240
  implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
241
- implementation "androidx.core:core-splashscreen:1.0.0-beta01" // Add this line
241
+ implementation "androidx.core:core-splashscreen:1.0.0-rc01" // Add this line
242
242
 
243
243
  // …
244
244
  ```
@@ -369,7 +369,7 @@ function App() {
369
369
 
370
370
  **🤙 A more complex example is available in the [`/example` folder](example).**
371
371
 
372
- ## Using React Navigation
372
+ ## With React Navigation
373
373
 
374
374
  If you are using React Navigation, you can hide the splash screen once the navigation container and all children have finished mounting by using the `onReady` function.
375
375
 
@@ -387,6 +387,11 @@ function App() {
387
387
  }
388
388
  ```
389
389
 
390
+
391
+ ## With react-native-bars
392
+
393
+ In order to keep fully transparent status and navigation bars on Android once the splash screen is hidden (and control them), this library play nicely with [react-native-bars](https://github.com/zoontek/react-native-bars). Check the [README](https://github.com/zoontek/react-native-bars/blob/main/README.md#with-react-native-bootsplash) for more informations.
394
+
390
395
  ## Testing with Jest
391
396
 
392
397
  Testing code which uses this library requires some setup since we need to mock the native methods.
@@ -12,7 +12,7 @@ buildscript {
12
12
  mavenCentral()
13
13
  }
14
14
  dependencies {
15
- classpath("com.android.tools.build:gradle:7.0.4")
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-beta01")}"
52
+ implementation "androidx.core:core-splashscreen:${safeExtGet("androidXSplashScreenVersion", "1.0.0-rc01")}"
53
53
  }
@@ -3,8 +3,10 @@ package com.zoontek.rnbootsplash;
3
3
  import android.animation.Animator;
4
4
  import android.animation.AnimatorListenerAdapter;
5
5
  import android.app.Activity;
6
+ import android.os.Build;
6
7
  import android.view.View;
7
8
  import android.view.animation.AccelerateInterpolator;
9
+ import android.window.SplashScreenView;
8
10
 
9
11
  import androidx.annotation.NonNull;
10
12
  import androidx.annotation.Nullable;
@@ -86,7 +88,13 @@ public class RNBootSplashModule extends ReactContextBaseJavaModule {
86
88
  @Override
87
89
  public void onAnimationEnd(Animator animation) {
88
90
  super.onAnimationEnd(animation);
89
- splashScreenViewProvider.remove();
91
+
92
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
93
+ splashScreenViewProvider.remove();
94
+ } else {
95
+ // Avoid calling applyThemesSystemBarAppearance
96
+ ((SplashScreenView) splashScreenView).remove();
97
+ }
90
98
  }
91
99
  }).start();
92
100
  }
@@ -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 ? _chalk.default.dim(text) : text);
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 ${_chalk.default.underline("Assets")}`);
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 ${_chalk.default.underline("Android")}`);
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 ${_chalk.default.underline("iOS")}`);
252
- const projectPath = ios.projectPath.replace(/.xcodeproj$/, "");
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
- ${_chalk.default.blue("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓")}
311
- ${_chalk.default.blue("┃")} 💖 ${_chalk.default.bold("Love this library? Consider sponsoring!")} ${_chalk.default.blue("┃")}
312
- ${_chalk.default.blue("┃")} One-time amounts are available. ${_chalk.default.blue("┃")}
313
- ${_chalk.default.blue("┃")} ${_chalk.default.underline("https://github.com/sponsors/zoontek")} ${_chalk.default.blue("┃")}
314
- ${_chalk.default.blue("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛")}
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 ${_chalk.default.underline("react-native-bootsplash")}.`);
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,"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"],"sources":["generate.ts"],"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"],"mappings":"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"}
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,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 ? chalk.dim(text) : text);
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 ${chalk.underline("Assets")}`);
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 ${chalk.underline("Android")}`);
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 ${chalk.underline("iOS")}`);
230
- const projectPath = ios.projectPath.replace(/.xcodeproj$/, "");
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
- ${chalk.blue("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓")}
281
- ${chalk.blue("┃")} 💖 ${chalk.bold("Love this library? Consider sponsoring!")} ${chalk.blue("┃")}
282
- ${chalk.blue("┃")} One-time amounts are available. ${chalk.blue("┃")}
283
- ${chalk.blue("┃")} ${chalk.underline("https://github.com/sponsors/zoontek")} ${chalk.blue("┃")}
284
- ${chalk.blue("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛")}
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 ${chalk.underline("react-native-bootsplash")}.`);
288
+ log(`✅ Done! Thanks for using ${pc.underline("react-native-bootsplash")}.`);
287
289
  };
288
290
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"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"],"sources":["generate.ts"],"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"],"mappings":"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"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-bootsplash",
3
- "version": "4.1.6",
3
+ "version": "4.2.2",
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>",
@@ -59,23 +59,25 @@
59
59
  "react-native": ">=0.65.0"
60
60
  },
61
61
  "dependencies": {
62
- "chalk": "^4.1.2",
63
62
  "fs-extra": "^10.1.0",
64
- "jimp": "^0.16.1"
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
- "@types/react": "^17",
68
70
  "jpeg-js": "0.4.4"
69
71
  },
70
72
  "devDependencies": {
71
73
  "@types/fs-extra": "^9.0.13",
72
- "@types/react-native": "^0.67.8",
74
+ "@types/react-native": "^0.68.0",
73
75
  "lint-staged": "^13.0.2",
74
76
  "prettier": "^2.7.1",
75
77
  "prettier-plugin-organize-imports": "^3.0.0",
76
- "react": "^17.0.2",
77
- "react-native": "^0.68.2",
78
- "react-native-builder-bob": "^0.18.2",
78
+ "react": "^18.0.0",
79
+ "react-native": "^0.69.0",
80
+ "react-native-builder-bob": "^0.18.3",
79
81
  "rescript": "^9.1.4",
80
82
  "typescript": "^4.7.4"
81
83
  }
@@ -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(/\.(xcodeproj|xcworkspace)$/, ""),
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 ? chalk.dim(text) : text);
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 ${chalk.underline("Assets")}`);
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 ${chalk.underline("Android")}`);
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 ${chalk.underline("iOS")}`);
276
+ log(`\n ${pc.underline("iOS")}`);
277
277
 
278
- const projectPath = ios.projectPath.replace(/.xcodeproj$/, "");
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
- ${chalk.blue("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓")}
341
- ${chalk.blue("┃")} 💖 ${chalk.bold(
340
+ ${pc.blue("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓")}
341
+ ${pc.blue("┃")} 💖 ${pc.bold(
342
342
  "Love this library? Consider sponsoring!",
343
- )} ${chalk.blue("┃")}
344
- ${chalk.blue("┃")} One-time amounts are available. ${chalk.blue(
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
- )} ${chalk.blue("┃")}
350
- ${chalk.blue("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛")}
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
  };