native-fn
Version:
1,308 lines (1,295 loc) • 106 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Native = factory());
})(this, (function () { 'use strict';
var version = "1.0.90";
var packageJSON = {
version: version};
function resolveWindowsVersion(string) {
if (typeof string === 'undefined')
return '';
var mapped = {
'4.90': 'ME',
'NT3.51': 'NT 3.11',
'NT4.0': 'NT 4.0',
'NT 5.0': '2000',
'NT 5.1': 'XP',
'NT 5.2': 'XP',
'NT 6.0': 'Vista',
'NT 6.1': '7',
'NT 6.2': '8',
'NT 6.3': '8.1',
'NT 6.4': '10',
'NT 10.0': '10',
'ARM': 'RT'
}[string];
if (typeof mapped !== 'undefined')
return mapped;
return string;
}
function resolveUnderscoreVersion(string) {
if (typeof string === 'undefined')
return '';
return string.replace(/_/g, '.');
}
var OS;
(function (OS) {
OS["Unknown"] = "Unknown";
OS["Android"] = "Android";
OS["iOS"] = "iOS";
OS["Windows"] = "Windows";
OS["MacOS"] = "MacOS";
})(OS || (OS = {}));
var Devices;
(function (Devices) {
Devices["Unknown"] = "Unknown";
Devices["Mobile"] = "Mobile";
Devices["Desktop"] = "Desktop";
})(Devices || (Devices = {}));
var Engines;
(function (Engines) {
Engines["Unknown"] = "Unknown";
Engines["EdgeHTML"] = "EdgeHTML";
Engines["ArkWeb"] = "ArkWeb";
Engines["Blink"] = "Blink";
Engines["Presto"] = "Presto";
Engines["WebKit"] = "WebKit";
Engines["Trident"] = "Trident";
Engines["NetFront"] = "NetFront";
Engines["KHTML"] = "KHTML";
Engines["Tasman"] = "Tasman";
Engines["Gecko"] = "Gecko";
})(Engines || (Engines = {}));
var Browsers;
(function (Browsers) {
Browsers["Unknown"] = "Unknown";
Browsers["Chrome"] = "Chrome";
Browsers["Safari"] = "Safari";
Browsers["Edge"] = "Edge";
Browsers["Firefox"] = "Firefox";
Browsers["Opera"] = "Opera";
Browsers["IE"] = "IE";
Browsers["SamsungInternet"] = "SamsungInternet";
})(Browsers || (Browsers = {}));
var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
var HIGH_ENTROPY_BRAND_NAME_MAP = {
'Google Chrome': 'Chrome',
'Microsoft Edge': 'Edge',
'Microsoft Edge WebView2': 'Edge WebView2',
'Android WebView': 'Chrome WebView',
'HeadlessChrome': 'Chrome Headless',
'OperaMobile': 'Opera Mobi',
};
var RTL_LANGUAGES = ['ae', 'ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he', 'iw', 'ku', 'mzn', 'nqo', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi'];
var OS_RESOLVER_MAP = [
[/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i, OS.Windows, resolveWindowsVersion],
[/windows[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i, OS.Windows, resolveWindowsVersion],
[/windows nt ?([\d.)]*)(?!.+xbox)/i, OS.Windows, resolveWindowsVersion],
[/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d.;]*)/i, OS.Windows, resolveWindowsVersion],
[/windows ce\/?([\d.]*)/i, OS.Windows, resolveWindowsVersion],
[/[adehimnop]{4,7}\b(?:.*os (\w+) like mac|; opera)/i, OS.iOS, resolveUnderscoreVersion],
[/(?:ios;fbsv|ios(?=.+ip(?:ad|hone))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\/ ]([\w.]+)/i, OS.iOS, resolveUnderscoreVersion],
[/cfnetwork\/.+darwin/i, OS.iOS, resolveUnderscoreVersion],
[/mac os x ?([\w. ]*)/i, OS.MacOS, resolveUnderscoreVersion],
[/(?:macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i, OS.MacOS, resolveUnderscoreVersion],
[/droid ([\w.]+)\b.+(android[- ]x86)/i, OS.Android],
[/android\w*[-\/.; ]?([\d.]*)/i, OS.Android],
];
var ENGINE_RESOLVER_MAP = [
[/windows.+ edge\/([\w.]+)/i, Engines.EdgeHTML],
[/arkweb\/([\w.]+)/i, Engines.ArkWeb],
[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i, Engines.Blink],
[/presto\/([\w.]+)/i, Engines.Presto],
[/webkit\/([\w.]+)/i, Engines.WebKit],
[/trident\/([\w.]+)/i, Engines.Trident],
[/netfront\/([\w.]+)/i, Engines.NetFront],
[/khtml[\/ ]\(?([\w.]+)/i, Engines.KHTML],
[/tasman[\/ ]\(?([\w.]+)/i, Engines.Tasman],
[/rv:([\w.]{1,9})\b.+gecko/i, Engines.Gecko]
];
var BROWSER_RESOLVER_MAP = [
[/\b(?:crmo|crios)\/([\w.]+)/i, Browsers.Chrome],
[/webview.+edge\/([\w.]+)/i, Browsers.Edge],
[/edg(?:e|ios|a)?\/([\w.]+)/i, Browsers.Edge],
[/opera mini\/([-\w.]+)/i, Browsers.Opera],
[/opera [mobileta]{3,6}\b.+version\/([-\w.]+)/i, Browsers.Opera],
[/opera(?:.+version\/|[\/ ]+)([\w.]+)/i, Browsers.Opera],
[/opios[\/ ]+([\w.]+)/i, Browsers.Opera],
[/\bop(?:rg)?x\/([\w.]+)/i, Browsers.Opera],
[/\bopr\/([\w.]+)/i, Browsers.Opera],
[/iemobile(?:browser|boat|jet)[\/ ]?([\d.]*)/i, Browsers.IE],
[/(?:ms|\()ie ([\w.]+)/i, Browsers.IE],
[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i, Browsers.IE],
[/\bfocus\/([\w.]+)/i, Browsers.Firefox],
[/\bopt\/([\w.]+)/i, Browsers.Opera],
[/coast\/([\w.]+)/i, Browsers.Opera],
[/fxios\/([\w.-]+)/i, Browsers.Firefox],
[/samsungbrowser\/([\w.]+)/i, Browsers.SamsungInternet],
[/headlesschrome(?:\/([\w.]+)| )/i, Browsers.Chrome],
[/wv\).+chrome\/([\w.]+).+edgw\//i, Browsers.Edge],
[/ wv\).+(chrome)\/([\w.]+)/i, Browsers.Chrome],
[/chrome\/([\w.]+) mobile/i, Browsers.Chrome],
[/chrome\/v?([\w.]+)/i, Browsers.Chrome],
[/version\/([\w.,]+) .*mobile(?:\/\w+ | ?)safari/i, Browsers.Safari],
[/iphone .*mobile(?:\/\w+ | ?)safari/i, Browsers.Safari],
[/version\/([\w.,]+) .*safari/i, Browsers.Safari],
[/webkit.+?(?:mobile ?safari|safari)(\/[\w.]+)/i, Browsers.Safari, '1'],
[/(?:mobile|tablet);.*firefox\/([\w.-]+)/i, Browsers.Firefox],
[/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
[/firefox\/([\w.]+)/i, Browsers.Firefox],
];
var BOT_REGEXP = [
/ daum[ /]/i,
/ deusu\//i,
/(?:^|[^g])news(?!sapphire)/i,
/(?<! (?:channel\/|google\/))google(?!(app|\/google| pixel))/i,
/(?<! cu)bots?(?:\b|_)/i,
/(?<!lib)http/i,
/(?<![hg]m)score/i,
/(?<!cam)scan/i,
/24x7/i,
/@[a-z][\w-]+\./i,
/\(\)/i,
/\.com\b/i,
/\b\w+\.ai/i,
/\bmanus-user\//i,
/\bort\//i,
/\bperl\b/i,
/\bsecurityheaders\b/i,
/\btime\//i,
/\|/i,
/^[\w .\-(?:)%]+(?:\/v?\d+(?:\.\d+)?(?:\.\d{1,10})*?)?(?:,|$)/i,
/^[^ ]{50,}$/i,
/^\d+\b/i,
/^\W/i,
/^\w*search\b/i,
/^\w+\/[\w()]*$/i,
/^\w+\/\d\.\d\s\([\w@]+\)$/i,
/^active/i,
/^ad muncher/i,
/^amaya/i,
/^apache\//i,
/^avsdevicesdk\//i,
/^azure/i,
/^biglotron/i,
/^bot/i,
/^bw\//i,
/^clamav[ /]/i,
/^client\//i,
/^cobweb\//i,
/^custom/i,
/^ddg[_-]android/i,
/^discourse/i,
/^dispatch\/\d/i,
/^downcast\//i,
/^duckduckgo/i,
/^email/i,
/^facebook/i,
/^getright\//i,
/^gozilla\//i,
/^hobbit/i,
/^hotzonu/i,
/^hwcdn\//i,
/^igetter\//i,
/^jeode\//i,
/^jetty\//i,
/^jigsaw/i,
/^microsoft bits/i,
/^movabletype/i,
/^mozilla\/\d\.\d\s[\w.-]+$/i,
/^mozilla\/\d\.\d\s\(compatible;?(?:\s[\w-.]+\/\d+\.\d+)?\)$/i,
/^navermailapp/i,
/^netsurf/i,
/^offline/i,
/^openai\//i,
/^owler/i,
/^php/i,
/^postman/i,
/^python/i,
/^rank/i,
/^read/i,
/^reed/i,
/^rest/i,
/^rss/i,
/^snapchat/i,
/^space bison/i,
/^svn/i,
/^swcd /i,
/^taringa/i,
/^thumbor\//i,
/^track/i,
/^w3c/i,
/^webbandit\//i,
/^webcopier/i,
/^wget/i,
/^whatsapp/i,
/^wordpress/i,
/^xenu link sleuth/i,
/^yahoo/i,
/^yandex/i,
/^zdm\/\d/i,
/^zoom marketplace\//i,
/advisor/i,
/agent\b/i,
/analyzer/i,
/archive/i,
/ask jeeves\/teoma/i,
/audit/i,
/bit\.ly\//i,
/bluecoat drtr/i,
/browsex/i,
/burpcollaborator/i,
/capture/i,
/catch/i,
/check\b/i,
/checker/i,
/chrome-lighthouse/i,
/chromeframe/i,
/classifier/i,
/cloudflare/i,
/convertify/i,
/crawl/i,
/cypress\//i,
/dareboost/i,
/datanyze/i,
/dejaclick/i,
/detect/i,
/dmbrowser/i,
/download/i,
/exaleadcloudview/i,
/feed/i,
/fetcher/i,
/firephp/i,
/functionize/i,
/grab/i,
/headless/i,
/httrack/i,
/hubspot marketing grader/i,
/ibisbrowser/i,
/infrawatch/i,
/insight/i,
/inspect/i,
/iplabel/i,
/java(?!;)/i,
/library/i,
/linkcheck/i,
/mail\.ru\//i,
/manager/i,
/measure/i,
/neustar wpm/i,
/node\b/i,
/nutch/i,
/offbyone/i,
/onetrust/i,
/optimize/i,
/pageburst/i,
/pagespeed/i,
/parser/i,
/phantomjs/i,
/pingdom/i,
/powermarks/i,
/preview/i,
/proxy/i,
/ptst[ /]\d/i,
/retriever/i,
/rexx;/i,
/rigor/i,
/rss\b/i,
/scrape/i,
/server/i,
/sogou/i,
/sparkler\//i,
/speedcurve/i,
/spider/i,
/splash/i,
/statuscake/i,
/supercleaner/i,
/synapse/i,
/synthetic/i,
/tools/i,
/torrent/i,
/transcoder/i,
/url/i,
/validator/i,
/virtuoso/i,
/wappalyzer/i,
/webglance/i,
/webkit2png/i,
/whatcms\//i,
/xtate\//i
];
var _a$1, _b, _c, _d, _e;
var AppOpenState;
(function (AppOpenState) {
AppOpenState[AppOpenState["Scheme"] = 0] = "Scheme";
AppOpenState[AppOpenState["Universal"] = 1] = "Universal";
AppOpenState[AppOpenState["Intent"] = 2] = "Intent";
AppOpenState[AppOpenState["Fallback"] = 3] = "Fallback";
AppOpenState[AppOpenState["Store"] = 4] = "Store";
})(AppOpenState || (AppOpenState = {}));
var MessengerType;
(function (MessengerType) {
MessengerType["Telephone"] = "telephone";
MessengerType["Message"] = "message";
MessengerType["Mail"] = "mail";
})(MessengerType || (MessengerType = {}));
var SettingType;
(function (SettingType) {
SettingType["General"] = "general";
SettingType["Network"] = "network";
SettingType["Display"] = "display";
SettingType["Appearance"] = "appearance";
SettingType["Accessibility"] = "accessibility";
SettingType["Battery"] = "battery";
SettingType["Datetime"] = "datetime";
SettingType["Language"] = "language";
SettingType["Accounts"] = "accounts";
SettingType["Storage"] = "storage";
})(SettingType || (SettingType = {}));
var SETTING_URL = (_a$1 = {},
_a$1[OS.Android] = (_b = {},
_b[SettingType.General] = 'intent:#Intent;action=android.settings.SETTINGS;end',
_b[SettingType.Network] = 'intent:#Intent;action=android.settings.WIFI_SETTINGS;end',
_b[SettingType.Display] = 'intent:#Intent;action=android.settings.DISPLAY_SETTINGS;end',
_b[SettingType.Appearance] = 'intent:#Intent;action=android.settings.DISPLAY_SETTINGS;end',
_b[SettingType.Accessibility] = 'intent:#Intent;action=android.settings.ACCESSIBILITY_SETTINGS;end',
_b[SettingType.Battery] = 'intent:#Intent;action=android.settings.BATTERY_SAVER_SETTINGS;end',
_b[SettingType.Datetime] = 'intent:#Intent;action=android.settings.DATE_SETTINGS;end',
_b[SettingType.Language] = 'intent:#Intent;action=android.settings.LOCALE_SETTINGS;end',
_b[SettingType.Accounts] = 'intent:#Intent;action=android.settings.SYNC_SETTINGS;end',
_b[SettingType.Storage] = 'intent:#Intent;action=android.settings.INTERNAL_STORAGE_SETTINGS;end',
_b),
_a$1[OS.Windows] = (_c = {},
_c[SettingType.General] = 'ms-settings:system',
_c[SettingType.Network] = 'ms-settings:network',
_c[SettingType.Display] = 'ms-settings:display',
_c[SettingType.Appearance] = 'ms-settings:colors',
_c[SettingType.Accessibility] = 'ms-settings:easeofaccess',
_c[SettingType.Battery] = 'ms-settings:batterysaver',
_c[SettingType.Datetime] = 'ms-settings:dateandtime',
_c[SettingType.Language] = 'ms-settings:regionlanguage',
_c[SettingType.Accounts] = 'ms-settings:emailandaccounts',
_c[SettingType.Storage] = 'ms-settings:storagesense',
_c),
_a$1[OS.MacOS] = (_d = {},
_d[SettingType.General] = 'x-apple.systempreferences:',
_d[SettingType.Network] = 'x-apple.systempreferences:com.apple.preference.network',
_d[SettingType.Display] = 'x-apple.systempreferences:com.apple.preference.displays',
_d[SettingType.Appearance] = 'x-apple.systempreferences:com.apple.preference.general',
_d[SettingType.Accessibility] = 'x-apple.systempreferences:com.apple.preference.universalaccess',
_d[SettingType.Battery] = 'x-apple.systempreferences:com.apple.preference.energysaver',
_d[SettingType.Datetime] = 'x-apple.systempreferences:com.apple.preference.datetime',
_d[SettingType.Language] = 'x-apple.systempreferences:com.apple.Localization',
_d[SettingType.Accounts] = 'x-apple.systempreferences:com.apple.preferences.internetaccounts',
_d[SettingType.Storage] = 'x-apple.systempreferences:',
_d),
_a$1['MacOS13+'] = (_e = {},
_e[SettingType.General] = 'x-apple.systempreferences:com.apple.General-Settings.extension',
_e[SettingType.Network] = 'x-apple.systempreferences:com.apple.Network-Settings.extension',
_e[SettingType.Display] = 'x-apple.systempreferences:com.apple.Displays-Settings.extension',
_e[SettingType.Appearance] = 'x-apple.systempreferences:com.apple.Appearance-Settings.extension',
_e[SettingType.Accessibility] = 'x-apple.systempreferences:com.apple.Accessibility-Settings.extension',
_e[SettingType.Battery] = 'x-apple.systempreferences:com.apple.Battery-Settings.extension',
_e[SettingType.Datetime] = 'x-apple.systempreferences:com.apple.Date-Time-Settings.extension',
_e[SettingType.Language] = 'x-apple.systempreferences:com.apple.Localization-Settings.extension',
_e[SettingType.Accounts] = 'x-apple.systempreferences:com.apple.Internet-Accounts-Settings.extension',
_e[SettingType.Storage] = 'x-apple.systempreferences:com.apple.settings.Storage',
_e),
_a$1);
function createCustomError(name, Base) {
if (Base === void 0) { Base = Error; }
function CustomError(message) {
if (!(this instanceof CustomError))
return new CustomError(message);
var error = new Base(message || '');
if (typeof Object.setPrototypeOf === 'function')
Object.setPrototypeOf(error, CustomError.prototype);
else
error.__proto__ = CustomError.prototype;
error.name = name;
if (typeof message !== 'undefined')
error.message = message;
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
try {
Object.defineProperty(error, Symbol.toStringTag, {
value: name,
writable: false,
enumerable: false,
configurable: true
});
}
catch (_) {
}
}
if (typeof Error.captureStackTrace === 'function') {
Error.captureStackTrace(error, CustomError);
}
else if (Base.captureStackTrace && typeof Base.captureStackTrace === 'function') {
Base.captureStackTrace(error, CustomError);
}
else {
try {
var tempError = new Base();
if (tempError.stack)
error.stack = tempError.stack;
}
catch (_) {
}
}
return error;
}
CustomError.prototype = Object.create(Base.prototype, {
constructor: {
value: CustomError,
writable: true,
enumerable: false,
configurable: true
}
});
try {
Object.defineProperty(CustomError.prototype, 'name', {
value: name,
writable: true,
enumerable: false,
configurable: true
});
}
catch (_) {
try {
CustomError.prototype.name = name;
}
catch (_) {
}
}
try {
Object.defineProperty(CustomError, 'name', {
value: name,
writable: false,
enumerable: false,
configurable: true
});
}
catch (_) {
}
return CustomError;
}
var URLOpenError = createCustomError('URLOpenError');
function compareVersion(lhs, rhs) {
var pa = lhs.split('.');
var pb = rhs.split('.');
var length = Math.max(pa.length, pb.length);
for (var i = 0; i < length; i++) {
var a = void 0;
var b = void 0;
if (i < pa.length)
a = parseInt(pa[i], 10);
else
a = 0;
if (i < pb.length)
b = parseInt(pb[i], 10);
else
b = 0;
if (a > b)
return 1;
if (a < b)
return -1;
}
return 0;
}
function getTopmostWindow() {
try {
if (globalThis.top && globalThis.top !== window) {
void globalThis.top.location.href;
return globalThis.top;
}
}
catch (_) {
}
return window;
}
function createHiddenElement(tagName, focusable) {
if (focusable === void 0) { focusable = true; }
if (typeof globalThis.document === 'undefined')
return undefined;
var element = globalThis.document.createElement(tagName);
if ('width' in element)
element.width = '0';
if ('height' in element)
element.height = '0';
if ('border' in element)
element.border = '0';
if ('frameBorder' in element)
element.frameBorder = '0';
if ('scrolling' in element)
element.scrolling = 'no';
if ('cellPadding' in element)
element.cellPadding = '0';
if ('cellSpacing' in element)
element.cellSpacing = '0';
if ('frame' in element)
element.frame = 'void';
if ('rules' in element)
element.rules = 'none';
if ('noWrap' in element)
element.noWrap = true;
element.tabIndex = -1;
element.setAttribute('role', 'presentation');
if (focusable) {
element.style.width = '1px';
element.style.height = '1px';
}
else {
element.setAttribute('aria-hidden', 'true');
element.style.width = '0';
element.style.height = '0';
element.style.zIndex = '-9999';
element.style.display = 'none';
element.style.visibility = 'hidden';
element.style.pointerEvents = 'none';
}
element.style.position = 'absolute';
element.style.top = '0';
element.style.left = '0';
element.style.padding = '0';
element.style.margin = '0';
element.style.border = 'none';
element.style.outline = 'none';
element.style.clip = 'rect(1px, 1px, 1px, 1px)';
element.style.clipPath = 'inset(50%)';
element.style.overflow = 'hidden';
element.style.whiteSpace = 'nowrap';
return element;
}
function dispatchClickEvent(element, view) {
if (view === void 0) { view = window; }
var fake;
try {
fake = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: view
});
}
catch (_) {
fake = globalThis.document.createEvent('MouseEvents');
fake.initMouseEvent('click', true, true, view, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
element.dispatchEvent(fake);
}
function capitalize(_) {
var groups = [];
for (var _i = 1; _i < arguments.length; _i++) {
groups[_i - 1] = arguments[_i];
}
var result = '';
for (var i = 0; i < groups.length - 2; i++) {
var arg = groups[i];
if (typeof arg !== 'undefined')
result = result + arg.charAt(0).toUpperCase() + arg.slice(1);
}
return result;
}
function preventDefaultPolyfill() {
this.returnValue = false;
}
function stopPropagationPolyfill() {
this.cancelBubble = true;
}
var EVENT_TYPE_REGEXP = /(animation)(start|iteration|end|cancel)|(transition)(start|run|end|cancel)|(fullscreen)(change|error)|(lost|got)(pointer)(capture)|(pointer)(lock)(change|error)|(pointer)(cancel|down|enter|leave|move|out|over|up)/i;
var VENDORS = ['', 'webkit', 'moz', 'ms', 'MS', 'o', 'O'];
var LEGACY_TYPE_MAP = {
'wheel': ['wheel', 'mousewheel', 'DOMMouseScroll'],
'focus': ['focus', 'focusin'],
'blur': ['blur', 'focusout'],
'beforeinput': ['beforeinput', 'textInput'],
};
var EventListenerUtils = {
useStd: typeof globalThis.document !== 'undefined' && typeof globalThis.document.addEventListener === 'function',
add: function (target, eventListenerOptions) {
if (eventListenerOptions === void 0) { eventListenerOptions = { callback: null, options: false }; }
var callback = eventListenerOptions.callback;
if (typeof target === 'undefined' || callback === null)
return;
var type = EventListenerUtils.withVender(target, eventListenerOptions.type);
var options = eventListenerOptions.options;
if (typeof target.addEventListener === 'function') {
try {
return target.addEventListener(type, callback, options);
}
catch (_) {
}
}
if (typeof target.addListener === 'function') {
if (typeof target.matches === 'boolean') {
try {
return target.addListener(callback);
}
catch (_) {
}
}
else {
try {
return target.addListener(type, callback);
}
catch (_) {
}
}
}
function wrapper(event) {
if (typeof event === 'undefined')
event = globalThis.event;
if (typeof event === 'undefined')
return;
event.currentTarget = target;
if (typeof event.preventDefault !== 'function')
event.preventDefault = preventDefaultPolyfill;
if (typeof event.stopPropagation !== 'function')
event.stopPropagation = stopPropagationPolyfill;
if (typeof callback === 'function')
callback.call(target, event);
else if (callback && typeof callback.handleEvent === 'function')
callback.handleEvent.call(target, event);
}
if (typeof target.attachEvent === 'function') {
if (callback.__ieWrapper)
return target.attachEvent('on' + type, callback.__ieWrapper);
return target.attachEvent('on' + type, callback.__ieWrapper = wrapper);
}
},
remove: function (target, eventListenerOptions) {
if (eventListenerOptions === void 0) { eventListenerOptions = { callback: null, options: false }; }
var callback = eventListenerOptions.callback;
if (typeof target === 'undefined' || callback === null)
return;
var type = EventListenerUtils.withVender(target, eventListenerOptions.type);
var options = eventListenerOptions.options;
if (typeof target.removeEventListener === 'function') {
try {
return target.removeEventListener(type, callback, options);
}
catch (_) {
}
}
if (typeof target.removeListener === 'function') {
if (typeof target.matches === 'boolean') {
try {
return target.removeListener(callback);
}
catch (_) {
}
}
else {
try {
return target.removeListener(type, callback);
}
catch (_) {
}
}
}
if (typeof target.detachEvent === 'function') {
var wrapper = callback.__ieWrapper;
if (typeof wrapper !== 'undefined') {
target.detachEvent('on' + type, wrapper);
delete callback.__ieWrapper;
}
return;
}
},
withVender: function (target, type) {
if (typeof type === 'undefined')
return '';
if (target === globalThis.document && ['deviceready', 'pause', 'resume', 'backbutton', 'menubutton', 'searchbutton', 'startcallbutton', 'endcallbutton', 'volumedownbutton', 'volumeupbutton', 'activated', 'cordovacallbackerror'].indexOf(type) > -1)
return type;
if (typeof target.webkitEnterFullscreen !== 'undefined' && ['webkitbeginfullscreen', 'webkitendfullscreen', 'webkitpresentationmodechanged'].indexOf(type) > -1)
return type;
var types;
if (type in LEGACY_TYPE_MAP)
types = LEGACY_TYPE_MAP[type];
else if (EVENT_TYPE_REGEXP.test(type))
types = [type, type.replace(EVENT_TYPE_REGEXP, capitalize)];
else
types = [type];
for (var i = 0; i < VENDORS.length; i++) {
for (var j = 0; j < types.length; j++) {
var name_1 = VENDORS[i] + types[j];
if (typeof target['on' + name_1] !== 'undefined')
return name_1;
}
}
return '';
}
};
var userAgent = USER_AGENT;
var Platform = {
get os() {
return getOS();
},
get engine() {
return getEngine();
},
get browser() {
return getBrowser();
},
get userAgent() {
return userAgent;
},
set userAgent(value) {
userAgent = value;
},
get locale() {
return getLocale();
},
get device() {
return getDevice();
},
get renderer() {
return getRenderer();
},
get isWebview() {
return getIsWebview();
},
get isNode() {
return getIsNode();
},
get isStandalone() {
return getIsStandalone();
},
get isBot() {
return getIsBot();
},
Constants: {
OS: OS,
Engines: Engines,
Browsers: Browsers,
Devices: Devices,
},
Errors: {},
};
var parsedFromHighEntropyValuesOS = {};
var parsedFromHighEntropyValuesBrowser = {};
var parsedFromHighEntropyValuesEngine = {};
var parsedFromHighEntropyValuesDevice = null;
function resolveVersion(string, resolver) {
if (typeof resolver === 'function')
return resolver(string);
if (typeof resolver === 'string')
return resolver;
if (typeof string === 'undefined')
return '';
return string;
}
function normalizeBrand(entry) {
if (entry === null || typeof entry === 'undefined')
return { brand: '', version: '' };
if (typeof entry === 'string')
return { brand: entry, version: '' };
return { brand: entry.brand, version: entry.version };
}
function normalizeLocale(locale) {
if (locale === null || typeof locale === 'undefined')
return locale;
if (locale.length === 0)
return null;
locale = locale.replace(/_/g, '-');
if (locale === 'C' || locale.toLowerCase() === 'posix')
return 'en-US';
if (locale.indexOf('.') !== -1)
return normalizeLocale(locale.split('.')[0]);
if (locale.indexOf('@') !== -1)
return normalizeLocale(locale.split('@')[0]);
var parts = locale.split('-');
if (parts.length === 0)
return null;
parts[0] = parts[0].toLowerCase();
if (parts.length > 1 && parts[1].length === 2)
parts[1] = parts[1].toUpperCase();
if (parts.length > 2 && parts[1].length === 4)
parts[1] = parts[1].charAt(0).toUpperCase() + parts[1].slice(1).toLowerCase();
return parts.join('-');
}
function getRenderer() {
if (typeof globalThis.document === 'undefined')
return '';
var canvas = globalThis.document.createElement('canvas');
if (typeof canvas.getContext !== 'function')
return '';
var context = canvas.getContext('webgl2') || canvas.getContext('experimental-webgl') || canvas.getContext('webgl');
if (context === null)
return '';
if (context instanceof WebGLRenderingContext || 'getParameter' in context && typeof context.getParameter === 'function') {
var extension = context.getExtension('WEBGL_debug_renderer_info');
if (extension === null)
return context.getParameter(context.RENDERER);
else
return context.getParameter(extension.UNMASKED_RENDERER_WEBGL);
}
else {
return '';
}
}
function getLocale() {
var locale = {
language: null,
languages: [],
timezone: null,
offset: 0,
isRTL: false,
};
var isRTL = null;
function addLanguages(language) {
for (var i = 0; i < language.length; i++)
addLanguage(language[i]);
}
function addLanguage(language) {
language = normalizeLocale(language);
if (typeof language === "string" && locale.languages.indexOf(language) === -1) {
if (locale.language === null)
locale.language = language;
locale.languages.push(language);
}
}
if (typeof Intl !== 'undefined') {
try {
addLanguage(Intl.DateTimeFormat().resolvedOptions().locale);
}
catch (_) {
}
try {
locale.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
}
catch (_) {
}
}
if (typeof globalThis.navigator !== 'undefined') {
if (typeof globalThis.navigator.languages !== 'undefined')
addLanguages(globalThis.navigator.languages);
if (typeof globalThis.navigator.language !== 'undefined')
addLanguage(globalThis.navigator.language);
if (typeof globalThis.navigator.userLanguage !== 'undefined')
addLanguage(globalThis.navigator.userLanguage);
if (typeof globalThis.navigator.browserLanguage !== 'undefined')
addLanguage(globalThis.navigator.browserLanguage);
if (typeof globalThis.navigator.systemLanguage !== 'undefined')
addLanguage(globalThis.navigator.systemLanguage);
}
try {
locale.offset = new Date().getTimezoneOffset() * -1;
}
catch (_) {
}
if (typeof locale.language === 'string') {
if (typeof Intl !== 'undefined' && typeof Intl.Locale !== 'undefined') {
try {
var intlLocale = new Intl.Locale(locale.language);
if (typeof intlLocale.getTextInfo === 'function')
isRTL = intlLocale.getTextInfo().direction === 'rtl';
else if (typeof intlLocale.textInfo !== 'undefined')
isRTL = intlLocale.textInfo.direction === 'rtl';
}
catch (_) {
}
}
if (typeof isRTL !== 'boolean') {
var matched = /^([A-Za-z]{1,8})(?:[-_][A-Za-z0-9]{1,8})*$/.exec(locale.language);
if (matched !== null) {
var language = matched[1].toLowerCase();
for (var i = 0; i < RTL_LANGUAGES.length; i++) {
if (RTL_LANGUAGES[i] === language) {
isRTL = true;
break;
}
}
}
}
}
if (typeof isRTL === 'boolean')
locale.isRTL = isRTL;
return locale;
}
function getOS() {
var result = { name: OS.Unknown, version: '' };
for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
var map = OS_RESOLVER_MAP[i];
var regexp = map[0];
var os = map[1];
var resolver = map[2];
var matched = Platform.userAgent.match(regexp);
if (matched !== null) {
result.name = os;
result.version = resolveVersion(matched[1], resolver);
break;
}
}
if (result.name === OS.iOS && compareVersion(result.version, '18.6') === 0) {
var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
result.version = version[1];
}
if (Platform.userAgent === USER_AGENT) {
if (typeof parsedFromHighEntropyValuesOS.name !== 'undefined')
result.name = parsedFromHighEntropyValuesOS.name;
if (typeof parsedFromHighEntropyValuesOS.version !== 'undefined')
result.version = parsedFromHighEntropyValuesOS.version;
}
return result;
}
function getEngine() {
var result = { name: Engines.Unknown, version: '' };
for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
var map = ENGINE_RESOLVER_MAP[i];
var regexp = map[0];
var engine = map[1];
var resolver = map[2];
var matched = Platform.userAgent.match(regexp);
if (matched !== null) {
result.name = engine;
result.version = resolveVersion(matched[1], resolver);
break;
}
}
if (Platform.userAgent === USER_AGENT) {
if (typeof parsedFromHighEntropyValuesEngine.name !== 'undefined')
result.name = parsedFromHighEntropyValuesEngine.name;
if (typeof parsedFromHighEntropyValuesEngine.version !== 'undefined')
result.version = parsedFromHighEntropyValuesEngine.version;
}
return result;
}
function getBrowser() {
var result = { name: Browsers.Unknown, version: '' };
for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
var map = BROWSER_RESOLVER_MAP[i];
var regexp = map[0];
var browser = map[1];
var resolver = map[2];
var matched = Platform.userAgent.match(regexp);
if (matched !== null) {
result.name = browser;
result.version = resolveVersion(matched[1], resolver);
break;
}
}
if (Platform.userAgent === USER_AGENT) {
if (typeof parsedFromHighEntropyValuesBrowser.name !== 'undefined')
result.name = parsedFromHighEntropyValuesBrowser.name;
if (typeof parsedFromHighEntropyValuesBrowser.version !== 'undefined')
result.version = parsedFromHighEntropyValuesBrowser.version;
}
return result;
}
function getDevice() {
if (Platform.userAgent === USER_AGENT && parsedFromHighEntropyValuesDevice !== null)
return parsedFromHighEntropyValuesDevice;
if (Platform.os.name === OS.iOS || Platform.os.name === OS.Android)
return Devices.Mobile;
if (Platform.os.name === OS.Windows || Platform.os.name === OS.MacOS)
return Devices.Desktop;
return Devices.Unknown;
}
function getIsWebview() {
return /; ?wv|applewebkit(?!.*safari)/i.test(Platform.userAgent);
}
function getIsNode() {
return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && typeof globalThis.process.versions.node !== 'undefined';
}
function getIsStandalone() {
if (Platform.os.name === OS.iOS)
return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
if (!('matchMedia' in globalThis))
return false;
return globalThis.matchMedia('(display-mode: standalone)').matches;
}
function getIsBot() {
for (var i = 0; i < BOT_REGEXP.length; i++)
if (BOT_REGEXP[i].test(Platform.userAgent))
return true;
return false;
}
function parseFromHighEntropyValues() {
if (typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgentData !== 'undefined' && typeof globalThis.navigator.userAgentData.getHighEntropyValues !== 'undefined') {
globalThis.navigator.userAgentData.getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
.then(function (result) {
try {
var brands = result.fullVersionList || result.brands || [];
var platformVersion = result.platformVersion;
var platform = result.platform;
var browserName = Platform.browser.name;
var prevBrandName = null;
for (var i = 0; i < brands.length; i++) {
var brand = normalizeBrand(brands[i]);
var brandVersion = brand.version;
var brandName = brand.brand;
if (/not.a.brand/i.test(brandName))
continue;
if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
prevBrandName = browserName;
if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
browserName = brandName;
if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
parsedFromHighEntropyValuesBrowser.name = Browsers.Chrome;
else if (browserName === 'Edge' || browserName === 'Edge WebView2')
parsedFromHighEntropyValuesBrowser.name = Browsers.Edge;
else if (browserName === 'Opera Mobi')
parsedFromHighEntropyValuesBrowser.name = Browsers.Opera;
parsedFromHighEntropyValuesBrowser.version = brandVersion;
}
prevBrandName = brandName;
}
if (brandName === 'Chromium')
parsedFromHighEntropyValuesEngine.version = brandVersion;
}
if (typeof platformVersion === 'string') {
if (Platform.os.name === OS.Windows)
parsedFromHighEntropyValuesOS.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
else
parsedFromHighEntropyValuesOS.version = platformVersion;
}
if (typeof platform === 'string') {
if (/android/i.test(platform))
parsedFromHighEntropyValuesOS.name = OS.Android;
else if (/ios|iphone|ipad/i.test(platform))
parsedFromHighEntropyValuesOS.name = OS.iOS;
else if (/windows|win32/i.test(platform))
parsedFromHighEntropyValuesOS.name = OS.Windows;
else if (/macos|macintel/i.test(platform))
parsedFromHighEntropyValuesOS.name = OS.MacOS;
}
if (result.mobile === true)
parsedFromHighEntropyValuesDevice = Devices.Mobile;
}
catch (_) {
}
});
}
}
parseFromHighEntropyValues();
var _a;
var App = {
open: open,
messenger: (_a = {},
_a[MessengerType.Telephone] = openMessengerTelephone,
_a[MessengerType.Message] = openMessengerMessage,
_a[MessengerType.Mail] = openMessengerMail,
_a),
setting: setting,
file: file,
contact: contact,
Constants: {
AppOpenState: AppOpenState,
MessengerType: MessengerType,
SettingType: SettingType
},
Errors: {
URLOpenError: URLOpenError,
}
};
function getTrackId(bundle) {
try {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://itunes.apple.com/lookup?bundleId=' + bundle, false);
xhr.send();
if (xhr.status === 200) {
try {
return parseLookupBundleIdResponse(JSON.parse(xhr.response));
}
catch (_) {
return undefined;
}
}
return undefined;
}
catch (_) {
return undefined;
}
}
function parseLookupBundleIdResponse(response) {
if (typeof response.results === 'undefined')
return undefined;
var results = response.results;
if (results.length === 0)
return undefined;
var result = results[0];
if (typeof result === 'undefined')
return undefined;
return "" + result.trackId;
}
function createIntentURL(scheme, packageName, fallback) {
var split = scheme.split('://');
var prefix = split[0];
var suffix = split[1];
var intent = 'intent://';
if (typeof suffix !== 'undefined')
intent = intent + suffix;
intent = intent + '#Intent;'
+ 'scheme=' + prefix + ';'
+ 'action=android.intent.action.VIEW;'
+ 'category=android.intent.category.BROWSABLE;';
if (typeof packageName !== 'undefined')
intent = intent + 'package=' + packageName + ';';
if (typeof fallback !== 'undefined' && typeof fallback === 'string')
intent = intent + 'S.browser_fallback_url=' + encodeURIComponent(fallback) + ';';
else if (typeof packageName !== 'undefined')
intent = intent + 'S.browser_fallback_url=' + encodeURIComponent(createAppStoreURL(packageName, OS.Android)) + ';';
return intent + 'end';
}
function parseIntentURL(intent) {
var parsed = {};
var split = intent.split('#Intent;');
var host = split[0].substring(9);
var suffix = split[1];
var parameterString = suffix.substring(0, suffix.length - 4);
var parameters = parameterString.split(';');
var extras = {};
for (var i = 0; i < parameters.length; i++) {
var part = parameters[i];
var index = part.indexOf('=');
if (index !== -1)
extras[part.substring(0, index)] = part.substring(index + 1);
}
if (typeof extras['scheme'] !== 'undefined')
parsed.scheme = (extras['scheme'] + '://' + host);
if (typeof extras['package'] !== 'undefined')
parsed.packageName = extras['package'];
if (typeof extras['S.browser_fallback_url'] !== 'undefined')
parsed.fallback = extras['S.browser_fallback_url'];
return parsed;
}
function createAppStoreURL(packageName, os) {
if (typeof packageName === 'undefined')
return undefined;
switch (os) {
case OS.Android:
return 'market://details?id=' + packageName;
case OS.iOS:
return 'itms-apps://itunes.apple.com/app/id' + packageName + '?mt=8';
case OS.Windows:
return 'ms-windows-store://pdp/?ProductId=' + packageName;
case OS.MacOS:
return 'macappstore://itunes.apple.com/app/id' + packageName + '?mt=12';
default:
throw new URLOpenError('Unsupported OS: \"' + Platform.userAgent + '\"');
}
}
function createWebStoreURL(packageName, os) {
if (typeof packageName === 'undefined')
return undefined;
switch (os) {
case OS.Android:
return 'https://play.google.com/store/apps/details?id=' + packageName;
case OS.iOS:
return 'https://itunes.apple.com/app/id' + packageName + '?mt=8';
case OS.Windows:
return 'https://apps.microsoft.com/detail/' + packageName;
case OS.MacOS:
return 'https://apps.apple.com/app/id' + packageName + '?mt=12';
default:
throw new URLOpenError('Unsupported OS: \"' + Platform.userAgent + '\"');
}
}
function getDefaultTimeoutByOS(os) {
switch (os) {
case OS.iOS:
return 2000;
case OS.Android:
return 1000;
default:
return 750;
}
}
function canOpenIntentURL() {
if (Platform.os.name !== OS.Android)
return false;
var version = Platform.browser.version;
if (Platform.browser.name === Browsers.SamsungInternet && compareVersion(version, '17.0.1.69') >= 0 && compareVersion(version, '17.0.7.34') < 0)
return false;
if (Platform.browser.name === Browsers.Firefox && compareVersion(version, '41.0') < 0)
return false;
if (Platform.browser.name === Browsers.Firefox && compareVersion(version, '58.0') >= 0 && compareVersion(version, '68.11.0') < 0)
return false;
if (Platform.browser.name === Browsers.Firefox && compareVersion(version, '79.0') >= 0 && compareVersion(version, '81.2.0') < 0)
return false;
if (Platform.browser.name === Browsers.Firefox && compareVersion(version, '96.0') >= 0 && compareVersion(version, '107.0') < 0)
return false;
if (Platform.browser.name === Browsers.Opera && compareVersion(version, '14.0') < 0)
return false;
return !(/(?: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));
}
function canOpenUniversalURL() {
return Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '9.0') >= 0;
}
function getURLOpenError(tried) {
var triedURLString = '';
for (var i = 0; i < tried.length; i++)
triedURLString += '\n' + (i + 1) + ': ' + tried[i];
if (triedURLString.length > 0)
triedURLString = '\n' + triedURLString + '\n';
return new URLOpenError('Failed to open any of the provided URLs: ' + triedURLString);
}
function openURLViaHref(url, index) {
var top = getTopmostWindow();
var topDocument = top.document;
var a = undefined;
try {
if (index === 0) {
top.location.href = url;
return;
}
a = createHiddenElement('a');
if (typeof a === 'undefined')
return;
a.href = url;
topDocument.body.appendChild(a);
dispatchClickEvent(a, top);
return a;
}
catch (_) {
}
finally {
if (typeof a !== 'undefined') {
try {
topDocument.body.removeChild(a);
}
catch (_) {
}
}
}
}
function openURLViaIframe(url) {
var top = getTopmostWindow();
var topDocument = top.document;
var iframe = undefined;
try {
iframe = createHiddenElement('iframe');
if (typeof iframe === 'undefined')
return;
iframe.src = url;
topDocument.body.appendChild(iframe);
globalThis.setTimeout(function () {
if (typeof iframe !== 'undefined') {
try {
topDocument.body.removeChild(iframe);
}
catch (_) {
}
}
}, 500);
}
catch (_) {
}
return iframe;
}
function isDocumentHidden() {
var top = getTopmostWindow();
var topDocument = top.document;
if (topDocument.visibilityState === 'hidden')
return true;
if (topDocument.webkitVisibilityState === 'hidden')
return true;
if (topDocument.mozVisibilityState === 'hidden')
return true;
if (topDocument.msVisibilityState === 'hidden')
return true;
if (typeof topDocument.hidden !== 'undefined')