native-fn 1.0.42 → 1.0.44
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/dist/native.cjs +372 -11
- package/dist/native.min.cjs +1 -1
- package/dist/native.min.mjs +1 -1
- package/dist/native.mjs +372 -11
- package/dist/native.umd.js +372 -11
- package/dist/native.umd.min.js +1 -1
- package/dist/plugin/app/index.cjs +317 -151
- package/dist/plugin/app/index.d.ts +5 -1
- package/dist/plugin/app/index.min.cjs +1 -1
- package/dist/plugin/app/index.min.mjs +1 -1
- package/dist/plugin/app/index.mjs +317 -151
- package/dist/plugin/app/index.umd.js +317 -151
- package/dist/plugin/app/index.umd.min.js +1 -1
- package/dist/plugin/app/src/constants/platform.d.ts +3 -13
- package/dist/plugin/app/src/plugin/app/types/app.d.ts +4 -0
- package/dist/plugin/app/src/types/platform.d.ts +17 -0
- package/dist/plugin/app/src/utils/create-hidden-element.d.ts +1 -1
- package/dist/plugin/camera/index.cjs +253 -86
- package/dist/plugin/camera/index.min.cjs +1 -1
- package/dist/plugin/camera/index.min.mjs +1 -1
- package/dist/plugin/camera/index.mjs +253 -86
- package/dist/plugin/camera/index.umd.js +253 -86
- package/dist/plugin/camera/index.umd.min.js +1 -1
- package/dist/plugin/camera/src/constants/platform.d.ts +3 -13
- package/dist/plugin/camera/src/plugin/app/types/app.d.ts +4 -0
- package/dist/plugin/camera/src/types/platform.d.ts +17 -0
- package/dist/plugin/camera/src/utils/create-hidden-element.d.ts +1 -1
- package/dist/plugin/clipboard/index.cjs +6 -0
- package/dist/plugin/clipboard/index.min.cjs +1 -1
- package/dist/plugin/clipboard/index.min.mjs +1 -1
- package/dist/plugin/clipboard/index.mjs +6 -0
- package/dist/plugin/clipboard/index.umd.js +6 -0
- package/dist/plugin/clipboard/index.umd.min.js +1 -1
- package/dist/plugin/clipboard/src/constants/platform.d.ts +3 -13
- package/dist/plugin/clipboard/src/plugin/app/types/app.d.ts +4 -0
- package/dist/plugin/clipboard/src/types/platform.d.ts +17 -0
- package/dist/plugin/clipboard/src/utils/create-hidden-element.d.ts +1 -1
- package/dist/plugin/fullscreen/index.cjs +246 -82
- package/dist/plugin/fullscreen/index.min.cjs +1 -1
- package/dist/plugin/fullscreen/index.min.mjs +1 -1
- package/dist/plugin/fullscreen/index.mjs +246 -82
- package/dist/plugin/fullscreen/index.umd.js +246 -82
- package/dist/plugin/fullscreen/index.umd.min.js +1 -1
- package/dist/plugin/fullscreen/src/constants/platform.d.ts +3 -13
- package/dist/plugin/fullscreen/src/plugin/app/types/app.d.ts +4 -0
- package/dist/plugin/fullscreen/src/types/platform.d.ts +17 -0
- package/dist/plugin/fullscreen/src/utils/create-hidden-element.d.ts +1 -1
- package/dist/plugin/theme/index.cjs +257 -91
- package/dist/plugin/theme/index.min.cjs +1 -1
- package/dist/plugin/theme/index.min.mjs +1 -1
- package/dist/plugin/theme/index.mjs +257 -91
- package/dist/plugin/theme/index.umd.js +257 -91
- package/dist/plugin/theme/index.umd.min.js +1 -1
- package/dist/plugin/theme/src/constants/platform.d.ts +3 -13
- package/dist/plugin/theme/src/plugin/app/types/app.d.ts +4 -0
- package/dist/plugin/theme/src/types/platform.d.ts +17 -0
- package/dist/plugin/theme/src/utils/create-hidden-element.d.ts +1 -1
- package/dist/src/constants/platform.d.ts +3 -13
- package/dist/src/plugin/app/types/app.d.ts +4 -0
- package/dist/src/types/platform.d.ts +17 -0
- package/dist/src/utils/create-hidden-element.d.ts +1 -1
- package/package.json +1 -8
|
@@ -19,7 +19,28 @@
|
|
|
19
19
|
MessengerType["Mail"] = "mail";
|
|
20
20
|
})(MessengerType || (MessengerType = {}));
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
function dynamicImport(moduleName) {
|
|
23
|
+
if ('require' in globalThis && typeof globalThis.require === 'function') {
|
|
24
|
+
try {
|
|
25
|
+
return Promise.resolve(globalThis.require(moduleName));
|
|
26
|
+
}
|
|
27
|
+
catch (_) {
|
|
28
|
+
return Promise.resolve(null);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
return import(moduleName)
|
|
33
|
+
.then(function (module) {
|
|
34
|
+
return (module.default || module);
|
|
35
|
+
})
|
|
36
|
+
.catch(function () {
|
|
37
|
+
return Promise.resolve(null);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (_) {
|
|
41
|
+
return Promise.resolve(null);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
23
44
|
|
|
24
45
|
var OS;
|
|
25
46
|
(function (OS) {
|
|
@@ -60,42 +81,22 @@
|
|
|
60
81
|
Browsers["IE"] = "IE";
|
|
61
82
|
Browsers["SamsungInternet"] = "SamsungInternet";
|
|
62
83
|
})(Browsers || (Browsers = {}));
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
'ARM': 'RT'
|
|
80
|
-
}[string];
|
|
81
|
-
if (mapped !== undefined)
|
|
82
|
-
return mapped;
|
|
83
|
-
return string;
|
|
84
|
-
}
|
|
85
|
-
function resolveUnderscoreVersion(string) {
|
|
86
|
-
if (string === undefined)
|
|
87
|
-
return '';
|
|
88
|
-
return string.replace(/_/g, '.');
|
|
89
|
-
}
|
|
90
|
-
function resolveVersion(string, resolver) {
|
|
91
|
-
if (typeof resolver === 'function')
|
|
92
|
-
return resolver(string);
|
|
93
|
-
if (typeof resolver === 'string')
|
|
94
|
-
return resolver;
|
|
95
|
-
if (string === undefined)
|
|
96
|
-
return '';
|
|
97
|
-
return string;
|
|
98
|
-
}
|
|
84
|
+
var Platform = {
|
|
85
|
+
device: Devices.Unknown,
|
|
86
|
+
os: OS.Unknown,
|
|
87
|
+
osVersion: '',
|
|
88
|
+
engine: Engines.Unknown,
|
|
89
|
+
engineVersion: '',
|
|
90
|
+
browser: Browsers.Unknown,
|
|
91
|
+
browserVersion: '',
|
|
92
|
+
renderer: getRenderer(),
|
|
93
|
+
userAgent: navigator.userAgent,
|
|
94
|
+
isWebview: false,
|
|
95
|
+
isMobile: false,
|
|
96
|
+
isDesktop: false,
|
|
97
|
+
isStandalone: false,
|
|
98
|
+
isNodeJS: getIsNode(),
|
|
99
|
+
};
|
|
99
100
|
var OS_RESOLVER_MAP = [
|
|
100
101
|
[/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
|
|
101
102
|
[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i, OS.Windows, resolveWindowsVersion],
|
|
@@ -154,36 +155,115 @@
|
|
|
154
155
|
[/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
|
|
155
156
|
[/firefox\/([\w.]+)/i, Browsers.Firefox],
|
|
156
157
|
];
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
function resolveWindowsVersion(string) {
|
|
159
|
+
if (string === undefined)
|
|
160
|
+
return '';
|
|
161
|
+
var mapped = {
|
|
162
|
+
'4.90': 'ME',
|
|
163
|
+
'NT3.51': 'NT 3.11',
|
|
164
|
+
'NT4.0': 'NT 4.0',
|
|
165
|
+
'NT 5.0': '2000',
|
|
166
|
+
'NT 5.1': 'XP',
|
|
167
|
+
'NT 5.2': 'XP',
|
|
168
|
+
'NT 6.0': 'Vista',
|
|
169
|
+
'NT 6.1': '7',
|
|
170
|
+
'NT 6.2': '8',
|
|
171
|
+
'NT 6.3': '8.1',
|
|
172
|
+
'NT 6.4': '10',
|
|
173
|
+
'NT 10.0': '10',
|
|
174
|
+
'ARM': 'RT'
|
|
175
|
+
}[string];
|
|
176
|
+
if (mapped !== undefined)
|
|
177
|
+
return mapped;
|
|
178
|
+
return string;
|
|
179
|
+
}
|
|
180
|
+
function resolveUnderscoreVersion(string) {
|
|
181
|
+
if (string === undefined)
|
|
182
|
+
return '';
|
|
183
|
+
return string.replace(/_/g, '.');
|
|
184
|
+
}
|
|
185
|
+
function resolveVersion(string, resolver) {
|
|
186
|
+
if (typeof resolver === 'function')
|
|
187
|
+
return resolver(string);
|
|
188
|
+
if (typeof resolver === 'string')
|
|
189
|
+
return resolver;
|
|
190
|
+
if (string === undefined)
|
|
191
|
+
return '';
|
|
192
|
+
return string;
|
|
193
|
+
}
|
|
194
|
+
function normalizeBrand(entry) {
|
|
195
|
+
if (entry === null || entry === undefined)
|
|
196
|
+
return { brand: '', version: '' };
|
|
197
|
+
if (typeof entry === 'string')
|
|
198
|
+
return { brand: entry, version: '' };
|
|
199
|
+
return { brand: entry.brand, version: entry.version };
|
|
200
|
+
}
|
|
201
|
+
function getRenderer() {
|
|
202
|
+
if (typeof globalThis.document === 'undefined')
|
|
203
|
+
return '';
|
|
204
|
+
var canvas = globalThis.document.createElement('canvas');
|
|
205
|
+
if (typeof canvas.getContext !== 'function')
|
|
206
|
+
return '';
|
|
207
|
+
var context = canvas.getContext('webgl2') || canvas.getContext('experimental-webgl') || canvas.getContext('webgl');
|
|
208
|
+
if (context === null)
|
|
209
|
+
return '';
|
|
210
|
+
if (context instanceof WebGLRenderingContext || 'getParameter' in context && typeof context.getParameter === 'function') {
|
|
211
|
+
var extension = context.getExtension('WEBGL_debug_renderer_info');
|
|
212
|
+
if (extension === null)
|
|
213
|
+
return context.getParameter(context.RENDERER);
|
|
214
|
+
else
|
|
215
|
+
return context.getParameter(extension.UNMASKED_RENDERER_WEBGL);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
return '';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function getIsStandalone(os) {
|
|
222
|
+
if (!('matchMedia' in globalThis))
|
|
223
|
+
return false;
|
|
224
|
+
if (os === OS.iOS)
|
|
225
|
+
return 'standalone' in navigator && !!navigator.standalone;
|
|
226
|
+
return globalThis.matchMedia('(display-mode: standalone)').matches;
|
|
227
|
+
}
|
|
228
|
+
function getIsWebview() {
|
|
229
|
+
return /; ?wv|applewebkit(?!.*safari)/i.test(Platform.userAgent);
|
|
230
|
+
}
|
|
231
|
+
function getIsNode() {
|
|
232
|
+
return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
|
|
233
|
+
}
|
|
234
|
+
function getNodeOSVersion(string) {
|
|
235
|
+
var parts = string.split('.');
|
|
236
|
+
return {
|
|
237
|
+
major: parseInt(parts[0] || '0'),
|
|
238
|
+
minor: parseInt(parts[1] || '0'),
|
|
239
|
+
build: parseInt(parts[2] || '0')
|
|
240
|
+
};
|
|
241
|
+
}
|
|
163
242
|
for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
|
|
164
243
|
var map = OS_RESOLVER_MAP[i];
|
|
165
244
|
var regexp = map[0];
|
|
166
245
|
var os = map[1];
|
|
167
246
|
var resolver = map[2];
|
|
168
|
-
var matched =
|
|
247
|
+
var matched = Platform.userAgent.match(regexp);
|
|
169
248
|
if (matched !== null) {
|
|
170
|
-
|
|
171
|
-
|
|
249
|
+
Platform.os = os;
|
|
250
|
+
Platform.osVersion = resolveVersion(matched[1], resolver);
|
|
172
251
|
if (os === OS.iOS || os === OS.Android)
|
|
173
|
-
|
|
252
|
+
Platform.device = Devices.Mobile;
|
|
174
253
|
else if (os === OS.Windows || os === OS.MacOS)
|
|
175
|
-
|
|
254
|
+
Platform.device = Devices.Desktop;
|
|
176
255
|
break;
|
|
177
256
|
}
|
|
178
257
|
}
|
|
179
258
|
for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
|
|
180
259
|
var map = ENGINE_RESOLVER_MAP[i];
|
|
181
260
|
var regexp = map[0];
|
|
182
|
-
map[1];
|
|
261
|
+
var engine = map[1];
|
|
183
262
|
var resolver = map[2];
|
|
184
|
-
var matched =
|
|
263
|
+
var matched = Platform.userAgent.match(regexp);
|
|
185
264
|
if (matched !== null) {
|
|
186
|
-
|
|
265
|
+
Platform.engine = engine;
|
|
266
|
+
Platform.engineVersion = resolveVersion(matched[1], resolver);
|
|
187
267
|
break;
|
|
188
268
|
}
|
|
189
269
|
}
|
|
@@ -192,42 +272,123 @@
|
|
|
192
272
|
var regexp = map[0];
|
|
193
273
|
var browser = map[1];
|
|
194
274
|
var resolver = map[2];
|
|
195
|
-
var matched =
|
|
275
|
+
var matched = Platform.userAgent.match(regexp);
|
|
196
276
|
if (matched !== null) {
|
|
197
|
-
|
|
198
|
-
|
|
277
|
+
Platform.browser = browser;
|
|
278
|
+
Platform.browserVersion = resolveVersion(matched[1], resolver);
|
|
199
279
|
break;
|
|
200
280
|
}
|
|
201
281
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
282
|
+
if (Platform.isNodeJS) {
|
|
283
|
+
dynamicImport('os')
|
|
284
|
+
.then(function (os) {
|
|
285
|
+
if (os === null)
|
|
286
|
+
return;
|
|
287
|
+
var platform = os.platform();
|
|
288
|
+
var release = os.release();
|
|
289
|
+
var version = getNodeOSVersion(release);
|
|
290
|
+
switch (platform) {
|
|
291
|
+
case 'win32':
|
|
292
|
+
Platform.os = OS.Windows;
|
|
293
|
+
if (version.major === 10 && version.minor === 0 && version.build >= 22000)
|
|
294
|
+
Platform.osVersion = '11';
|
|
295
|
+
else if (version.major === 10 && version.minor === 0 && version.build < 22000)
|
|
296
|
+
Platform.osVersion = '10';
|
|
297
|
+
else if (version.major === 6 && version.minor === 3)
|
|
298
|
+
Platform.osVersion = '8.1';
|
|
299
|
+
else if (version.major === 6 && version.minor === 2)
|
|
300
|
+
Platform.osVersion = '8';
|
|
301
|
+
else if (version.major === 6 && version.minor === 1)
|
|
302
|
+
Platform.osVersion = '7';
|
|
303
|
+
else if (version.major === 6 && version.minor === 0)
|
|
304
|
+
Platform.osVersion = 'Vista';
|
|
305
|
+
else if (version.major === 5 && version.minor === 1)
|
|
306
|
+
Platform.osVersion = 'XP';
|
|
307
|
+
else if (version.major === 5 && version.minor === 2)
|
|
308
|
+
Platform.osVersion = 'XP';
|
|
309
|
+
else if (version.major === 5 && version.minor === 0)
|
|
310
|
+
Platform.osVersion = '2000';
|
|
311
|
+
else if (version.major === 4 && version.minor === 90)
|
|
312
|
+
Platform.osVersion = 'ME';
|
|
313
|
+
else if (version.major === 4 && version.minor === 0)
|
|
314
|
+
Platform.osVersion = 'NT 4.0';
|
|
315
|
+
else if (version.major === 3 && version.minor === 51)
|
|
316
|
+
Platform.osVersion = 'NT 3.11';
|
|
317
|
+
else
|
|
318
|
+
Platform.osVersion = release;
|
|
319
|
+
break;
|
|
320
|
+
case 'darwin':
|
|
321
|
+
Platform.os = OS.MacOS;
|
|
322
|
+
if (version.major >= 24)
|
|
323
|
+
Platform.osVersion = '' + (version.major - 9) + '.' + version.minor + '.' + version.build;
|
|
324
|
+
else if (version.major === 23)
|
|
325
|
+
Platform.osVersion = '14.' + version.minor + '.' + version.build;
|
|
326
|
+
else if (version.major === 22)
|
|
327
|
+
Platform.osVersion = '13.' + version.minor + '.' + version.build;
|
|
328
|
+
else if (version.major === 21)
|
|
329
|
+
Platform.osVersion = '12.' + version.minor + '.' + version.build;
|
|
330
|
+
else if (version.major === 20)
|
|
331
|
+
Platform.osVersion = '11.' + version.minor + '.' + version.build;
|
|
332
|
+
else if (version.major === 19)
|
|
333
|
+
Platform.osVersion = '10.15.' + version.minor;
|
|
334
|
+
else if (version.major === 18)
|
|
335
|
+
Platform.osVersion = '10.14.' + version.minor;
|
|
336
|
+
else if (version.major === 17)
|
|
337
|
+
Platform.osVersion = '10.13.' + version.minor;
|
|
338
|
+
else if (version.major === 16)
|
|
339
|
+
Platform.osVersion = '10.12.' + version.minor;
|
|
340
|
+
else if (version.major === 15)
|
|
341
|
+
Platform.osVersion = '10.11.' + version.minor;
|
|
342
|
+
else if (version.major === 14)
|
|
343
|
+
Platform.osVersion = '10.10.' + version.minor;
|
|
344
|
+
else if (version.major === 13)
|
|
345
|
+
Platform.osVersion = '10.9.' + version.minor;
|
|
346
|
+
else if (version.major >= 5 && version.major <= 12)
|
|
347
|
+
Platform.osVersion = '10.' + (version.major - 4) + '.' + version.minor;
|
|
348
|
+
else
|
|
349
|
+
Platform.osVersion = release;
|
|
350
|
+
break;
|
|
351
|
+
case 'android':
|
|
352
|
+
Platform.os = OS.Android;
|
|
353
|
+
Platform.osVersion = release;
|
|
354
|
+
break;
|
|
355
|
+
case 'linux':
|
|
356
|
+
if (/android/i.test(release)) {
|
|
357
|
+
Platform.os = OS.Android;
|
|
358
|
+
Platform.osVersion = release;
|
|
359
|
+
}
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
|
|
365
|
+
navigator
|
|
366
|
+
.userAgentData
|
|
367
|
+
.getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
|
|
368
|
+
.then(function (result) {
|
|
369
|
+
var brands = result.fullVersionList || result.brands || [];
|
|
370
|
+
var platformVersion = result.platformVersion;
|
|
371
|
+
for (var i = 0; i < brands.length; i++) {
|
|
372
|
+
var brand = normalizeBrand(brands[i]);
|
|
373
|
+
var brandName = brand.brand;
|
|
374
|
+
var brandVersion = brand.version;
|
|
375
|
+
if (/not.a.brand/i.test(brandName))
|
|
376
|
+
continue;
|
|
377
|
+
if (brandName === "Chromium")
|
|
378
|
+
Platform.engineVersion = brandVersion;
|
|
379
|
+
}
|
|
380
|
+
if (typeof platformVersion === 'string') {
|
|
381
|
+
if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
|
|
382
|
+
Platform.osVersion = '11';
|
|
383
|
+
else
|
|
384
|
+
Platform.osVersion = platformVersion;
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
Platform.isMobile = Platform.device === Devices.Mobile;
|
|
389
|
+
Platform.isDesktop = Platform.device === Devices.Desktop;
|
|
390
|
+
Platform.isWebview = getIsWebview();
|
|
391
|
+
Platform.isStandalone = getIsStandalone(Platform.os);
|
|
231
392
|
|
|
232
393
|
function capitalize(match) {
|
|
233
394
|
var groups = [];
|
|
@@ -402,6 +563,8 @@
|
|
|
402
563
|
|
|
403
564
|
function createHiddenElement(tagName, focusable) {
|
|
404
565
|
if (focusable === void 0) { focusable = true; }
|
|
566
|
+
if (typeof globalThis.document === 'undefined')
|
|
567
|
+
return undefined;
|
|
405
568
|
var element = globalThis.document.createElement(tagName);
|
|
406
569
|
if ('width' in element)
|
|
407
570
|
element.width = '0';
|
|
@@ -485,6 +648,8 @@
|
|
|
485
648
|
return;
|
|
486
649
|
}
|
|
487
650
|
a = createHiddenElement('a');
|
|
651
|
+
if (a === undefined)
|
|
652
|
+
return;
|
|
488
653
|
a.href = url;
|
|
489
654
|
document.body.appendChild(a);
|
|
490
655
|
dispatchClickEvent(a, top);
|
|
@@ -506,6 +671,8 @@
|
|
|
506
671
|
var iframe = undefined;
|
|
507
672
|
try {
|
|
508
673
|
iframe = createHiddenElement('iframe');
|
|
674
|
+
if (iframe === undefined)
|
|
675
|
+
return;
|
|
509
676
|
iframe.src = url;
|
|
510
677
|
top.document.body.appendChild(iframe);
|
|
511
678
|
globalThis.setTimeout(function () {
|
|
@@ -575,6 +742,8 @@
|
|
|
575
742
|
var input = undefined;
|
|
576
743
|
try {
|
|
577
744
|
input = createHiddenElement('input');
|
|
745
|
+
if (input === undefined)
|
|
746
|
+
return false;
|
|
578
747
|
input.type = 'text';
|
|
579
748
|
input.readOnly = true;
|
|
580
749
|
document.body.appendChild(input);
|
|
@@ -610,8 +779,8 @@
|
|
|
610
779
|
var document = top.document;
|
|
611
780
|
var eventType = { focus: undefined, blur: undefined, visibilitychange: undefined };
|
|
612
781
|
var eventTarget = { focus: undefined, blur: undefined, visibilitychange: undefined };
|
|
613
|
-
if (
|
|
614
|
-
if (compareVersion(
|
|
782
|
+
if (Platform.os === OS.iOS) {
|
|
783
|
+
if (compareVersion(Platform.osVersion, '8.0') >= 0) {
|
|
615
784
|
eventTarget = { visibilitychange: document };
|
|
616
785
|
eventType = { visibilitychange: 'visibilitychange' };
|
|
617
786
|
}
|
|
@@ -864,7 +1033,7 @@
|
|
|
864
1033
|
case OS.MacOS:
|
|
865
1034
|
return 'macappstore://itunes.apple.com/app/id' + packageName + '?mt=12';
|
|
866
1035
|
default:
|
|
867
|
-
throw new URLOpenError('Unsupported OS: \"' +
|
|
1036
|
+
throw new URLOpenError('Unsupported OS: \"' + Platform.userAgent + '\"');
|
|
868
1037
|
}
|
|
869
1038
|
}
|
|
870
1039
|
function createWebStoreURL(packageName, os) {
|
|
@@ -880,7 +1049,7 @@
|
|
|
880
1049
|
case OS.MacOS:
|
|
881
1050
|
return 'https://apps.apple.com/app/id' + packageName + '?mt=12';
|
|
882
1051
|
default:
|
|
883
|
-
throw new URLOpenError('Unsupported OS: \"' +
|
|
1052
|
+
throw new URLOpenError('Unsupported OS: \"' + Platform.userAgent + '\"');
|
|
884
1053
|
}
|
|
885
1054
|
}
|
|
886
1055
|
function getDefaultTimeoutByOS(os) {
|
|
@@ -894,26 +1063,26 @@
|
|
|
894
1063
|
}
|
|
895
1064
|
}
|
|
896
1065
|
function canOpenIntentURL() {
|
|
897
|
-
if (
|
|
1066
|
+
if (Platform.os !== OS.Android)
|
|
898
1067
|
return false;
|
|
899
|
-
if (
|
|
1068
|
+
if (Platform.browser === Browsers.SamsungInternet && compareVersion(Platform.browserVersion, '17.0.1.69') >= 0 && compareVersion(Platform.browserVersion, '17.0.7.34') < 0)
|
|
900
1069
|
return false;
|
|
901
|
-
if (
|
|
1070
|
+
if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '41.0') < 0)
|
|
902
1071
|
return false;
|
|
903
|
-
if (
|
|
1072
|
+
if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '58.0') >= 0 && compareVersion(Platform.browserVersion, '68.11.0') < 0)
|
|
904
1073
|
return false;
|
|
905
|
-
if (
|
|
1074
|
+
if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '79.0') >= 0 && compareVersion(Platform.browserVersion, '81.2.0') < 0)
|
|
906
1075
|
return false;
|
|
907
|
-
if (
|
|
1076
|
+
if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '96.0') >= 0 && compareVersion(Platform.browserVersion, '107.0') < 0)
|
|
908
1077
|
return false;
|
|
909
|
-
if (
|
|
1078
|
+
if (Platform.browser === Browsers.Opera && compareVersion(Platform.browserVersion, '14.0') < 0)
|
|
910
1079
|
return false;
|
|
911
|
-
if (/(?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/[\w.]+;/i.test(
|
|
1080
|
+
if (/(?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/[\w.]+;/i.test(Platform.userAgent) || /instagram[\/ ][-\w.]+/i.test(Platform.userAgent) || /micromessenger\/([\w.]+)/i.test(Platform.userAgent) || /musical_ly(?:.+app_?version\/|_)[\w.]+/i.test(Platform.userAgent) || /ultralite app_version\/[\w.]+/i.test(Platform.userAgent))
|
|
912
1081
|
return false;
|
|
913
1082
|
return true;
|
|
914
1083
|
}
|
|
915
1084
|
function canOpenUniversalURL() {
|
|
916
|
-
return
|
|
1085
|
+
return Platform.os === OS.iOS && compareVersion(Platform.osVersion, '9.0') >= 0;
|
|
917
1086
|
}
|
|
918
1087
|
function getURLOpenError(tried) {
|
|
919
1088
|
var triedUrlString = '';
|
|
@@ -924,87 +1093,84 @@
|
|
|
924
1093
|
return new URLOpenError('Failed to open any of the provided URLs: ' + triedUrlString);
|
|
925
1094
|
}
|
|
926
1095
|
function open(options) {
|
|
927
|
-
var os =
|
|
1096
|
+
var os = Platform.os;
|
|
928
1097
|
var urls = [];
|
|
929
1098
|
var tried = [];
|
|
1099
|
+
var infos = {};
|
|
930
1100
|
var timeout;
|
|
931
1101
|
if (os === OS.Android) {
|
|
932
1102
|
var option = options[OS.Android];
|
|
933
1103
|
if (option === undefined)
|
|
934
1104
|
return Promise.reject(getURLOpenError(tried));
|
|
935
1105
|
timeout = option.timeout;
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
if (parsed.
|
|
946
|
-
|
|
947
|
-
if (parsed.
|
|
948
|
-
|
|
1106
|
+
infos.scheme = urlToString(option.scheme);
|
|
1107
|
+
infos.intent = urlToString(option.intent);
|
|
1108
|
+
infos.packageName = option.packageName;
|
|
1109
|
+
infos.fallback = urlToString(option.fallback);
|
|
1110
|
+
infos.appStore = createAppStoreURL(infos.packageName, OS.Android);
|
|
1111
|
+
infos.webStore = createWebStoreURL(infos.packageName, OS.Android);
|
|
1112
|
+
infos.allowWebStore = option.allowWebStore;
|
|
1113
|
+
if (infos.intent !== undefined && (infos.scheme === undefined || infos.packageName === undefined || infos.fallback === undefined)) {
|
|
1114
|
+
var parsed = parseIntentURL(infos.intent);
|
|
1115
|
+
if (parsed.scheme !== undefined && infos.scheme === undefined)
|
|
1116
|
+
infos.scheme = parsed.scheme;
|
|
1117
|
+
if (parsed.packageName !== undefined && infos.packageName === undefined)
|
|
1118
|
+
infos.packageName = parsed.packageName;
|
|
1119
|
+
if (parsed.fallback !== undefined && infos.fallback === undefined)
|
|
1120
|
+
infos.fallback = parsed.fallback;
|
|
949
1121
|
}
|
|
950
|
-
if (scheme !== undefined && intent === undefined)
|
|
951
|
-
intent = createIntentURL(scheme, packageName, fallback);
|
|
952
|
-
pushUrl(urls, intent, AppOpenState.Intent, canOpenIntentURL());
|
|
953
|
-
pushUrl(urls, scheme, AppOpenState.Scheme);
|
|
954
|
-
pushUrl(urls, fallback, AppOpenState.Fallback);
|
|
955
|
-
pushUrl(urls, createAppStoreURL(packageName, OS.Android), AppOpenState.Store);
|
|
956
|
-
pushUrl(urls, createWebStoreURL(packageName, OS.Android), AppOpenState.Store, allowWebStore);
|
|
1122
|
+
if (infos.scheme !== undefined && infos.intent === undefined)
|
|
1123
|
+
infos.intent = createIntentURL(infos.scheme, infos.packageName, infos.fallback);
|
|
957
1124
|
}
|
|
958
1125
|
else if (os === OS.iOS) {
|
|
959
1126
|
var option = options[OS.iOS];
|
|
960
1127
|
if (option === undefined)
|
|
961
1128
|
return Promise.reject(getURLOpenError(tried));
|
|
962
1129
|
timeout = option.timeout;
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
pushUrl(urls, fallback, AppOpenState.Fallback);
|
|
974
|
-
pushUrl(urls, createAppStoreURL(trackId, OS.iOS), AppOpenState.Store);
|
|
975
|
-
pushUrl(urls, createWebStoreURL(trackId, OS.iOS), AppOpenState.Store, allowWebStore);
|
|
1130
|
+
infos.scheme = urlToString(option.scheme);
|
|
1131
|
+
infos.bundleId = option.bundleId;
|
|
1132
|
+
infos.trackId = option.trackId;
|
|
1133
|
+
infos.universal = urlToString(option.universal);
|
|
1134
|
+
infos.fallback = urlToString(option.fallback);
|
|
1135
|
+
infos.appStore = createAppStoreURL(infos.trackId, OS.iOS);
|
|
1136
|
+
infos.webStore = createWebStoreURL(infos.trackId, OS.iOS);
|
|
1137
|
+
infos.allowWebStore = option.allowWebStore;
|
|
1138
|
+
if (infos.bundleId !== undefined && infos.trackId === undefined)
|
|
1139
|
+
infos.trackId = getTrackId(infos.bundleId);
|
|
976
1140
|
}
|
|
977
1141
|
else if (os === OS.Windows) {
|
|
978
1142
|
var option = options[OS.Windows];
|
|
979
1143
|
if (option === undefined)
|
|
980
1144
|
return Promise.reject(getURLOpenError(tried));
|
|
981
1145
|
timeout = option.timeout;
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
pushUrl(urls, createAppStoreURL(productId, OS.Windows), AppOpenState.Store);
|
|
989
|
-
pushUrl(urls, createWebStoreURL(productId, OS.Windows), AppOpenState.Store, allowWebStore);
|
|
1146
|
+
infos.scheme = urlToString(option.scheme);
|
|
1147
|
+
infos.productId = option.productId;
|
|
1148
|
+
infos.fallback = urlToString(option.fallback);
|
|
1149
|
+
infos.appStore = createAppStoreURL(infos.productId, OS.Windows);
|
|
1150
|
+
infos.webStore = createWebStoreURL(infos.productId, OS.Windows);
|
|
1151
|
+
infos.allowWebStore = option.allowWebStore;
|
|
990
1152
|
}
|
|
991
1153
|
else if (os === OS.MacOS) {
|
|
992
1154
|
var option = options[OS.MacOS];
|
|
993
1155
|
if (option === undefined)
|
|
994
1156
|
return Promise.reject(getURLOpenError(tried));
|
|
995
1157
|
timeout = option.timeout;
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
pushUrl(urls, createAppStoreURL(trackId, OS.MacOS), AppOpenState.Store);
|
|
1006
|
-
pushUrl(urls, createWebStoreURL(trackId, OS.MacOS), AppOpenState.Store, allowWebStore);
|
|
1158
|
+
infos.scheme = urlToString(option.scheme);
|
|
1159
|
+
infos.bundleId = option.bundleId;
|
|
1160
|
+
infos.trackId = option.trackId;
|
|
1161
|
+
infos.fallback = urlToString(option.fallback);
|
|
1162
|
+
infos.appStore = createAppStoreURL(infos.trackId, OS.MacOS);
|
|
1163
|
+
infos.webStore = createWebStoreURL(infos.trackId, OS.MacOS);
|
|
1164
|
+
infos.allowWebStore = option.allowWebStore;
|
|
1165
|
+
if (infos.bundleId !== undefined && infos.trackId === undefined)
|
|
1166
|
+
infos.trackId = getTrackId(infos.bundleId);
|
|
1007
1167
|
}
|
|
1168
|
+
pushUrl(urls, infos.intent, AppOpenState.Intent, canOpenIntentURL());
|
|
1169
|
+
pushUrl(urls, infos.universal, AppOpenState.Universal, canOpenUniversalURL());
|
|
1170
|
+
pushUrl(urls, infos.scheme, AppOpenState.Scheme);
|
|
1171
|
+
pushUrl(urls, infos.fallback, AppOpenState.Fallback);
|
|
1172
|
+
pushUrl(urls, infos.appStore, AppOpenState.Store);
|
|
1173
|
+
pushUrl(urls, infos.webStore, AppOpenState.Store, infos.allowWebStore);
|
|
1008
1174
|
if (timeout === undefined)
|
|
1009
1175
|
timeout = getDefaultTimeoutByOS(os);
|
|
1010
1176
|
return new Promise(function (resolve, reject) {
|
|
@@ -1036,7 +1202,7 @@
|
|
|
1036
1202
|
}
|
|
1037
1203
|
function pushUrl(urls, url, state, condition) {
|
|
1038
1204
|
if (condition === void 0) { condition = true; }
|
|
1039
|
-
if (url
|
|
1205
|
+
if ((typeof url === 'function' || typeof url === 'string') && condition)
|
|
1040
1206
|
urls.push([state, url]);
|
|
1041
1207
|
}
|
|
1042
1208
|
function isArrayLike(value) {
|
|
@@ -1164,7 +1330,7 @@
|
|
|
1164
1330
|
+ '?cc=' + options.cc
|
|
1165
1331
|
+ '&bcc=' + options.bcc
|
|
1166
1332
|
+ '&subject=' + options.subject
|
|
1167
|
-
+ '&body=' + options.body, 0, getDefaultTimeoutByOS(
|
|
1333
|
+
+ '&body=' + options.body, 0, getDefaultTimeoutByOS(Platform.os));
|
|
1168
1334
|
}
|
|
1169
1335
|
function openMessengerTelephone(options) {
|
|
1170
1336
|
return openMessenger(options, 'tel');
|