Merge branch 'develop' of github.com:sampotts/plyr into develop
# Conflicts: # package.json # yarn.lock
This commit is contained in:
commit
09598f07bf
6
.gitpod.yml
Normal file
6
.gitpod.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
tasks:
|
||||||
|
- init: npm install && npm i gulp -g
|
||||||
|
command: gulp
|
||||||
|
ports:
|
||||||
|
- port: 3000
|
||||||
|
onOpen: open-preview
|
@ -27,7 +27,13 @@ Please follow the instructions in our issue templates. Don't use github issues t
|
|||||||
|
|
||||||
* Fork Plyr, and create a new branch in your fork, based on the **develop** branch
|
* Fork Plyr, and create a new branch in your fork, based on the **develop** branch
|
||||||
|
|
||||||
* To test locally, you can use the demo. First make sure you have installed the dependencies with `npm install` or `yarn`. Run `gulp` to build while you are working, and run a local server from the repository root directory. If you have Python installed, this command should work: `python -m SimpleHTTPServer 8080`. Then go to `http://localhost:8080/demo/`
|
* To test locally, you can use the demo site. First make sure you have installed the dependencies with `npm install` or `yarn`. Run `gulp` to build and it will run a local web server for development and watch for any changes.
|
||||||
|
|
||||||
|
### Online one-click setup
|
||||||
|
|
||||||
|
Alternatively can also use Gitpod, a free online Visual Studio Code-like IDE. With a single click it will automatically launch a ready-to-code workspace with all the dependencies pre-installed, gulp watching for changes and the web server running, so that you can start coding straightaway.
|
||||||
|
|
||||||
|
[](https://gitpod.io/from-referrer/)
|
||||||
|
|
||||||
* Develop and test your modifications.
|
* Develop and test your modifications.
|
||||||
|
|
||||||
|
2
demo/dist/demo.css
vendored
2
demo/dist/demo.css
vendored
File diff suppressed because one or more lines are too long
1004
demo/dist/demo.js
vendored
1004
demo/dist/demo.js
vendored
File diff suppressed because it is too large
Load Diff
4
demo/dist/demo.min.js
vendored
4
demo/dist/demo.min.js
vendored
File diff suppressed because one or more lines are too long
2
demo/dist/demo.min.js.map
vendored
2
demo/dist/demo.min.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.css
vendored
2
dist/plyr.css
vendored
File diff suppressed because one or more lines are too long
607
dist/plyr.js
vendored
607
dist/plyr.js
vendored
@ -76,19 +76,15 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _slicedToArray(arr, i) {
|
function _slicedToArray(arr, i) {
|
||||||
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _toConsumableArray(arr) {
|
function _toConsumableArray(arr) {
|
||||||
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _arrayWithoutHoles(arr) {
|
function _arrayWithoutHoles(arr) {
|
||||||
if (Array.isArray(arr)) {
|
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
||||||
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
|
||||||
|
|
||||||
return arr2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _arrayWithHoles(arr) {
|
function _arrayWithHoles(arr) {
|
||||||
@ -96,14 +92,11 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _iterableToArray(iter) {
|
function _iterableToArray(iter) {
|
||||||
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _iterableToArrayLimit(arr, i) {
|
function _iterableToArrayLimit(arr, i) {
|
||||||
if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
|
if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var _arr = [];
|
var _arr = [];
|
||||||
var _n = true;
|
var _n = true;
|
||||||
var _d = false;
|
var _d = false;
|
||||||
@ -129,102 +122,142 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
return _arr;
|
return _arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _unsupportedIterableToArray(o, minLen) {
|
||||||
|
if (!o) return;
|
||||||
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
||||||
|
var n = Object.prototype.toString.call(o).slice(8, -1);
|
||||||
|
if (n === "Object" && o.constructor) n = o.constructor.name;
|
||||||
|
if (n === "Map" || n === "Set") return Array.from(n);
|
||||||
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _arrayLikeToArray(arr, len) {
|
||||||
|
if (len == null || len > arr.length) len = arr.length;
|
||||||
|
|
||||||
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
||||||
|
|
||||||
|
return arr2;
|
||||||
|
}
|
||||||
|
|
||||||
function _nonIterableSpread() {
|
function _nonIterableSpread() {
|
||||||
throw new TypeError("Invalid attempt to spread non-iterable instance");
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||||
}
|
}
|
||||||
|
|
||||||
function _nonIterableRest() {
|
function _nonIterableRest() {
|
||||||
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||||
|
}
|
||||||
|
|
||||||
|
function _classCallCheck$1(e, t) {
|
||||||
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
||||||
|
}
|
||||||
|
|
||||||
|
function _defineProperties$1(e, t) {
|
||||||
|
for (var n = 0; n < t.length; n++) {
|
||||||
|
var r = t[n];
|
||||||
|
r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _createClass$1(e, t, n) {
|
||||||
|
return t && _defineProperties$1(e.prototype, t), n && _defineProperties$1(e, n), e;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _defineProperty$1(e, t, n) {
|
||||||
|
return t in e ? Object.defineProperty(e, t, {
|
||||||
|
value: n,
|
||||||
|
enumerable: !0,
|
||||||
|
configurable: !0,
|
||||||
|
writable: !0
|
||||||
|
}) : e[t] = n, e;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ownKeys$1(e, t) {
|
||||||
|
var n = Object.keys(e);
|
||||||
|
|
||||||
|
if (Object.getOwnPropertySymbols) {
|
||||||
|
var r = Object.getOwnPropertySymbols(e);
|
||||||
|
t && (r = r.filter(function (t) {
|
||||||
|
return Object.getOwnPropertyDescriptor(e, t).enumerable;
|
||||||
|
})), n.push.apply(n, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _objectSpread2$1(e) {
|
||||||
|
for (var t = 1; t < arguments.length; t++) {
|
||||||
|
var n = null != arguments[t] ? arguments[t] : {};
|
||||||
|
t % 2 ? ownKeys$1(Object(n), !0).forEach(function (t) {
|
||||||
|
_defineProperty$1(e, t, n[t]);
|
||||||
|
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$1(Object(n)).forEach(function (t) {
|
||||||
|
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaults = {
|
var defaults = {
|
||||||
addCSS: true,
|
addCSS: !0,
|
||||||
// Add CSS to the element to improve usability (required here or in your CSS!)
|
|
||||||
thumbWidth: 15,
|
thumbWidth: 15,
|
||||||
// The width of the thumb handle
|
watch: !0
|
||||||
watch: true // Watch for new elements that match a string target
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Element matches a selector
|
function matches(e, t) {
|
||||||
function matches(element, selector) {
|
return function () {
|
||||||
|
return Array.from(document.querySelectorAll(t)).includes(this);
|
||||||
|
}.call(e, t);
|
||||||
|
}
|
||||||
|
|
||||||
function match() {
|
function trigger(e, t) {
|
||||||
return Array.from(document.querySelectorAll(selector)).includes(this);
|
if (e && t) {
|
||||||
|
var n = new Event(t, {
|
||||||
|
bubbles: !0
|
||||||
|
});
|
||||||
|
e.dispatchEvent(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
var matches = match;
|
|
||||||
return matches.call(element, selector);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trigger event
|
var getConstructor = function getConstructor(e) {
|
||||||
function trigger(element, type) {
|
return null != e ? e.constructor : null;
|
||||||
if (!element || !type) {
|
},
|
||||||
return;
|
instanceOf = function instanceOf(e, t) {
|
||||||
} // Create and dispatch the event
|
return !!(e && t && e instanceof t);
|
||||||
|
},
|
||||||
|
isNullOrUndefined = function isNullOrUndefined(e) {
|
||||||
var event = new Event(type); // Dispatch the event
|
return null == e;
|
||||||
|
},
|
||||||
element.dispatchEvent(event);
|
isObject = function isObject(e) {
|
||||||
}
|
return getConstructor(e) === Object;
|
||||||
|
},
|
||||||
// ==========================================================================
|
isNumber = function isNumber(e) {
|
||||||
// Type checking utils
|
return getConstructor(e) === Number && !Number.isNaN(e);
|
||||||
// ==========================================================================
|
},
|
||||||
var getConstructor = function getConstructor(input) {
|
isString = function isString(e) {
|
||||||
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
return getConstructor(e) === String;
|
||||||
};
|
},
|
||||||
|
isBoolean = function isBoolean(e) {
|
||||||
var instanceOf = function instanceOf(input, constructor) {
|
return getConstructor(e) === Boolean;
|
||||||
return Boolean(input && constructor && input instanceof constructor);
|
},
|
||||||
};
|
isFunction = function isFunction(e) {
|
||||||
|
return getConstructor(e) === Function;
|
||||||
var isNullOrUndefined = function isNullOrUndefined(input) {
|
},
|
||||||
return input === null || typeof input === 'undefined';
|
isArray = function isArray(e) {
|
||||||
};
|
return Array.isArray(e);
|
||||||
|
},
|
||||||
var isObject = function isObject(input) {
|
isNodeList = function isNodeList(e) {
|
||||||
return getConstructor(input) === Object;
|
return instanceOf(e, NodeList);
|
||||||
};
|
},
|
||||||
|
isElement = function isElement(e) {
|
||||||
var isNumber = function isNumber(input) {
|
return instanceOf(e, Element);
|
||||||
return getConstructor(input) === Number && !Number.isNaN(input);
|
},
|
||||||
};
|
isEvent = function isEvent(e) {
|
||||||
|
return instanceOf(e, Event);
|
||||||
var isString = function isString(input) {
|
},
|
||||||
return getConstructor(input) === String;
|
isEmpty = function isEmpty(e) {
|
||||||
};
|
return isNullOrUndefined(e) || (isString(e) || isArray(e) || isNodeList(e)) && !e.length || isObject(e) && !Object.keys(e).length;
|
||||||
|
},
|
||||||
var isBoolean = function isBoolean(input) {
|
is = {
|
||||||
return getConstructor(input) === Boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
var isFunction = function isFunction(input) {
|
|
||||||
return getConstructor(input) === Function;
|
|
||||||
};
|
|
||||||
|
|
||||||
var isArray = function isArray(input) {
|
|
||||||
return Array.isArray(input);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isNodeList = function isNodeList(input) {
|
|
||||||
return instanceOf(input, NodeList);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isElement = function isElement(input) {
|
|
||||||
return instanceOf(input, Element);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isEvent = function isEvent(input) {
|
|
||||||
return instanceOf(input, Event);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isEmpty = function isEmpty(input) {
|
|
||||||
return isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length;
|
|
||||||
};
|
|
||||||
|
|
||||||
var is = {
|
|
||||||
nullOrUndefined: isNullOrUndefined,
|
nullOrUndefined: isNullOrUndefined,
|
||||||
object: isObject,
|
object: isObject,
|
||||||
number: isNumber,
|
number: isNumber,
|
||||||
@ -238,219 +271,98 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
empty: isEmpty
|
empty: isEmpty
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the number of decimal places
|
function getDecimalPlaces(e) {
|
||||||
function getDecimalPlaces(value) {
|
var t = "".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
|
||||||
var match = "".concat(value).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
|
return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0;
|
||||||
|
|
||||||
if (!match) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Math.max(0, // Number of digits right of decimal point.
|
|
||||||
(match[1] ? match[1].length : 0) - ( // Adjust for scientific notation.
|
|
||||||
match[2] ? +match[2] : 0));
|
|
||||||
} // Round to the nearest step
|
|
||||||
|
|
||||||
function round(number, step) {
|
|
||||||
if (step < 1) {
|
|
||||||
var places = getDecimalPlaces(step);
|
|
||||||
return parseFloat(number.toFixed(places));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Math.round(number / step) * step;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var RangeTouch =
|
function round(e, t) {
|
||||||
/*#__PURE__*/
|
if (1 > t) {
|
||||||
function () {
|
var n = getDecimalPlaces(t);
|
||||||
/**
|
return parseFloat(e.toFixed(n));
|
||||||
* Setup a new instance
|
|
||||||
* @param {String|Element} target
|
|
||||||
* @param {Object} options
|
|
||||||
*/
|
|
||||||
function RangeTouch(target, options) {
|
|
||||||
_classCallCheck(this, RangeTouch);
|
|
||||||
|
|
||||||
if (is.element(target)) {
|
|
||||||
// An Element is passed, use it directly
|
|
||||||
this.element = target;
|
|
||||||
} else if (is.string(target)) {
|
|
||||||
// A CSS Selector is passed, fetch it from the DOM
|
|
||||||
this.element = document.querySelector(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.config = Object.assign({}, defaults, options);
|
|
||||||
this.init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(RangeTouch, [{
|
return Math.round(e / t) * t;
|
||||||
|
}
|
||||||
|
|
||||||
|
var RangeTouch = function () {
|
||||||
|
function e(t, n) {
|
||||||
|
_classCallCheck$1(this, e), is.element(t) ? this.element = t : is.string(t) && (this.element = document.querySelector(t)), is.element(this.element) && is.empty(this.element.rangeTouch) && (this.config = _objectSpread2$1({}, defaults, {}, n), this.init());
|
||||||
|
}
|
||||||
|
|
||||||
|
return _createClass$1(e, [{
|
||||||
key: "init",
|
key: "init",
|
||||||
value: function init() {
|
value: function value() {
|
||||||
// Bail if not a touch enabled device
|
e.enabled && (this.config.addCSS && (this.element.style.userSelect = "none", this.element.style.webKitUserSelect = "none", this.element.style.touchAction = "manipulation"), this.listeners(!0), this.element.rangeTouch = this);
|
||||||
if (!RangeTouch.enabled) {
|
|
||||||
return;
|
|
||||||
} // Add useful CSS
|
|
||||||
|
|
||||||
|
|
||||||
if (this.config.addCSS) {
|
|
||||||
// TODO: Restore original values on destroy
|
|
||||||
this.element.style.userSelect = 'none';
|
|
||||||
this.element.style.webKitUserSelect = 'none';
|
|
||||||
this.element.style.touchAction = 'manipulation';
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listeners(true);
|
|
||||||
this.element.rangeTouch = this;
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "destroy",
|
key: "destroy",
|
||||||
value: function destroy() {
|
value: function value() {
|
||||||
// Bail if not a touch enabled device
|
e.enabled && (this.config.addCSS && (this.element.style.userSelect = "", this.element.style.webKitUserSelect = "", this.element.style.touchAction = ""), this.listeners(!1), this.element.rangeTouch = null);
|
||||||
if (!RangeTouch.enabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listeners(false);
|
|
||||||
this.element.rangeTouch = null;
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "listeners",
|
key: "listeners",
|
||||||
value: function listeners(toggle) {
|
value: function value(e) {
|
||||||
var _this = this;
|
var t = this,
|
||||||
|
n = e ? "addEventListener" : "removeEventListener";
|
||||||
var method = toggle ? 'addEventListener' : 'removeEventListener'; // Listen for events
|
["touchstart", "touchmove", "touchend"].forEach(function (e) {
|
||||||
|
t.element[n](e, function (e) {
|
||||||
['touchstart', 'touchmove', 'touchend'].forEach(function (type) {
|
return t.set(e);
|
||||||
_this.element[method](type, function (event) {
|
}, !1);
|
||||||
return _this.set(event);
|
|
||||||
}, false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Get the value based on touch position
|
|
||||||
* @param {Event} event
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
key: "get",
|
key: "get",
|
||||||
value: function get(event) {
|
value: function value(t) {
|
||||||
if (!RangeTouch.enabled || !is.event(event)) {
|
if (!e.enabled || !is.event(t)) return null;
|
||||||
return null;
|
var n,
|
||||||
}
|
r = t.target,
|
||||||
|
i = t.changedTouches[0],
|
||||||
var input = event.target;
|
o = parseFloat(r.getAttribute("min")) || 0,
|
||||||
var touch = event.changedTouches[0];
|
s = parseFloat(r.getAttribute("max")) || 100,
|
||||||
var min = parseFloat(input.getAttribute('min')) || 0;
|
u = parseFloat(r.getAttribute("step")) || 1,
|
||||||
var max = parseFloat(input.getAttribute('max')) || 100;
|
c = r.getBoundingClientRect(),
|
||||||
var step = parseFloat(input.getAttribute('step')) || 1;
|
a = 100 / c.width * (this.config.thumbWidth / 2) / 100;
|
||||||
var delta = max - min; // Calculate percentage
|
return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u);
|
||||||
|
|
||||||
var percent;
|
|
||||||
var clientRect = input.getBoundingClientRect();
|
|
||||||
var thumbWidth = 100 / clientRect.width * (this.config.thumbWidth / 2) / 100; // Determine left percentage
|
|
||||||
|
|
||||||
percent = 100 / clientRect.width * (touch.clientX - clientRect.left); // Don't allow outside bounds
|
|
||||||
|
|
||||||
if (percent < 0) {
|
|
||||||
percent = 0;
|
|
||||||
} else if (percent > 100) {
|
|
||||||
percent = 100;
|
|
||||||
} // Factor in the thumb offset
|
|
||||||
|
|
||||||
|
|
||||||
if (percent < 50) {
|
|
||||||
percent -= (100 - percent * 2) * thumbWidth;
|
|
||||||
} else if (percent > 50) {
|
|
||||||
percent += (percent - 50) * 2 * thumbWidth;
|
|
||||||
} // Find the closest step to the mouse position
|
|
||||||
|
|
||||||
|
|
||||||
return min + round(delta * (percent / 100), step);
|
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Update range value based on position
|
|
||||||
* @param {Event} event
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
key: "set",
|
key: "set",
|
||||||
value: function set(event) {
|
value: function value(t) {
|
||||||
if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {
|
e.enabled && is.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, "touchend" === t.type ? "change" : "input"));
|
||||||
return;
|
|
||||||
} // Prevent text highlight on iOS
|
|
||||||
|
|
||||||
|
|
||||||
event.preventDefault(); // Set value
|
|
||||||
|
|
||||||
event.target.value = this.get(event); // Trigger event
|
|
||||||
|
|
||||||
trigger(event.target, event.type === 'touchend' ? 'change' : 'input');
|
|
||||||
}
|
}
|
||||||
}], [{
|
}], [{
|
||||||
key: "setup",
|
key: "setup",
|
||||||
|
value: function value(t) {
|
||||||
|
var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
|
||||||
|
r = null;
|
||||||
|
if (is.empty(t) || is.string(t) ? r = Array.from(document.querySelectorAll(is.string(t) ? t : 'input[type="range"]')) : is.element(t) ? r = [t] : is.nodeList(t) ? r = Array.from(t) : is.array(t) && (r = t.filter(is.element)), is.empty(r)) return null;
|
||||||
|
|
||||||
/**
|
var i = _objectSpread2$1({}, defaults, {}, n);
|
||||||
* Setup multiple instances
|
|
||||||
* @param {String|Element|NodeList|Array} target
|
|
||||||
* @param {Object} options
|
|
||||||
*/
|
|
||||||
value: function setup(target) {
|
|
||||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
||||||
var targets = null;
|
|
||||||
|
|
||||||
if (is.empty(target) || is.string(target)) {
|
if (is.string(t) && i.watch) {
|
||||||
targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type="range"]'));
|
var o = new MutationObserver(function (n) {
|
||||||
} else if (is.element(target)) {
|
Array.from(n).forEach(function (n) {
|
||||||
targets = [target];
|
Array.from(n.addedNodes).forEach(function (n) {
|
||||||
} else if (is.nodeList(target)) {
|
is.element(n) && matches(n, t) && new e(n, i);
|
||||||
targets = Array.from(target);
|
|
||||||
} else if (is.array(target)) {
|
|
||||||
targets = target.filter(is.element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is.empty(targets)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = Object.assign({}, defaults, options);
|
|
||||||
|
|
||||||
if (is.string(target) && config.watch) {
|
|
||||||
// Create an observer instance
|
|
||||||
var observer = new MutationObserver(function (mutations) {
|
|
||||||
Array.from(mutations).forEach(function (mutation) {
|
|
||||||
Array.from(mutation.addedNodes).forEach(function (node) {
|
|
||||||
if (!is.element(node) || !matches(node, target)) {
|
|
||||||
return;
|
|
||||||
} // eslint-disable-next-line no-unused-vars
|
|
||||||
|
|
||||||
|
|
||||||
var range = new RangeTouch(node, config);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}); // Pass in the target node, as well as the observer options
|
});
|
||||||
|
o.observe(document.body, {
|
||||||
observer.observe(document.body, {
|
childList: !0,
|
||||||
childList: true,
|
subtree: !0
|
||||||
subtree: true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return targets.map(function (t) {
|
return r.map(function (t) {
|
||||||
return new RangeTouch(t, options);
|
return new e(t, n);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "enabled",
|
key: "enabled",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return 'ontouchstart' in document.documentElement;
|
return "ontouchstart" in document.documentElement;
|
||||||
}
|
}
|
||||||
}]);
|
}]), e;
|
||||||
|
|
||||||
return RangeTouch;
|
|
||||||
}();
|
}();
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -525,7 +437,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var isPromise = function isPromise(input) {
|
var isPromise = function isPromise(input) {
|
||||||
return instanceOf$1(input, Promise);
|
return instanceOf$1(input, Promise) && isFunction$1(input.then);
|
||||||
};
|
};
|
||||||
|
|
||||||
var isEmpty$1 = function isEmpty(input) {
|
var isEmpty$1 = function isEmpty(input) {
|
||||||
@ -867,12 +779,14 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
} // Element matches selector
|
} // Element matches selector
|
||||||
|
|
||||||
function matches$1(element, selector) {
|
function matches$1(element, selector) {
|
||||||
|
var _Element = Element,
|
||||||
|
prototype = _Element.prototype;
|
||||||
|
|
||||||
function match() {
|
function match() {
|
||||||
return Array.from(document.querySelectorAll(selector)).includes(this);
|
return Array.from(document.querySelectorAll(selector)).includes(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
var method = match;
|
var method = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match;
|
||||||
return method.call(element, selector);
|
return method.call(element, selector);
|
||||||
} // Find all elements
|
} // Find all elements
|
||||||
|
|
||||||
@ -1144,6 +1058,19 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}).then(function () {});
|
}).then(function () {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Silence a Promise-like object.
|
||||||
|
* This is useful for avoiding non-harmful, but potentially confusing "uncaught
|
||||||
|
* play promise" rejection error messages.
|
||||||
|
* @param {Object} value An object that may or may not be `Promise`-like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function silencePromise(value) {
|
||||||
|
if (is$1.promise(value)) {
|
||||||
|
value.then(null, function () {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function validateRatio(input) {
|
function validateRatio(input) {
|
||||||
if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) {
|
if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) {
|
||||||
return false;
|
return false;
|
||||||
@ -1320,7 +1247,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
player.currentTime = currentTime; // Resume playing
|
player.currentTime = currentTime; // Resume playing
|
||||||
|
|
||||||
if (!paused) {
|
if (!paused) {
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
}
|
}
|
||||||
}); // Load new source
|
}); // Load new source
|
||||||
|
|
||||||
@ -1498,9 +1425,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var Storage =
|
var Storage = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Storage(player) {
|
function Storage(player) {
|
||||||
_classCallCheck(this, Storage);
|
_classCallCheck(this, Storage);
|
||||||
|
|
||||||
@ -1782,7 +1707,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
var icon = document.createElementNS(namespace, 'svg');
|
var icon = document.createElementNS(namespace, 'svg');
|
||||||
setAttributes(icon, extend(attributes, {
|
setAttributes(icon, extend(attributes, {
|
||||||
role: 'presentation',
|
'aria-hidden': 'true',
|
||||||
focusable: 'false'
|
focusable: 'false'
|
||||||
})); // Create the <use> to reference sprite
|
})); // Create the <use> to reference sprite
|
||||||
|
|
||||||
@ -3372,7 +3297,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$1.empty(tracks)); // Update available languages in list
|
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$1.empty(tracks)); // Update available languages in list
|
||||||
|
|
||||||
if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {
|
if (is$1.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {
|
||||||
controls.setCaptionsMenu.call(this);
|
controls.setCaptionsMenu.call(this);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -4011,9 +3936,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
var noop = function noop() {};
|
var noop = function noop() {};
|
||||||
|
|
||||||
var Console =
|
var Console = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Console() {
|
function Console() {
|
||||||
var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||||
|
|
||||||
@ -4049,9 +3972,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
return Console;
|
return Console;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
var Fullscreen =
|
var Fullscreen = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Fullscreen(player) {
|
function Fullscreen(player) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
@ -4241,7 +4162,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
||||||
this.target.webkitExitFullscreen();
|
this.target.webkitExitFullscreen();
|
||||||
this.player.play();
|
silencePromise(this.player.play());
|
||||||
} else if (!Fullscreen.native || this.forceFallback) {
|
} else if (!Fullscreen.native || this.forceFallback) {
|
||||||
this.toggleFallback(false);
|
this.toggleFallback(false);
|
||||||
} else if (!this.prefix) {
|
} else if (!this.prefix) {
|
||||||
@ -4288,7 +4209,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var element = !this.prefix ? document.fullscreenElement : document["".concat(this.prefix).concat(this.property, "Element")];
|
var element = !this.prefix ? document.fullscreenElement : document["".concat(this.prefix).concat(this.property, "Element")];
|
||||||
return element === this.target;
|
return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;
|
||||||
} // Get target element
|
} // Get target element
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
@ -4575,9 +4496,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var Listeners =
|
var Listeners = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Listeners(player) {
|
function Listeners(player) {
|
||||||
_classCallCheck(this, Listeners);
|
_classCallCheck(this, Listeners);
|
||||||
|
|
||||||
@ -4668,7 +4587,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
case 75:
|
case 75:
|
||||||
// Space and K key
|
// Space and K key
|
||||||
if (!repeat) {
|
if (!repeat) {
|
||||||
player.togglePlay();
|
silencePromise(player.togglePlay());
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -4986,9 +4905,13 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
if (player.ended) {
|
if (player.ended) {
|
||||||
_this.proxy(event, player.restart, 'restart');
|
_this.proxy(event, player.restart, 'restart');
|
||||||
|
|
||||||
_this.proxy(event, player.play, 'play');
|
_this.proxy(event, function () {
|
||||||
|
silencePromise(player.play());
|
||||||
|
}, 'play');
|
||||||
} else {
|
} else {
|
||||||
_this.proxy(event, player.togglePlay, 'play');
|
_this.proxy(event, function () {
|
||||||
|
silencePromise(player.togglePlay());
|
||||||
|
}, 'play');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} // Disable right click
|
} // Disable right click
|
||||||
@ -5086,7 +5009,9 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
if (elements.buttons.play) {
|
if (elements.buttons.play) {
|
||||||
Array.from(elements.buttons.play).forEach(function (button) {
|
Array.from(elements.buttons.play).forEach(function (button) {
|
||||||
_this3.bind(button, 'click', player.togglePlay, 'play');
|
_this3.bind(button, 'click', function () {
|
||||||
|
silencePromise(player.togglePlay());
|
||||||
|
}, 'play');
|
||||||
});
|
});
|
||||||
} // Pause
|
} // Pause
|
||||||
|
|
||||||
@ -5183,7 +5108,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
if (play && done) {
|
if (play && done) {
|
||||||
seek.removeAttribute(attribute);
|
seek.removeAttribute(attribute);
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
} else if (!done && player.playing) {
|
} else if (!done && player.playing) {
|
||||||
seek.setAttribute(attribute, '');
|
seek.setAttribute(attribute, '');
|
||||||
player.pause();
|
player.pause();
|
||||||
@ -5818,6 +5743,9 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
player.embed.setPlaybackRate(input).then(function () {
|
player.embed.setPlaybackRate(input).then(function () {
|
||||||
speed = input;
|
speed = input;
|
||||||
triggerEvent.call(player, player.media, 'ratechange');
|
triggerEvent.call(player, player.media, 'ratechange');
|
||||||
|
}).catch(function () {
|
||||||
|
// Cannot set Playback Rate, Video is probably not on Pro account
|
||||||
|
player.options.speed = [1];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}); // Volume
|
}); // Volume
|
||||||
@ -6457,9 +6385,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
instance.elements.container.remove();
|
instance.elements.container.remove();
|
||||||
};
|
};
|
||||||
|
|
||||||
var Ads =
|
var Ads = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
/**
|
/**
|
||||||
* Ads constructor.
|
* Ads constructor.
|
||||||
* @param {Object} player
|
* @param {Object} player
|
||||||
@ -6559,6 +6485,8 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
* mobile devices, this initialization is done as the result of a user action.
|
* mobile devices, this initialization is done as the result of a user action.
|
||||||
*/
|
*/
|
||||||
value: function setupIMA() {
|
value: function setupIMA() {
|
||||||
|
var _this4 = this;
|
||||||
|
|
||||||
// Create the container for our advertisements
|
// Create the container for our advertisements
|
||||||
this.elements.container = createElement('div', {
|
this.elements.container = createElement('div', {
|
||||||
class: this.player.config.classNames.ads
|
class: this.player.config.classNames.ads
|
||||||
@ -6571,7 +6499,16 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads
|
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads
|
||||||
|
|
||||||
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Request video ads to be pre-loaded
|
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Create ads loader
|
||||||
|
|
||||||
|
this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events
|
||||||
|
|
||||||
|
this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {
|
||||||
|
return _this4.onAdsManagerLoaded(event);
|
||||||
|
}, false);
|
||||||
|
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {
|
||||||
|
return _this4.onAdError(error);
|
||||||
|
}, false); // Request video ads to be pre-loaded
|
||||||
|
|
||||||
this.requestAds();
|
this.requestAds();
|
||||||
}
|
}
|
||||||
@ -6582,21 +6519,10 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}, {
|
}, {
|
||||||
key: "requestAds",
|
key: "requestAds",
|
||||||
value: function requestAds() {
|
value: function requestAds() {
|
||||||
var _this4 = this;
|
|
||||||
|
|
||||||
var container = this.player.elements.container;
|
var container = this.player.elements.container;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Create ads loader
|
// Request video ads
|
||||||
this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events
|
|
||||||
|
|
||||||
this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {
|
|
||||||
return _this4.onAdsManagerLoaded(event);
|
|
||||||
}, false);
|
|
||||||
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {
|
|
||||||
return _this4.onAdError(error);
|
|
||||||
}, false); // Request video ads
|
|
||||||
|
|
||||||
var request = new google.ima.AdsRequest();
|
var request = new google.ima.AdsRequest();
|
||||||
request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK
|
request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK
|
||||||
// to select the correct creative if multiple are returned
|
// to select the correct creative if multiple are returned
|
||||||
@ -6775,7 +6701,13 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
// };
|
// };
|
||||||
// TODO: So there is still this thing where a video should only be allowed to start
|
// TODO: So there is still this thing where a video should only be allowed to start
|
||||||
// playing when the IMA SDK is ready or has failed
|
// playing when the IMA SDK is ready or has failed
|
||||||
this.loadAds();
|
if (this.player.ended) {
|
||||||
|
this.loadAds();
|
||||||
|
} else {
|
||||||
|
// The SDK won't allow new ads to be called without receiving a contentComplete()
|
||||||
|
this.loader.contentComplete();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:
|
case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:
|
||||||
@ -6911,7 +6843,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
this.playing = false; // Play video
|
this.playing = false; // Play video
|
||||||
|
|
||||||
this.player.media.play();
|
silencePromise(this.player.media.play());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Pause our video
|
* Pause our video
|
||||||
@ -6968,7 +6900,9 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
_this11.on('loaded', resolve);
|
_this11.on('loaded', resolve);
|
||||||
|
|
||||||
_this11.player.debug.log(_this11.manager);
|
_this11.player.debug.log(_this11.manager);
|
||||||
}); // Now request some new advertisements
|
}); // Now that the manager has been destroyed set it to also be un-initialized
|
||||||
|
|
||||||
|
_this11.initialized = false; // Now request some new advertisements
|
||||||
|
|
||||||
_this11.requestAds();
|
_this11.requestAds();
|
||||||
}).catch(function () {});
|
}).catch(function () {});
|
||||||
@ -7151,9 +7085,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
var PreviewThumbnails =
|
var PreviewThumbnails = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
/**
|
/**
|
||||||
* PreviewThumbnails constructor.
|
* PreviewThumbnails constructor.
|
||||||
* @param {Plyr} player
|
* @param {Plyr} player
|
||||||
@ -7214,15 +7146,10 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
if (is$1.empty(src)) {
|
if (is$1.empty(src)) {
|
||||||
throw new Error('Missing previewThumbnails.src config attribute');
|
throw new Error('Missing previewThumbnails.src config attribute');
|
||||||
} // If string, convert into single-element list
|
} // Resolve promise
|
||||||
|
|
||||||
|
|
||||||
var urls = is$1.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
var sortAndResolve = function sortAndResolve() {
|
||||||
|
|
||||||
var promises = urls.map(function (u) {
|
|
||||||
return _this2.getThumbnail(u);
|
|
||||||
});
|
|
||||||
Promise.all(promises).then(function () {
|
|
||||||
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
||||||
_this2.thumbnails.sort(function (x, y) {
|
_this2.thumbnails.sort(function (x, y) {
|
||||||
return x.height - y.height;
|
return x.height - y.height;
|
||||||
@ -7231,7 +7158,25 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
_this2.player.debug.log('Preview thumbnails', _this2.thumbnails);
|
_this2.player.debug.log('Preview thumbnails', _this2.thumbnails);
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
});
|
}; // Via callback()
|
||||||
|
|
||||||
|
|
||||||
|
if (is$1.function(src)) {
|
||||||
|
src(function (thumbnails) {
|
||||||
|
_this2.thumbnails = thumbnails;
|
||||||
|
sortAndResolve();
|
||||||
|
});
|
||||||
|
} // VTT urls
|
||||||
|
else {
|
||||||
|
// If string, convert into single-element list
|
||||||
|
var urls = is$1.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
||||||
|
|
||||||
|
var promises = urls.map(function (u) {
|
||||||
|
return _this2.getThumbnail(u);
|
||||||
|
}); // Resolve
|
||||||
|
|
||||||
|
Promise.all(promises).then(sortAndResolve);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} // Process individual VTT file
|
} // Process individual VTT file
|
||||||
|
|
||||||
@ -7982,9 +7927,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
// const globals = new WeakMap();
|
// const globals = new WeakMap();
|
||||||
// Plyr instance
|
// Plyr instance
|
||||||
|
|
||||||
var Plyr =
|
var Plyr = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Plyr(target, options) {
|
function Plyr(target, options) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
@ -8228,7 +8171,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
|
|
||||||
if (this.isHTML5 && this.config.autoplay) {
|
if (this.isHTML5 && this.config.autoplay) {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
return _this.play();
|
return silencePromise(_this.play());
|
||||||
}, 10);
|
}, 10);
|
||||||
} // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
} // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
||||||
|
|
||||||
@ -8265,7 +8208,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
this.ads.managerPromise.then(function () {
|
this.ads.managerPromise.then(function () {
|
||||||
return _this2.ads.play();
|
return _this2.ads.play();
|
||||||
}).catch(function () {
|
}).catch(function () {
|
||||||
return _this2.media.play();
|
return silencePromise(_this2.media.play());
|
||||||
});
|
});
|
||||||
} // Return the promise (for HTML5)
|
} // Return the promise (for HTML5)
|
||||||
|
|
||||||
|
4
dist/plyr.min.js
vendored
4
dist/plyr.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.min.js.map
vendored
2
dist/plyr.min.js.map
vendored
File diff suppressed because one or more lines are too long
4
dist/plyr.min.mjs
vendored
4
dist/plyr.min.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.min.mjs.map
vendored
2
dist/plyr.min.mjs.map
vendored
File diff suppressed because one or more lines are too long
607
dist/plyr.mjs
vendored
607
dist/plyr.mjs
vendored
@ -70,19 +70,15 @@ function _objectSpread2(target) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _slicedToArray(arr, i) {
|
function _slicedToArray(arr, i) {
|
||||||
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _toConsumableArray(arr) {
|
function _toConsumableArray(arr) {
|
||||||
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _arrayWithoutHoles(arr) {
|
function _arrayWithoutHoles(arr) {
|
||||||
if (Array.isArray(arr)) {
|
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
||||||
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
|
||||||
|
|
||||||
return arr2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _arrayWithHoles(arr) {
|
function _arrayWithHoles(arr) {
|
||||||
@ -90,14 +86,11 @@ function _arrayWithHoles(arr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _iterableToArray(iter) {
|
function _iterableToArray(iter) {
|
||||||
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _iterableToArrayLimit(arr, i) {
|
function _iterableToArrayLimit(arr, i) {
|
||||||
if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
|
if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var _arr = [];
|
var _arr = [];
|
||||||
var _n = true;
|
var _n = true;
|
||||||
var _d = false;
|
var _d = false;
|
||||||
@ -123,102 +116,142 @@ function _iterableToArrayLimit(arr, i) {
|
|||||||
return _arr;
|
return _arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _unsupportedIterableToArray(o, minLen) {
|
||||||
|
if (!o) return;
|
||||||
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
||||||
|
var n = Object.prototype.toString.call(o).slice(8, -1);
|
||||||
|
if (n === "Object" && o.constructor) n = o.constructor.name;
|
||||||
|
if (n === "Map" || n === "Set") return Array.from(n);
|
||||||
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _arrayLikeToArray(arr, len) {
|
||||||
|
if (len == null || len > arr.length) len = arr.length;
|
||||||
|
|
||||||
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
||||||
|
|
||||||
|
return arr2;
|
||||||
|
}
|
||||||
|
|
||||||
function _nonIterableSpread() {
|
function _nonIterableSpread() {
|
||||||
throw new TypeError("Invalid attempt to spread non-iterable instance");
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||||
}
|
}
|
||||||
|
|
||||||
function _nonIterableRest() {
|
function _nonIterableRest() {
|
||||||
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||||||
|
}
|
||||||
|
|
||||||
|
function _classCallCheck$1(e, t) {
|
||||||
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
||||||
|
}
|
||||||
|
|
||||||
|
function _defineProperties$1(e, t) {
|
||||||
|
for (var n = 0; n < t.length; n++) {
|
||||||
|
var r = t[n];
|
||||||
|
r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _createClass$1(e, t, n) {
|
||||||
|
return t && _defineProperties$1(e.prototype, t), n && _defineProperties$1(e, n), e;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _defineProperty$1(e, t, n) {
|
||||||
|
return t in e ? Object.defineProperty(e, t, {
|
||||||
|
value: n,
|
||||||
|
enumerable: !0,
|
||||||
|
configurable: !0,
|
||||||
|
writable: !0
|
||||||
|
}) : e[t] = n, e;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ownKeys$1(e, t) {
|
||||||
|
var n = Object.keys(e);
|
||||||
|
|
||||||
|
if (Object.getOwnPropertySymbols) {
|
||||||
|
var r = Object.getOwnPropertySymbols(e);
|
||||||
|
t && (r = r.filter(function (t) {
|
||||||
|
return Object.getOwnPropertyDescriptor(e, t).enumerable;
|
||||||
|
})), n.push.apply(n, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _objectSpread2$1(e) {
|
||||||
|
for (var t = 1; t < arguments.length; t++) {
|
||||||
|
var n = null != arguments[t] ? arguments[t] : {};
|
||||||
|
t % 2 ? ownKeys$1(Object(n), !0).forEach(function (t) {
|
||||||
|
_defineProperty$1(e, t, n[t]);
|
||||||
|
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$1(Object(n)).forEach(function (t) {
|
||||||
|
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaults = {
|
var defaults = {
|
||||||
addCSS: true,
|
addCSS: !0,
|
||||||
// Add CSS to the element to improve usability (required here or in your CSS!)
|
|
||||||
thumbWidth: 15,
|
thumbWidth: 15,
|
||||||
// The width of the thumb handle
|
watch: !0
|
||||||
watch: true // Watch for new elements that match a string target
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Element matches a selector
|
function matches(e, t) {
|
||||||
function matches(element, selector) {
|
return function () {
|
||||||
|
return Array.from(document.querySelectorAll(t)).includes(this);
|
||||||
|
}.call(e, t);
|
||||||
|
}
|
||||||
|
|
||||||
function match() {
|
function trigger(e, t) {
|
||||||
return Array.from(document.querySelectorAll(selector)).includes(this);
|
if (e && t) {
|
||||||
|
var n = new Event(t, {
|
||||||
|
bubbles: !0
|
||||||
|
});
|
||||||
|
e.dispatchEvent(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
var matches = match;
|
|
||||||
return matches.call(element, selector);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trigger event
|
var getConstructor = function getConstructor(e) {
|
||||||
function trigger(element, type) {
|
return null != e ? e.constructor : null;
|
||||||
if (!element || !type) {
|
},
|
||||||
return;
|
instanceOf = function instanceOf(e, t) {
|
||||||
} // Create and dispatch the event
|
return !!(e && t && e instanceof t);
|
||||||
|
},
|
||||||
|
isNullOrUndefined = function isNullOrUndefined(e) {
|
||||||
var event = new Event(type); // Dispatch the event
|
return null == e;
|
||||||
|
},
|
||||||
element.dispatchEvent(event);
|
isObject = function isObject(e) {
|
||||||
}
|
return getConstructor(e) === Object;
|
||||||
|
},
|
||||||
// ==========================================================================
|
isNumber = function isNumber(e) {
|
||||||
// Type checking utils
|
return getConstructor(e) === Number && !Number.isNaN(e);
|
||||||
// ==========================================================================
|
},
|
||||||
var getConstructor = function getConstructor(input) {
|
isString = function isString(e) {
|
||||||
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
return getConstructor(e) === String;
|
||||||
};
|
},
|
||||||
|
isBoolean = function isBoolean(e) {
|
||||||
var instanceOf = function instanceOf(input, constructor) {
|
return getConstructor(e) === Boolean;
|
||||||
return Boolean(input && constructor && input instanceof constructor);
|
},
|
||||||
};
|
isFunction = function isFunction(e) {
|
||||||
|
return getConstructor(e) === Function;
|
||||||
var isNullOrUndefined = function isNullOrUndefined(input) {
|
},
|
||||||
return input === null || typeof input === 'undefined';
|
isArray = function isArray(e) {
|
||||||
};
|
return Array.isArray(e);
|
||||||
|
},
|
||||||
var isObject = function isObject(input) {
|
isNodeList = function isNodeList(e) {
|
||||||
return getConstructor(input) === Object;
|
return instanceOf(e, NodeList);
|
||||||
};
|
},
|
||||||
|
isElement = function isElement(e) {
|
||||||
var isNumber = function isNumber(input) {
|
return instanceOf(e, Element);
|
||||||
return getConstructor(input) === Number && !Number.isNaN(input);
|
},
|
||||||
};
|
isEvent = function isEvent(e) {
|
||||||
|
return instanceOf(e, Event);
|
||||||
var isString = function isString(input) {
|
},
|
||||||
return getConstructor(input) === String;
|
isEmpty = function isEmpty(e) {
|
||||||
};
|
return isNullOrUndefined(e) || (isString(e) || isArray(e) || isNodeList(e)) && !e.length || isObject(e) && !Object.keys(e).length;
|
||||||
|
},
|
||||||
var isBoolean = function isBoolean(input) {
|
is = {
|
||||||
return getConstructor(input) === Boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
var isFunction = function isFunction(input) {
|
|
||||||
return getConstructor(input) === Function;
|
|
||||||
};
|
|
||||||
|
|
||||||
var isArray = function isArray(input) {
|
|
||||||
return Array.isArray(input);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isNodeList = function isNodeList(input) {
|
|
||||||
return instanceOf(input, NodeList);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isElement = function isElement(input) {
|
|
||||||
return instanceOf(input, Element);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isEvent = function isEvent(input) {
|
|
||||||
return instanceOf(input, Event);
|
|
||||||
};
|
|
||||||
|
|
||||||
var isEmpty = function isEmpty(input) {
|
|
||||||
return isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length;
|
|
||||||
};
|
|
||||||
|
|
||||||
var is = {
|
|
||||||
nullOrUndefined: isNullOrUndefined,
|
nullOrUndefined: isNullOrUndefined,
|
||||||
object: isObject,
|
object: isObject,
|
||||||
number: isNumber,
|
number: isNumber,
|
||||||
@ -232,219 +265,98 @@ var is = {
|
|||||||
empty: isEmpty
|
empty: isEmpty
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the number of decimal places
|
function getDecimalPlaces(e) {
|
||||||
function getDecimalPlaces(value) {
|
var t = "".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
|
||||||
var match = "".concat(value).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
|
return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0;
|
||||||
|
|
||||||
if (!match) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Math.max(0, // Number of digits right of decimal point.
|
|
||||||
(match[1] ? match[1].length : 0) - ( // Adjust for scientific notation.
|
|
||||||
match[2] ? +match[2] : 0));
|
|
||||||
} // Round to the nearest step
|
|
||||||
|
|
||||||
function round(number, step) {
|
|
||||||
if (step < 1) {
|
|
||||||
var places = getDecimalPlaces(step);
|
|
||||||
return parseFloat(number.toFixed(places));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Math.round(number / step) * step;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var RangeTouch =
|
function round(e, t) {
|
||||||
/*#__PURE__*/
|
if (1 > t) {
|
||||||
function () {
|
var n = getDecimalPlaces(t);
|
||||||
/**
|
return parseFloat(e.toFixed(n));
|
||||||
* Setup a new instance
|
|
||||||
* @param {String|Element} target
|
|
||||||
* @param {Object} options
|
|
||||||
*/
|
|
||||||
function RangeTouch(target, options) {
|
|
||||||
_classCallCheck(this, RangeTouch);
|
|
||||||
|
|
||||||
if (is.element(target)) {
|
|
||||||
// An Element is passed, use it directly
|
|
||||||
this.element = target;
|
|
||||||
} else if (is.string(target)) {
|
|
||||||
// A CSS Selector is passed, fetch it from the DOM
|
|
||||||
this.element = document.querySelector(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.config = Object.assign({}, defaults, options);
|
|
||||||
this.init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(RangeTouch, [{
|
return Math.round(e / t) * t;
|
||||||
|
}
|
||||||
|
|
||||||
|
var RangeTouch = function () {
|
||||||
|
function e(t, n) {
|
||||||
|
_classCallCheck$1(this, e), is.element(t) ? this.element = t : is.string(t) && (this.element = document.querySelector(t)), is.element(this.element) && is.empty(this.element.rangeTouch) && (this.config = _objectSpread2$1({}, defaults, {}, n), this.init());
|
||||||
|
}
|
||||||
|
|
||||||
|
return _createClass$1(e, [{
|
||||||
key: "init",
|
key: "init",
|
||||||
value: function init() {
|
value: function value() {
|
||||||
// Bail if not a touch enabled device
|
e.enabled && (this.config.addCSS && (this.element.style.userSelect = "none", this.element.style.webKitUserSelect = "none", this.element.style.touchAction = "manipulation"), this.listeners(!0), this.element.rangeTouch = this);
|
||||||
if (!RangeTouch.enabled) {
|
|
||||||
return;
|
|
||||||
} // Add useful CSS
|
|
||||||
|
|
||||||
|
|
||||||
if (this.config.addCSS) {
|
|
||||||
// TODO: Restore original values on destroy
|
|
||||||
this.element.style.userSelect = 'none';
|
|
||||||
this.element.style.webKitUserSelect = 'none';
|
|
||||||
this.element.style.touchAction = 'manipulation';
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listeners(true);
|
|
||||||
this.element.rangeTouch = this;
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "destroy",
|
key: "destroy",
|
||||||
value: function destroy() {
|
value: function value() {
|
||||||
// Bail if not a touch enabled device
|
e.enabled && (this.config.addCSS && (this.element.style.userSelect = "", this.element.style.webKitUserSelect = "", this.element.style.touchAction = ""), this.listeners(!1), this.element.rangeTouch = null);
|
||||||
if (!RangeTouch.enabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listeners(false);
|
|
||||||
this.element.rangeTouch = null;
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "listeners",
|
key: "listeners",
|
||||||
value: function listeners(toggle) {
|
value: function value(e) {
|
||||||
var _this = this;
|
var t = this,
|
||||||
|
n = e ? "addEventListener" : "removeEventListener";
|
||||||
var method = toggle ? 'addEventListener' : 'removeEventListener'; // Listen for events
|
["touchstart", "touchmove", "touchend"].forEach(function (e) {
|
||||||
|
t.element[n](e, function (e) {
|
||||||
['touchstart', 'touchmove', 'touchend'].forEach(function (type) {
|
return t.set(e);
|
||||||
_this.element[method](type, function (event) {
|
}, !1);
|
||||||
return _this.set(event);
|
|
||||||
}, false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Get the value based on touch position
|
|
||||||
* @param {Event} event
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
key: "get",
|
key: "get",
|
||||||
value: function get(event) {
|
value: function value(t) {
|
||||||
if (!RangeTouch.enabled || !is.event(event)) {
|
if (!e.enabled || !is.event(t)) return null;
|
||||||
return null;
|
var n,
|
||||||
}
|
r = t.target,
|
||||||
|
i = t.changedTouches[0],
|
||||||
var input = event.target;
|
o = parseFloat(r.getAttribute("min")) || 0,
|
||||||
var touch = event.changedTouches[0];
|
s = parseFloat(r.getAttribute("max")) || 100,
|
||||||
var min = parseFloat(input.getAttribute('min')) || 0;
|
u = parseFloat(r.getAttribute("step")) || 1,
|
||||||
var max = parseFloat(input.getAttribute('max')) || 100;
|
c = r.getBoundingClientRect(),
|
||||||
var step = parseFloat(input.getAttribute('step')) || 1;
|
a = 100 / c.width * (this.config.thumbWidth / 2) / 100;
|
||||||
var delta = max - min; // Calculate percentage
|
return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u);
|
||||||
|
|
||||||
var percent;
|
|
||||||
var clientRect = input.getBoundingClientRect();
|
|
||||||
var thumbWidth = 100 / clientRect.width * (this.config.thumbWidth / 2) / 100; // Determine left percentage
|
|
||||||
|
|
||||||
percent = 100 / clientRect.width * (touch.clientX - clientRect.left); // Don't allow outside bounds
|
|
||||||
|
|
||||||
if (percent < 0) {
|
|
||||||
percent = 0;
|
|
||||||
} else if (percent > 100) {
|
|
||||||
percent = 100;
|
|
||||||
} // Factor in the thumb offset
|
|
||||||
|
|
||||||
|
|
||||||
if (percent < 50) {
|
|
||||||
percent -= (100 - percent * 2) * thumbWidth;
|
|
||||||
} else if (percent > 50) {
|
|
||||||
percent += (percent - 50) * 2 * thumbWidth;
|
|
||||||
} // Find the closest step to the mouse position
|
|
||||||
|
|
||||||
|
|
||||||
return min + round(delta * (percent / 100), step);
|
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Update range value based on position
|
|
||||||
* @param {Event} event
|
|
||||||
*/
|
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
key: "set",
|
key: "set",
|
||||||
value: function set(event) {
|
value: function value(t) {
|
||||||
if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {
|
e.enabled && is.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, "touchend" === t.type ? "change" : "input"));
|
||||||
return;
|
|
||||||
} // Prevent text highlight on iOS
|
|
||||||
|
|
||||||
|
|
||||||
event.preventDefault(); // Set value
|
|
||||||
|
|
||||||
event.target.value = this.get(event); // Trigger event
|
|
||||||
|
|
||||||
trigger(event.target, event.type === 'touchend' ? 'change' : 'input');
|
|
||||||
}
|
}
|
||||||
}], [{
|
}], [{
|
||||||
key: "setup",
|
key: "setup",
|
||||||
|
value: function value(t) {
|
||||||
|
var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
|
||||||
|
r = null;
|
||||||
|
if (is.empty(t) || is.string(t) ? r = Array.from(document.querySelectorAll(is.string(t) ? t : 'input[type="range"]')) : is.element(t) ? r = [t] : is.nodeList(t) ? r = Array.from(t) : is.array(t) && (r = t.filter(is.element)), is.empty(r)) return null;
|
||||||
|
|
||||||
/**
|
var i = _objectSpread2$1({}, defaults, {}, n);
|
||||||
* Setup multiple instances
|
|
||||||
* @param {String|Element|NodeList|Array} target
|
|
||||||
* @param {Object} options
|
|
||||||
*/
|
|
||||||
value: function setup(target) {
|
|
||||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
||||||
var targets = null;
|
|
||||||
|
|
||||||
if (is.empty(target) || is.string(target)) {
|
if (is.string(t) && i.watch) {
|
||||||
targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type="range"]'));
|
var o = new MutationObserver(function (n) {
|
||||||
} else if (is.element(target)) {
|
Array.from(n).forEach(function (n) {
|
||||||
targets = [target];
|
Array.from(n.addedNodes).forEach(function (n) {
|
||||||
} else if (is.nodeList(target)) {
|
is.element(n) && matches(n, t) && new e(n, i);
|
||||||
targets = Array.from(target);
|
|
||||||
} else if (is.array(target)) {
|
|
||||||
targets = target.filter(is.element);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is.empty(targets)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = Object.assign({}, defaults, options);
|
|
||||||
|
|
||||||
if (is.string(target) && config.watch) {
|
|
||||||
// Create an observer instance
|
|
||||||
var observer = new MutationObserver(function (mutations) {
|
|
||||||
Array.from(mutations).forEach(function (mutation) {
|
|
||||||
Array.from(mutation.addedNodes).forEach(function (node) {
|
|
||||||
if (!is.element(node) || !matches(node, target)) {
|
|
||||||
return;
|
|
||||||
} // eslint-disable-next-line no-unused-vars
|
|
||||||
|
|
||||||
|
|
||||||
var range = new RangeTouch(node, config);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}); // Pass in the target node, as well as the observer options
|
});
|
||||||
|
o.observe(document.body, {
|
||||||
observer.observe(document.body, {
|
childList: !0,
|
||||||
childList: true,
|
subtree: !0
|
||||||
subtree: true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return targets.map(function (t) {
|
return r.map(function (t) {
|
||||||
return new RangeTouch(t, options);
|
return new e(t, n);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: "enabled",
|
key: "enabled",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return 'ontouchstart' in document.documentElement;
|
return "ontouchstart" in document.documentElement;
|
||||||
}
|
}
|
||||||
}]);
|
}]), e;
|
||||||
|
|
||||||
return RangeTouch;
|
|
||||||
}();
|
}();
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -519,7 +431,7 @@ var isTrack = function isTrack(input) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var isPromise = function isPromise(input) {
|
var isPromise = function isPromise(input) {
|
||||||
return instanceOf$1(input, Promise);
|
return instanceOf$1(input, Promise) && isFunction$1(input.then);
|
||||||
};
|
};
|
||||||
|
|
||||||
var isEmpty$1 = function isEmpty(input) {
|
var isEmpty$1 = function isEmpty(input) {
|
||||||
@ -861,12 +773,14 @@ function hasClass(element, className) {
|
|||||||
} // Element matches selector
|
} // Element matches selector
|
||||||
|
|
||||||
function matches$1(element, selector) {
|
function matches$1(element, selector) {
|
||||||
|
var _Element = Element,
|
||||||
|
prototype = _Element.prototype;
|
||||||
|
|
||||||
function match() {
|
function match() {
|
||||||
return Array.from(document.querySelectorAll(selector)).includes(this);
|
return Array.from(document.querySelectorAll(selector)).includes(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
var method = match;
|
var method = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match;
|
||||||
return method.call(element, selector);
|
return method.call(element, selector);
|
||||||
} // Find all elements
|
} // Find all elements
|
||||||
|
|
||||||
@ -1138,6 +1052,19 @@ function ready() {
|
|||||||
}).then(function () {});
|
}).then(function () {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Silence a Promise-like object.
|
||||||
|
* This is useful for avoiding non-harmful, but potentially confusing "uncaught
|
||||||
|
* play promise" rejection error messages.
|
||||||
|
* @param {Object} value An object that may or may not be `Promise`-like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function silencePromise(value) {
|
||||||
|
if (is$1.promise(value)) {
|
||||||
|
value.then(null, function () {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function validateRatio(input) {
|
function validateRatio(input) {
|
||||||
if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) {
|
if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) {
|
||||||
return false;
|
return false;
|
||||||
@ -1314,7 +1241,7 @@ var html5 = {
|
|||||||
player.currentTime = currentTime; // Resume playing
|
player.currentTime = currentTime; // Resume playing
|
||||||
|
|
||||||
if (!paused) {
|
if (!paused) {
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
}
|
}
|
||||||
}); // Load new source
|
}); // Load new source
|
||||||
|
|
||||||
@ -1492,9 +1419,7 @@ var i18n = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var Storage =
|
var Storage = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Storage(player) {
|
function Storage(player) {
|
||||||
_classCallCheck(this, Storage);
|
_classCallCheck(this, Storage);
|
||||||
|
|
||||||
@ -1776,7 +1701,7 @@ var controls = {
|
|||||||
|
|
||||||
var icon = document.createElementNS(namespace, 'svg');
|
var icon = document.createElementNS(namespace, 'svg');
|
||||||
setAttributes(icon, extend(attributes, {
|
setAttributes(icon, extend(attributes, {
|
||||||
role: 'presentation',
|
'aria-hidden': 'true',
|
||||||
focusable: 'false'
|
focusable: 'false'
|
||||||
})); // Create the <use> to reference sprite
|
})); // Create the <use> to reference sprite
|
||||||
|
|
||||||
@ -3366,7 +3291,7 @@ var captions = {
|
|||||||
|
|
||||||
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$1.empty(tracks)); // Update available languages in list
|
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is$1.empty(tracks)); // Update available languages in list
|
||||||
|
|
||||||
if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {
|
if (is$1.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {
|
||||||
controls.setCaptionsMenu.call(this);
|
controls.setCaptionsMenu.call(this);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -4005,9 +3930,7 @@ function getProviderByUrl(url) {
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
var noop = function noop() {};
|
var noop = function noop() {};
|
||||||
|
|
||||||
var Console =
|
var Console = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Console() {
|
function Console() {
|
||||||
var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||||
|
|
||||||
@ -4043,9 +3966,7 @@ function () {
|
|||||||
return Console;
|
return Console;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
var Fullscreen =
|
var Fullscreen = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Fullscreen(player) {
|
function Fullscreen(player) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
@ -4235,7 +4156,7 @@ function () {
|
|||||||
|
|
||||||
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
||||||
this.target.webkitExitFullscreen();
|
this.target.webkitExitFullscreen();
|
||||||
this.player.play();
|
silencePromise(this.player.play());
|
||||||
} else if (!Fullscreen.native || this.forceFallback) {
|
} else if (!Fullscreen.native || this.forceFallback) {
|
||||||
this.toggleFallback(false);
|
this.toggleFallback(false);
|
||||||
} else if (!this.prefix) {
|
} else if (!this.prefix) {
|
||||||
@ -4282,7 +4203,7 @@ function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var element = !this.prefix ? document.fullscreenElement : document["".concat(this.prefix).concat(this.property, "Element")];
|
var element = !this.prefix ? document.fullscreenElement : document["".concat(this.prefix).concat(this.property, "Element")];
|
||||||
return element === this.target;
|
return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;
|
||||||
} // Get target element
|
} // Get target element
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
@ -4569,9 +4490,7 @@ var ui = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var Listeners =
|
var Listeners = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Listeners(player) {
|
function Listeners(player) {
|
||||||
_classCallCheck(this, Listeners);
|
_classCallCheck(this, Listeners);
|
||||||
|
|
||||||
@ -4662,7 +4581,7 @@ function () {
|
|||||||
case 75:
|
case 75:
|
||||||
// Space and K key
|
// Space and K key
|
||||||
if (!repeat) {
|
if (!repeat) {
|
||||||
player.togglePlay();
|
silencePromise(player.togglePlay());
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -4980,9 +4899,13 @@ function () {
|
|||||||
if (player.ended) {
|
if (player.ended) {
|
||||||
_this.proxy(event, player.restart, 'restart');
|
_this.proxy(event, player.restart, 'restart');
|
||||||
|
|
||||||
_this.proxy(event, player.play, 'play');
|
_this.proxy(event, function () {
|
||||||
|
silencePromise(player.play());
|
||||||
|
}, 'play');
|
||||||
} else {
|
} else {
|
||||||
_this.proxy(event, player.togglePlay, 'play');
|
_this.proxy(event, function () {
|
||||||
|
silencePromise(player.togglePlay());
|
||||||
|
}, 'play');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} // Disable right click
|
} // Disable right click
|
||||||
@ -5080,7 +5003,9 @@ function () {
|
|||||||
|
|
||||||
if (elements.buttons.play) {
|
if (elements.buttons.play) {
|
||||||
Array.from(elements.buttons.play).forEach(function (button) {
|
Array.from(elements.buttons.play).forEach(function (button) {
|
||||||
_this3.bind(button, 'click', player.togglePlay, 'play');
|
_this3.bind(button, 'click', function () {
|
||||||
|
silencePromise(player.togglePlay());
|
||||||
|
}, 'play');
|
||||||
});
|
});
|
||||||
} // Pause
|
} // Pause
|
||||||
|
|
||||||
@ -5177,7 +5102,7 @@ function () {
|
|||||||
|
|
||||||
if (play && done) {
|
if (play && done) {
|
||||||
seek.removeAttribute(attribute);
|
seek.removeAttribute(attribute);
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
} else if (!done && player.playing) {
|
} else if (!done && player.playing) {
|
||||||
seek.setAttribute(attribute, '');
|
seek.setAttribute(attribute, '');
|
||||||
player.pause();
|
player.pause();
|
||||||
@ -5812,6 +5737,9 @@ var vimeo = {
|
|||||||
player.embed.setPlaybackRate(input).then(function () {
|
player.embed.setPlaybackRate(input).then(function () {
|
||||||
speed = input;
|
speed = input;
|
||||||
triggerEvent.call(player, player.media, 'ratechange');
|
triggerEvent.call(player, player.media, 'ratechange');
|
||||||
|
}).catch(function () {
|
||||||
|
// Cannot set Playback Rate, Video is probably not on Pro account
|
||||||
|
player.options.speed = [1];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}); // Volume
|
}); // Volume
|
||||||
@ -6451,9 +6379,7 @@ var destroy = function destroy(instance) {
|
|||||||
instance.elements.container.remove();
|
instance.elements.container.remove();
|
||||||
};
|
};
|
||||||
|
|
||||||
var Ads =
|
var Ads = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
/**
|
/**
|
||||||
* Ads constructor.
|
* Ads constructor.
|
||||||
* @param {Object} player
|
* @param {Object} player
|
||||||
@ -6553,6 +6479,8 @@ function () {
|
|||||||
* mobile devices, this initialization is done as the result of a user action.
|
* mobile devices, this initialization is done as the result of a user action.
|
||||||
*/
|
*/
|
||||||
value: function setupIMA() {
|
value: function setupIMA() {
|
||||||
|
var _this4 = this;
|
||||||
|
|
||||||
// Create the container for our advertisements
|
// Create the container for our advertisements
|
||||||
this.elements.container = createElement('div', {
|
this.elements.container = createElement('div', {
|
||||||
class: this.player.config.classNames.ads
|
class: this.player.config.classNames.ads
|
||||||
@ -6565,7 +6493,16 @@ function () {
|
|||||||
|
|
||||||
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads
|
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline); // We assume the adContainer is the video container of the plyr element that will house the ads
|
||||||
|
|
||||||
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Request video ads to be pre-loaded
|
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); // Create ads loader
|
||||||
|
|
||||||
|
this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events
|
||||||
|
|
||||||
|
this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {
|
||||||
|
return _this4.onAdsManagerLoaded(event);
|
||||||
|
}, false);
|
||||||
|
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {
|
||||||
|
return _this4.onAdError(error);
|
||||||
|
}, false); // Request video ads to be pre-loaded
|
||||||
|
|
||||||
this.requestAds();
|
this.requestAds();
|
||||||
}
|
}
|
||||||
@ -6576,21 +6513,10 @@ function () {
|
|||||||
}, {
|
}, {
|
||||||
key: "requestAds",
|
key: "requestAds",
|
||||||
value: function requestAds() {
|
value: function requestAds() {
|
||||||
var _this4 = this;
|
|
||||||
|
|
||||||
var container = this.player.elements.container;
|
var container = this.player.elements.container;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Create ads loader
|
// Request video ads
|
||||||
this.loader = new google.ima.AdsLoader(this.elements.displayContainer); // Listen and respond to ads loaded and error events
|
|
||||||
|
|
||||||
this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, function (event) {
|
|
||||||
return _this4.onAdsManagerLoaded(event);
|
|
||||||
}, false);
|
|
||||||
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, function (error) {
|
|
||||||
return _this4.onAdError(error);
|
|
||||||
}, false); // Request video ads
|
|
||||||
|
|
||||||
var request = new google.ima.AdsRequest();
|
var request = new google.ima.AdsRequest();
|
||||||
request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK
|
request.adTagUrl = this.tagUrl; // Specify the linear and nonlinear slot sizes. This helps the SDK
|
||||||
// to select the correct creative if multiple are returned
|
// to select the correct creative if multiple are returned
|
||||||
@ -6769,7 +6695,13 @@ function () {
|
|||||||
// };
|
// };
|
||||||
// TODO: So there is still this thing where a video should only be allowed to start
|
// TODO: So there is still this thing where a video should only be allowed to start
|
||||||
// playing when the IMA SDK is ready or has failed
|
// playing when the IMA SDK is ready or has failed
|
||||||
this.loadAds();
|
if (this.player.ended) {
|
||||||
|
this.loadAds();
|
||||||
|
} else {
|
||||||
|
// The SDK won't allow new ads to be called without receiving a contentComplete()
|
||||||
|
this.loader.contentComplete();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:
|
case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:
|
||||||
@ -6905,7 +6837,7 @@ function () {
|
|||||||
|
|
||||||
this.playing = false; // Play video
|
this.playing = false; // Play video
|
||||||
|
|
||||||
this.player.media.play();
|
silencePromise(this.player.media.play());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Pause our video
|
* Pause our video
|
||||||
@ -6962,7 +6894,9 @@ function () {
|
|||||||
_this11.on('loaded', resolve);
|
_this11.on('loaded', resolve);
|
||||||
|
|
||||||
_this11.player.debug.log(_this11.manager);
|
_this11.player.debug.log(_this11.manager);
|
||||||
}); // Now request some new advertisements
|
}); // Now that the manager has been destroyed set it to also be un-initialized
|
||||||
|
|
||||||
|
_this11.initialized = false; // Now request some new advertisements
|
||||||
|
|
||||||
_this11.requestAds();
|
_this11.requestAds();
|
||||||
}).catch(function () {});
|
}).catch(function () {});
|
||||||
@ -7145,9 +7079,7 @@ var fitRatio = function fitRatio(ratio, outer) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
var PreviewThumbnails =
|
var PreviewThumbnails = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
/**
|
/**
|
||||||
* PreviewThumbnails constructor.
|
* PreviewThumbnails constructor.
|
||||||
* @param {Plyr} player
|
* @param {Plyr} player
|
||||||
@ -7208,15 +7140,10 @@ function () {
|
|||||||
|
|
||||||
if (is$1.empty(src)) {
|
if (is$1.empty(src)) {
|
||||||
throw new Error('Missing previewThumbnails.src config attribute');
|
throw new Error('Missing previewThumbnails.src config attribute');
|
||||||
} // If string, convert into single-element list
|
} // Resolve promise
|
||||||
|
|
||||||
|
|
||||||
var urls = is$1.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
var sortAndResolve = function sortAndResolve() {
|
||||||
|
|
||||||
var promises = urls.map(function (u) {
|
|
||||||
return _this2.getThumbnail(u);
|
|
||||||
});
|
|
||||||
Promise.all(promises).then(function () {
|
|
||||||
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
||||||
_this2.thumbnails.sort(function (x, y) {
|
_this2.thumbnails.sort(function (x, y) {
|
||||||
return x.height - y.height;
|
return x.height - y.height;
|
||||||
@ -7225,7 +7152,25 @@ function () {
|
|||||||
_this2.player.debug.log('Preview thumbnails', _this2.thumbnails);
|
_this2.player.debug.log('Preview thumbnails', _this2.thumbnails);
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
});
|
}; // Via callback()
|
||||||
|
|
||||||
|
|
||||||
|
if (is$1.function(src)) {
|
||||||
|
src(function (thumbnails) {
|
||||||
|
_this2.thumbnails = thumbnails;
|
||||||
|
sortAndResolve();
|
||||||
|
});
|
||||||
|
} // VTT urls
|
||||||
|
else {
|
||||||
|
// If string, convert into single-element list
|
||||||
|
var urls = is$1.string(src) ? [src] : src; // Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
||||||
|
|
||||||
|
var promises = urls.map(function (u) {
|
||||||
|
return _this2.getThumbnail(u);
|
||||||
|
}); // Resolve
|
||||||
|
|
||||||
|
Promise.all(promises).then(sortAndResolve);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} // Process individual VTT file
|
} // Process individual VTT file
|
||||||
|
|
||||||
@ -7976,9 +7921,7 @@ function clamp() {
|
|||||||
// const globals = new WeakMap();
|
// const globals = new WeakMap();
|
||||||
// Plyr instance
|
// Plyr instance
|
||||||
|
|
||||||
var Plyr =
|
var Plyr = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Plyr(target, options) {
|
function Plyr(target, options) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
@ -8222,7 +8165,7 @@ function () {
|
|||||||
|
|
||||||
if (this.isHTML5 && this.config.autoplay) {
|
if (this.isHTML5 && this.config.autoplay) {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
return _this.play();
|
return silencePromise(_this.play());
|
||||||
}, 10);
|
}, 10);
|
||||||
} // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
} // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
||||||
|
|
||||||
@ -8259,7 +8202,7 @@ function () {
|
|||||||
this.ads.managerPromise.then(function () {
|
this.ads.managerPromise.then(function () {
|
||||||
return _this2.ads.play();
|
return _this2.ads.play();
|
||||||
}).catch(function () {
|
}).catch(function () {
|
||||||
return _this2.media.play();
|
return silencePromise(_this2.media.play());
|
||||||
});
|
});
|
||||||
} // Return the promise (for HTML5)
|
} // Return the promise (for HTML5)
|
||||||
|
|
||||||
|
685
dist/plyr.polyfilled.js
vendored
685
dist/plyr.polyfilled.js
vendored
File diff suppressed because it is too large
Load Diff
4
dist/plyr.polyfilled.min.js
vendored
4
dist/plyr.polyfilled.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.polyfilled.min.js.map
vendored
2
dist/plyr.polyfilled.min.js.map
vendored
File diff suppressed because one or more lines are too long
4
dist/plyr.polyfilled.min.mjs
vendored
4
dist/plyr.polyfilled.min.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.polyfilled.min.mjs.map
vendored
2
dist/plyr.polyfilled.min.mjs.map
vendored
File diff suppressed because one or more lines are too long
685
dist/plyr.polyfilled.mjs
vendored
685
dist/plyr.polyfilled.mjs
vendored
File diff suppressed because it is too large
Load Diff
83
readme.md
83
readme.md
@ -1,6 +1,8 @@
|
|||||||
Plyr is a simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports [_modern_](#browser-support) browsers.
|
Plyr is a simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports [_modern_](#browser-support) browsers.
|
||||||
|
|
||||||
[Checkout the demo](https://plyr.io) - [Donate](#donate) - [Slack](https://bit.ly/plyr--chat) - [](https://badge.fury.io/js/plyr)
|
[Checkout the demo](https://plyr.io) - [Donate](#donate) - [Slack](https://bit.ly/plyr--chat)
|
||||||
|
|
||||||
|
[](https://badge.fury.io/js/plyr) [](https://gitpod.io/#https://github.com/sampotts/plyr) [](https://opencollective.com/plyr)
|
||||||
|
|
||||||
[](https://plyr.io)
|
[](https://plyr.io)
|
||||||
|
|
||||||
@ -168,12 +170,14 @@ Plyr has partnered up with [vi.ai](https://vi.ai/publisher-video-monetization/?a
|
|||||||
|
|
||||||
Any questions regarding the ads can be sent straight to vi.ai and any issues with rendering raised through GitHub issues.
|
Any questions regarding the ads can be sent straight to vi.ai and any issues with rendering raised through GitHub issues.
|
||||||
|
|
||||||
|
If you do not wish to use Vi, you can set your own `ads.tagUrl` [option](#options).
|
||||||
|
|
||||||
# Advanced
|
# Advanced
|
||||||
|
|
||||||
## SASS
|
## SASS
|
||||||
|
|
||||||
You can use `bundle.scss` file included in `/src` as part of your build and change variables to suit your design. The SASS require you to
|
You can use `plyr.scss` file included in `/src/sass` as part of your build and change variables to suit your design. The SASS requires you to
|
||||||
use the [autoprefixer](https://www.npmjs.com/package/gulp-autoprefixer) plugin (you should be already!) as all declarations use the W3C definitions.
|
use [autoprefixer](https://www.npmjs.com/package/gulp-autoprefixer) (you should be already!) as all declarations use the W3C definitions.
|
||||||
|
|
||||||
The HTML markup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class hooks in the options to match any custom CSS
|
The HTML markup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class hooks in the options to match any custom CSS
|
||||||
you write. Check out the JavaScript source for more on this.
|
you write. Check out the JavaScript source for more on this.
|
||||||
@ -305,7 +309,7 @@ Note the single quotes encapsulating the JSON and double quotes on the object ke
|
|||||||
| `speed` | Object | `{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }` | `selected`: The default speed for playback. `options`: The speed options to display in the UI. YouTube and Vimeo will ignore any options outside of the 0.5-2 range, so options outside of this range will be hidden automatically. |
|
| `speed` | Object | `{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }` | `selected`: The default speed for playback. `options`: The speed options to display in the UI. YouTube and Vimeo will ignore any options outside of the 0.5-2 range, so options outside of this range will be hidden automatically. |
|
||||||
| `quality` | Object | `{ default: 576, options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240] }` | `default` is the default quality level (if it exists in your sources). `options` are the options to display. This is used to filter the available sources. |
|
| `quality` | Object | `{ default: 576, options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240] }` | `default` is the default quality level (if it exists in your sources). `options` are the options to display. This is used to filter the available sources. |
|
||||||
| `loop` | Object | `{ active: false }` | `active`: Whether to loop the current video. If the `loop` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true This is an object to support future functionality. |
|
| `loop` | Object | `{ active: false }` | `active`: Whether to loop the current video. If the `loop` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true This is an object to support future functionality. |
|
||||||
| `ads` | Object | `{ enabled: false, publisherId: '' }` | `enabled`: Whether to enable advertisements. `publisherId`: Your unique [vi.ai](https://vi.ai/publisher-video-monetization/?aid=plyrio) publisher ID. |
|
| `ads` | Object | `{ enabled: false, publisherId: '', tagUrl: '' }` | `enabled`: Whether to enable advertisements. `publisherId`: Your unique [vi.ai](https://vi.ai/publisher-video-monetization/?aid=plyrio) publisher ID. `tagUrl` is a URL for a custom VAST tag if you're not using Vi. |
|
||||||
| `urls` | Object | See source. | If you wish to override any API URLs then you can do so here. You can also set a custom download URL for the download button. |
|
| `urls` | Object | See source. | If you wish to override any API URLs then you can do so here. You can also set a custom download URL for the download button. |
|
||||||
| `vimeo` | Object | `{ byline: false, portrait: false, title: false, speed: true, transparent: false }` | See [Vimeo embed options](https://github.com/vimeo/player.js/#embed-options). Some are set automatically based on other config options, namely: `loop`, `autoplay`, `muted`, `gesture`, `playsinline` |
|
| `vimeo` | Object | `{ byline: false, portrait: false, title: false, speed: true, transparent: false }` | See [Vimeo embed options](https://github.com/vimeo/player.js/#embed-options). Some are set automatically based on other config options, namely: `loop`, `autoplay`, `muted`, `gesture`, `playsinline` |
|
||||||
| `youtube` | Object | `{ noCookie: false, rel: 0, showinfo: 0, iv_load_policy: 3, modestbranding: 1 }` | See [YouTube embed options](https://developers.google.com/youtube/player_parameters#Parameters). The only custom option is `noCookie` to use an alternative to YouTube that doesn't use cookies (useful for GDPR, etc). Some are set automatically based on other config options, namely: `autoplay`, `hl`, `controls`, `disablekb`, `playsinline`, `cc_load_policy`, `cc_lang_pref`, `widget_referrer` |
|
| `youtube` | Object | `{ noCookie: false, rel: 0, showinfo: 0, iv_load_policy: 3, modestbranding: 1 }` | See [YouTube embed options](https://developers.google.com/youtube/player_parameters#Parameters). The only custom option is `noCookie` to use an alternative to YouTube that doesn't use cookies (useful for GDPR, etc). Some are set automatically based on other config options, namely: `autoplay`, `hl`, `controls`, `disablekb`, `playsinline`, `cc_load_policy`, `cc_lang_pref`, `widget_referrer` |
|
||||||
@ -349,30 +353,30 @@ player.play(); // Start playback
|
|||||||
player.fullscreen.enter(); // Enter fullscreen
|
player.fullscreen.enter(); // Enter fullscreen
|
||||||
```
|
```
|
||||||
|
|
||||||
| Method | Parameters | Description |
|
| Method | Parameters | Description |
|
||||||
| ------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------- |
|
| -------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||||
| `play()`¹ | - | Start playback. |
|
| `play()`¹ | - | Start playback. |
|
||||||
| `pause()` | - | Pause playback. |
|
| `pause()` | - | Pause playback. |
|
||||||
| `togglePlay(toggle)` | Boolean | Toggle playback, if no parameters are passed, it will toggle based on current status. |
|
| `togglePlay(toggle)`¹ | Boolean | Toggle playback, if no parameters are passed, it will toggle based on current status. |
|
||||||
| `stop()` | - | Stop playback and reset to start. |
|
| `stop()` | - | Stop playback and reset to start. |
|
||||||
| `restart()` | - | Restart playback. |
|
| `restart()` | - | Restart playback. |
|
||||||
| `rewind(seekTime)` | Number | Rewind playback by the specified seek time. If no parameter is passed, the default seek time will be used. |
|
| `rewind(seekTime)` | Number | Rewind playback by the specified seek time. If no parameter is passed, the default seek time will be used. |
|
||||||
| `forward(seekTime)` | Number | Fast forward by the specified seek time. If no parameter is passed, the default seek time will be used. |
|
| `forward(seekTime)` | Number | Fast forward by the specified seek time. If no parameter is passed, the default seek time will be used. |
|
||||||
| `increaseVolume(step)` | Number | Increase volume by the specified step. If no parameter is passed, the default step will be used. |
|
| `increaseVolume(step)` | Number | Increase volume by the specified step. If no parameter is passed, the default step will be used. |
|
||||||
| `decreaseVolume(step)` | Number | Increase volume by the specified step. If no parameter is passed, the default step will be used. |
|
| `decreaseVolume(step)` | Number | Increase volume by the specified step. If no parameter is passed, the default step will be used. |
|
||||||
| `toggleCaptions(toggle)` | Boolean | Toggle captions display. If no parameter is passed, it will toggle based on current status. |
|
| `toggleCaptions(toggle)` | Boolean | Toggle captions display. If no parameter is passed, it will toggle based on current status. |
|
||||||
| `fullscreen.enter()` | - | Enter fullscreen. If fullscreen is not supported, a fallback "full window/viewport" is used instead. |
|
| `fullscreen.enter()` | - | Enter fullscreen. If fullscreen is not supported, a fallback "full window/viewport" is used instead. |
|
||||||
| `fullscreen.exit()` | - | Exit fullscreen. |
|
| `fullscreen.exit()` | - | Exit fullscreen. |
|
||||||
| `fullscreen.toggle()` | - | Toggle fullscreen. |
|
| `fullscreen.toggle()` | - | Toggle fullscreen. |
|
||||||
| `airplay()` | - | Trigger the airplay dialog on supported devices. |
|
| `airplay()` | - | Trigger the airplay dialog on supported devices. |
|
||||||
| `toggleControls(toggle)` | Boolean | Toggle the controls (video only). Takes optional truthy value to force it on/off. |
|
| `toggleControls(toggle)` | Boolean | Toggle the controls (video only). Takes optional truthy value to force it on/off. |
|
||||||
| `on(event, function)` | String, Function | Add an event listener for the specified event. |
|
| `on(event, function)` | String, Function | Add an event listener for the specified event. |
|
||||||
| `once(event, function)` | String, Function | Add an event listener for the specified event once. |
|
| `once(event, function)` | String, Function | Add an event listener for the specified event once. |
|
||||||
| `off(event, function)` | String, Function | Remove an event listener for the specified event. |
|
| `off(event, function)` | String, Function | Remove an event listener for the specified event. |
|
||||||
| `supports(type)` | String | Check support for a mime type. |
|
| `supports(type)` | String | Check support for a mime type. |
|
||||||
| `destroy()` | - | Destroy the instance and garbage collect any elements. |
|
| `destroy()` | - | Destroy the instance and garbage collect any elements. |
|
||||||
|
|
||||||
1. For HTML5 players, `play()` will return a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) in _some_ browsers - WebKit and Mozilla [according to MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) at time of writing.
|
1. For HTML5 players, `play()` will return a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) for most browsers - e.g. Chrome, Firefox, Opera, Safari and Edge [according to MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) at time of writing.
|
||||||
|
|
||||||
## Getters and Setters
|
## Getters and Setters
|
||||||
|
|
||||||
@ -446,7 +450,7 @@ player.source = {
|
|||||||
],
|
],
|
||||||
poster: '/path/to/poster.jpg',
|
poster: '/path/to/poster.jpg',
|
||||||
previewThumbnails: {
|
previewThumbnails: {
|
||||||
src: '/path/to/thumbnails.vtt'
|
src: '/path/to/thumbnails.vtt',
|
||||||
},
|
},
|
||||||
tracks: [
|
tracks: [
|
||||||
{
|
{
|
||||||
@ -752,6 +756,29 @@ Massive thanks to [Fastly](https://www.fastly.com/) for providing the CDN servic
|
|||||||
|
|
||||||
Massive thanks to [Sentry](https://sentry.io/) for providing the logging services for the demo site.
|
Massive thanks to [Sentry](https://sentry.io/) for providing the logging services for the demo site.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
### Code Contributors
|
||||||
|
|
||||||
|
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
|
||||||
|
|
||||||
|
<a href="https://github.com/sampotts/plyr/graphs/contributors"><img src="https://opencollective.com/plyr/contributors.svg?width=890&button=false" /></a>
|
||||||
|
|
||||||
|
### Financial Contributors
|
||||||
|
|
||||||
|
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/plyr/contribute)]
|
||||||
|
|
||||||
|
#### Individuals
|
||||||
|
|
||||||
|
<a href="https://opencollective.com/plyr"><img src="https://opencollective.com/plyr/individuals.svg?width=890"></a>
|
||||||
|
|
||||||
|
#### Organizations
|
||||||
|
|
||||||
|
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/plyr/contribute)]
|
||||||
|
|
||||||
|
<a href="https://opencollective.com/plyr/organization/0/website"><img src="https://opencollective.com/plyr/organization/0/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/plyr/organization/1/website"><img src="https://opencollective.com/plyr/organization/1/avatar.svg"></a><a href="https://opencollective.com/plyr/organization/2/website"><img src="https://opencollective.com/plyr/organization/2/avatar.svg"></a>
|
||||||
|
|
||||||
# Copyright and License
|
# Copyright and License
|
||||||
|
|
||||||
[The MIT license](license.md)
|
[The MIT license](license.md)
|
||||||
|
@ -151,7 +151,11 @@ const captions = {
|
|||||||
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));
|
toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));
|
||||||
|
|
||||||
// Update available languages in list
|
// Update available languages in list
|
||||||
if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {
|
if (
|
||||||
|
is.array(this.config.controls) &&
|
||||||
|
this.config.controls.includes('settings') &&
|
||||||
|
this.config.settings.includes('captions')
|
||||||
|
) {
|
||||||
controls.setCaptionsMenu.call(this);
|
controls.setCaptionsMenu.call(this);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
2
src/js/controls.js
vendored
2
src/js/controls.js
vendored
@ -111,7 +111,7 @@ const controls = {
|
|||||||
setAttributes(
|
setAttributes(
|
||||||
icon,
|
icon,
|
||||||
extend(attributes, {
|
extend(attributes, {
|
||||||
role: 'presentation',
|
'aria-hidden': 'true',
|
||||||
focusable: 'false',
|
focusable: 'false',
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -8,6 +8,7 @@ import browser from './utils/browser';
|
|||||||
import { getElements, hasClass, toggleClass } from './utils/elements';
|
import { getElements, hasClass, toggleClass } from './utils/elements';
|
||||||
import { on, triggerEvent } from './utils/events';
|
import { on, triggerEvent } from './utils/events';
|
||||||
import is from './utils/is';
|
import is from './utils/is';
|
||||||
|
import { silencePromise } from './utils/promise';
|
||||||
|
|
||||||
class Fullscreen {
|
class Fullscreen {
|
||||||
constructor(player) {
|
constructor(player) {
|
||||||
@ -118,7 +119,7 @@ class Fullscreen {
|
|||||||
|
|
||||||
const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];
|
const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];
|
||||||
|
|
||||||
return element === this.target;
|
return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get target element
|
// Get target element
|
||||||
@ -268,7 +269,7 @@ class Fullscreen {
|
|||||||
// iOS native fullscreen
|
// iOS native fullscreen
|
||||||
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
if (browser.isIos && this.player.config.fullscreen.iosNative) {
|
||||||
this.target.webkitExitFullscreen();
|
this.target.webkitExitFullscreen();
|
||||||
this.player.play();
|
silencePromise(this.player.play());
|
||||||
} else if (!Fullscreen.native || this.forceFallback) {
|
} else if (!Fullscreen.native || this.forceFallback) {
|
||||||
this.toggleFallback(false);
|
this.toggleFallback(false);
|
||||||
} else if (!this.prefix) {
|
} else if (!this.prefix) {
|
||||||
|
@ -6,6 +6,7 @@ import support from './support';
|
|||||||
import { removeElement } from './utils/elements';
|
import { removeElement } from './utils/elements';
|
||||||
import { triggerEvent } from './utils/events';
|
import { triggerEvent } from './utils/events';
|
||||||
import is from './utils/is';
|
import is from './utils/is';
|
||||||
|
import { silencePromise } from './utils/promise';
|
||||||
import { setAspectRatio } from './utils/style';
|
import { setAspectRatio } from './utils/style';
|
||||||
|
|
||||||
const html5 = {
|
const html5 = {
|
||||||
@ -101,7 +102,7 @@ const html5 = {
|
|||||||
|
|
||||||
// Resume playing
|
// Resume playing
|
||||||
if (!paused) {
|
if (!paused) {
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import browser from './utils/browser';
|
|||||||
import { getElement, getElements, matches, toggleClass } from './utils/elements';
|
import { getElement, getElements, matches, toggleClass } from './utils/elements';
|
||||||
import { off, on, once, toggleListener, triggerEvent } from './utils/events';
|
import { off, on, once, toggleListener, triggerEvent } from './utils/events';
|
||||||
import is from './utils/is';
|
import is from './utils/is';
|
||||||
|
import { silencePromise } from './utils/promise';
|
||||||
import { getAspectRatio, setAspectRatio } from './utils/style';
|
import { getAspectRatio, setAspectRatio } from './utils/style';
|
||||||
|
|
||||||
class Listeners {
|
class Listeners {
|
||||||
@ -99,7 +100,7 @@ class Listeners {
|
|||||||
case 75:
|
case 75:
|
||||||
// Space and K key
|
// Space and K key
|
||||||
if (!repeat) {
|
if (!repeat) {
|
||||||
player.togglePlay();
|
silencePromise(player.togglePlay());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -431,9 +432,9 @@ class Listeners {
|
|||||||
|
|
||||||
if (player.ended) {
|
if (player.ended) {
|
||||||
this.proxy(event, player.restart, 'restart');
|
this.proxy(event, player.restart, 'restart');
|
||||||
this.proxy(event, player.play, 'play');
|
this.proxy(event, () => { silencePromise(player.play()) }, 'play');
|
||||||
} else {
|
} else {
|
||||||
this.proxy(event, player.togglePlay, 'play');
|
this.proxy(event, () => { silencePromise(player.togglePlay()) }, 'play');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -539,7 +540,7 @@ class Listeners {
|
|||||||
// Play/pause toggle
|
// Play/pause toggle
|
||||||
if (elements.buttons.play) {
|
if (elements.buttons.play) {
|
||||||
Array.from(elements.buttons.play).forEach(button => {
|
Array.from(elements.buttons.play).forEach(button => {
|
||||||
this.bind(button, 'click', player.togglePlay, 'play');
|
this.bind(button, 'click', () => { silencePromise(player.togglePlay()) }, 'play');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -681,7 +682,7 @@ class Listeners {
|
|||||||
// If we're done seeking and it was playing, resume playback
|
// If we're done seeking and it was playing, resume playback
|
||||||
if (play && done) {
|
if (play && done) {
|
||||||
seek.removeAttribute(attribute);
|
seek.removeAttribute(attribute);
|
||||||
player.play();
|
silencePromise(player.play());
|
||||||
} else if (!done && player.playing) {
|
} else if (!done && player.playing) {
|
||||||
seek.setAttribute(attribute, '');
|
seek.setAttribute(attribute, '');
|
||||||
player.pause();
|
player.pause();
|
||||||
|
@ -11,6 +11,7 @@ import { triggerEvent } from '../utils/events';
|
|||||||
import i18n from '../utils/i18n';
|
import i18n from '../utils/i18n';
|
||||||
import is from '../utils/is';
|
import is from '../utils/is';
|
||||||
import loadScript from '../utils/load-script';
|
import loadScript from '../utils/load-script';
|
||||||
|
import { silencePromise } from '../utils/promise';
|
||||||
import { formatTime } from '../utils/time';
|
import { formatTime } from '../utils/time';
|
||||||
import { buildUrlParams } from '../utils/urls';
|
import { buildUrlParams } from '../utils/urls';
|
||||||
|
|
||||||
@ -172,6 +173,17 @@ class Ads {
|
|||||||
// We assume the adContainer is the video container of the plyr element that will house the ads
|
// We assume the adContainer is the video container of the plyr element that will house the ads
|
||||||
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media);
|
this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media);
|
||||||
|
|
||||||
|
// Create ads loader
|
||||||
|
this.loader = new google.ima.AdsLoader(this.elements.displayContainer);
|
||||||
|
|
||||||
|
// Listen and respond to ads loaded and error events
|
||||||
|
this.loader.addEventListener(
|
||||||
|
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
|
||||||
|
event => this.onAdsManagerLoaded(event),
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);
|
||||||
|
|
||||||
// Request video ads to be pre-loaded
|
// Request video ads to be pre-loaded
|
||||||
this.requestAds();
|
this.requestAds();
|
||||||
}
|
}
|
||||||
@ -183,17 +195,6 @@ class Ads {
|
|||||||
const { container } = this.player.elements;
|
const { container } = this.player.elements;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Create ads loader
|
|
||||||
this.loader = new google.ima.AdsLoader(this.elements.displayContainer);
|
|
||||||
|
|
||||||
// Listen and respond to ads loaded and error events
|
|
||||||
this.loader.addEventListener(
|
|
||||||
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
|
|
||||||
event => this.onAdsManagerLoaded(event),
|
|
||||||
false,
|
|
||||||
);
|
|
||||||
this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);
|
|
||||||
|
|
||||||
// Request video ads
|
// Request video ads
|
||||||
const request = new google.ima.AdsRequest();
|
const request = new google.ima.AdsRequest();
|
||||||
request.adTagUrl = this.tagUrl;
|
request.adTagUrl = this.tagUrl;
|
||||||
@ -369,7 +370,12 @@ class Ads {
|
|||||||
// TODO: So there is still this thing where a video should only be allowed to start
|
// TODO: So there is still this thing where a video should only be allowed to start
|
||||||
// playing when the IMA SDK is ready or has failed
|
// playing when the IMA SDK is ready or has failed
|
||||||
|
|
||||||
this.loadAds();
|
if (this.player.ended) {
|
||||||
|
this.loadAds();
|
||||||
|
} else {
|
||||||
|
// The SDK won't allow new ads to be called without receiving a contentComplete()
|
||||||
|
this.loader.contentComplete();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -510,7 +516,7 @@ class Ads {
|
|||||||
this.playing = false;
|
this.playing = false;
|
||||||
|
|
||||||
// Play video
|
// Play video
|
||||||
this.player.media.play();
|
silencePromise(this.player.media.play());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -563,6 +569,8 @@ class Ads {
|
|||||||
this.on('loaded', resolve);
|
this.on('loaded', resolve);
|
||||||
this.player.debug.log(this.manager);
|
this.player.debug.log(this.manager);
|
||||||
});
|
});
|
||||||
|
// Now that the manager has been destroyed set it to also be un-initialized
|
||||||
|
this.initialized = false;
|
||||||
|
|
||||||
// Now request some new advertisements
|
// Now request some new advertisements
|
||||||
this.requestAds();
|
this.requestAds();
|
||||||
|
@ -137,19 +137,32 @@ class PreviewThumbnails {
|
|||||||
throw new Error('Missing previewThumbnails.src config attribute');
|
throw new Error('Missing previewThumbnails.src config attribute');
|
||||||
}
|
}
|
||||||
|
|
||||||
// If string, convert into single-element list
|
// Resolve promise
|
||||||
const urls = is.string(src) ? [src] : src;
|
const sortAndResolve = () => {
|
||||||
// Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
|
||||||
const promises = urls.map(u => this.getThumbnail(u));
|
|
||||||
|
|
||||||
Promise.all(promises).then(() => {
|
|
||||||
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
// Sort smallest to biggest (e.g., [120p, 480p, 1080p])
|
||||||
this.thumbnails.sort((x, y) => x.height - y.height);
|
this.thumbnails.sort((x, y) => x.height - y.height);
|
||||||
|
|
||||||
this.player.debug.log('Preview thumbnails', this.thumbnails);
|
this.player.debug.log('Preview thumbnails', this.thumbnails);
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
});
|
};
|
||||||
|
|
||||||
|
// Via callback()
|
||||||
|
if (is.function(src)) {
|
||||||
|
src(thumbnails => {
|
||||||
|
this.thumbnails = thumbnails;
|
||||||
|
sortAndResolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// VTT urls
|
||||||
|
else {
|
||||||
|
// If string, convert into single-element list
|
||||||
|
const urls = is.string(src) ? [src] : src;
|
||||||
|
// Loop through each src URL. Download and process the VTT file, storing the resulting data in this.thumbnails
|
||||||
|
const promises = urls.map(u => this.getThumbnail(u));
|
||||||
|
// Resolve
|
||||||
|
Promise.all(promises).then(sortAndResolve);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,6 +204,9 @@ const vimeo = {
|
|||||||
player.embed.setPlaybackRate(input).then(() => {
|
player.embed.setPlaybackRate(input).then(() => {
|
||||||
speed = input;
|
speed = input;
|
||||||
triggerEvent.call(player, player.media, 'ratechange');
|
triggerEvent.call(player, player.media, 'ratechange');
|
||||||
|
}).catch(() => {
|
||||||
|
// Cannot set Playback Rate, Video is probably not on Pro account
|
||||||
|
player.options.speed = [1];
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
33
src/js/plyr.d.ts
vendored
33
src/js/plyr.d.ts
vendored
@ -94,9 +94,8 @@ declare class Plyr {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets or sets the quality for the player. The setter accepts a value from the options specified in your config.
|
* Gets or sets the quality for the player. The setter accepts a value from the options specified in your config.
|
||||||
* Remarks: YouTube only. HTML5 will follow.
|
|
||||||
*/
|
*/
|
||||||
quality: string;
|
quality: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets or sets the current loop state of the player.
|
* Gets or sets the current loop state of the player.
|
||||||
@ -134,6 +133,21 @@ declare class Plyr {
|
|||||||
*/
|
*/
|
||||||
pip: boolean;
|
pip: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or sets the aspect ratio for embedded players.
|
||||||
|
*/
|
||||||
|
ratio?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current video Provider
|
||||||
|
*/
|
||||||
|
readonly provider: 'html5' | 'vimeo' | 'youtube';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the native API for Vimeo or Youtube players
|
||||||
|
*/
|
||||||
|
readonly embed?: any;
|
||||||
|
|
||||||
readonly fullscreen: Plyr.FullscreenControl;
|
readonly fullscreen: Plyr.FullscreenControl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -472,11 +486,21 @@ declare namespace Plyr {
|
|||||||
* enabled: Whether to enable vi.ai ads. publisherId: Your unique vi.ai publisher ID.
|
* enabled: Whether to enable vi.ai ads. publisherId: Your unique vi.ai publisher ID.
|
||||||
*/
|
*/
|
||||||
ads?: AdOptions;
|
ads?: AdOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vimeo Player Options.
|
||||||
|
*/
|
||||||
|
vimeo?: object;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Youtube Player Options.
|
||||||
|
*/
|
||||||
|
youtube?: object;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface QualityOptions {
|
interface QualityOptions {
|
||||||
default: string;
|
default: number;
|
||||||
options: string[];
|
options: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface LoopOptions {
|
interface LoopOptions {
|
||||||
@ -507,6 +531,7 @@ declare namespace Plyr {
|
|||||||
enabled?: boolean;
|
enabled?: boolean;
|
||||||
fallback?: boolean;
|
fallback?: boolean;
|
||||||
allowAudio?: boolean;
|
allowAudio?: boolean;
|
||||||
|
iosNative?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CaptionOptions {
|
interface CaptionOptions {
|
||||||
|
@ -27,6 +27,7 @@ import is from './utils/is';
|
|||||||
import loadSprite from './utils/load-sprite';
|
import loadSprite from './utils/load-sprite';
|
||||||
import { clamp } from './utils/numbers';
|
import { clamp } from './utils/numbers';
|
||||||
import { cloneDeep, extend } from './utils/objects';
|
import { cloneDeep, extend } from './utils/objects';
|
||||||
|
import { silencePromise } from './utils/promise';
|
||||||
import { getAspectRatio, reduceAspectRatio, setAspectRatio, validateRatio } from './utils/style';
|
import { getAspectRatio, reduceAspectRatio, setAspectRatio, validateRatio } from './utils/style';
|
||||||
import { parseUrl } from './utils/urls';
|
import { parseUrl } from './utils/urls';
|
||||||
|
|
||||||
@ -303,7 +304,7 @@ class Plyr {
|
|||||||
|
|
||||||
// Autoplay if required
|
// Autoplay if required
|
||||||
if (this.isHTML5 && this.config.autoplay) {
|
if (this.isHTML5 && this.config.autoplay) {
|
||||||
setTimeout(() => this.play(), 10);
|
setTimeout(() => silencePromise(this.play()), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
// Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek
|
||||||
@ -356,7 +357,7 @@ class Plyr {
|
|||||||
|
|
||||||
// Intecept play with ads
|
// Intecept play with ads
|
||||||
if (this.ads && this.ads.enabled) {
|
if (this.ads && this.ads.enabled) {
|
||||||
this.ads.managerPromise.then(() => this.ads.play()).catch(() => this.media.play());
|
this.ads.managerPromise.then(() => this.ads.play()).catch(() => silencePromise(this.media.play()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the promise (for HTML5)
|
// Return the promise (for HTML5)
|
||||||
|
@ -221,7 +221,7 @@ export function hasClass(element, className) {
|
|||||||
|
|
||||||
// Element matches selector
|
// Element matches selector
|
||||||
export function matches(element, selector) {
|
export function matches(element, selector) {
|
||||||
const prototype = { Element };
|
const {prototype} = Element;
|
||||||
|
|
||||||
function match() {
|
function match() {
|
||||||
return Array.from(document.querySelectorAll(selector)).includes(this);
|
return Array.from(document.querySelectorAll(selector)).includes(this);
|
||||||
|
@ -19,7 +19,7 @@ const isEvent = input => instanceOf(input, Event);
|
|||||||
const isKeyboardEvent = input => instanceOf(input, KeyboardEvent);
|
const isKeyboardEvent = input => instanceOf(input, KeyboardEvent);
|
||||||
const isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
const isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
||||||
const isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));
|
const isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));
|
||||||
const isPromise = input => instanceOf(input, Promise);
|
const isPromise = input => instanceOf(input, Promise) && isFunction(input.then);
|
||||||
|
|
||||||
const isEmpty = input =>
|
const isEmpty = input =>
|
||||||
isNullOrUndefined(input) ||
|
isNullOrUndefined(input) ||
|
||||||
|
14
src/js/utils/promise.js
Normal file
14
src/js/utils/promise.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import is from './is';
|
||||||
|
/**
|
||||||
|
* Silence a Promise-like object.
|
||||||
|
* This is useful for avoiding non-harmful, but potentially confusing "uncaught
|
||||||
|
* play promise" rejection error messages.
|
||||||
|
* @param {Object} value An object that may or may not be `Promise`-like.
|
||||||
|
*/
|
||||||
|
export function silencePromise(value) {
|
||||||
|
if (is.promise(value)) {
|
||||||
|
value.then(null, () => {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default { silencePromise };
|
327
yarn.lock
327
yarn.lock
@ -41,9 +41,9 @@
|
|||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
"@babel/generator@^7.9.0":
|
"@babel/generator@^7.9.0":
|
||||||
version "7.9.0"
|
version "7.9.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89"
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce"
|
||||||
integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw==
|
integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.9.0"
|
"@babel/types" "^7.9.0"
|
||||||
jsesc "^2.5.1"
|
jsesc "^2.5.1"
|
||||||
@ -65,15 +65,6 @@
|
|||||||
"@babel/helper-explode-assignable-expression" "^7.8.3"
|
"@babel/helper-explode-assignable-expression" "^7.8.3"
|
||||||
"@babel/types" "^7.8.3"
|
"@babel/types" "^7.8.3"
|
||||||
|
|
||||||
"@babel/helper-call-delegate@^7.8.7":
|
|
||||||
version "7.8.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab"
|
|
||||||
integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==
|
|
||||||
dependencies:
|
|
||||||
"@babel/helper-hoist-variables" "^7.8.3"
|
|
||||||
"@babel/traverse" "^7.8.3"
|
|
||||||
"@babel/types" "^7.8.7"
|
|
||||||
|
|
||||||
"@babel/helper-compilation-targets@^7.8.7":
|
"@babel/helper-compilation-targets@^7.8.7":
|
||||||
version "7.8.7"
|
version "7.8.7"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde"
|
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde"
|
||||||
@ -232,9 +223,9 @@
|
|||||||
"@babel/types" "^7.8.3"
|
"@babel/types" "^7.8.3"
|
||||||
|
|
||||||
"@babel/helpers@^7.9.0":
|
"@babel/helpers@^7.9.0":
|
||||||
version "7.9.0"
|
version "7.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12"
|
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f"
|
||||||
integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A==
|
integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/template" "^7.8.3"
|
"@babel/template" "^7.8.3"
|
||||||
"@babel/traverse" "^7.9.0"
|
"@babel/traverse" "^7.9.0"
|
||||||
@ -250,9 +241,9 @@
|
|||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0":
|
"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0":
|
||||||
version "7.9.0"
|
version "7.9.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e"
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8"
|
||||||
integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg==
|
integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==
|
||||||
|
|
||||||
"@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
"@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
||||||
version "7.8.3"
|
version "7.8.3"
|
||||||
@ -422,9 +413,9 @@
|
|||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
|
|
||||||
"@babel/plugin-transform-classes@^7.9.0":
|
"@babel/plugin-transform-classes@^7.9.0":
|
||||||
version "7.9.0"
|
version "7.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.0.tgz#ab89c175ecf5b4c8911194aa8657966615324ce9"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d"
|
||||||
integrity sha512-xt/0CuBRBsBkqfk95ILxf0ge3gnXjEhOHrNxIiS8fdzSWgecuf9Vq2ogLUfaozJgt3LDO49ThMVWiyezGkei7A==
|
integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-annotate-as-pure" "^7.8.3"
|
"@babel/helper-annotate-as-pure" "^7.8.3"
|
||||||
"@babel/helper-define-map" "^7.8.3"
|
"@babel/helper-define-map" "^7.8.3"
|
||||||
@ -561,11 +552,10 @@
|
|||||||
"@babel/helper-replace-supers" "^7.8.3"
|
"@babel/helper-replace-supers" "^7.8.3"
|
||||||
|
|
||||||
"@babel/plugin-transform-parameters@^7.8.7":
|
"@babel/plugin-transform-parameters@^7.8.7":
|
||||||
version "7.8.8"
|
version "7.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a"
|
||||||
integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA==
|
integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-call-delegate" "^7.8.7"
|
|
||||||
"@babel/helper-get-function-arity" "^7.8.3"
|
"@babel/helper-get-function-arity" "^7.8.3"
|
||||||
"@babel/helper-plugin-utils" "^7.8.3"
|
"@babel/helper-plugin-utils" "^7.8.3"
|
||||||
|
|
||||||
@ -713,9 +703,9 @@
|
|||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
|
"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
|
||||||
version "7.9.0"
|
version "7.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
|
||||||
integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==
|
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.13.4"
|
regenerator-runtime "^0.13.4"
|
||||||
|
|
||||||
@ -743,7 +733,7 @@
|
|||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
|
|
||||||
"@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7", "@babel/types@^7.9.0":
|
"@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0":
|
||||||
version "7.9.0"
|
version "7.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5"
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5"
|
||||||
integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==
|
integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==
|
||||||
@ -842,9 +832,9 @@
|
|||||||
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
|
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "13.9.2"
|
version "13.9.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.5.tgz#59738bf30b31aea1faa2df7f4a5f55613750cf00"
|
||||||
integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==
|
integrity sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
@ -1395,34 +1385,19 @@ autoprefixer@^7.1.2:
|
|||||||
postcss-value-parser "^3.2.3"
|
postcss-value-parser "^3.2.3"
|
||||||
|
|
||||||
autoprefixer@^9.6.1, autoprefixer@^9.7.4:
|
autoprefixer@^9.6.1, autoprefixer@^9.7.4:
|
||||||
version "9.7.4"
|
version "9.7.5"
|
||||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378"
|
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.5.tgz#8df10b9ff9b5814a8d411a5cfbab9c793c392376"
|
||||||
integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==
|
integrity sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist "^4.8.3"
|
browserslist "^4.11.0"
|
||||||
caniuse-lite "^1.0.30001020"
|
caniuse-lite "^1.0.30001036"
|
||||||
chalk "^2.4.2"
|
chalk "^2.4.2"
|
||||||
normalize-range "^0.1.2"
|
normalize-range "^0.1.2"
|
||||||
num2fraction "^1.2.2"
|
num2fraction "^1.2.2"
|
||||||
postcss "^7.0.26"
|
postcss "^7.0.27"
|
||||||
postcss-value-parser "^4.0.2"
|
postcss-value-parser "^4.0.3"
|
||||||
|
|
||||||
aws-sdk@^2.389.0:
|
aws-sdk@^2.389.0, aws-sdk@^2.648.0:
|
||||||
version "2.643.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.643.0.tgz#0b4cc49165a25c42ab0503580806d367d32ffb88"
|
|
||||||
integrity sha512-4r7VGQFqshrhXnOCVQdlatAWiK/8kmmtAtY9gbITPNpY5Is+SfIy6k/1BgrnL5H/2sYd27H+Xp8itXZoCnQeTw==
|
|
||||||
dependencies:
|
|
||||||
buffer "4.9.1"
|
|
||||||
events "1.1.1"
|
|
||||||
ieee754 "1.1.13"
|
|
||||||
jmespath "0.15.0"
|
|
||||||
querystring "0.2.0"
|
|
||||||
sax "1.2.1"
|
|
||||||
url "0.10.3"
|
|
||||||
uuid "3.3.2"
|
|
||||||
xml2js "0.4.19"
|
|
||||||
|
|
||||||
aws-sdk@^2.648.0:
|
|
||||||
version "2.648.0"
|
version "2.648.0"
|
||||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.648.0.tgz#6cbea887b98c3ee8316870e9eead659194e35094"
|
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.648.0.tgz#6cbea887b98c3ee8316870e9eead659194e35094"
|
||||||
integrity sha512-b+PdZmCFvZBisqXEH68jO4xB30LrDHQMWrEX6MJoZaOlxPJfpOqRFUH3zsiAXF5Q2jTdjYLtS5bs3vcIwRzi3Q==
|
integrity sha512-b+PdZmCFvZBisqXEH68jO4xB30LrDHQMWrEX6MJoZaOlxPJfpOqRFUH3zsiAXF5Q2jTdjYLtS5bs3vcIwRzi3Q==
|
||||||
@ -1765,13 +1740,13 @@ browserslist@^2.11.3:
|
|||||||
caniuse-lite "^1.0.30000792"
|
caniuse-lite "^1.0.30000792"
|
||||||
electron-to-chromium "^1.3.30"
|
electron-to-chromium "^1.3.30"
|
||||||
|
|
||||||
browserslist@^4.8.3, browserslist@^4.9.1:
|
browserslist@^4.11.0, browserslist@^4.8.3, browserslist@^4.9.1:
|
||||||
version "4.10.0"
|
version "4.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad"
|
||||||
integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==
|
integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001035"
|
caniuse-lite "^1.0.30001035"
|
||||||
electron-to-chromium "^1.3.378"
|
electron-to-chromium "^1.3.380"
|
||||||
node-releases "^1.1.52"
|
node-releases "^1.1.52"
|
||||||
pkg-up "^3.1.0"
|
pkg-up "^3.1.0"
|
||||||
|
|
||||||
@ -1956,10 +1931,10 @@ camelcase@^5.0.0, camelcase@^5.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
||||||
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035:
|
caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036:
|
||||||
version "1.0.30001035"
|
version "1.0.30001038"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff"
|
||||||
integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==
|
integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==
|
||||||
|
|
||||||
capture-stack-trace@^1.0.0:
|
capture-stack-trace@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@ -2095,6 +2070,11 @@ chokidar@^3.0.0:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.1.2"
|
fsevents "~2.1.2"
|
||||||
|
|
||||||
|
chownr@^1.1.1:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||||
|
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||||
|
|
||||||
ci-info@^1.5.0:
|
ci-info@^1.5.0:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
|
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
|
||||||
@ -2561,6 +2541,14 @@ css-tree@1.0.0-alpha.37:
|
|||||||
mdn-data "2.0.4"
|
mdn-data "2.0.4"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
css-tree@1.0.0-alpha.39:
|
||||||
|
version "1.0.0-alpha.39"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb"
|
||||||
|
integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==
|
||||||
|
dependencies:
|
||||||
|
mdn-data "2.0.6"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
css-what@2.1:
|
css-what@2.1:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
||||||
@ -2587,11 +2575,11 @@ cssesc@^3.0.0:
|
|||||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||||
|
|
||||||
csso@^4.0.2:
|
csso@^4.0.2:
|
||||||
version "4.0.2"
|
version "4.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d"
|
resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903"
|
||||||
integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==
|
integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
css-tree "1.0.0-alpha.37"
|
css-tree "1.0.0-alpha.39"
|
||||||
|
|
||||||
currently-unhandled@^0.4.1:
|
currently-unhandled@^0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
@ -2644,7 +2632,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@3.X, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0:
|
debug@3.X, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.2.6:
|
||||||
version "3.2.6"
|
version "3.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||||
@ -2833,6 +2821,11 @@ detect-file@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
|
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
|
||||||
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
|
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
|
||||||
|
|
||||||
|
detect-libc@^1.0.2:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||||
|
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
||||||
|
|
||||||
detect-newline@2.X:
|
detect-newline@2.X:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||||
@ -3035,10 +3028,10 @@ ee-first@1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||||
|
|
||||||
electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.378:
|
electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.380:
|
||||||
version "1.3.380"
|
version "1.3.390"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.380.tgz#1e1f07091b42b54bccd0ad6d3a14f2b73b60dc9d"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.390.tgz#a49e67dea22e52ea8027c475dd5447b1c00b1d4e"
|
||||||
integrity sha512-2jhQxJKcjcSpVOQm0NAfuLq8o+130blrcawoumdXT6411xG/xIAOyZodO/y7WTaYlz/NHe3sCCAe/cJLnDsqTw==
|
integrity sha512-4RvbM5x+002gKI8sltkqWEk5pptn0UnzekUx8RTThAMPDSb8jjpm6SwGiSnEve7f85biyZl8DMXaipaCxDjXag==
|
||||||
|
|
||||||
"emoji-regex@>=6.0.0 <=6.1.1":
|
"emoji-regex@>=6.0.0 <=6.1.1":
|
||||||
version "6.1.1"
|
version "6.1.1"
|
||||||
@ -3153,9 +3146,9 @@ error-ex@^1.2.0, error-ex@^1.3.1:
|
|||||||
is-arrayish "^0.2.1"
|
is-arrayish "^0.2.1"
|
||||||
|
|
||||||
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
|
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
|
||||||
version "1.17.4"
|
version "1.17.5"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
|
||||||
integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==
|
integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
|
||||||
dependencies:
|
dependencies:
|
||||||
es-to-primitive "^1.2.1"
|
es-to-primitive "^1.2.1"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
@ -3249,9 +3242,9 @@ eslint-import-resolver-node@^0.3.2:
|
|||||||
resolve "^1.13.1"
|
resolve "^1.13.1"
|
||||||
|
|
||||||
eslint-module-utils@^2.4.1:
|
eslint-module-utils@^2.4.1:
|
||||||
version "2.5.2"
|
version "2.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708"
|
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
|
||||||
integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==
|
integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^2.6.9"
|
debug "^2.6.9"
|
||||||
pkg-dir "^2.0.0"
|
pkg-dir "^2.0.0"
|
||||||
@ -3432,11 +3425,11 @@ esprima@^4.0.0:
|
|||||||
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
||||||
|
|
||||||
esquery@^1.0.0, esquery@^1.0.1:
|
esquery@^1.0.0, esquery@^1.0.1:
|
||||||
version "1.1.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48"
|
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe"
|
||||||
integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==
|
integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
estraverse "^4.0.0"
|
estraverse "^5.0.0"
|
||||||
|
|
||||||
esrecurse@^4.1.0:
|
esrecurse@^4.1.0:
|
||||||
version "4.2.1"
|
version "4.2.1"
|
||||||
@ -3445,11 +3438,16 @@ esrecurse@^4.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
estraverse "^4.1.0"
|
estraverse "^4.1.0"
|
||||||
|
|
||||||
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
|
estraverse@^4.1.0, estraverse@^4.1.1:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
||||||
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
||||||
|
|
||||||
|
estraverse@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22"
|
||||||
|
integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==
|
||||||
|
|
||||||
estree-walker@^0.6.1:
|
estree-walker@^0.6.1:
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
|
||||||
@ -4055,6 +4053,13 @@ fs-extra@3.0.1:
|
|||||||
jsonfile "^3.0.0"
|
jsonfile "^3.0.0"
|
||||||
universalify "^0.1.0"
|
universalify "^0.1.0"
|
||||||
|
|
||||||
|
fs-minipass@^1.2.5:
|
||||||
|
version "1.2.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||||
|
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
|
||||||
|
dependencies:
|
||||||
|
minipass "^2.6.0"
|
||||||
|
|
||||||
fs-mkdirp-stream@^1.0.0:
|
fs-mkdirp-stream@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
|
resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
|
||||||
@ -4244,9 +4249,9 @@ glob-parent@^3.1.0:
|
|||||||
path-dirname "^1.0.0"
|
path-dirname "^1.0.0"
|
||||||
|
|
||||||
glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
|
glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
|
||||||
version "5.1.0"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
|
||||||
integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
|
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-glob "^4.0.1"
|
is-glob "^4.0.1"
|
||||||
|
|
||||||
@ -4951,7 +4956,7 @@ http-signature@~1.2.0:
|
|||||||
jsprim "^1.2.2"
|
jsprim "^1.2.2"
|
||||||
sshpk "^1.7.0"
|
sshpk "^1.7.0"
|
||||||
|
|
||||||
iconv-lite@0.4.24, iconv-lite@^0.4.24:
|
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
@ -4963,6 +4968,13 @@ ieee754@1.1.13, ieee754@^1.1.4:
|
|||||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
|
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
|
||||||
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
|
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
|
||||||
|
|
||||||
|
ignore-walk@^3.0.1:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
|
||||||
|
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
|
||||||
|
dependencies:
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
ignore@^3.3.3, ignore@^3.3.5:
|
ignore@^3.3.3, ignore@^3.3.5:
|
||||||
version "3.3.10"
|
version "3.3.10"
|
||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
||||||
@ -6389,6 +6401,11 @@ mdn-data@2.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
|
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
|
||||||
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
|
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
|
||||||
|
|
||||||
|
mdn-data@2.0.6:
|
||||||
|
version "2.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978"
|
||||||
|
integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==
|
||||||
|
|
||||||
memoizee@0.4.X:
|
memoizee@0.4.X:
|
||||||
version "0.4.14"
|
version "0.4.14"
|
||||||
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
|
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
|
||||||
@ -6572,6 +6589,21 @@ minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
|
|||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
|
|
||||||
|
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
||||||
|
version "2.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||||
|
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "^5.1.2"
|
||||||
|
yallist "^3.0.0"
|
||||||
|
|
||||||
|
minizlib@^1.2.1:
|
||||||
|
version "1.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||||
|
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
|
||||||
|
dependencies:
|
||||||
|
minipass "^2.9.0"
|
||||||
|
|
||||||
mitt@^1.1.3:
|
mitt@^1.1.3:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d"
|
resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d"
|
||||||
@ -6586,9 +6618,9 @@ mixin-deep@^1.2.0:
|
|||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
|
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
|
||||||
version "0.5.3"
|
version "0.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512"
|
||||||
integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==
|
integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.5"
|
minimist "^1.2.5"
|
||||||
|
|
||||||
@ -6664,6 +6696,15 @@ natural-compare@^1.4.0:
|
|||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||||
|
|
||||||
|
needle@^2.2.1:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117"
|
||||||
|
integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==
|
||||||
|
dependencies:
|
||||||
|
debug "^3.2.6"
|
||||||
|
iconv-lite "^0.4.4"
|
||||||
|
sax "^1.2.4"
|
||||||
|
|
||||||
negotiator@0.6.2:
|
negotiator@0.6.2:
|
||||||
version "0.6.2"
|
version "0.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||||
@ -6709,12 +6750,26 @@ node-gyp@^3.8.0:
|
|||||||
tar "^2.0.0"
|
tar "^2.0.0"
|
||||||
which "1"
|
which "1"
|
||||||
|
|
||||||
node-releases@^1.1.52:
|
node-pre-gyp@*:
|
||||||
version "1.1.52"
|
version "0.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9"
|
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
||||||
integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==
|
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^6.3.0"
|
detect-libc "^1.0.2"
|
||||||
|
mkdirp "^0.5.1"
|
||||||
|
needle "^2.2.1"
|
||||||
|
nopt "^4.0.1"
|
||||||
|
npm-packlist "^1.1.6"
|
||||||
|
npmlog "^4.0.2"
|
||||||
|
rc "^1.2.7"
|
||||||
|
rimraf "^2.6.1"
|
||||||
|
semver "^5.3.0"
|
||||||
|
tar "^4.4.2"
|
||||||
|
|
||||||
|
node-releases@^1.1.52:
|
||||||
|
version "1.1.53"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
|
||||||
|
integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
|
||||||
|
|
||||||
node-sass@^4.8.3:
|
node-sass@^4.8.3:
|
||||||
version "4.13.1"
|
version "4.13.1"
|
||||||
@ -6746,6 +6801,14 @@ node-sass@^4.8.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
abbrev "1"
|
abbrev "1"
|
||||||
|
|
||||||
|
nopt@^4.0.1:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||||
|
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
||||||
|
dependencies:
|
||||||
|
abbrev "1"
|
||||||
|
osenv "^0.1.4"
|
||||||
|
|
||||||
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
|
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||||
@ -6794,6 +6857,13 @@ now-and-later@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
once "^1.3.2"
|
once "^1.3.2"
|
||||||
|
|
||||||
|
npm-bundled@^1.0.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
|
||||||
|
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
|
||||||
|
dependencies:
|
||||||
|
npm-normalize-package-bin "^1.0.1"
|
||||||
|
|
||||||
npm-conf@^1.1.0:
|
npm-conf@^1.1.0:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
|
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
|
||||||
@ -6802,6 +6872,20 @@ npm-conf@^1.1.0:
|
|||||||
config-chain "^1.1.11"
|
config-chain "^1.1.11"
|
||||||
pify "^3.0.0"
|
pify "^3.0.0"
|
||||||
|
|
||||||
|
npm-normalize-package-bin@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
||||||
|
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
||||||
|
|
||||||
|
npm-packlist@^1.1.6:
|
||||||
|
version "1.4.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
|
||||||
|
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
|
||||||
|
dependencies:
|
||||||
|
ignore-walk "^3.0.1"
|
||||||
|
npm-bundled "^1.0.1"
|
||||||
|
npm-normalize-package-bin "^1.0.1"
|
||||||
|
|
||||||
npm-prefix@^1.2.0:
|
npm-prefix@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0"
|
resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0"
|
||||||
@ -6818,7 +6902,7 @@ npm-run-path@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-key "^2.0.0"
|
path-key "^2.0.0"
|
||||||
|
|
||||||
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
|
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
|
||||||
version "4.1.2"
|
version "4.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
||||||
@ -7069,7 +7153,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||||
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
||||||
|
|
||||||
osenv@0:
|
osenv@0, osenv@^0.1.4:
|
||||||
version "0.1.5"
|
version "0.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
|
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
|
||||||
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
|
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
|
||||||
@ -7414,9 +7498,9 @@ performance-now@^2.1.0:
|
|||||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||||
|
|
||||||
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1:
|
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1:
|
||||||
version "2.2.1"
|
version "2.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||||
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
|
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||||
|
|
||||||
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
|
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
@ -7852,9 +7936,9 @@ pseudomap@^1.0.2:
|
|||||||
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
||||||
|
|
||||||
psl@^1.1.28:
|
psl@^1.1.28:
|
||||||
version "1.7.0"
|
version "1.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
|
||||||
integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
|
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
|
||||||
|
|
||||||
pump@^2.0.0:
|
pump@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
@ -7959,7 +8043,7 @@ raw-body@^2.3.2:
|
|||||||
iconv-lite "0.4.24"
|
iconv-lite "0.4.24"
|
||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
|
|
||||||
rc@^1.0.1, rc@^1.1.0, rc@^1.1.6:
|
rc@^1.0.1, rc@^1.1.0, rc@^1.1.6, rc@^1.2.7:
|
||||||
version "1.2.8"
|
version "1.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||||
@ -8568,7 +8652,7 @@ reusify@^1.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||||
|
|
||||||
rimraf@2, rimraf@^2.5.4:
|
rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1:
|
||||||
version "2.7.1"
|
version "2.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||||
@ -8701,7 +8785,7 @@ sax@1.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
||||||
integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
|
integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
|
||||||
|
|
||||||
sax@>=0.6.0, sax@~1.2.4:
|
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||||
@ -8762,7 +8846,7 @@ semver@7.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
|
||||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||||
|
|
||||||
semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
|
semver@^6.0.0, semver@^6.1.2:
|
||||||
version "6.3.0"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||||
@ -8862,9 +8946,9 @@ shellsubstitute@^1.1.0:
|
|||||||
integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=
|
integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=
|
||||||
|
|
||||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||||
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||||
|
|
||||||
slash@^1.0.0:
|
slash@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
@ -9680,6 +9764,19 @@ tar@^2.0.0:
|
|||||||
fstream "^1.0.12"
|
fstream "^1.0.12"
|
||||||
inherits "2"
|
inherits "2"
|
||||||
|
|
||||||
|
tar@^4.4.2:
|
||||||
|
version "4.4.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||||
|
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||||
|
dependencies:
|
||||||
|
chownr "^1.1.1"
|
||||||
|
fs-minipass "^1.2.5"
|
||||||
|
minipass "^2.8.6"
|
||||||
|
minizlib "^1.2.1"
|
||||||
|
mkdirp "^0.5.0"
|
||||||
|
safe-buffer "^5.1.2"
|
||||||
|
yallist "^3.0.3"
|
||||||
|
|
||||||
temp-dir@^1.0.0:
|
temp-dir@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
|
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
|
||||||
@ -10737,7 +10834,7 @@ yallist@^2.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||||
|
|
||||||
yallist@^3.0.2:
|
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||
@ -10750,9 +10847,9 @@ yaml@^1.7.2:
|
|||||||
"@babel/runtime" "^7.8.7"
|
"@babel/runtime" "^7.8.7"
|
||||||
|
|
||||||
yargs-parser@^18.1.1:
|
yargs-parser@^18.1.1:
|
||||||
version "18.1.1"
|
version "18.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37"
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1"
|
||||||
integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==
|
integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase "^5.0.0"
|
camelcase "^5.0.0"
|
||||||
decamelize "^1.2.0"
|
decamelize "^1.2.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user