react-native-bootsplash 4.0.0-alpha.1 → 4.0.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/LICENSE +1 -1
- package/README.md +80 -144
- package/RNBootSplash.podspec +1 -1
- package/{ReactNativeBootsplash.res → RNBootsplash.res} +4 -8
- package/android/build.gradle +13 -11
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.java +2 -11
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashModule.java +79 -198
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashPackage.java +6 -2
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashTask.java +1 -15
- package/bsconfig.json +0 -1
- package/dist/commonjs/generate.js +128 -110
- package/dist/commonjs/generate.js.map +1 -1
- package/dist/commonjs/index.js +5 -21
- package/dist/commonjs/index.js.map +1 -1
- package/dist/module/generate.js +124 -107
- package/dist/module/generate.js.map +1 -1
- package/dist/module/index.js +3 -15
- package/dist/module/index.js.map +1 -1
- package/dist/typescript/generate.d.ts +4 -4
- package/dist/typescript/index.d.ts +0 -6
- package/ios/RNBootSplash.h +3 -13
- package/ios/RNBootSplash.m +44 -99
- package/ios/RNBootSplash.xcodeproj/project.pbxproj +2 -2
- package/package.json +19 -21
- package/react-native.config.js +21 -8
- package/src/generate.ts +116 -138
- package/src/index.ts +0 -14
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashDialog.java +0 -36
- package/android/src/main/res/anim/bootsplash_fade_in.xml +0 -7
- package/android/src/main/res/anim/bootsplash_fade_out.xml +0 -7
- package/android/src/main/res/values/styles.xml +0 -13
package/dist/module/generate.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import fs from "fs-extra";
|
|
3
|
-
import
|
|
3
|
+
import Jimp from "jimp";
|
|
4
4
|
import path from "path";
|
|
5
5
|
const logoFileName = "bootsplash_logo";
|
|
6
|
-
const xcassetName = "BootSplashLogo";
|
|
6
|
+
const xcassetName = "BootSplashLogo"; // https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22
|
|
7
|
+
|
|
8
|
+
const splashScreenIconSizeNoBackground = 288;
|
|
7
9
|
const androidColorName = "bootsplash_background";
|
|
8
10
|
const androidColorRegex = /<color name="bootsplash_background">#\w+<\/color>/g;
|
|
9
11
|
const ContentsJson = `{
|
|
@@ -31,11 +33,12 @@ const ContentsJson = `{
|
|
|
31
33
|
}
|
|
32
34
|
`;
|
|
33
35
|
|
|
34
|
-
const getStoryboard =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const getStoryboard = _ref => {
|
|
37
|
+
let {
|
|
38
|
+
height,
|
|
39
|
+
width,
|
|
40
|
+
backgroundColor: hex
|
|
41
|
+
} = _ref;
|
|
39
42
|
const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);
|
|
40
43
|
const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);
|
|
41
44
|
const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);
|
|
@@ -87,18 +90,8 @@ const getStoryboard = ({
|
|
|
87
90
|
`;
|
|
88
91
|
};
|
|
89
92
|
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
|
|
93
|
-
<item android:drawable="@color/${androidColorName}" />
|
|
94
|
-
|
|
95
|
-
<item>
|
|
96
|
-
<bitmap android:src="@mipmap/${logoFileName}" android:gravity="center" />
|
|
97
|
-
</item>
|
|
98
|
-
</layer-list>
|
|
99
|
-
`;
|
|
100
|
-
|
|
101
|
-
const log = (text, dim = false) => {
|
|
93
|
+
const log = function (text) {
|
|
94
|
+
let dim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
102
95
|
console.log(dim ? chalk.dim(text) : text);
|
|
103
96
|
};
|
|
104
97
|
|
|
@@ -110,76 +103,71 @@ const toFullHexadecimal = hex => {
|
|
|
110
103
|
return up.length === 4 ? "#" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3] : up;
|
|
111
104
|
};
|
|
112
105
|
|
|
113
|
-
export const generate = async
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
106
|
+
export const generate = async _ref2 => {
|
|
107
|
+
let {
|
|
108
|
+
android,
|
|
109
|
+
ios,
|
|
110
|
+
workingPath,
|
|
111
|
+
logoPath,
|
|
112
|
+
backgroundColor,
|
|
113
|
+
logoWidth,
|
|
114
|
+
flavor,
|
|
115
|
+
assetsPath
|
|
116
|
+
} = _ref2;
|
|
117
|
+
|
|
123
118
|
if (!isValidHexadecimal(backgroundColor)) {
|
|
124
119
|
throw new Error("--background-color value is not a valid hexadecimal color.");
|
|
125
120
|
}
|
|
126
121
|
|
|
127
|
-
const image = await
|
|
122
|
+
const image = await Jimp.read(logoPath);
|
|
128
123
|
const backgroundColorHex = toFullHexadecimal(backgroundColor);
|
|
129
|
-
const images = [];
|
|
130
124
|
|
|
131
125
|
const getHeight = size => Math.ceil(size * (image.bitmap.height / image.bitmap.width));
|
|
132
126
|
|
|
133
|
-
const
|
|
134
|
-
"@1x": logoWidth,
|
|
135
|
-
"@1,5x": logoWidth * 1.5,
|
|
136
|
-
"@2x": logoWidth * 2,
|
|
137
|
-
"@3x": logoWidth * 3,
|
|
138
|
-
"@4x": logoWidth * 4
|
|
139
|
-
};
|
|
140
|
-
const height = {
|
|
141
|
-
"@1x": getHeight(width["@1x"]),
|
|
142
|
-
"@1,5x": getHeight(width["@1,5x"]),
|
|
143
|
-
"@2x": getHeight(width["@2x"]),
|
|
144
|
-
"@3x": getHeight(width["@3x"]),
|
|
145
|
-
"@4x": getHeight(width["@4x"])
|
|
146
|
-
};
|
|
127
|
+
const logWrite = (emoji, filePath, dimensions) => log(`${emoji} ${path.relative(workingPath, filePath)}` + (dimensions != null ? ` (${dimensions.width}x${dimensions.height})` : ""));
|
|
147
128
|
|
|
148
129
|
if (assetsPath && fs.existsSync(assetsPath)) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
130
|
+
log(`\n ${chalk.underline("Assets")}`);
|
|
131
|
+
await Promise.all([{
|
|
132
|
+
ratio: 1,
|
|
133
|
+
suffix: ""
|
|
153
134
|
}, {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
height: height["@1,5x"]
|
|
135
|
+
ratio: 1.5,
|
|
136
|
+
suffix: "@1,5x"
|
|
157
137
|
}, {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
height: height["@2x"]
|
|
138
|
+
ratio: 2,
|
|
139
|
+
suffix: "@2x"
|
|
161
140
|
}, {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
height: height["@3x"]
|
|
141
|
+
ratio: 3,
|
|
142
|
+
suffix: "@3x"
|
|
165
143
|
}, {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
144
|
+
ratio: 4,
|
|
145
|
+
suffix: "@4x"
|
|
146
|
+
}].map(_ref3 => {
|
|
147
|
+
let {
|
|
148
|
+
ratio,
|
|
149
|
+
suffix
|
|
150
|
+
} = _ref3;
|
|
151
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
152
|
+
const filePath = path.resolve(assetsPath, fileName);
|
|
153
|
+
const width = logoWidth * ratio;
|
|
154
|
+
const height = getHeight(width);
|
|
155
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
156
|
+
logWrite("✨", filePath, {
|
|
157
|
+
width,
|
|
158
|
+
height
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}));
|
|
170
162
|
}
|
|
171
163
|
|
|
172
164
|
if (android) {
|
|
165
|
+
log(`\n ${chalk.underline("Android")}`);
|
|
173
166
|
const appPath = android.appName ? path.resolve(android.sourceDir, android.appName) : path.resolve(android.sourceDir); // @react-native-community/cli 2.x & 3.x support
|
|
174
167
|
|
|
175
168
|
const resPath = path.resolve(appPath, "src", flavor, "res");
|
|
176
|
-
const drawablePath = path.resolve(resPath, "drawable");
|
|
177
169
|
const valuesPath = path.resolve(resPath, "values");
|
|
178
|
-
fs.ensureDirSync(drawablePath);
|
|
179
170
|
fs.ensureDirSync(valuesPath);
|
|
180
|
-
const bootSplashXmlPath = path.resolve(drawablePath, "bootsplash.xml");
|
|
181
|
-
fs.writeFileSync(bootSplashXmlPath, bootSplashXml, "utf-8");
|
|
182
|
-
log(`✨ ${path.relative(workingDirectory, bootSplashXmlPath)}`, true);
|
|
183
171
|
const colorsXmlPath = path.resolve(valuesPath, "colors.xml");
|
|
184
172
|
const colorsXmlEntry = `<color name="${androidColorName}">${backgroundColorHex}</color>`;
|
|
185
173
|
|
|
@@ -192,47 +180,64 @@ export const generate = async ({
|
|
|
192
180
|
fs.writeFileSync(colorsXmlPath, colorsXml.replace(/<\/resources>/g, ` ${colorsXmlEntry}\n</resources>`), "utf-8");
|
|
193
181
|
}
|
|
194
182
|
|
|
195
|
-
|
|
183
|
+
logWrite("✏️ ", colorsXmlPath);
|
|
196
184
|
} else {
|
|
197
185
|
fs.writeFileSync(colorsXmlPath, `<resources>\n ${colorsXmlEntry}\n</resources>\n`, "utf-8");
|
|
198
|
-
|
|
186
|
+
logWrite("✨", colorsXmlPath);
|
|
199
187
|
}
|
|
200
188
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
height: height["@1x"]
|
|
189
|
+
await Promise.all([{
|
|
190
|
+
ratio: 1,
|
|
191
|
+
directory: "mipmap-mdpi"
|
|
205
192
|
}, {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
height: height["@1,5x"]
|
|
193
|
+
ratio: 1.5,
|
|
194
|
+
directory: "mipmap-hdpi"
|
|
209
195
|
}, {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
height: height["@2x"]
|
|
196
|
+
ratio: 2,
|
|
197
|
+
directory: "mipmap-xhdpi"
|
|
213
198
|
}, {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
height: height["@3x"]
|
|
199
|
+
ratio: 3,
|
|
200
|
+
directory: "mipmap-xxhdpi"
|
|
217
201
|
}, {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
202
|
+
ratio: 4,
|
|
203
|
+
directory: "mipmap-xxxhdpi"
|
|
204
|
+
}].map(_ref4 => {
|
|
205
|
+
let {
|
|
206
|
+
ratio,
|
|
207
|
+
directory
|
|
208
|
+
} = _ref4;
|
|
209
|
+
const fileName = `${logoFileName}.png`;
|
|
210
|
+
const filePath = path.resolve(resPath, directory, fileName);
|
|
211
|
+
const width = logoWidth * ratio;
|
|
212
|
+
const height = getHeight(width);
|
|
213
|
+
const canvasSize = splashScreenIconSizeNoBackground * ratio; // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images
|
|
214
|
+
|
|
215
|
+
const canvas = new Jimp(canvasSize, canvasSize, 0xffffff00);
|
|
216
|
+
const logo = image.clone().resize(width, height);
|
|
217
|
+
const x = (canvasSize - width) / 2;
|
|
218
|
+
const y = (canvasSize - height) / 2;
|
|
219
|
+
return canvas.blit(logo, x, y).quality(100).writeAsync(filePath).then(() => {
|
|
220
|
+
logWrite("✨", filePath, {
|
|
221
|
+
width: canvasSize,
|
|
222
|
+
height: canvasSize
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}));
|
|
222
226
|
}
|
|
223
227
|
|
|
224
228
|
if (ios) {
|
|
229
|
+
log(`\n ${chalk.underline("iOS")}`);
|
|
225
230
|
const projectPath = ios.projectPath.replace(/.xcodeproj$/, "");
|
|
226
231
|
const imagesPath = path.resolve(projectPath, "Images.xcassets");
|
|
227
232
|
|
|
228
233
|
if (fs.existsSync(projectPath)) {
|
|
229
234
|
const storyboardPath = path.resolve(projectPath, "BootSplash.storyboard");
|
|
230
235
|
fs.writeFileSync(storyboardPath, getStoryboard({
|
|
231
|
-
height:
|
|
232
|
-
width:
|
|
236
|
+
height: getHeight(logoWidth),
|
|
237
|
+
width: logoWidth,
|
|
233
238
|
backgroundColor: backgroundColorHex
|
|
234
239
|
}), "utf-8");
|
|
235
|
-
|
|
240
|
+
logWrite("✨", storyboardPath);
|
|
236
241
|
} else {
|
|
237
242
|
log(`No "${projectPath}" directory found. Skipping iOS storyboard generation…`);
|
|
238
243
|
}
|
|
@@ -241,31 +246,43 @@ export const generate = async ({
|
|
|
241
246
|
const imageSetPath = path.resolve(imagesPath, xcassetName + ".imageset");
|
|
242
247
|
fs.ensureDirSync(imageSetPath);
|
|
243
248
|
fs.writeFileSync(path.resolve(imageSetPath, "Contents.json"), ContentsJson, "utf-8");
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
height: height["@1x"]
|
|
249
|
+
await Promise.all([{
|
|
250
|
+
ratio: 1,
|
|
251
|
+
suffix: ""
|
|
248
252
|
}, {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
height: height["@2x"]
|
|
253
|
+
ratio: 2,
|
|
254
|
+
suffix: "@2x"
|
|
252
255
|
}, {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
256
|
+
ratio: 3,
|
|
257
|
+
suffix: "@3x"
|
|
258
|
+
}].map(_ref5 => {
|
|
259
|
+
let {
|
|
260
|
+
ratio,
|
|
261
|
+
suffix
|
|
262
|
+
} = _ref5;
|
|
263
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
264
|
+
const filePath = path.resolve(imageSetPath, fileName);
|
|
265
|
+
const width = logoWidth * ratio;
|
|
266
|
+
const height = getHeight(width);
|
|
267
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
268
|
+
logWrite("✨", filePath, {
|
|
269
|
+
width,
|
|
270
|
+
height
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
}));
|
|
257
274
|
} else {
|
|
258
275
|
log(`No "${imagesPath}" directory found. Skipping iOS images generation…`);
|
|
259
276
|
}
|
|
260
277
|
}
|
|
261
278
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
279
|
+
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("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛")}
|
|
285
|
+
`);
|
|
269
286
|
log(`✅ Done! Thanks for using ${chalk.underline("react-native-bootsplash")}.`);
|
|
270
287
|
};
|
|
271
288
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["generate.ts"],"names":["chalk","fs","jimp","path","logoFileName","xcassetName","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","bootSplashXml","log","text","dim","console","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingDirectory","logoPath","logoWidth","flavor","assetsPath","Error","image","read","backgroundColorHex","images","getHeight","size","Math","ceil","bitmap","existsSync","push","filePath","resolve","appPath","appName","sourceDir","resPath","drawablePath","valuesPath","ensureDirSync","bootSplashXmlPath","writeFileSync","relative","colorsXmlPath","colorsXmlEntry","colorsXml","readFileSync","match","replace","projectPath","imagesPath","storyboardPath","imageSetPath","Promise","all","map","clone","cover","writeAsync","then","underline"],"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\";\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 bootSplashXml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\" android:opacity=\"opaque\">\n <item android:drawable=\"@color/${androidColorName}\" />\n\n <item>\n <bitmap android:src=\"@mipmap/${logoFileName}\" android:gravity=\"center\" />\n </item>\n</layer-list>\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 workingDirectory,\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 workingDirectory: string;\n logoPath: string;\n backgroundColor: string;\n logoWidth: number;\n flavor: string;\n assetsPath?: string;\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 images: {\n filePath: string;\n width: number;\n height: number;\n }[] = [];\n\n const getHeight = (size: number) =>\n Math.ceil(size * (image.bitmap.height / image.bitmap.width));\n\n const width = {\n \"@1x\": logoWidth,\n \"@1,5x\": logoWidth * 1.5,\n \"@2x\": logoWidth * 2,\n \"@3x\": logoWidth * 3,\n \"@4x\": logoWidth * 4,\n };\n\n const height = {\n \"@1x\": getHeight(width[\"@1x\"]),\n \"@1,5x\": getHeight(width[\"@1,5x\"]),\n \"@2x\": getHeight(width[\"@2x\"]),\n \"@3x\": getHeight(width[\"@3x\"]),\n \"@4x\": getHeight(width[\"@4x\"]),\n };\n\n if (assetsPath && fs.existsSync(assetsPath)) {\n images.push(\n {\n filePath: path.resolve(assetsPath, logoFileName + \".png\"),\n width: width[\"@1x\"],\n height: height[\"@1x\"],\n },\n {\n filePath: path.resolve(assetsPath, logoFileName + \"@1,5x.png\"),\n width: width[\"@1,5x\"],\n height: height[\"@1,5x\"],\n },\n {\n filePath: path.resolve(assetsPath, logoFileName + \"@2x.png\"),\n width: width[\"@2x\"],\n height: height[\"@2x\"],\n },\n {\n filePath: path.resolve(assetsPath, logoFileName + \"@3x.png\"),\n width: width[\"@3x\"],\n height: height[\"@3x\"],\n },\n {\n filePath: path.resolve(assetsPath, logoFileName + \"@4x.png\"),\n width: width[\"@4x\"],\n height: height[\"@4x\"],\n },\n );\n }\n\n if (android) {\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 drawablePath = path.resolve(resPath, \"drawable\");\n const valuesPath = path.resolve(resPath, \"values\");\n\n fs.ensureDirSync(drawablePath);\n fs.ensureDirSync(valuesPath);\n\n const bootSplashXmlPath = path.resolve(drawablePath, \"bootsplash.xml\");\n fs.writeFileSync(bootSplashXmlPath, bootSplashXml, \"utf-8\");\n log(`✨ ${path.relative(workingDirectory, bootSplashXmlPath)}`, true);\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 log(`✏️ ${path.relative(workingDirectory, colorsXmlPath)}`, true);\n } else {\n fs.writeFileSync(\n colorsXmlPath,\n `<resources>\\n ${colorsXmlEntry}\\n</resources>\\n`,\n \"utf-8\",\n );\n\n log(`✨ ${path.relative(workingDirectory, colorsXmlPath)}`, true);\n }\n\n images.push(\n {\n filePath: path.resolve(resPath, \"mipmap-mdpi\", logoFileName + \".png\"),\n width: width[\"@1x\"],\n height: height[\"@1x\"],\n },\n {\n filePath: path.resolve(resPath, \"mipmap-hdpi\", logoFileName + \".png\"),\n width: width[\"@1,5x\"],\n height: height[\"@1,5x\"],\n },\n {\n filePath: path.resolve(resPath, \"mipmap-xhdpi\", logoFileName + \".png\"),\n width: width[\"@2x\"],\n height: height[\"@2x\"],\n },\n {\n filePath: path.resolve(resPath, \"mipmap-xxhdpi\", logoFileName + \".png\"),\n width: width[\"@3x\"],\n height: height[\"@3x\"],\n },\n {\n filePath: path.resolve(\n resPath,\n \"mipmap-xxxhdpi\",\n logoFileName + \".png\",\n ),\n width: width[\"@4x\"],\n height: height[\"@4x\"],\n },\n );\n }\n\n if (ios) {\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: height[\"@1x\"],\n width: width[\"@1x\"],\n backgroundColor: backgroundColorHex,\n }),\n \"utf-8\",\n );\n\n log(`✨ ${path.relative(workingDirectory, storyboardPath)}`, true);\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 images.push(\n {\n filePath: path.resolve(imageSetPath, logoFileName + \".png\"),\n width: width[\"@1x\"],\n height: height[\"@1x\"],\n },\n {\n filePath: path.resolve(imageSetPath, logoFileName + \"@2x.png\"),\n width: width[\"@2x\"],\n height: height[\"@2x\"],\n },\n {\n filePath: path.resolve(imageSetPath, logoFileName + \"@3x.png\"),\n width: width[\"@3x\"],\n height: height[\"@3x\"],\n },\n );\n } else {\n log(\n `No \"${imagesPath}\" directory found. Skipping iOS images generation…`,\n );\n }\n }\n\n await Promise.all(\n images.map(({ filePath, width, height }) =>\n image\n .clone()\n .cover(width, height)\n .writeAsync(filePath)\n .then(() => {\n log(\n `✨ ${path.relative(\n workingDirectory,\n filePath,\n )} (${width}x${height})`,\n true,\n );\n }),\n ),\n );\n\n log(\n `✅ Done! Thanks for using ${chalk.underline(\"react-native-bootsplash\")}.`,\n );\n};\n"]}
|
|
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"]}
|
package/dist/module/index.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
var _NativeModule$statusB, _NativeModule$navigat;
|
|
2
|
-
|
|
3
1
|
import { NativeModules } from "react-native";
|
|
4
2
|
const NativeModule = NativeModules.RNBootSplash;
|
|
5
|
-
export function
|
|
6
|
-
|
|
7
|
-
fade: false,
|
|
8
|
-
...config
|
|
9
|
-
}.fade).then(() => {});
|
|
10
|
-
}
|
|
11
|
-
export function hide(config = {}) {
|
|
3
|
+
export function hide() {
|
|
4
|
+
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
12
5
|
return NativeModule.hide({
|
|
13
6
|
fade: false,
|
|
14
7
|
...config
|
|
@@ -17,13 +10,8 @@ export function hide(config = {}) {
|
|
|
17
10
|
export function getVisibilityStatus() {
|
|
18
11
|
return NativeModule.getVisibilityStatus();
|
|
19
12
|
}
|
|
20
|
-
export const statusBarHeight = (_NativeModule$statusB = NativeModule.statusBarHeight) !== null && _NativeModule$statusB !== void 0 ? _NativeModule$statusB : 0;
|
|
21
|
-
export const navigationBarHeight = (_NativeModule$navigat = NativeModule.navigationBarHeight) !== null && _NativeModule$navigat !== void 0 ? _NativeModule$navigat : 0;
|
|
22
13
|
export default {
|
|
23
|
-
show,
|
|
24
14
|
hide,
|
|
25
|
-
getVisibilityStatus
|
|
26
|
-
statusBarHeight,
|
|
27
|
-
navigationBarHeight
|
|
15
|
+
getVisibilityStatus
|
|
28
16
|
};
|
|
29
17
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeModule","RNBootSplash","
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeModule","RNBootSplash","hide","config","fade","then","getVisibilityStatus"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AAKA,MAAMC,YAGL,GAAGD,aAAa,CAACE,YAHlB;AAKA,OAAO,SAASC,IAAT,GAAkD;AAAA,MAApCC,MAAoC,uEAAnB,EAAmB;AACvD,SAAOH,YAAY,CAACE,IAAb,CAAkB;AAAEE,IAAAA,IAAI,EAAE,KAAR;AAAe,OAAGD;AAAlB,IAA2BC,IAA7C,EAAmDC,IAAnD,CAAwD,MAAM,CAAE,CAAhE,CAAP;AACD;AAED,OAAO,SAASC,mBAAT,GAA0D;AAC/D,SAAON,YAAY,CAACM,mBAAb,EAAP;AACD;AAED,eAAe;AACbJ,EAAAA,IADa;AAEbI,EAAAA;AAFa,CAAf","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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const generate: ({ android, ios,
|
|
1
|
+
export declare const generate: ({ android, ios, workingPath, logoPath, backgroundColor, logoWidth, flavor, assetsPath, }: {
|
|
2
2
|
android: {
|
|
3
3
|
sourceDir: string;
|
|
4
4
|
appName: string;
|
|
@@ -6,10 +6,10 @@ export declare const generate: ({ android, ios, workingDirectory, logoPath, back
|
|
|
6
6
|
ios: {
|
|
7
7
|
projectPath: string;
|
|
8
8
|
} | null;
|
|
9
|
-
|
|
9
|
+
workingPath: string;
|
|
10
10
|
logoPath: string;
|
|
11
|
+
assetsPath?: string | undefined;
|
|
11
12
|
backgroundColor: string;
|
|
12
|
-
logoWidth: number;
|
|
13
13
|
flavor: string;
|
|
14
|
-
|
|
14
|
+
logoWidth: number;
|
|
15
15
|
}) => Promise<void>;
|
|
@@ -2,16 +2,10 @@ export declare type VisibilityStatus = "visible" | "hidden" | "transitioning";
|
|
|
2
2
|
export declare type Config = {
|
|
3
3
|
fade?: boolean;
|
|
4
4
|
};
|
|
5
|
-
export declare function show(config?: Config): Promise<void>;
|
|
6
5
|
export declare function hide(config?: Config): Promise<void>;
|
|
7
6
|
export declare function getVisibilityStatus(): Promise<VisibilityStatus>;
|
|
8
|
-
export declare const statusBarHeight: number;
|
|
9
|
-
export declare const navigationBarHeight: number;
|
|
10
7
|
declare const _default: {
|
|
11
|
-
show: typeof show;
|
|
12
8
|
hide: typeof hide;
|
|
13
9
|
getVisibilityStatus: typeof getVisibilityStatus;
|
|
14
|
-
statusBarHeight: number;
|
|
15
|
-
navigationBarHeight: number;
|
|
16
10
|
};
|
|
17
11
|
export default _default;
|
package/ios/RNBootSplash.h
CHANGED
|
@@ -1,29 +1,19 @@
|
|
|
1
1
|
#import <React/RCTBridgeModule.h>
|
|
2
2
|
#import <React/RCTRootView.h>
|
|
3
3
|
|
|
4
|
-
typedef enum {
|
|
5
|
-
RNBootSplashTaskTypeShow = 0,
|
|
6
|
-
RNBootSplashTaskTypeHide = 1
|
|
7
|
-
} RNBootSplashTaskType;
|
|
8
|
-
|
|
9
4
|
typedef enum {
|
|
10
5
|
RNBootSplashStatusVisible = 0,
|
|
11
6
|
RNBootSplashStatusHidden = 1,
|
|
12
|
-
|
|
13
|
-
RNBootSplashStatusTransitioningToHidden = 3
|
|
7
|
+
RNBootSplashStatusTransitioning = 2
|
|
14
8
|
} RNBootSplashStatus;
|
|
15
9
|
|
|
16
10
|
@interface RNBootSplashTask : NSObject
|
|
17
11
|
|
|
18
|
-
@property (nonatomic, readonly) RNBootSplashTaskType type;
|
|
19
12
|
@property (nonatomic, readonly) BOOL fade;
|
|
20
13
|
@property (nonatomic, readonly, strong) RCTPromiseResolveBlock _Nonnull resolve;
|
|
21
|
-
@property (nonatomic, readonly, strong) RCTPromiseRejectBlock _Nonnull reject;
|
|
22
14
|
|
|
23
|
-
- (instancetype _Nonnull)
|
|
24
|
-
|
|
25
|
-
resolver:(RCTPromiseResolveBlock _Nonnull)resolve
|
|
26
|
-
rejecter:(RCTPromiseRejectBlock _Nonnull)reject;
|
|
15
|
+
- (instancetype _Nonnull)initWithFade:(BOOL)fade
|
|
16
|
+
resolver:(RCTPromiseResolveBlock _Nonnull)resolve;
|
|
27
17
|
|
|
28
18
|
@end
|
|
29
19
|
|