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
|
@@ -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,84 +116,76 @@ 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})` : ""));
|
|
160
141
|
|
|
161
142
|
if (assetsPath && _fsExtra.default.existsSync(assetsPath)) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
143
|
+
log(`\n ${_chalk.default.underline("Assets")}`);
|
|
144
|
+
await Promise.all([{
|
|
145
|
+
ratio: 1,
|
|
146
|
+
suffix: ""
|
|
166
147
|
}, {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
height: height["@1,5x"]
|
|
148
|
+
ratio: 1.5,
|
|
149
|
+
suffix: "@1,5x"
|
|
170
150
|
}, {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
height: height["@2x"]
|
|
151
|
+
ratio: 2,
|
|
152
|
+
suffix: "@2x"
|
|
174
153
|
}, {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
height: height["@3x"]
|
|
154
|
+
ratio: 3,
|
|
155
|
+
suffix: "@3x"
|
|
178
156
|
}, {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
157
|
+
ratio: 4,
|
|
158
|
+
suffix: "@4x"
|
|
159
|
+
}].map(_ref3 => {
|
|
160
|
+
let {
|
|
161
|
+
ratio,
|
|
162
|
+
suffix
|
|
163
|
+
} = _ref3;
|
|
164
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
165
|
+
|
|
166
|
+
const filePath = _path.default.resolve(assetsPath, fileName);
|
|
167
|
+
|
|
168
|
+
const width = logoWidth * ratio;
|
|
169
|
+
const height = getHeight(width);
|
|
170
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
171
|
+
logWrite("✨", filePath, {
|
|
172
|
+
width,
|
|
173
|
+
height
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}));
|
|
183
177
|
}
|
|
184
178
|
|
|
185
179
|
if (android) {
|
|
180
|
+
log(`\n ${_chalk.default.underline("Android")}`);
|
|
186
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
|
|
187
182
|
|
|
188
183
|
const resPath = _path.default.resolve(appPath, "src", flavor, "res");
|
|
189
184
|
|
|
190
|
-
const drawablePath = _path.default.resolve(resPath, "drawable");
|
|
191
|
-
|
|
192
185
|
const valuesPath = _path.default.resolve(resPath, "values");
|
|
193
186
|
|
|
194
|
-
_fsExtra.default.ensureDirSync(drawablePath);
|
|
195
|
-
|
|
196
187
|
_fsExtra.default.ensureDirSync(valuesPath);
|
|
197
188
|
|
|
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
189
|
const colorsXmlPath = _path.default.resolve(valuesPath, "colors.xml");
|
|
205
190
|
|
|
206
191
|
const colorsXmlEntry = `<color name="${androidColorName}">${backgroundColorHex}</color>`;
|
|
@@ -214,37 +199,56 @@ const generate = async ({
|
|
|
214
199
|
_fsExtra.default.writeFileSync(colorsXmlPath, colorsXml.replace(/<\/resources>/g, ` ${colorsXmlEntry}\n</resources>`), "utf-8");
|
|
215
200
|
}
|
|
216
201
|
|
|
217
|
-
|
|
202
|
+
logWrite("✏️ ", colorsXmlPath);
|
|
218
203
|
} else {
|
|
219
204
|
_fsExtra.default.writeFileSync(colorsXmlPath, `<resources>\n ${colorsXmlEntry}\n</resources>\n`, "utf-8");
|
|
220
205
|
|
|
221
|
-
|
|
206
|
+
logWrite("✨", colorsXmlPath);
|
|
222
207
|
}
|
|
223
208
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
height: height["@1x"]
|
|
209
|
+
await Promise.all([{
|
|
210
|
+
ratio: 1,
|
|
211
|
+
directory: "mipmap-mdpi"
|
|
228
212
|
}, {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
height: height["@1,5x"]
|
|
213
|
+
ratio: 1.5,
|
|
214
|
+
directory: "mipmap-hdpi"
|
|
232
215
|
}, {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
height: height["@2x"]
|
|
216
|
+
ratio: 2,
|
|
217
|
+
directory: "mipmap-xhdpi"
|
|
236
218
|
}, {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
height: height["@3x"]
|
|
219
|
+
ratio: 3,
|
|
220
|
+
directory: "mipmap-xxhdpi"
|
|
240
221
|
}, {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
222
|
+
ratio: 4,
|
|
223
|
+
directory: "mipmap-xxxhdpi"
|
|
224
|
+
}].map(_ref4 => {
|
|
225
|
+
let {
|
|
226
|
+
ratio,
|
|
227
|
+
directory
|
|
228
|
+
} = _ref4;
|
|
229
|
+
const fileName = `${logoFileName}.png`;
|
|
230
|
+
|
|
231
|
+
const filePath = _path.default.resolve(resPath, directory, fileName);
|
|
232
|
+
|
|
233
|
+
const width = logoWidth * ratio;
|
|
234
|
+
const height = getHeight(width);
|
|
235
|
+
const canvasSize = splashScreenIconSizeNoBackground * ratio; // https://github.com/oliver-moran/jimp/tree/master/packages/jimp#creating-new-images
|
|
236
|
+
|
|
237
|
+
const canvas = new _jimp.default(canvasSize, canvasSize, 0xffffff00);
|
|
238
|
+
const logo = image.clone().resize(width, height);
|
|
239
|
+
const x = (canvasSize - width) / 2;
|
|
240
|
+
const y = (canvasSize - height) / 2;
|
|
241
|
+
return canvas.blit(logo, x, y).quality(100).writeAsync(filePath).then(() => {
|
|
242
|
+
logWrite("✨", filePath, {
|
|
243
|
+
width: canvasSize,
|
|
244
|
+
height: canvasSize
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
}));
|
|
245
248
|
}
|
|
246
249
|
|
|
247
250
|
if (ios) {
|
|
251
|
+
log(`\n ${_chalk.default.underline("iOS")}`);
|
|
248
252
|
const projectPath = ios.projectPath.replace(/.xcodeproj$/, "");
|
|
249
253
|
|
|
250
254
|
const imagesPath = _path.default.resolve(projectPath, "Images.xcassets");
|
|
@@ -253,12 +257,12 @@ const generate = async ({
|
|
|
253
257
|
const storyboardPath = _path.default.resolve(projectPath, "BootSplash.storyboard");
|
|
254
258
|
|
|
255
259
|
_fsExtra.default.writeFileSync(storyboardPath, getStoryboard({
|
|
256
|
-
height:
|
|
257
|
-
width:
|
|
260
|
+
height: getHeight(logoWidth),
|
|
261
|
+
width: logoWidth,
|
|
258
262
|
backgroundColor: backgroundColorHex
|
|
259
263
|
}), "utf-8");
|
|
260
264
|
|
|
261
|
-
|
|
265
|
+
logWrite("✨", storyboardPath);
|
|
262
266
|
} else {
|
|
263
267
|
log(`No "${projectPath}" directory found. Skipping iOS storyboard generation…`);
|
|
264
268
|
}
|
|
@@ -270,31 +274,45 @@ const generate = async ({
|
|
|
270
274
|
|
|
271
275
|
_fsExtra.default.writeFileSync(_path.default.resolve(imageSetPath, "Contents.json"), ContentsJson, "utf-8");
|
|
272
276
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
height: height["@1x"]
|
|
277
|
+
await Promise.all([{
|
|
278
|
+
ratio: 1,
|
|
279
|
+
suffix: ""
|
|
277
280
|
}, {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
height: height["@2x"]
|
|
281
|
+
ratio: 2,
|
|
282
|
+
suffix: "@2x"
|
|
281
283
|
}, {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
ratio: 3,
|
|
285
|
+
suffix: "@3x"
|
|
286
|
+
}].map(_ref5 => {
|
|
287
|
+
let {
|
|
288
|
+
ratio,
|
|
289
|
+
suffix
|
|
290
|
+
} = _ref5;
|
|
291
|
+
const fileName = `${logoFileName}${suffix}.png`;
|
|
292
|
+
|
|
293
|
+
const filePath = _path.default.resolve(imageSetPath, fileName);
|
|
294
|
+
|
|
295
|
+
const width = logoWidth * ratio;
|
|
296
|
+
const height = getHeight(width);
|
|
297
|
+
return image.clone().resize(width, height).quality(100).writeAsync(filePath).then(() => {
|
|
298
|
+
logWrite("✨", filePath, {
|
|
299
|
+
width,
|
|
300
|
+
height
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
}));
|
|
286
304
|
} else {
|
|
287
305
|
log(`No "${imagesPath}" directory found. Skipping iOS images generation…`);
|
|
288
306
|
}
|
|
289
307
|
}
|
|
290
308
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
309
|
+
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("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛")}
|
|
315
|
+
`);
|
|
298
316
|
log(`✅ Done! Thanks for using ${_chalk.default.underline("react-native-bootsplash")}.`);
|
|
299
317
|
};
|
|
300
318
|
|
|
@@ -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","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/commonjs/index.js
CHANGED
|
@@ -3,25 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
exports.hide = hide;
|
|
6
|
+
exports.default = void 0;
|
|
8
7
|
exports.getVisibilityStatus = getVisibilityStatus;
|
|
9
|
-
exports.
|
|
8
|
+
exports.hide = hide;
|
|
10
9
|
|
|
11
10
|
var _reactNative = require("react-native");
|
|
12
11
|
|
|
13
|
-
var _NativeModule$statusB, _NativeModule$navigat;
|
|
14
|
-
|
|
15
12
|
const NativeModule = _reactNative.NativeModules.RNBootSplash;
|
|
16
13
|
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
fade: false,
|
|
20
|
-
...config
|
|
21
|
-
}.fade).then(() => {});
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function hide(config = {}) {
|
|
14
|
+
function hide() {
|
|
15
|
+
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
25
16
|
return NativeModule.hide({
|
|
26
17
|
fade: false,
|
|
27
18
|
...config
|
|
@@ -32,16 +23,9 @@ function getVisibilityStatus() {
|
|
|
32
23
|
return NativeModule.getVisibilityStatus();
|
|
33
24
|
}
|
|
34
25
|
|
|
35
|
-
const statusBarHeight = (_NativeModule$statusB = NativeModule.statusBarHeight) !== null && _NativeModule$statusB !== void 0 ? _NativeModule$statusB : 0;
|
|
36
|
-
exports.statusBarHeight = statusBarHeight;
|
|
37
|
-
const navigationBarHeight = (_NativeModule$navigat = NativeModule.navigationBarHeight) !== null && _NativeModule$navigat !== void 0 ? _NativeModule$navigat : 0;
|
|
38
|
-
exports.navigationBarHeight = navigationBarHeight;
|
|
39
26
|
var _default = {
|
|
40
|
-
show,
|
|
41
27
|
hide,
|
|
42
|
-
getVisibilityStatus
|
|
43
|
-
statusBarHeight,
|
|
44
|
-
navigationBarHeight
|
|
28
|
+
getVisibilityStatus
|
|
45
29
|
};
|
|
46
30
|
exports.default = _default;
|
|
47
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -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"]}
|