native-fn 1.1.9 → 1.2.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/README.md +488 -146
- package/dist/index.d.ts +130 -117
- package/dist/native.cjs +581 -563
- package/dist/native.min.cjs +1 -1
- package/dist/native.min.mjs +1 -1
- package/dist/native.mjs +581 -563
- package/dist/native.umd.js +581 -563
- package/dist/native.umd.min.js +1 -1
- package/dist/plugin/appearance/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/appearance/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/appearance/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/appearance/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/appearance/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/appearance/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/appearance/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/appearance/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/appearance/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/appearance/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/appearance/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/badge/index.cjs +2 -2
- package/dist/plugin/badge/index.d.ts +1 -1
- package/dist/plugin/badge/index.mjs +2 -2
- package/dist/plugin/badge/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/badge/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/badge/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/badge/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/badge/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/badge/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/badge/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/badge/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/badge/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/badge/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/badge/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/battery/index.cjs +3 -3
- package/dist/plugin/battery/index.d.ts +1 -1
- package/dist/plugin/battery/index.mjs +3 -3
- package/dist/plugin/battery/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/battery/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/battery/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/battery/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/battery/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/battery/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/battery/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/battery/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/battery/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/battery/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/battery/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/clipboard/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/clipboard/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/clipboard/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/clipboard/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/clipboard/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/clipboard/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/clipboard/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/clipboard/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/clipboard/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/clipboard/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/clipboard/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/dimension/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/dimension/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/dimension/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/dimension/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/dimension/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/dimension/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/dimension/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/dimension/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/dimension/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/dimension/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/dimension/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/fullscreen/index.cjs +499 -265
- package/dist/plugin/fullscreen/index.d.ts +14 -7
- package/dist/plugin/fullscreen/index.mjs +499 -265
- package/dist/plugin/fullscreen/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/fullscreen/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/fullscreen/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/fullscreen/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/fullscreen/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/fullscreen/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/fullscreen/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/fullscreen/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/fullscreen/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/fullscreen/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/fullscreen/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/geolocation/index.cjs +6 -0
- package/dist/plugin/geolocation/index.d.ts +1 -1
- package/dist/plugin/geolocation/index.mjs +6 -0
- package/dist/plugin/geolocation/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/geolocation/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/geolocation/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/geolocation/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/geolocation/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/geolocation/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/geolocation/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/geolocation/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/geolocation/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/geolocation/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/geolocation/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/notification/index.cjs +6 -0
- package/dist/plugin/notification/index.mjs +6 -0
- package/dist/plugin/notification/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/notification/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/notification/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/notification/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/notification/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/notification/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/notification/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/notification/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/notification/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/notification/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/notification/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/open/index.cjs +120 -120
- package/dist/plugin/open/index.d.ts +35 -35
- package/dist/plugin/open/index.mjs +120 -120
- package/dist/plugin/open/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/open/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/open/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/open/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/open/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/open/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/open/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/open/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/open/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/open/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/open/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/permission/index.cjs +6 -0
- package/dist/plugin/permission/index.d.ts +1 -0
- package/dist/plugin/permission/index.mjs +6 -0
- package/dist/plugin/permission/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/permission/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/permission/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/permission/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/permission/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/permission/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/permission/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/permission/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/permission/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/permission/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/permission/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/pip/index.cjs +255 -273
- package/dist/plugin/pip/index.d.ts +20 -13
- package/dist/plugin/pip/index.mjs +255 -273
- package/dist/plugin/pip/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/pip/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/pip/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/pip/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/pip/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/pip/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/pip/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/pip/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/pip/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/pip/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/pip/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/platform/index.d.ts +5 -5
- package/dist/plugin/platform/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/platform/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/platform/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/platform/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/platform/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/platform/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/platform/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/platform/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/platform/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/platform/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/platform/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/theme/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/theme/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/theme/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/theme/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/theme/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/theme/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/theme/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/theme/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/theme/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/theme/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/theme/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/plugin/vibration/index.cjs +5 -5
- package/dist/plugin/vibration/index.d.ts +1 -1
- package/dist/plugin/vibration/index.mjs +5 -5
- package/dist/plugin/vibration/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/plugin/vibration/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/plugin/vibration/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/plugin/vibration/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/plugin/vibration/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/plugin/vibration/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/plugin/vibration/src/plugin/open/types/open.d.ts +1 -1
- package/dist/plugin/vibration/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/plugin/vibration/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/plugin/vibration/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/plugin/vibration/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/dist/src/errors/invalid-state-error.d.ts +2 -0
- package/dist/src/plugin/badge/types/badge.d.ts +1 -1
- package/dist/src/plugin/battery/types/battery.d.ts +1 -1
- package/dist/src/plugin/fullscreen/cores/index.d.ts +3 -3
- package/dist/src/plugin/fullscreen/types/fullscreen.d.ts +9 -3
- package/dist/src/plugin/geolocation/types/geolocation.d.ts +1 -1
- package/dist/src/plugin/open/types/open.d.ts +1 -1
- package/dist/src/plugin/permission/types/permission.d.ts +1 -0
- package/dist/src/plugin/pip/cores/index.d.ts +6 -6
- package/dist/src/plugin/pip/types/pip.d.ts +12 -6
- package/dist/src/plugin/vibration/types/vibration.d.ts +1 -1
- package/package.json +21 -13
|
@@ -102,6 +102,7 @@ var HIGH_ENTROPY_BRAND_NAME_MAP = {
|
|
|
102
102
|
'HeadlessChrome': 'Chrome Headless',
|
|
103
103
|
'OperaMobile': 'Opera Mobi',
|
|
104
104
|
};
|
|
105
|
+
var RTL_LANGUAGES = ['ae', 'ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he', 'iw', 'ku', 'mzn', 'nqo', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi'];
|
|
105
106
|
var OS_RESOLVER_MAP = [
|
|
106
107
|
[/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
|
|
107
108
|
[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i, OS.Windows, resolveWindowsVersion],
|
|
@@ -373,6 +374,9 @@ var parsedFromHighEntropyValuesOS = {};
|
|
|
373
374
|
var parsedFromHighEntropyValuesBrowser = {};
|
|
374
375
|
var parsedFromHighEntropyValuesEngine = {};
|
|
375
376
|
var parsedFromHighEntropyValuesDevice = null;
|
|
377
|
+
var parsedFromNavigatorGPU = {};
|
|
378
|
+
var cachedLocale = null;
|
|
379
|
+
var ready;
|
|
376
380
|
function resolveVersion(string, resolver) {
|
|
377
381
|
if (typeof resolver === 'function')
|
|
378
382
|
return resolver(string);
|
|
@@ -389,6 +393,38 @@ function normalizeBrand(entry) {
|
|
|
389
393
|
return { brand: entry, version: '' };
|
|
390
394
|
return { brand: entry.brand, version: entry.version };
|
|
391
395
|
}
|
|
396
|
+
function normalizeLocale(locale) {
|
|
397
|
+
if (locale === null || typeof locale === 'undefined')
|
|
398
|
+
return locale;
|
|
399
|
+
if (locale.length === 0)
|
|
400
|
+
return null;
|
|
401
|
+
locale = locale.replace(/_/g, '-');
|
|
402
|
+
if (locale === 'C' || locale.toLowerCase() === 'posix')
|
|
403
|
+
return 'en-US';
|
|
404
|
+
if (locale.indexOf('.') !== -1)
|
|
405
|
+
return normalizeLocale(locale.split('.')[0]);
|
|
406
|
+
if (locale.indexOf('@') !== -1)
|
|
407
|
+
return normalizeLocale(locale.split('@')[0]);
|
|
408
|
+
var parts = locale.split('-');
|
|
409
|
+
if (parts.length === 0)
|
|
410
|
+
return null;
|
|
411
|
+
parts[0] = parts[0].toLowerCase();
|
|
412
|
+
if (parts.length > 1 && parts[1].length === 2)
|
|
413
|
+
parts[1] = parts[1].toUpperCase();
|
|
414
|
+
if (parts.length > 2 && parts[1].length === 4) {
|
|
415
|
+
parts[1] = parts[1].charAt(0).toUpperCase() + parts[1].slice(1).toLowerCase();
|
|
416
|
+
}
|
|
417
|
+
return parts.join('-');
|
|
418
|
+
}
|
|
419
|
+
function invalidateCache() {
|
|
420
|
+
parsedCache = null;
|
|
421
|
+
cachedLocale = null;
|
|
422
|
+
parsedFromHighEntropyValuesOS = {};
|
|
423
|
+
parsedFromHighEntropyValuesBrowser = {};
|
|
424
|
+
parsedFromHighEntropyValuesEngine = {};
|
|
425
|
+
parsedFromHighEntropyValuesDevice = null;
|
|
426
|
+
parsedFromNavigatorGPU = {};
|
|
427
|
+
}
|
|
392
428
|
function getParsedCache() {
|
|
393
429
|
if (parsedCache !== null && parsedCache.userAgent === currentUserAgent)
|
|
394
430
|
return parsedCache;
|
|
@@ -467,6 +503,120 @@ function parseEngine() {
|
|
|
467
503
|
}
|
|
468
504
|
return result;
|
|
469
505
|
}
|
|
506
|
+
function getGPU() {
|
|
507
|
+
return {
|
|
508
|
+
architecture: parsedFromNavigatorGPU.architecture,
|
|
509
|
+
description: parsedFromNavigatorGPU.description,
|
|
510
|
+
device: parsedFromNavigatorGPU.device,
|
|
511
|
+
vendor: parsedFromNavigatorGPU.vendor,
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
function getLocale() {
|
|
515
|
+
if (cachedLocale !== null)
|
|
516
|
+
return cachedLocale;
|
|
517
|
+
var locale = {
|
|
518
|
+
language: null,
|
|
519
|
+
languages: [],
|
|
520
|
+
timezone: null,
|
|
521
|
+
offset: 0,
|
|
522
|
+
isRTL: false,
|
|
523
|
+
};
|
|
524
|
+
var isRTL = null;
|
|
525
|
+
function addLanguages(language) {
|
|
526
|
+
for (var i = 0; i < language.length; i++)
|
|
527
|
+
addLanguage(language[i]);
|
|
528
|
+
}
|
|
529
|
+
function addLanguage(language) {
|
|
530
|
+
language = normalizeLocale(language);
|
|
531
|
+
if (typeof language === 'string' && locale.languages.indexOf(language) === -1) {
|
|
532
|
+
if (locale.language === null)
|
|
533
|
+
locale.language = language;
|
|
534
|
+
locale.languages.push(language);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
if (typeof Intl !== 'undefined') {
|
|
538
|
+
try {
|
|
539
|
+
addLanguage(Intl.DateTimeFormat().resolvedOptions().locale);
|
|
540
|
+
}
|
|
541
|
+
catch (_) {
|
|
542
|
+
}
|
|
543
|
+
try {
|
|
544
|
+
locale.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
545
|
+
}
|
|
546
|
+
catch (_) {
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
if (typeof globalThis.navigator !== 'undefined') {
|
|
550
|
+
if (typeof globalThis.navigator.languages !== 'undefined')
|
|
551
|
+
addLanguages(globalThis.navigator.languages);
|
|
552
|
+
if (typeof globalThis.navigator.language !== 'undefined')
|
|
553
|
+
addLanguage(globalThis.navigator.language);
|
|
554
|
+
if (typeof globalThis.navigator.userLanguage !== 'undefined')
|
|
555
|
+
addLanguage(globalThis.navigator.userLanguage);
|
|
556
|
+
if (typeof globalThis.navigator.browserLanguage !== 'undefined')
|
|
557
|
+
addLanguage(globalThis.navigator.browserLanguage);
|
|
558
|
+
if (typeof globalThis.navigator.systemLanguage !== 'undefined')
|
|
559
|
+
addLanguage(globalThis.navigator.systemLanguage);
|
|
560
|
+
}
|
|
561
|
+
try {
|
|
562
|
+
locale.offset = new Date().getTimezoneOffset() * -1;
|
|
563
|
+
}
|
|
564
|
+
catch (_) {
|
|
565
|
+
}
|
|
566
|
+
if (typeof locale.language === 'string') {
|
|
567
|
+
if (typeof Intl !== 'undefined' && typeof Intl.Locale !== 'undefined') {
|
|
568
|
+
try {
|
|
569
|
+
var intlLocale = new Intl.Locale(locale.language);
|
|
570
|
+
if (typeof intlLocale.getTextInfo === 'function')
|
|
571
|
+
isRTL = intlLocale.getTextInfo().direction === 'rtl';
|
|
572
|
+
else if (typeof intlLocale.textInfo !== 'undefined')
|
|
573
|
+
isRTL = intlLocale.textInfo.direction === 'rtl';
|
|
574
|
+
}
|
|
575
|
+
catch (_) {
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
if (typeof isRTL !== 'boolean') {
|
|
579
|
+
var matched = /^([A-Za-z]{1,8})(?:[-_][A-Za-z0-9]{1,8})*$/.exec(locale.language);
|
|
580
|
+
if (matched !== null) {
|
|
581
|
+
var language = matched[1].toLowerCase();
|
|
582
|
+
for (var i = 0; i < RTL_LANGUAGES.length; i++) {
|
|
583
|
+
if (RTL_LANGUAGES[i] === language) {
|
|
584
|
+
isRTL = true;
|
|
585
|
+
break;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
if (typeof isRTL === 'boolean')
|
|
592
|
+
locale.isRTL = isRTL;
|
|
593
|
+
cachedLocale = locale;
|
|
594
|
+
return cachedLocale;
|
|
595
|
+
}
|
|
596
|
+
function getDevice() {
|
|
597
|
+
if (currentUserAgent === USER_AGENT && parsedFromHighEntropyValuesDevice !== null)
|
|
598
|
+
return parsedFromHighEntropyValuesDevice;
|
|
599
|
+
var osName = getParsedCache().os.name;
|
|
600
|
+
if (osName === OS.iOS || osName === OS.Android)
|
|
601
|
+
return Devices.Mobile;
|
|
602
|
+
if (osName === OS.Windows || osName === OS.MacOS)
|
|
603
|
+
return Devices.Desktop;
|
|
604
|
+
return Devices.Unknown;
|
|
605
|
+
}
|
|
606
|
+
function getIsWebview() {
|
|
607
|
+
return /; ?wv|applewebkit(?!.*safari)/i.test(currentUserAgent);
|
|
608
|
+
}
|
|
609
|
+
function getIsNode() {
|
|
610
|
+
return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && typeof globalThis.process.versions.node !== 'undefined';
|
|
611
|
+
}
|
|
612
|
+
function getIsStandalone() {
|
|
613
|
+
var osName = getParsedCache().os.name;
|
|
614
|
+
if (osName === OS.iOS)
|
|
615
|
+
return globalThis.navigator.standalone === true;
|
|
616
|
+
if (typeof globalThis.matchMedia === 'undefined')
|
|
617
|
+
return false;
|
|
618
|
+
return globalThis.matchMedia('(display-mode: standalone)').matches;
|
|
619
|
+
}
|
|
470
620
|
function parseFromHighEntropyValues() {
|
|
471
621
|
if (typeof globalThis.navigator === 'undefined' || typeof globalThis.navigator.userAgentData === 'undefined' || typeof globalThis.navigator.userAgentData.getHighEntropyValues === 'undefined')
|
|
472
622
|
return Promise.resolve();
|
|
@@ -537,28 +687,80 @@ function parseFromNavigatorGPU() {
|
|
|
537
687
|
.then(function (adapter) {
|
|
538
688
|
if (adapter !== null) {
|
|
539
689
|
var info = adapter.info;
|
|
540
|
-
info.architecture;
|
|
541
|
-
info.description;
|
|
542
|
-
info.device;
|
|
543
|
-
info.vendor;
|
|
690
|
+
parsedFromNavigatorGPU.architecture = info.architecture;
|
|
691
|
+
parsedFromNavigatorGPU.description = info.description;
|
|
692
|
+
parsedFromNavigatorGPU.device = info.device;
|
|
693
|
+
parsedFromNavigatorGPU.vendor = info.vendor;
|
|
544
694
|
}
|
|
545
695
|
})
|
|
546
696
|
.catch(function () {
|
|
547
697
|
});
|
|
548
698
|
}
|
|
549
|
-
Promise.all([
|
|
699
|
+
ready = Promise.all([
|
|
550
700
|
parseFromHighEntropyValues(),
|
|
551
701
|
parseFromNavigatorGPU(),
|
|
552
702
|
]).then(function () {
|
|
553
703
|
});
|
|
554
704
|
EventListener.add(globalThis, {
|
|
555
705
|
type: 'languagechange', callback: function () {
|
|
706
|
+
cachedLocale = null;
|
|
556
707
|
}
|
|
557
708
|
});
|
|
558
709
|
var Platform = {
|
|
710
|
+
get ready() {
|
|
711
|
+
return ready;
|
|
712
|
+
},
|
|
559
713
|
get os() {
|
|
560
714
|
return getParsedCache().os;
|
|
561
|
-
}
|
|
715
|
+
},
|
|
716
|
+
get engine() {
|
|
717
|
+
return getParsedCache().engine;
|
|
718
|
+
},
|
|
719
|
+
get browser() {
|
|
720
|
+
return getParsedCache().browser;
|
|
721
|
+
},
|
|
722
|
+
get userAgent() {
|
|
723
|
+
return currentUserAgent;
|
|
724
|
+
},
|
|
725
|
+
set userAgent(value) {
|
|
726
|
+
if (currentUserAgent === value)
|
|
727
|
+
return;
|
|
728
|
+
currentUserAgent = value;
|
|
729
|
+
invalidateCache();
|
|
730
|
+
if (value === USER_AGENT) {
|
|
731
|
+
ready = Promise.all([
|
|
732
|
+
parseFromHighEntropyValues(),
|
|
733
|
+
parseFromNavigatorGPU(),
|
|
734
|
+
]).then(function () {
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
get locale() {
|
|
739
|
+
return getLocale();
|
|
740
|
+
},
|
|
741
|
+
get device() {
|
|
742
|
+
return getDevice();
|
|
743
|
+
},
|
|
744
|
+
get gpu() {
|
|
745
|
+
return getGPU();
|
|
746
|
+
},
|
|
747
|
+
get isWebview() {
|
|
748
|
+
return getIsWebview();
|
|
749
|
+
},
|
|
750
|
+
get isNode() {
|
|
751
|
+
return getIsNode();
|
|
752
|
+
},
|
|
753
|
+
get isStandalone() {
|
|
754
|
+
return getIsStandalone();
|
|
755
|
+
},
|
|
756
|
+
Constants: {
|
|
757
|
+
OS: OS,
|
|
758
|
+
Engines: Engines,
|
|
759
|
+
Browsers: Browsers,
|
|
760
|
+
Devices: Devices,
|
|
761
|
+
},
|
|
762
|
+
Errors: {},
|
|
763
|
+
};
|
|
562
764
|
|
|
563
765
|
function createSubscriptionManager(attach, detach) {
|
|
564
766
|
var entries = [];
|
|
@@ -702,7 +904,19 @@ function createCustomError(name, Base) {
|
|
|
702
904
|
|
|
703
905
|
var NotSupportedError = createCustomError('NotSupportedError');
|
|
704
906
|
|
|
705
|
-
var
|
|
907
|
+
var InvalidStateError = createCustomError('InvalidStateError');
|
|
908
|
+
|
|
909
|
+
var lastIOSVideo = null;
|
|
910
|
+
var eventsBridged = false;
|
|
911
|
+
var FS_BRIDGE_KEY = (function () {
|
|
912
|
+
if (typeof Symbol === 'function') {
|
|
913
|
+
var existing = globalThis.__nativeFnFsBridgeKey__;
|
|
914
|
+
if (typeof existing === 'symbol')
|
|
915
|
+
return existing;
|
|
916
|
+
return globalThis.__nativeFnFsBridgeKey__ = Symbol('native.fn.fs.bridged');
|
|
917
|
+
}
|
|
918
|
+
return '__nativeFnFsBridged__';
|
|
919
|
+
}());
|
|
706
920
|
var API_VARIANTS = {
|
|
707
921
|
standard: {
|
|
708
922
|
enabled: 'fullscreenEnabled',
|
|
@@ -734,6 +948,31 @@ var API_VARIANTS = {
|
|
|
734
948
|
},
|
|
735
949
|
};
|
|
736
950
|
var api = detectApi();
|
|
951
|
+
var onChangeSubscriptionManager = createSubscriptionManager(attachOnChange, detachOnChange);
|
|
952
|
+
var onErrorSubscriptionManager = createSubscriptionManager(attachOnError, detachOnError);
|
|
953
|
+
var Fullscreen = {
|
|
954
|
+
get supported() {
|
|
955
|
+
return getEnabled();
|
|
956
|
+
},
|
|
957
|
+
get element() {
|
|
958
|
+
return getElement();
|
|
959
|
+
},
|
|
960
|
+
get isFullscreen() {
|
|
961
|
+
return getIsFullscreen();
|
|
962
|
+
},
|
|
963
|
+
request: request,
|
|
964
|
+
exit: exit,
|
|
965
|
+
onChange: onChangeSubscriptionManager.subscribe,
|
|
966
|
+
onError: onErrorSubscriptionManager.subscribe,
|
|
967
|
+
Constants: {},
|
|
968
|
+
Errors: {
|
|
969
|
+
NotSupportedError: NotSupportedError,
|
|
970
|
+
InvalidStateError: InvalidStateError,
|
|
971
|
+
},
|
|
972
|
+
};
|
|
973
|
+
function hasStandardApi() {
|
|
974
|
+
return api !== null;
|
|
975
|
+
}
|
|
737
976
|
function detectApi() {
|
|
738
977
|
var element = globalThis.document.documentElement;
|
|
739
978
|
if (typeof globalThis.document.fullscreenEnabled !== 'undefined' || typeof globalThis.document.exitFullscreen !== 'undefined')
|
|
@@ -750,286 +989,281 @@ function detectApi() {
|
|
|
750
989
|
}
|
|
751
990
|
return null;
|
|
752
991
|
}
|
|
753
|
-
function
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
var pendingQueue = [];
|
|
758
|
-
var lastIntendedOperation = 'exit';
|
|
759
|
-
var onChangeSubscriptionManager = createSubscriptionManager(attachOnChange, detachOnChange);
|
|
760
|
-
var onErrorSubscriptionManager = createSubscriptionManager(attachOnError, detachOnError);
|
|
761
|
-
function getDefaultTarget() {
|
|
762
|
-
if (Platform.os.name === OS.iOS) {
|
|
763
|
-
var video = globalThis.document.querySelector('video');
|
|
764
|
-
if (video === null)
|
|
765
|
-
return undefined;
|
|
766
|
-
return video;
|
|
767
|
-
}
|
|
768
|
-
return globalThis.document.documentElement;
|
|
769
|
-
}
|
|
770
|
-
function bridgeEvents() {
|
|
771
|
-
if (eventsBridged)
|
|
772
|
-
return;
|
|
773
|
-
eventsBridged = true;
|
|
774
|
-
if (Platform.os.name === OS.iOS) {
|
|
775
|
-
bridgeIOSVideoEvents();
|
|
776
|
-
if (typeof globalThis.MutationObserver !== 'undefined') {
|
|
777
|
-
var observer = new MutationObserver(function () {
|
|
778
|
-
bridgeIOSVideoEvents();
|
|
779
|
-
});
|
|
780
|
-
observer.observe(globalThis.document.documentElement, {
|
|
781
|
-
childList: true,
|
|
782
|
-
subtree: true,
|
|
783
|
-
});
|
|
784
|
-
}
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
function bridgeIOSVideoEvents() {
|
|
788
|
-
if (typeof globalThis.document === 'undefined')
|
|
789
|
-
return;
|
|
790
|
-
var videos = globalThis.document.querySelectorAll('video');
|
|
791
|
-
videos.forEach(function (video) {
|
|
792
|
-
if (video[FS_BRIDGED_KEY] === true || !(typeof video.webkitEnterFullscreen !== 'undefined' || typeof video.onwebkitbeginfullscreen !== 'undefined'))
|
|
793
|
-
return;
|
|
794
|
-
EventListener.add(video, {
|
|
795
|
-
type: 'webkitbeginfullscreen',
|
|
796
|
-
callback: onChangeSubscriptionManager.emit,
|
|
797
|
-
options: false,
|
|
798
|
-
});
|
|
799
|
-
EventListener.add(video, {
|
|
800
|
-
type: 'webkitendfullscreen',
|
|
801
|
-
callback: onChangeSubscriptionManager.emit,
|
|
802
|
-
options: false,
|
|
803
|
-
});
|
|
804
|
-
video[FS_BRIDGED_KEY] = true;
|
|
805
|
-
});
|
|
992
|
+
function getDefaultTarget() {
|
|
993
|
+
if (Platform.os.name === OS.iOS) {
|
|
994
|
+
var video = globalThis.document.querySelector('video');
|
|
995
|
+
return video !== null ? video : undefined;
|
|
806
996
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
type: events[i],
|
|
812
|
-
callback: onChangeSubscriptionManager.emit,
|
|
813
|
-
options: false,
|
|
814
|
-
});
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
function detachOnChange() {
|
|
818
|
-
var events = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];
|
|
819
|
-
for (var i = 0; i < events.length; i++) {
|
|
820
|
-
EventListener.remove(globalThis.document, {
|
|
821
|
-
type: events[i],
|
|
822
|
-
callback: onChangeSubscriptionManager.emit,
|
|
823
|
-
options: false,
|
|
824
|
-
});
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
function attachOnError() {
|
|
828
|
-
var events = ['fullscreenerror', 'webkitfullscreenerror', 'mozfullscreenerror', 'MSFullscreenError'];
|
|
829
|
-
for (var i = 0; i < events.length; i++) {
|
|
830
|
-
EventListener.add(globalThis.document, {
|
|
831
|
-
type: events[i],
|
|
832
|
-
callback: onErrorSubscriptionManager.emit,
|
|
833
|
-
options: false,
|
|
834
|
-
});
|
|
835
|
-
}
|
|
836
|
-
}
|
|
837
|
-
function detachOnError() {
|
|
838
|
-
var events = ['fullscreenerror', 'webkitfullscreenerror', 'mozfullscreenerror', 'MSFullscreenError'];
|
|
839
|
-
for (var i = 0; i < events.length; i++) {
|
|
840
|
-
EventListener.remove(globalThis.document, {
|
|
841
|
-
type: events[i],
|
|
842
|
-
callback: onErrorSubscriptionManager.emit,
|
|
843
|
-
options: false,
|
|
844
|
-
});
|
|
845
|
-
}
|
|
846
|
-
}
|
|
847
|
-
function getEnabled() {
|
|
848
|
-
if (api === null)
|
|
849
|
-
return (Platform.os.name === OS.iOS && globalThis.HTMLVideoElement.prototype.webkitSupportsFullscreen === true);
|
|
997
|
+
return globalThis.document.documentElement;
|
|
998
|
+
}
|
|
999
|
+
function getEnabled() {
|
|
1000
|
+
if (api !== null)
|
|
850
1001
|
return globalThis.document[api.enabled] === true;
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
1002
|
+
if (Platform.os.name !== OS.iOS)
|
|
1003
|
+
return false;
|
|
1004
|
+
var video;
|
|
1005
|
+
var selected = globalThis.document.querySelector('video');
|
|
1006
|
+
if (selected !== null)
|
|
1007
|
+
video = selected;
|
|
1008
|
+
else
|
|
1009
|
+
video = globalThis.document.createElement('video');
|
|
1010
|
+
return video.webkitSupportsFullscreen === true || typeof video.webkitEnterFullscreen === 'function';
|
|
1011
|
+
}
|
|
1012
|
+
function getElement() {
|
|
1013
|
+
if (api === null) {
|
|
1014
|
+
if (lastIOSVideo !== null && lastIOSVideo.webkitDisplayingFullscreen === true)
|
|
1015
|
+
return lastIOSVideo;
|
|
861
1016
|
return null;
|
|
862
1017
|
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
return
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
1018
|
+
var currentElement = globalThis.document[api.element];
|
|
1019
|
+
if (typeof currentElement !== 'undefined')
|
|
1020
|
+
return currentElement;
|
|
1021
|
+
return null;
|
|
1022
|
+
}
|
|
1023
|
+
function getIsFullscreen() {
|
|
1024
|
+
return getElement() !== null;
|
|
1025
|
+
}
|
|
1026
|
+
function createEventPayload(nativeEvent, element, isFullscreen) {
|
|
1027
|
+
return {
|
|
1028
|
+
nativeEvent: nativeEvent,
|
|
1029
|
+
element: element,
|
|
1030
|
+
isFullscreen: isFullscreen,
|
|
1031
|
+
};
|
|
1032
|
+
}
|
|
1033
|
+
function emitChange(nativeEvent, element, isFullscreen) {
|
|
1034
|
+
onChangeSubscriptionManager.emit(createEventPayload(nativeEvent, element, isFullscreen));
|
|
1035
|
+
}
|
|
1036
|
+
function emitError(nativeEvent, element, isFullscreen) {
|
|
1037
|
+
onErrorSubscriptionManager.emit(createEventPayload(nativeEvent, element, isFullscreen));
|
|
1038
|
+
}
|
|
1039
|
+
function onFullscreenChange(event) {
|
|
1040
|
+
var target = event.target;
|
|
1041
|
+
if (target instanceof globalThis.Element)
|
|
1042
|
+
emitChange(event, target, getIsFullscreen());
|
|
1043
|
+
if (target instanceof globalThis.Document)
|
|
1044
|
+
emitChange(event, globalThis.document.documentElement, getIsFullscreen());
|
|
1045
|
+
}
|
|
1046
|
+
function onFullscreenError(event) {
|
|
1047
|
+
var target = event.target;
|
|
1048
|
+
if (target instanceof globalThis.Element)
|
|
1049
|
+
emitError(event, target, getIsFullscreen());
|
|
1050
|
+
if (target instanceof globalThis.Document)
|
|
1051
|
+
emitError(event, globalThis.document.documentElement, getIsFullscreen());
|
|
1052
|
+
}
|
|
1053
|
+
function onIOSBeginFullscreen(event) {
|
|
1054
|
+
lastIOSVideo = this;
|
|
1055
|
+
emitChange(event, this, true);
|
|
1056
|
+
}
|
|
1057
|
+
function onIOSEndFullscreen(event) {
|
|
1058
|
+
if (lastIOSVideo === this)
|
|
1059
|
+
lastIOSVideo = null;
|
|
1060
|
+
emitChange(event, this, false);
|
|
1061
|
+
}
|
|
1062
|
+
function bridgeSingleVideoNode(video) {
|
|
1063
|
+
if (video[FS_BRIDGE_KEY])
|
|
1064
|
+
return;
|
|
1065
|
+
if (typeof video.webkitEnterFullscreen === 'undefined' && typeof video.onwebkitbeginfullscreen === 'undefined')
|
|
1066
|
+
return;
|
|
1067
|
+
EventListener.add(video, { type: 'webkitbeginfullscreen', callback: onIOSBeginFullscreen, options: false });
|
|
1068
|
+
EventListener.add(video, { type: 'webkitendfullscreen', callback: onIOSEndFullscreen, options: false });
|
|
1069
|
+
video[FS_BRIDGE_KEY] = true;
|
|
1070
|
+
}
|
|
1071
|
+
function bridgeIOSVideoEvents() {
|
|
1072
|
+
var videos = globalThis.document.querySelectorAll('video');
|
|
1073
|
+
for (var i = 0; i < videos.length; i++)
|
|
1074
|
+
bridgeSingleVideoNode(videos[i]);
|
|
1075
|
+
}
|
|
1076
|
+
function bridgeEvents() {
|
|
1077
|
+
if (eventsBridged)
|
|
1078
|
+
return;
|
|
1079
|
+
eventsBridged = true;
|
|
1080
|
+
if (Platform.os.name !== OS.iOS)
|
|
1081
|
+
return;
|
|
1082
|
+
bridgeIOSVideoEvents();
|
|
1083
|
+
if (typeof globalThis.MutationObserver === 'undefined')
|
|
1084
|
+
return;
|
|
1085
|
+
var observer = new globalThis.MutationObserver(function (records) {
|
|
1086
|
+
if (lastIOSVideo !== null) {
|
|
1087
|
+
var removed = false;
|
|
1088
|
+
for (var i = 0; i < records.length; i++) {
|
|
1089
|
+
var removedNodes = records[i].removedNodes;
|
|
1090
|
+
for (var j = 0; j < removedNodes.length; j++) {
|
|
1091
|
+
var node = removedNodes[j];
|
|
1092
|
+
if (node === lastIOSVideo || (node.nodeType === Node.ELEMENT_NODE && node.contains(lastIOSVideo))) {
|
|
1093
|
+
removed = true;
|
|
1094
|
+
break;
|
|
940
1095
|
}
|
|
941
1096
|
}
|
|
942
|
-
|
|
1097
|
+
if (removed)
|
|
1098
|
+
break;
|
|
943
1099
|
}
|
|
944
|
-
if (
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
1100
|
+
if (removed && !globalThis.document.contains(lastIOSVideo))
|
|
1101
|
+
lastIOSVideo = null;
|
|
1102
|
+
}
|
|
1103
|
+
for (var i = 0; i < records.length; i++) {
|
|
1104
|
+
var addedNodes = records[i].addedNodes;
|
|
1105
|
+
for (var j = 0; j < addedNodes.length; j++) {
|
|
1106
|
+
var node = addedNodes[j];
|
|
1107
|
+
if (node.nodeType !== Node.ELEMENT_NODE)
|
|
1108
|
+
continue;
|
|
1109
|
+
var element = node;
|
|
1110
|
+
if (element.tagName === 'VIDEO') {
|
|
1111
|
+
bridgeSingleVideoNode(element);
|
|
1112
|
+
continue;
|
|
1113
|
+
}
|
|
1114
|
+
var nested = element.querySelectorAll('video');
|
|
1115
|
+
for (var k = 0; k < nested.length; k++)
|
|
1116
|
+
bridgeSingleVideoNode(nested[k]);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
});
|
|
1120
|
+
observer.observe(globalThis.document.documentElement, { childList: true, subtree: true });
|
|
1121
|
+
}
|
|
1122
|
+
function attachOnChange() {
|
|
1123
|
+
if (api != null)
|
|
1124
|
+
EventListener.add(globalThis.document, { type: api.events.change, callback: onFullscreenChange, options: false });
|
|
1125
|
+
if (Platform.os.name === OS.iOS)
|
|
1126
|
+
bridgeIOSVideoEvents();
|
|
1127
|
+
}
|
|
1128
|
+
function detachOnChange() {
|
|
1129
|
+
if (api != null)
|
|
1130
|
+
EventListener.remove(globalThis.document, { type: api.events.change, callback: onFullscreenChange, options: false });
|
|
1131
|
+
if (Platform.os.name !== OS.iOS)
|
|
1132
|
+
return;
|
|
1133
|
+
var videos = globalThis.document.querySelectorAll('video');
|
|
1134
|
+
for (var i = 0; i < videos.length; i++) {
|
|
1135
|
+
EventListener.remove(videos[i], { type: 'webkitbeginfullscreen', callback: onIOSBeginFullscreen, options: false });
|
|
1136
|
+
EventListener.remove(videos[i], { type: 'webkitendfullscreen', callback: onIOSEndFullscreen, options: false });
|
|
1137
|
+
videos[i][FS_BRIDGE_KEY] = false;
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
function attachOnError() {
|
|
1141
|
+
if (api != null)
|
|
1142
|
+
EventListener.add(globalThis.document, { type: api.events.error, callback: onFullscreenError, options: false });
|
|
1143
|
+
}
|
|
1144
|
+
function detachOnError() {
|
|
1145
|
+
if (api != null)
|
|
1146
|
+
EventListener.remove(globalThis.document, { type: api.events.error, callback: onFullscreenError, options: false });
|
|
1147
|
+
}
|
|
1148
|
+
function request(target, options) {
|
|
1149
|
+
return new Promise(function (resolve, reject) {
|
|
1150
|
+
if (typeof target === 'undefined')
|
|
1151
|
+
target = getDefaultTarget();
|
|
1152
|
+
if (typeof target === 'undefined')
|
|
1153
|
+
return reject(new NotSupportedError('Failed to enter fullscreen mode.'));
|
|
1154
|
+
var tagName = target.tagName.toLowerCase();
|
|
1155
|
+
var isIOSFullscreenActive = lastIOSVideo !== null && lastIOSVideo.webkitDisplayingFullscreen === true;
|
|
1156
|
+
if (api !== null) {
|
|
1157
|
+
var method = target[api.request];
|
|
1158
|
+
if (typeof method === 'function' && !isIOSFullscreenActive) {
|
|
1159
|
+
var result = method.call(target, options);
|
|
1160
|
+
if (typeof result !== 'undefined' && typeof result.then === 'function') {
|
|
1161
|
+
result
|
|
1162
|
+
.then(resolve)
|
|
1163
|
+
.catch(function () {
|
|
1164
|
+
try {
|
|
952
1165
|
if (Platform.os.name !== OS.iOS)
|
|
953
1166
|
return reject(new NotSupportedError('The "' + tagName + '" element does not support fullscreen requests.'));
|
|
954
1167
|
fallbackToIOSVideo();
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1168
|
+
}
|
|
1169
|
+
catch (_e) {
|
|
1170
|
+
reject(new NotSupportedError('The "' + tagName + '" element does not support fullscreen requests.'));
|
|
1171
|
+
}
|
|
1172
|
+
});
|
|
1173
|
+
return;
|
|
959
1174
|
}
|
|
960
|
-
}
|
|
961
|
-
fallbackToIOSVideo();
|
|
962
|
-
});
|
|
963
|
-
}
|
|
964
|
-
function exitImmediately() {
|
|
965
|
-
return new Promise(function (resolve, reject) {
|
|
966
|
-
if (getElement() === null && lastIOSVideo === null)
|
|
967
1175
|
return resolve();
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
function fallbackToIOSVideo() {
|
|
1179
|
+
if (Platform.os.name === OS.iOS && typeof target !== 'undefined' && target.tagName.toUpperCase() === 'VIDEO') {
|
|
1180
|
+
var video_1 = target;
|
|
1181
|
+
if (video_1.webkitSupportsFullscreen && typeof video_1.webkitEnterFullscreen === 'function') {
|
|
1182
|
+
if (!hasStandardApi())
|
|
1183
|
+
bridgeSingleVideoNode(video_1);
|
|
1184
|
+
if (video_1.played.length === 0) {
|
|
1185
|
+
video_1.play()
|
|
1186
|
+
.then(function () {
|
|
1187
|
+
try {
|
|
1188
|
+
video_1.webkitEnterFullscreen();
|
|
1189
|
+
}
|
|
1190
|
+
catch (e) {
|
|
1191
|
+
return reject(new InvalidStateError('The object is in an invalid state.'));
|
|
1192
|
+
}
|
|
1193
|
+
});
|
|
1194
|
+
}
|
|
1195
|
+
else {
|
|
1196
|
+
try {
|
|
1197
|
+
video_1.webkitEnterFullscreen();
|
|
1198
|
+
}
|
|
1199
|
+
catch (e) {
|
|
1200
|
+
return reject(new InvalidStateError('The object is in an invalid state.'));
|
|
981
1201
|
}
|
|
982
1202
|
}
|
|
1203
|
+
lastIOSVideo = video_1;
|
|
1204
|
+
return resolve();
|
|
983
1205
|
}
|
|
984
|
-
reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
985
1206
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1207
|
+
reject(new NotSupportedError('The "' + tagName + '" element does not support fullscreen requests.'));
|
|
1208
|
+
}
|
|
1209
|
+
fallbackToIOSVideo();
|
|
1210
|
+
});
|
|
1211
|
+
}
|
|
1212
|
+
function exit() {
|
|
1213
|
+
return new Promise(function (resolve, reject) {
|
|
1214
|
+
if (api !== null) {
|
|
1215
|
+
var method = globalThis.document[api.exit];
|
|
1216
|
+
if (typeof method === 'function') {
|
|
1217
|
+
var result = method.call(globalThis.document);
|
|
1218
|
+
if (typeof result !== 'undefined' && typeof result.then === 'function') {
|
|
1219
|
+
result
|
|
1220
|
+
.then(resolve)
|
|
1221
|
+
.catch(function () {
|
|
1222
|
+
try {
|
|
994
1223
|
if (Platform.os.name !== OS.iOS)
|
|
995
1224
|
return reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
996
1225
|
fallbackToIOSVideo();
|
|
997
|
-
}
|
|
998
|
-
|
|
999
|
-
|
|
1226
|
+
}
|
|
1227
|
+
catch (_e) {
|
|
1228
|
+
reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
1229
|
+
}
|
|
1230
|
+
});
|
|
1231
|
+
return;
|
|
1232
|
+
}
|
|
1233
|
+
return resolve();
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
function fallbackToIOSVideo() {
|
|
1237
|
+
if (Platform.os.name !== OS.iOS) {
|
|
1238
|
+
reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
1241
|
+
var target = lastIOSVideo;
|
|
1242
|
+
if (target !== null && typeof target.webkitExitFullscreen === 'function' && target.webkitDisplayingFullscreen === true) {
|
|
1243
|
+
target.webkitExitFullscreen();
|
|
1244
|
+
if (target.webkitDisplayingFullscreen)
|
|
1245
|
+
return reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
1246
|
+
lastIOSVideo = null;
|
|
1247
|
+
return resolve();
|
|
1248
|
+
}
|
|
1249
|
+
var videos = globalThis.document.querySelectorAll('video');
|
|
1250
|
+
for (var i = 0; i < videos.length; i++) {
|
|
1251
|
+
var video = videos[i];
|
|
1252
|
+
if (typeof video.webkitExitFullscreen === 'function' && video.webkitDisplayingFullscreen === true) {
|
|
1253
|
+
video.webkitExitFullscreen();
|
|
1254
|
+
if (video.webkitDisplayingFullscreen)
|
|
1255
|
+
return reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
1256
|
+
lastIOSVideo = null;
|
|
1000
1257
|
return resolve();
|
|
1001
1258
|
}
|
|
1002
1259
|
}
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
return request(target, options);
|
|
1010
|
-
}
|
|
1011
|
-
bridgeEvents();
|
|
1012
|
-
return {
|
|
1013
|
-
get supported() {
|
|
1014
|
-
return getEnabled();
|
|
1015
|
-
},
|
|
1016
|
-
get element() {
|
|
1017
|
-
return getElement();
|
|
1018
|
-
},
|
|
1019
|
-
get isFullscreen() {
|
|
1020
|
-
return getIsFullscreen();
|
|
1021
|
-
},
|
|
1022
|
-
request: request,
|
|
1023
|
-
exit: exit,
|
|
1024
|
-
toggle: toggle,
|
|
1025
|
-
onChange: onChangeSubscriptionManager.subscribe,
|
|
1026
|
-
onError: onErrorSubscriptionManager.subscribe,
|
|
1027
|
-
Constants: {},
|
|
1028
|
-
Errors: {
|
|
1029
|
-
NotSupportedError: NotSupportedError,
|
|
1030
|
-
},
|
|
1031
|
-
};
|
|
1260
|
+
if (getElement() === null)
|
|
1261
|
+
return resolve();
|
|
1262
|
+
reject(new NotSupportedError('Failed to exit fullscreen mode.'));
|
|
1263
|
+
}
|
|
1264
|
+
fallbackToIOSVideo();
|
|
1265
|
+
});
|
|
1032
1266
|
}
|
|
1033
|
-
|
|
1267
|
+
bridgeEvents();
|
|
1034
1268
|
|
|
1035
1269
|
module.exports = Fullscreen;
|