react-native-bootsplash 3.2.5 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +65 -140
- package/RNBootSplash.podspec +1 -1
- package/ReactNativeBootsplash.res +2 -6
- package/android/build.gradle +13 -11
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.java +2 -3
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashModule.java +82 -155
- 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/dist/commonjs/generate.js +118 -110
- package/dist/commonjs/generate.js.map +1 -1
- package/dist/commonjs/index.js +4 -12
- package/dist/commonjs/index.js.map +1 -1
- package/dist/module/generate.js +114 -107
- package/dist/module/generate.js.map +1 -1
- package/dist/module/index.js +2 -8
- package/dist/module/index.js.map +1 -1
- package/dist/typescript/generate.d.ts +4 -4
- package/dist/typescript/index.d.ts +0 -2
- package/ios/RNBootSplash.h +3 -13
- package/ios/RNBootSplash.m +44 -98
- package/ios/RNBootSplash.xcodeproj/project.pbxproj +2 -2
- package/package.json +17 -19
- package/react-native.config.js +20 -7
- package/src/generate.ts +98 -139
- package/src/index.ts +4 -6
- package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashActivity.java +0 -55
- package/android/src/main/res/values/ids.xml +0 -3
|
@@ -16,7 +16,9 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
const logoFileName = "bootsplash_logo";
|
|
19
|
-
const xcassetName = "BootSplashLogo";
|
|
19
|
+
const xcassetName = "BootSplashLogo"; // https://github.com/androidx/androidx/blob/androidx-main/core/core-splashscreen/src/main/res/values/dimens.xml#L22
|
|
20
|
+
|
|
21
|
+
const splashScreenIconSizeNoBackground = 288;
|
|
20
22
|
const androidColorName = "bootsplash_background";
|
|
21
23
|
const androidColorRegex = /<color name="bootsplash_background">#\w+<\/color>/g;
|
|
22
24
|
const ContentsJson = `{
|
|
@@ -44,11 +46,12 @@ const ContentsJson = `{
|
|
|
44
46
|
}
|
|
45
47
|
`;
|
|
46
48
|
|
|
47
|
-
const getStoryboard =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
const getStoryboard = _ref => {
|
|
50
|
+
let {
|
|
51
|
+
height,
|
|
52
|
+
width,
|
|
53
|
+
backgroundColor: hex
|
|
54
|
+
} = _ref;
|
|
52
55
|
const r = (parseInt(hex[1] + hex[2], 16) / 255).toPrecision(15);
|
|
53
56
|
const g = (parseInt(hex[3] + hex[4], 16) / 255).toPrecision(15);
|
|
54
57
|
const b = (parseInt(hex[5] + hex[6], 16) / 255).toPrecision(15);
|
|
@@ -100,18 +103,8 @@ const getStoryboard = ({
|
|
|
100
103
|
`;
|
|
101
104
|
};
|
|
102
105
|
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
|
|
106
|
-
<item android:drawable="@color/${androidColorName}" />
|
|
107
|
-
|
|
108
|
-
<item>
|
|
109
|
-
<bitmap android:src="@mipmap/${logoFileName}" android:gravity="center" />
|
|
110
|
-
</item>
|
|
111
|
-
</layer-list>
|
|
112
|
-
`;
|
|
113
|
-
|
|
114
|
-
const log = (text, dim = false) => {
|
|
106
|
+
const log = function (text) {
|
|
107
|
+
let dim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
115
108
|
console.log(dim ? _chalk.default.dim(text) : text);
|
|
116
109
|
};
|
|
117
110
|
|
|
@@ -123,63 +116,63 @@ const toFullHexadecimal = hex => {
|
|
|
123
116
|
return up.length === 4 ? "#" + up[1] + up[1] + up[2] + up[2] + up[3] + up[3] : up;
|
|
124
117
|
};
|
|
125
118
|
|
|
126
|
-
const generate = async
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
119
|
+
const generate = async _ref2 => {
|
|
120
|
+
let {
|
|
121
|
+
android,
|
|
122
|
+
ios,
|
|
123
|
+
workingPath,
|
|
124
|
+
logoPath,
|
|
125
|
+
backgroundColor,
|
|
126
|
+
logoWidth,
|
|
127
|
+
flavor,
|
|
128
|
+
assetsPath
|
|
129
|
+
} = _ref2;
|
|
130
|
+
|
|
136
131
|
if (!isValidHexadecimal(backgroundColor)) {
|
|
137
132
|
throw new Error("--background-color value is not a valid hexadecimal color.");
|
|
138
133
|
}
|
|
139
134
|
|
|
140
135
|
const image = await _jimp.default.read(logoPath);
|
|
141
136
|
const backgroundColorHex = toFullHexadecimal(backgroundColor);
|
|
142
|
-
const images = [];
|
|
143
137
|
|
|
144
138
|
const getHeight = size => Math.ceil(size * (image.bitmap.height / image.bitmap.width));
|
|
145
139
|
|
|
146
|
-
const
|
|
147
|
-
"@1x": logoWidth,
|
|
148
|
-
"@1,5x": logoWidth * 1.5,
|
|
149
|
-
"@2x": logoWidth * 2,
|
|
150
|
-
"@3x": logoWidth * 3,
|
|
151
|
-
"@4x": logoWidth * 4
|
|
152
|
-
};
|
|
153
|
-
const height = {
|
|
154
|
-
"@1x": getHeight(width["@1x"]),
|
|
155
|
-
"@1,5x": getHeight(width["@1,5x"]),
|
|
156
|
-
"@2x": getHeight(width["@2x"]),
|
|
157
|
-
"@3x": getHeight(width["@3x"]),
|
|
158
|
-
"@4x": getHeight(width["@4x"])
|
|
159
|
-
};
|
|
140
|
+
const logWrite = (emoji, filePath, dimensions) => log(`${emoji} ${_path.default.relative(workingPath, filePath)}` + (dimensions != null ? ` (${dimensions.width}x${dimensions.height})` : ""), true);
|
|
160
141
|
|
|
161
142
|
if (assetsPath && _fsExtra.default.existsSync(assetsPath)) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
height: height["@1x"]
|
|
143
|
+
await Promise.all([{
|
|
144
|
+
ratio: 1,
|
|
145
|
+
suffix: ""
|
|
166
146
|
}, {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
height: height["@1,5x"]
|
|
147
|
+
ratio: 1.5,
|
|
148
|
+
suffix: "@1,5x"
|
|
170
149
|
}, {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
height: height["@2x"]
|
|
150
|
+
ratio: 2,
|
|
151
|
+
suffix: "@2x"
|
|
174
152
|
}, {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
height: height["@3x"]
|
|
153
|
+
ratio: 3,
|
|
154
|
+
suffix: "@3x"
|
|
178
155
|
}, {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
156
|
+
ratio: 4,
|
|
157
|
+
suffix: "@4x"
|
|
158
|
+
}].map(_ref3 => {
|
|
159
|
+
let {
|
|
160
|
+
ratio,
|
|
161
|
+
suffix
|
|
162
|
+
} = _ref3;
|
|
163
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
164
|
+
|
|
165
|
+
const filePath = _path.default.resolve(assetsPath, fileName);
|
|
166
|
+
|
|
167
|
+
const width = logoWidth * ratio;
|
|
168
|
+
const height = getHeight(width);
|
|
169
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
170
|
+
logWrite("✨", filePath, {
|
|
171
|
+
width,
|
|
172
|
+
height
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}));
|
|
183
176
|
}
|
|
184
177
|
|
|
185
178
|
if (android) {
|
|
@@ -187,20 +180,10 @@ const generate = async ({
|
|
|
187
180
|
|
|
188
181
|
const resPath = _path.default.resolve(appPath, "src", flavor, "res");
|
|
189
182
|
|
|
190
|
-
const drawablePath = _path.default.resolve(resPath, "drawable");
|
|
191
|
-
|
|
192
183
|
const valuesPath = _path.default.resolve(resPath, "values");
|
|
193
184
|
|
|
194
|
-
_fsExtra.default.ensureDirSync(drawablePath);
|
|
195
|
-
|
|
196
185
|
_fsExtra.default.ensureDirSync(valuesPath);
|
|
197
186
|
|
|
198
|
-
const bootSplashXmlPath = _path.default.resolve(drawablePath, "bootsplash.xml");
|
|
199
|
-
|
|
200
|
-
_fsExtra.default.writeFileSync(bootSplashXmlPath, bootSplashXml, "utf-8");
|
|
201
|
-
|
|
202
|
-
log(`✨ ${_path.default.relative(workingDirectory, bootSplashXmlPath)}`, true);
|
|
203
|
-
|
|
204
187
|
const colorsXmlPath = _path.default.resolve(valuesPath, "colors.xml");
|
|
205
188
|
|
|
206
189
|
const colorsXmlEntry = `<color name="${androidColorName}">${backgroundColorHex}</color>`;
|
|
@@ -214,34 +197,52 @@ const generate = async ({
|
|
|
214
197
|
_fsExtra.default.writeFileSync(colorsXmlPath, colorsXml.replace(/<\/resources>/g, ` ${colorsXmlEntry}\n</resources>`), "utf-8");
|
|
215
198
|
}
|
|
216
199
|
|
|
217
|
-
|
|
200
|
+
logWrite("✏️ ", colorsXmlPath);
|
|
218
201
|
} else {
|
|
219
202
|
_fsExtra.default.writeFileSync(colorsXmlPath, `<resources>\n ${colorsXmlEntry}\n</resources>\n`, "utf-8");
|
|
220
203
|
|
|
221
|
-
|
|
204
|
+
logWrite("✨", colorsXmlPath);
|
|
222
205
|
}
|
|
223
206
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
height: height["@1x"]
|
|
207
|
+
await Promise.all([{
|
|
208
|
+
ratio: 1,
|
|
209
|
+
directory: "mipmap-mdpi"
|
|
228
210
|
}, {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
height: height["@1,5x"]
|
|
211
|
+
ratio: 1.5,
|
|
212
|
+
directory: "mipmap-hdpi"
|
|
232
213
|
}, {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
height: height["@2x"]
|
|
214
|
+
ratio: 2,
|
|
215
|
+
directory: "mipmap-xhdpi"
|
|
236
216
|
}, {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
height: height["@3x"]
|
|
217
|
+
ratio: 3,
|
|
218
|
+
directory: "mipmap-xxhdpi"
|
|
240
219
|
}, {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
220
|
+
ratio: 4,
|
|
221
|
+
directory: "mipmap-xxxhdpi"
|
|
222
|
+
}].map(_ref4 => {
|
|
223
|
+
let {
|
|
224
|
+
ratio,
|
|
225
|
+
directory
|
|
226
|
+
} = _ref4;
|
|
227
|
+
const fileName = `${logoFileName}.png`;
|
|
228
|
+
|
|
229
|
+
const filePath = _path.default.resolve(resPath, directory, fileName);
|
|
230
|
+
|
|
231
|
+
const width = logoWidth * ratio;
|
|
232
|
+
const height = getHeight(width);
|
|
233
|
+
const canvasSize = splashScreenIconSizeNoBackground * ratio; // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images
|
|
234
|
+
|
|
235
|
+
const canvas = new _jimp.default(canvasSize, canvasSize, 0xffffff00);
|
|
236
|
+
const logo = image.clone().resize(width, height);
|
|
237
|
+
const x = (canvasSize - width) / 2;
|
|
238
|
+
const y = (canvasSize - height) / 2;
|
|
239
|
+
return canvas.blit(logo, x, y).quality(100).writeAsync(filePath).then(() => {
|
|
240
|
+
logWrite("✨", filePath, {
|
|
241
|
+
width: canvasSize,
|
|
242
|
+
height: canvasSize
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
}));
|
|
245
246
|
}
|
|
246
247
|
|
|
247
248
|
if (ios) {
|
|
@@ -253,12 +254,12 @@ const generate = async ({
|
|
|
253
254
|
const storyboardPath = _path.default.resolve(projectPath, "BootSplash.storyboard");
|
|
254
255
|
|
|
255
256
|
_fsExtra.default.writeFileSync(storyboardPath, getStoryboard({
|
|
256
|
-
height:
|
|
257
|
-
width:
|
|
257
|
+
height: getHeight(logoWidth),
|
|
258
|
+
width: logoWidth,
|
|
258
259
|
backgroundColor: backgroundColorHex
|
|
259
260
|
}), "utf-8");
|
|
260
261
|
|
|
261
|
-
log(`✨ ${_path.default.relative(
|
|
262
|
+
log(`✨ ${_path.default.relative(workingPath, storyboardPath)}`, true);
|
|
262
263
|
} else {
|
|
263
264
|
log(`No "${projectPath}" directory found. Skipping iOS storyboard generation…`);
|
|
264
265
|
}
|
|
@@ -270,31 +271,38 @@ const generate = async ({
|
|
|
270
271
|
|
|
271
272
|
_fsExtra.default.writeFileSync(_path.default.resolve(imageSetPath, "Contents.json"), ContentsJson, "utf-8");
|
|
272
273
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
height: height["@1x"]
|
|
274
|
+
await Promise.all([{
|
|
275
|
+
ratio: 1,
|
|
276
|
+
suffix: ""
|
|
277
277
|
}, {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
height: height["@2x"]
|
|
278
|
+
ratio: 2,
|
|
279
|
+
suffix: "@2x"
|
|
281
280
|
}, {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
281
|
+
ratio: 3,
|
|
282
|
+
suffix: "@3x"
|
|
283
|
+
}].map(_ref5 => {
|
|
284
|
+
let {
|
|
285
|
+
ratio,
|
|
286
|
+
suffix
|
|
287
|
+
} = _ref5;
|
|
288
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
289
|
+
|
|
290
|
+
const filePath = _path.default.resolve(imageSetPath, fileName);
|
|
291
|
+
|
|
292
|
+
const width = logoWidth * ratio;
|
|
293
|
+
const height = getHeight(width);
|
|
294
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
295
|
+
logWrite("✨", filePath, {
|
|
296
|
+
width,
|
|
297
|
+
height
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
}));
|
|
286
301
|
} else {
|
|
287
302
|
log(`No "${imagesPath}" directory found. Skipping iOS images generation…`);
|
|
288
303
|
}
|
|
289
304
|
}
|
|
290
305
|
|
|
291
|
-
await Promise.all(images.map(({
|
|
292
|
-
filePath,
|
|
293
|
-
width,
|
|
294
|
-
height
|
|
295
|
-
}) => image.clone().cover(width, height).writeAsync(filePath).then(() => {
|
|
296
|
-
log(`✨ ${_path.default.relative(workingDirectory, filePath)} (${width}x${height})`, true);
|
|
297
|
-
})));
|
|
298
306
|
log(`✅ Done! Thanks for using ${_chalk.default.underline("react-native-bootsplash")}.`);
|
|
299
307
|
};
|
|
300
308
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["generate.ts"],"names":["logoFileName","xcassetName","androidColorName","androidColorRegex","ContentsJson","getStoryboard","height","width","backgroundColor","hex","r","parseInt","toPrecision","g","b","bootSplashXml","log","text","dim","console","chalk","isValidHexadecimal","value","test","toFullHexadecimal","prefixed","up","toUpperCase","length","generate","android","ios","workingDirectory","logoPath","logoWidth","flavor","assetsPath","Error","image","jimp","read","backgroundColorHex","images","getHeight","size","Math","ceil","bitmap","fs","existsSync","push","filePath","path","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":["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","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","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\";\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 true,\n );\n\n if (assetsPath && fs.existsSync(assetsPath)) {\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 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 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 log(`✨ ${path.relative(workingPath, 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 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 `✅ Done! Thanks for using ${chalk.underline(\"react-native-bootsplash\")}.`,\n );\n};\n"]}
|
package/dist/commonjs/index.js
CHANGED
|
@@ -3,23 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.show = show;
|
|
7
|
-
exports.hide = hide;
|
|
8
|
-
exports.getVisibilityStatus = getVisibilityStatus;
|
|
9
6
|
exports.default = void 0;
|
|
7
|
+
exports.getVisibilityStatus = getVisibilityStatus;
|
|
8
|
+
exports.hide = hide;
|
|
10
9
|
|
|
11
10
|
var _reactNative = require("react-native");
|
|
12
11
|
|
|
13
12
|
const NativeModule = _reactNative.NativeModules.RNBootSplash;
|
|
14
13
|
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
fade: false,
|
|
18
|
-
...config
|
|
19
|
-
}.fade).then(() => {});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function hide(config = {}) {
|
|
14
|
+
function hide() {
|
|
15
|
+
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
16
|
return NativeModule.hide({
|
|
24
17
|
fade: false,
|
|
25
18
|
...config
|
|
@@ -31,7 +24,6 @@ function getVisibilityStatus() {
|
|
|
31
24
|
}
|
|
32
25
|
|
|
33
26
|
var _default = {
|
|
34
|
-
show,
|
|
35
27
|
hide,
|
|
36
28
|
getVisibilityStatus
|
|
37
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["NativeModule","NativeModules","RNBootSplash","
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["NativeModule","NativeModules","RNBootSplash","hide","config","fade","then","getVisibilityStatus"],"mappings":";;;;;;;;;AAAA;;AAKA,MAAMA,YAGL,GAAGC,2BAAcC,YAHlB;;AAKO,SAASC,IAAT,GAAkD;AAAA,MAApCC,MAAoC,uEAAnB,EAAmB;AACvD,SAAOJ,YAAY,CAACG,IAAb,CAAkB;AAAEE,IAAAA,IAAI,EAAE,KAAR;AAAe,OAAGD;AAAlB,IAA2BC,IAA7C,EAAmDC,IAAnD,CAAwD,MAAM,CAAE,CAAhE,CAAP;AACD;;AAEM,SAASC,mBAAT,GAA0D;AAC/D,SAAOP,YAAY,CAACO,mBAAb,EAAP;AACD;;eAEc;AACbJ,EAAAA,IADa;AAEbI,EAAAA;AAFa,C","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"]}
|