ima-ad-player
Version:
Yet another Google IMA video ad player.
1,566 lines (1,289 loc) • 158 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["ImaAdPlayer"] = factory();
else
root["ImaAdPlayer"] = factory();
})(self, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 6058:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
__webpack_require__(4185);
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = _default;
__webpack_require__(6031);
// ima-loader.js
function _default(cb) {
var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6000;
var debug = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var win = window,
doc = document,
el = 'script',
timer = null;
var onLoad = function onLoad(r) {
win.clearTimeout(timer);
if (typeof cb === 'function') cb(r);
};
if (win.google && win.google.ima) {
return onLoad(true);
}
var first = doc.getElementsByTagName(el)[0];
var script = doc.createElement(el);
script.src = 'https://imasdk.googleapis.com/js/sdkloader/ima3' + (debug ? '_debug' : '') + '.js';
script.async = true;
if (typeof cb === 'function') script.onload = function () {
onLoad(true);
};
first.parentNode.insertBefore(script, first);
if (timeout) {
timer = win.setTimeout(function () {
onLoad(false);
}, timeout);
}
}
/***/ }),
/***/ 3772:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
__webpack_require__(2675);
__webpack_require__(9463);
__webpack_require__(2259);
__webpack_require__(3792);
__webpack_require__(4185);
__webpack_require__(6099);
__webpack_require__(7764);
__webpack_require__(2953);
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
__webpack_require__(5700);
__webpack_require__(9572);
__webpack_require__(2892);
__webpack_require__(6031);
var _utils = __webpack_require__(5948);
var _observable = _interopRequireDefault(__webpack_require__(9880));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // ima-player.js
/* global google */
var ImaPlayer = exports["default"] = /*#__PURE__*/function () {
function ImaPlayer(options) {
_classCallCheck(this, ImaPlayer);
this._configure(options);
this._evt = new _observable["default"]();
this._adRequesting = false;
this._adRequested = false;
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.ImaSdkSettings#setVpaidMode
this._o.vpaidMode && google.ima.settings.setVpaidMode(this._resolvedVpaidMode);
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.ImaSdkSettings#setLocale
this._o.locale && google.ima.settings.setLocale(this._o.locale);
// Assumes the display container and video element are correctly positioned and sized
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side#html
this._adDisplayContainer = new google.ima.AdDisplayContainer(this._o.displayContainer, this._o.video, this._o.clickTracking);
this._adDisplayContainerInit = false;
}
return _createClass(ImaPlayer, [{
key: "_configure",
value: function _configure(o) {
this._o = {
displayContainer: o.displayContainer,
video: o.video,
tag: o.tag
};
// VPAID mode will be ima SDK default (if not set)
if (o.vpaidMode) {
this._o.vpaidMode = (0, _utils.makeNum)(o.vpaidMode, undefined);
}
if (o.maxDuration) {
this._o.maxDuration = (0, _utils.makeNum)(o.maxDuration, undefined);
}
// Default is undefined
this._o.locale = o.locale;
// Default is undefined or alternative video ad click element
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdDisplayContainer
this._o.clickTracking = o.clickTracking;
// Default is undefined or object
this._o.adsRequestOptions = o.adsRequestOptions;
// Default is undefined or object
this._o.adsRenderingOptions = o.adsRenderingOptions;
// Default is to let IMA SDK handle non-linear display duration
this._o.nonLinearMaxDuration = (0, _utils.makeNum)(o.nonLinearMaxDuration, -1);
// Assumes by default that the playback is consented by user
this._o.adWillAutoPlay = !!(0, _utils.makeDefault)(o.adWillAutoPlay, true);
this._o.adWillPlayMuted = !!(0, _utils.makeDefault)(o.adWillPlayMuted, false);
// Default is undefined
this._o.continuousPlayback = o.continuousPlayback;
// Default is to tell the SDK NOT to save and restore content video state
this._o.restoreVideo = !!(0, _utils.makeDefault)(o.restoreVideo, false);
}
}, {
key: "_setProperties",
value: function _setProperties(target, properties) {
for (var prop in properties) {
if (typeof target[prop] !== 'undefined') {
target[prop] = properties[prop];
}
}
}
}, {
key: "_resolvedVpaidMode",
get: function get() {
if (this._o.vpaidMode === ImaPlayer.vpaidMode.DISABLED) {
return google.ima.ImaSdkSettings.VpaidMode.DISABLED;
}
if (this._o.vpaidMode === ImaPlayer.vpaidMode.INSECURE) {
return google.ima.ImaSdkSettings.VpaidMode.INSECURE;
}
// Default to SECURE mode
return google.ima.ImaSdkSettings.VpaidMode.ENABLED;
}
}, {
key: "on",
value: function on(name, cb) {
this._evt.subscribe(name, cb);
}
}, {
key: "off",
value: function off(name) {
var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (cb === null) {
this._evt.unsubscribeAll(name);
} else {
this._evt.unsubscribe(name, cb);
}
}
}, {
key: "play",
value: function play() {
this._dispatch('ad_play_intent');
this._adPlayIntent = true;
this.initAdDisplayContainer();
this._requestAd();
}
}, {
key: "request",
value: function request(options) {
this._dispatch('ad_request_intent', options);
this._requestAd(options);
}
}, {
key: "resize",
value: function resize(width, height) {
var viewMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
if (this._adsManager) {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#resize
viewMode || (viewMode = google.ima.ViewMode.NORMAL);
this._adsManager.resize(width, height, viewMode);
}
}
}, {
key: "setVolume",
value: function setVolume(volume) {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#setVolume
this._adsManager && this._adsManager.setVolume(volume);
}
}, {
key: "getVolume",
value: function getVolume() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#getVolume
return this._adsManager ? this._adsManager.getVolume() : null;
}
}, {
key: "discardAdBreak",
value: function discardAdBreak() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#discardAdBreak
this._adsManager && this._adsManager.discardAdBreak();
}
}, {
key: "pause",
value: function pause() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#pause
this._adsManager && this._adsManager.pause();
}
}, {
key: "resume",
value: function resume() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#resume
this._adsManager && this._adsManager.resume();
}
}, {
key: "skip",
value: function skip() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#skip
this._adsManager && this._adsManager.skip();
}
}, {
key: "updateAdsRenderingSettings",
value: function updateAdsRenderingSettings(adsRenderingSettings) {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#updateAdsRenderingSettings
this._adsManager && this._adsManager.updateAdsRenderingSettings(adsRenderingSettings);
}
}, {
key: "configureAdsManager",
value: function configureAdsManager(content, adsRenderingSettings) {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#configureAdsManager
this._adsManager && this._adsManager.configureAdsManager(content, adsRenderingSettings);
}
}, {
key: "focus",
value: function focus() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#focus
this._adsManager && this._adsManager.focus();
}
}, {
key: "getDisplayContainer",
value: function getDisplayContainer() {
return this._o.displayContainer;
}
}, {
key: "getCuePoints",
value: function getCuePoints() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#getCuePoints
return this._adsManager ? this._adsManager.getCuePoints() : null;
}
}, {
key: "getAdSkippableState",
value: function getAdSkippableState() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#getAdSkippableState
return this._adsManager ? this._adsManager.getAdSkippableState() : null;
}
}, {
key: "getRemainingTime",
value: function getRemainingTime() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#getRemainingTime
return this._adsManager ? this._adsManager.getRemainingTime() : null;
}
}, {
key: "isCustomClickTrackingUsed",
value: function isCustomClickTrackingUsed() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#isCustomClickTrackingUsed
return this._adsManager ? this._adsManager.isCustomClickTrackingUsed() : null;
}
}, {
key: "isCustomPlaybackUsed",
value: function isCustomPlaybackUsed() {
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsManager#isCustomPlaybackUsed
return this._adsManager ? this._adsManager.isCustomPlaybackUsed() : null;
}
}, {
key: "setAdWillAutoPlay",
value: function setAdWillAutoPlay(autoPlay) {
this._o.adWillAutoPlay = autoPlay;
}
}, {
key: "setAdWillPlayMuted",
value: function setAdWillPlayMuted(muted) {
this._o.adWillPlayMuted = muted;
}
}, {
key: "setContinuousPlayback",
value: function setContinuousPlayback(continuousPlayback) {
this._o.continuousPlayback = continuousPlayback;
}
}, {
key: "stop",
value: function stop() {
this._dispatch('ad_stop_intent');
this._stop();
}
}, {
key: "ended",
value: function ended() {
// Signals the video content is finished.
// This will allow to play post-roll ads (if any)
this._adsLoader && this._adsLoader.contentComplete();
}
}, {
key: "initAdDisplayContainer",
value: function initAdDisplayContainer() {
// Must be done via a user interaction
if (!this._adDisplayContainerInit) {
this._adDisplayContainer.initialize();
this._adDisplayContainerInit = true;
}
}
}, {
key: "destroy",
value: function destroy() {
var unsubscribeEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
this._adsManager && this._adsManager.stop();
this._endAd();
unsubscribeEvents && this._evt.unsubscribeAll();
this._destroyAdsManager();
this._destroyAdsLoader();
this._destroyAdDisplayContainer();
this._destroyOptions();
}
}, {
key: "_destroyAdsLoader",
value: function _destroyAdsLoader() {
if (this._adsLoader) {
this._adsLoader.destroy();
this._adsLoader = null;
delete this._adsLoader;
}
}
}, {
key: "_destroyAdsManager",
value: function _destroyAdsManager() {
if (this._adsManager) {
this._adsManager.destroy();
this._adsManager = null;
delete this._adsManager;
}
}
}, {
key: "_destroyAdDisplayContainer",
value: function _destroyAdDisplayContainer() {
if (this._adDisplayContainer) {
this._adDisplayContainer.destroy();
this._adDisplayContainer = null;
delete this._adDisplayContainer;
}
}
}, {
key: "_destroyOptions",
value: function _destroyOptions() {
this._o = null;
delete this._o;
}
}, {
key: "_stop",
value: function _stop() {
this._dispatch('ad_stop');
if (this._adsManager) {
// Signal ads manager to stop and get back to content
this._adsManager.stop();
} else {
this._endAd();
}
}
}, {
key: "_makeAdsLoader",
value: function _makeAdsLoader() {
var _this = this;
this._adsLoader = new google.ima.AdsLoader(this._adDisplayContainer);
this._adsLoader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (e) {
_this._onAdsManagerLoaded(e);
});
this._adsLoader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (e) {
_this._adRequested = false;
_this._onAdError(e);
});
}
}, {
key: "_requestAd",
value: function _requestAd(options) {
// Check if ad request is pending
if (this._adRequesting) {
// Ad will autostart if play method called
return;
}
// Check if ad already requested (pre-request)
if (this._adRequested) {
// Start ad only if play method called
if (this._adPlayIntent) {
this._playAd();
}
return;
}
this._adRequesting = true;
if (!this._adsLoader) {
this._makeAdsLoader();
}
var adsRequest = new google.ima.AdsRequest();
// Set ad request default settings
adsRequest.adTagUrl = this._o.tag;
adsRequest.linearAdSlotWidth = this._o.video.offsetWidth;
adsRequest.linearAdSlotHeight = this._o.video.offsetHeight;
adsRequest.nonLinearAdSlotWidth = this._o.video.offsetWidth;
adsRequest.nonLinearAdSlotHeight = this._o.video.offsetHeight;
adsRequest.setAdWillAutoPlay(this._o.adWillAutoPlay);
adsRequest.setAdWillPlayMuted(this._o.adWillPlayMuted);
if (this._o.continuousPlayback !== undefined) {
// Internally set AdsRequest.videoContinuousPlay to "0" if undefined, "1" if false, "2" if true
adsRequest.setContinuousPlayback(this._o.continuousPlayback);
}
// Assumes that ad request options is an object with ads request properties
// defined in the IMA SDK documentation (will override default settings)
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsRequest
var adsRequestOptions = options ? options : this._o.adsRequestOptions;
if (adsRequestOptions) {
this._setProperties(adsRequest, adsRequestOptions);
}
this._dispatch('ad_request', adsRequest);
// The requestAds() method triggers _onAdsManagerLoaded() or _onAdError()
this._adsLoader.requestAds(adsRequest);
}
}, {
key: "_bindAdsManagerEvents",
value: function _bindAdsManagerEvents() {
var _this2 = this;
this._adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (e) {
_this2._onAdError(e);
});
this._adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, function (e) {
_this2._adEnded = false;
_this2._dispatch('content_pause_requested', e);
_this2._dispatch('ad_begin'); // "content_pause_requested" event alias
});
this._adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, function (e) {
_this2._dispatch('content_resume_requested', e);
_this2._endAd();
});
this._adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, function (e) {
_this2._dispatch('started', e);
var ad = e.getAd();
if (ad.isLinear()) {
_this2._o.maxDuration && _this2._startMaxDurationTimer();
} else {
// Signal non-linear ad scenario
var duration = _this2._o.nonLinearMaxDuration;
_this2._dispatch('ad_non_linear', {
ad: ad,
duration: duration
});
// By default, IMA SDK will automatically close non-linear ad (after 45 seconds ?)
if (_this2._o.nonLinearMaxDuration > 0) {
setTimeout(function () {
_this2._adsManager && _this2._adsManager.stop();
}, _this2._o.nonLinearMaxDuration);
}
// Ends to play/resume content video
_this2._endAd();
}
});
this._adsManager.addEventListener(google.ima.AdEvent.Type.ALL_ADS_COMPLETED, function (e) {
_this2._adRequested = false;
_this2._dispatch('all_ads_completed', e);
});
var adEvents = {
'ad_break_ready': google.ima.AdEvent.Type.AD_BREAK_READY,
'ad_buffering': google.ima.AdEvent.Type.AD_BUFFERING,
'ad_metadata': google.ima.AdEvent.Type.AD_METADATA,
'ad_progress': google.ima.AdEvent.Type.AD_PROGRESS,
'click': google.ima.AdEvent.Type.CLICK,
'complete': google.ima.AdEvent.Type.COMPLETE,
'duration_change': google.ima.AdEvent.Type.DURATION_CHANGE,
'first_quartile': google.ima.AdEvent.Type.FIRST_QUARTILE,
'impression': google.ima.AdEvent.Type.IMPRESSION,
'interaction': google.ima.AdEvent.Type.INTERACTION,
'linear_changed': google.ima.AdEvent.Type.LINEAR_CHANGED,
'loaded': google.ima.AdEvent.Type.LOADED,
'log': google.ima.AdEvent.Type.LOG,
'midpoint': google.ima.AdEvent.Type.MIDPOINT,
'paused': google.ima.AdEvent.Type.PAUSED,
'resumed': google.ima.AdEvent.Type.RESUMED,
'skippable_state_changed': google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED,
'skipped': google.ima.AdEvent.Type.SKIPPED,
'third_quartile': google.ima.AdEvent.Type.THIRD_QUARTILE,
'user_close': google.ima.AdEvent.Type.USER_CLOSE,
'video_clicked': google.ima.AdEvent.Type.VIDEO_CLICKED,
'video_icon_clicked': google.ima.AdEvent.Type.VIDEO_ICON_CLICKED,
'volume_changed': google.ima.AdEvent.Type.VOLUME_CHANGED,
'volume_muted': google.ima.AdEvent.Type.VOLUME_MUTED
};
// Not documented, may be unavailable in the future
google.ima.AdEvent.Type.AD_CAN_PLAY && (adEvents.ad_can_play = google.ima.AdEvent.Type.AD_CAN_PLAY);
google.ima.AdEvent.Type.VIEWABLE_IMPRESSION && (adEvents.viewable_impression = google.ima.AdEvent.Type.VIEWABLE_IMPRESSION);
var _loop = function _loop(adEvent) {
_this2._adsManager.addEventListener(adEvents[adEvent], function (e) {
_this2._dispatch(adEvent, e);
});
};
for (var adEvent in adEvents) {
_loop(adEvent);
}
}
}, {
key: "_onAdsManagerLoaded",
value: function _onAdsManagerLoaded(adsManagerLoadedEvent) {
this._dispatch('ads_manager_loaded', adsManagerLoadedEvent);
// Create default ads rendering settings
var adsRenderingSettings = new google.ima.AdsRenderingSettings();
adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = this._o.restoreVideo;
// Assumes that ads rendering options is an object with ads rendering settings properties
// defined in the IMA SDK documentation (will override default settings)
// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdsRenderingSettings
if (this._o.adsRenderingOptions) {
this._setProperties(adsRenderingSettings, this._o.adsRenderingOptions);
}
this._dispatch('ads_rendering_settings', adsRenderingSettings);
this._destroyAdsManager();
this._adsManager = adsManagerLoadedEvent.getAdsManager(this._o.video, adsRenderingSettings);
this._bindAdsManagerEvents();
this._dispatch('ads_manager', this._adsManager);
// Ad is ready to be played
this._adRequesting = false;
this._adRequested = true;
if (this._adPlayIntent) {
this._playAd();
}
}
}, {
key: "_onMaxDuration",
value: function _onMaxDuration() {
this._dispatch('error', new Error('Maximum duration of ' + this._o.maxDuration + ' ms reached'));
this._stop();
}
}, {
key: "_startMaxDurationTimer",
value: function _startMaxDurationTimer() {
var _this3 = this;
this._maxDurationTimer = setTimeout(function () {
_this3._onMaxDuration();
}, this._o.maxDuration);
}
}, {
key: "_resetMaxDurationTimer",
value: function _resetMaxDurationTimer() {
if (typeof this._maxDurationTimer === 'number') {
clearTimeout(this._maxDurationTimer);
this._maxDurationTimer = undefined;
}
}
}, {
key: "_onAdError",
value: function _onAdError(adErrorEvent) {
// google.ima.AdErrorEvent : https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdErrorEvent
// google.ima.AdError : https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdError
// console.log('onAdError: ' + adErrorEvent.getError())
this._dispatch('ad_error', adErrorEvent);
this._endAd();
}
}, {
key: "_playAd",
value: function _playAd() {
try {
this._dispatch('ad_play');
this._adEnded = false;
this._adsManager.init(this._o.video.offsetWidth, this._o.video.offsetHeight, google.ima.ViewMode.NORMAL);
this._adsManager.start();
} catch (e) {
// console.log('adsManager catched error', e)
this._dispatch('error', e);
this._endAd();
}
}
}, {
key: "_dispatch",
value: function _dispatch(name, e) {
this._evt.notify(name, {
name: name,
data: e,
target: this
});
}
}, {
key: "_endAd",
value: function _endAd() {
if (this._adEnded) {
return;
}
this._adEnded = true;
this._adPlayIntent = false;
this._adRequesting = false;
this._resetMaxDurationTimer();
this._dispatch('ad_end');
}
}], [{
key: "vpaidMode",
get: function get() {
return {
DISABLED: 0,
ENABLED: 1,
INSECURE: 2
};
}
}]);
}();
/***/ }),
/***/ 9880:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
__webpack_require__(2675);
__webpack_require__(9463);
__webpack_require__(2259);
__webpack_require__(3792);
__webpack_require__(4185);
__webpack_require__(7764);
__webpack_require__(2953);
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
__webpack_require__(5700);
__webpack_require__(1629);
__webpack_require__(5276);
__webpack_require__(4554);
__webpack_require__(9572);
__webpack_require__(2892);
__webpack_require__(6099);
__webpack_require__(3500);
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
// observable.js
var Observable = exports["default"] = /*#__PURE__*/function () {
function Observable() {
_classCallCheck(this, Observable);
this.unsubscribeAll();
}
return _createClass(Observable, [{
key: "subscribe",
value: function subscribe(n, f) {
if (!this.observers[n]) {
this.observers[n] = [];
}
this.observers[n].push(f);
}
}, {
key: "unsubscribe",
value: function unsubscribe(n, f) {
if (!this.observers[n]) {
return;
}
var i = this.observers[n].indexOf(f);
if (i == -1) {
return;
}
this.observers[n].splice(i, 1);
}
}, {
key: "unsubscribeAll",
value: function unsubscribeAll() {
var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
if (n === null) {
this.observers = null;
this.observers = {};
} else if (this.observers[n]) {
this.observers[n] = null;
delete this.observers[n];
}
}
}, {
key: "notify",
value: function notify(n, e) {
if (this.observers[n]) {
this.observers[n].forEach(function (o) {
return o(e);
});
}
}
}]);
}();
/***/ }),
/***/ 5948:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
__webpack_require__(4185);
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.isNumeric = isNumeric;
exports.makeDefault = makeDefault;
exports.makeNum = makeNum;
__webpack_require__(8459);
// utils.js
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function makeNum(value, fallback) {
return isNumeric(value) ? value + 0 : fallback;
}
function makeDefault(value, defaultValue) {
return value === undefined ? defaultValue : value;
}
/***/ }),
/***/ 9306:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isCallable = __webpack_require__(4901);
var tryToString = __webpack_require__(6823);
var $TypeError = TypeError;
// `Assert: IsCallable(argument) is true`
module.exports = function (argument) {
if (isCallable(argument)) return argument;
throw new $TypeError(tryToString(argument) + ' is not a function');
};
/***/ }),
/***/ 3506:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isPossiblePrototype = __webpack_require__(3925);
var $String = String;
var $TypeError = TypeError;
module.exports = function (argument) {
if (isPossiblePrototype(argument)) return argument;
throw new $TypeError("Can't set " + $String(argument) + ' as a prototype');
};
/***/ }),
/***/ 6469:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var wellKnownSymbol = __webpack_require__(8227);
var create = __webpack_require__(2360);
var defineProperty = (__webpack_require__(4913).f);
var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] === undefined) {
defineProperty(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create(null)
});
}
// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
/***/ }),
/***/ 8551:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isObject = __webpack_require__(34);
var $String = String;
var $TypeError = TypeError;
// `Assert: Type(argument) is Object`
module.exports = function (argument) {
if (isObject(argument)) return argument;
throw new $TypeError($String(argument) + ' is not an object');
};
/***/ }),
/***/ 5652:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it
var fails = __webpack_require__(9039);
module.exports = fails(function () {
if (typeof ArrayBuffer == 'function') {
var buffer = new ArrayBuffer(8);
// eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe
if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });
}
});
/***/ }),
/***/ 235:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var $forEach = (__webpack_require__(9213).forEach);
var arrayMethodIsStrict = __webpack_require__(4598);
var STRICT_METHOD = arrayMethodIsStrict('forEach');
// `Array.prototype.forEach` method implementation
// https://tc39.es/ecma262/#sec-array.prototype.foreach
module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
// eslint-disable-next-line es/no-array-prototype-foreach -- safe
} : [].forEach;
/***/ }),
/***/ 9617:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toIndexedObject = __webpack_require__(5397);
var toAbsoluteIndex = __webpack_require__(5610);
var lengthOfArrayLike = __webpack_require__(6198);
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = lengthOfArrayLike(O);
if (length === 0) return !IS_INCLUDES && -1;
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare -- NaN check
if (IS_INCLUDES && el !== el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare -- NaN check
if (value !== value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.es/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/***/ 9213:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var bind = __webpack_require__(6080);
var uncurryThis = __webpack_require__(9504);
var IndexedObject = __webpack_require__(7055);
var toObject = __webpack_require__(8981);
var lengthOfArrayLike = __webpack_require__(6198);
var arraySpeciesCreate = __webpack_require__(1469);
var push = uncurryThis([].push);
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
var createMethod = function (TYPE) {
var IS_MAP = TYPE === 1;
var IS_FILTER = TYPE === 2;
var IS_SOME = TYPE === 3;
var IS_EVERY = TYPE === 4;
var IS_FIND_INDEX = TYPE === 6;
var IS_FILTER_REJECT = TYPE === 7;
var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = IndexedObject(O);
var length = lengthOfArrayLike(self);
var boundFunction = bind(callbackfn, that);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push(target, value); // filter
} else switch (TYPE) {
case 4: return false; // every
case 7: push(target, value); // filterReject
}
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
module.exports = {
// `Array.prototype.forEach` method
// https://tc39.es/ecma262/#sec-array.prototype.foreach
forEach: createMethod(0),
// `Array.prototype.map` method
// https://tc39.es/ecma262/#sec-array.prototype.map
map: createMethod(1),
// `Array.prototype.filter` method
// https://tc39.es/ecma262/#sec-array.prototype.filter
filter: createMethod(2),
// `Array.prototype.some` method
// https://tc39.es/ecma262/#sec-array.prototype.some
some: createMethod(3),
// `Array.prototype.every` method
// https://tc39.es/ecma262/#sec-array.prototype.every
every: createMethod(4),
// `Array.prototype.find` method
// https://tc39.es/ecma262/#sec-array.prototype.find
find: createMethod(5),
// `Array.prototype.findIndex` method
// https://tc39.es/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod(6),
// `Array.prototype.filterReject` method
// https://github.com/tc39/proposal-array-filtering
filterReject: createMethod(7)
};
/***/ }),
/***/ 597:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(9039);
var wellKnownSymbol = __webpack_require__(8227);
var V8_VERSION = __webpack_require__(9519);
var SPECIES = wellKnownSymbol('species');
module.exports = function (METHOD_NAME) {
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/677
return V8_VERSION >= 51 || !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
/***/ }),
/***/ 4598:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(9039);
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call -- required for testing
method.call(null, argument || function () { return 1; }, 1);
});
};
/***/ }),
/***/ 4527:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(3724);
var isArray = __webpack_require__(4376);
var $TypeError = TypeError;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Safari < 13 does not throw an error in this case
var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {
// makes no sense without proper strict mode support
if (this !== undefined) return true;
try {
// eslint-disable-next-line es/no-object-defineproperty -- safe
Object.defineProperty([], 'length', { writable: false }).length = 1;
} catch (error) {
return error instanceof TypeError;
}
}();
module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {
if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {
throw new $TypeError('Cannot set read only .length');
} return O.length = length;
} : function (O, length) {
return O.length = length;
};
/***/ }),
/***/ 7680:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(9504);
module.exports = uncurryThis([].slice);
/***/ }),
/***/ 7433:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isArray = __webpack_require__(4376);
var isConstructor = __webpack_require__(3517);
var isObject = __webpack_require__(34);
var wellKnownSymbol = __webpack_require__(8227);
var SPECIES = wellKnownSymbol('species');
var $Array = Array;
// a part of `ArraySpeciesCreate` abstract operation
// https://tc39.es/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return C === undefined ? $Array : C;
};
/***/ }),
/***/ 1469:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var arraySpeciesConstructor = __webpack_require__(7433);
// `ArraySpeciesCreate` abstract operation
// https://tc39.es/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
};
/***/ }),
/***/ 2195:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(9504);
var toString = uncurryThis({}.toString);
var stringSlice = uncurryThis(''.slice);
module.exports = function (it) {
return stringSlice(toString(it), 8, -1);
};
/***/ }),
/***/ 6955:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);
var isCallable = __webpack_require__(4901);
var classofRaw = __webpack_require__(2195);
var wellKnownSymbol = __webpack_require__(8227);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var $Object = Object;
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
};
/***/ }),
/***/ 7740:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var hasOwn = __webpack_require__(9297);
var ownKeys = __webpack_require__(5031);
var getOwnPropertyDescriptorModule = __webpack_require__(7347);
var definePropertyModule = __webpack_require__(4913);
module.exports = function (target, source, exceptions) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
}
};
/***/ }),
/***/ 2211:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(9039);
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
// eslint-disable-next-line es/no-object-getprototypeof -- required for testing
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/***/ 2529:
/***/ ((module) => {
// `CreateIterResultObject` abstract operation
// https://tc39.es/ecma262/#sec-createiterresultobject
module.exports = function (value, done) {
return { value: value, done: done };
};
/***/ }),
/***/ 6699:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(3724);
var definePropertyModule = __webpack_require__(4913);
var createPropertyDescriptor = __webpack_require__(6980);
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ 6980:
/***/ ((module) => {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ 4659:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(3724);
var definePropertyModule = __webpack_require__(4913);
var createPropertyDescriptor = __webpack_require__(6980);
module.exports = function (object, key, value) {
if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));
else object[key] = value;
};
/***/ }),
/***/ 3640:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var anObject = __webpack_require__(8551);
var ordinaryToPrimitive = __webpack_require__(4270);
var $TypeError = TypeError;
// `Date.prototype[@@toPrimitive](hint)` method implementation
// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
module.exports = function (hint) {
anObject(this);
if (hint === 'string' || hint === 'default') hint = 'string';
else if (hint !== 'number') throw new $TypeError('Incorrect hint');
return ordinaryToPrimitive(this, hint);
};
/***/ }),
/***/ 2106:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var makeBuiltIn = __webpack_require__(283);
var defineProperty = __webpack_require__(4913);
module.exports = function (target, name, descriptor) {
if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });
if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });
return defineProperty.f(target, name, descriptor);
};
/***/ }),
/***/ 6840:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isCallable = __webpack_require__(4901);
var definePropertyModule = __webpack_require__(4913);
var makeBuiltIn = __webpack_require__(283);
var defineGlobalProperty = __webpack_require__(9433);
module.exports = function (O, key, value, options) {
if (!options) options = {};
var simple = options.enumerable;
var name = options.name !== undefined ? options.name : key;
if (isCallable(value)) makeBuiltIn(value, name, options);
if (options.global) {
if (simple) O[key] = value;
else defineGlobalProperty(key, value);
} else {
try {
if (!options.unsafe) delete O[key];
else if (O[key]) simple = true;
} catch (error) { /* empty */ }
if (simple) O[key] = value;
else definePropertyModule.f(O, key, {
value: value,
enumerable: false,
configurable: !options.nonConfigurable,
writable: !options.nonWritable
});
} return O;
};
/***/ }),
/***/ 9433:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var globalThis = __webpack_require__(4576);
// eslint-disable-next-line es/no-object-defineproperty -- safe
var defineProperty = Object.defineProperty;
module.exports = function (key, value) {
try {
defineProperty(globalThis, key, { value: value, configurable: true, writable: true });
} catch (error) {
globalThis[key] = value;
} return value;
};
/***/ }),
/***/ 4606:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var tryToString = __webpack_require__(6823);
var $TypeError = TypeError;
module.exports = function (O, P) {
if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));
};
/***/ }),
/***/ 3724:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(9039);
// Detect IE8's incomplete defineProperty implementation
module.exports = !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
});
/***/ }),
/***/ 4055:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var globalThis = __webpack_require__(4576);
var isObject = __webpack_require__(34);
var document = globalThis.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/***/ 6837:
/***/ ((module) => {
var $TypeError = TypeError;
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
module.exports = function (it) {
if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');
return it;
};
/***/ }),
/***/ 7400:
/***/ ((module) => {
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
module.exports = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
/***/ }),
/***/ 9296:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
var documentCreateElement = __webpack_require__(4055);
var classList = documentCreateElement('span').classList;
var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;
/***/ }),
/***/ 8727:
/***/ ((module) => {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/***/ 2839:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var globalThis = __webpack_require__(4576);
var navigator = globalThis.navigator;
var userAgent = navigator && navigator.userAgent;
module.exports = userAgent ? String(userAgent) : '';
/***/ }),
/***/ 9519:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var globalThis = __webpack_require__(4576);
var userAgent = __webpack_require__(2839);
var process = globalThis.process;
var Deno = globalThis.Deno;
var versions = process && process.versions || Deno && Deno.version;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
// in old Chrome, versions of V8 isn't V8 = Chrome / 10
// but their correct versions are not interesting for us
version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
}
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
// so check `userAgent` even if `.v8` exists, but 0
if (!version && userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = +match[1];
}
}
module.exports = version;
/***/ }),
/***/ 4215:
/***/ ((module, __unused_webpack_exports