aboutsummaryrefslogtreecommitdiffstats
path: root/demo/dist/demo.js
diff options
context:
space:
mode:
Diffstat (limited to 'demo/dist/demo.js')
-rw-r--r--demo/dist/demo.js349
1 files changed, 205 insertions, 144 deletions
diff --git a/demo/dist/demo.js b/demo/dist/demo.js
index 4f290b9d..6cea2552 100644
--- a/demo/dist/demo.js
+++ b/demo/dist/demo.js
@@ -14817,7 +14817,7 @@ typeof navigator === "object" && (function () {
check$1(typeof self == 'object' && self) ||
check$1(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
// eslint-disable-next-line no-new-func
- Function('return this')();
+ (function () { return this; })() || Function('return this')();
var fails$1 = function (exec) {
try {
@@ -15012,7 +15012,7 @@ typeof navigator === "object" && (function () {
(module.exports = function (key, value) {
return sharedStore$1[key] || (sharedStore$1[key] = value !== undefined ? value : {});
})('versions', []).push({
- version: '3.6.5',
+ version: '3.7.0',
mode: 'global',
copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});
@@ -15050,11 +15050,12 @@ typeof navigator === "object" && (function () {
};
if (nativeWeakMap$1) {
- var store$3 = new WeakMap$4();
+ var store$3 = sharedStore$1.state || (sharedStore$1.state = new WeakMap$4());
var wmget$1 = store$3.get;
var wmhas$1 = store$3.has;
var wmset$1 = store$3.set;
set$3 = function (it, metadata) {
+ metadata.facade = it;
wmset$1.call(store$3, it, metadata);
return metadata;
};
@@ -15068,6 +15069,7 @@ typeof navigator === "object" && (function () {
var STATE$1 = sharedKey$1('state');
hiddenKeys$2[STATE$1] = true;
set$3 = function (it, metadata) {
+ metadata.facade = it;
createNonEnumerableProperty$1(it, STATE$1, metadata);
return metadata;
};
@@ -15096,9 +15098,15 @@ typeof navigator === "object" && (function () {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
+ var state;
if (typeof value == 'function') {
- if (typeof key == 'string' && !has$2(value, 'name')) createNonEnumerableProperty$1(value, 'name', key);
- enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
+ if (typeof key == 'string' && !has$2(value, 'name')) {
+ createNonEnumerableProperty$1(value, 'name', key);
+ }
+ state = enforceInternalState(value);
+ if (!state.source) {
+ state.source = TEMPLATE.join(typeof key == 'string' ? key : '');
+ }
}
if (O === global_1$1) {
if (simple) O[key] = value;
@@ -15724,14 +15732,20 @@ typeof navigator === "object" && (function () {
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables$1(FIND$1);
+ var iteratorClose = function (iterator) {
+ var returnMethod = iterator['return'];
+ if (returnMethod !== undefined) {
+ return anObject$1(returnMethod.call(iterator)).value;
+ }
+ };
+
// call something on iterator step with safe closing on error
var callWithSafeIterationClosing$1 = function (iterator, fn, value, ENTRIES) {
try {
return ENTRIES ? fn(anObject$1(value)[0], value[1]) : fn(value);
// 7.4.6 IteratorClose(iterator, completion)
} catch (error) {
- var returnMethod = iterator['return'];
- if (returnMethod !== undefined) anObject$1(returnMethod.call(iterator));
+ iteratorClose(iterator);
throw error;
}
};
@@ -16452,11 +16466,11 @@ typeof navigator === "object" && (function () {
var regexp = /./;
try {
'/./'[METHOD_NAME](regexp);
- } catch (e) {
+ } catch (error1) {
try {
regexp[MATCH$4] = false;
return '/./'[METHOD_NAME](regexp);
- } catch (f) { /* empty */ }
+ } catch (error2) { /* empty */ }
} return false;
};
@@ -16776,16 +16790,31 @@ typeof navigator === "object" && (function () {
var internalMetadata_3$1 = internalMetadata$1.getWeakData;
var internalMetadata_4$1 = internalMetadata$1.onFreeze;
- var iterate_1$1 = createCommonjsModule(function (module) {
var Result = function (stopped, result) {
this.stopped = stopped;
this.result = result;
};
- var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {
- var boundFunction = functionBindContext$1(fn, that, AS_ENTRIES ? 2 : 1);
+ var iterate = function (iterable, unboundFunction, options) {
+ var that = options && options.that;
+ var AS_ENTRIES = !!(options && options.AS_ENTRIES);
+ var IS_ITERATOR = !!(options && options.IS_ITERATOR);
+ var INTERRUPTED = !!(options && options.INTERRUPTED);
+ var fn = functionBindContext$1(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
var iterator, iterFn, index, length, result, next, step;
+ var stop = function (condition) {
+ if (iterator) iteratorClose(iterator);
+ return new Result(true, condition);
+ };
+
+ var callFn = function (value) {
+ if (AS_ENTRIES) {
+ anObject$1(value);
+ return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
+ } return INTERRUPTED ? fn(value, stop) : fn(value);
+ };
+
if (IS_ITERATOR) {
iterator = iterable;
} else {
@@ -16794,9 +16823,7 @@ typeof navigator === "object" && (function () {
// optimisation for array iterators
if (isArrayIteratorMethod$1(iterFn)) {
for (index = 0, length = toLength$1(iterable.length); length > index; index++) {
- result = AS_ENTRIES
- ? boundFunction(anObject$1(step = iterable[index])[0], step[1])
- : boundFunction(iterable[index]);
+ result = callFn(iterable[index]);
if (result && result instanceof Result) return result;
} return new Result(false);
}
@@ -16805,16 +16832,16 @@ typeof navigator === "object" && (function () {
next = iterator.next;
while (!(step = next.call(iterator)).done) {
- result = callWithSafeIterationClosing$1(iterator, boundFunction, step.value, AS_ENTRIES);
+ try {
+ result = callFn(step.value);
+ } catch (error) {
+ iteratorClose(iterator);
+ throw error;
+ }
if (typeof result == 'object' && result && result instanceof Result) return result;
} return new Result(false);
};
- iterate.stop = function (result) {
- return new Result(true, result);
- };
- });
-
var anInstance$1 = function (it, Constructor, name) {
if (!(it instanceof Constructor)) {
throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
@@ -16878,7 +16905,7 @@ typeof navigator === "object" && (function () {
Constructor = wrapper(function (dummy, iterable) {
anInstance$1(dummy, Constructor, CONSTRUCTOR_NAME);
var that = inheritIfRequired$1(new NativeConstructor(), dummy, Constructor);
- if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP);
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
return that;
});
Constructor.prototype = NativePrototype;
@@ -16968,7 +16995,7 @@ typeof navigator === "object" && (function () {
id: id$3++,
frozen: undefined
});
- if (iterable != undefined) iterate_1$1(iterable, that[ADDER], that, IS_MAP);
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
});
var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME);
@@ -17806,7 +17833,7 @@ typeof navigator === "object" && (function () {
var URLSearchParamsPrototype$1 = URLSearchParamsConstructor$1.prototype;
redefineAll$1(URLSearchParamsPrototype$1, {
- // `URLSearchParams.prototype.appent` method
+ // `URLSearchParams.prototype.append` method
// https://url.spec.whatwg.org/#dom-urlsearchparams-append
append: function append(name, value) {
validateArgumentsLength$1(arguments.length, 2);
@@ -19959,6 +19986,8 @@ typeof navigator === "object" && (function () {
var engineIsIos$1 = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent$1);
+ var engineIsNode = classofRaw$1(global_1$1.process) == 'process';
+
var location$1 = global_1$1.location;
var set$4 = global_1$1.setImmediate;
var clear$1 = global_1$1.clearImmediate;
@@ -20011,7 +20040,7 @@ typeof navigator === "object" && (function () {
delete queue$1[id];
};
// Node.js 0.8-
- if (classofRaw$1(process$6) == 'process') {
+ if (engineIsNode) {
defer$1 = function (id) {
process$6.nextTick(runner$1(id));
};
@@ -20033,8 +20062,8 @@ typeof navigator === "object" && (function () {
global_1$1.addEventListener &&
typeof postMessage == 'function' &&
!global_1$1.importScripts &&
- !fails$1(post$1) &&
- location$1.protocol !== 'file:'
+ location$1 && location$1.protocol !== 'file:' &&
+ !fails$1(post$1)
) {
defer$1 = post$1;
global_1$1.addEventListener('message', listener$1, false);
@@ -20060,14 +20089,14 @@ typeof navigator === "object" && (function () {
};
var getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor$1.f;
-
var macrotask$1 = task$2.set;
+
var MutationObserver$2 = global_1$1.MutationObserver || global_1$1.WebKitMutationObserver;
+ var document$4 = global_1$1.document;
var process$7 = global_1$1.process;
var Promise$2 = global_1$1.Promise;
- var IS_NODE$2 = classofRaw$1(process$7) == 'process';
// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
var queueMicrotaskDescriptor$1 = getOwnPropertyDescriptor$7(global_1$1, 'queueMicrotask');
var queueMicrotask$1 = queueMicrotaskDescriptor$1 && queueMicrotaskDescriptor$1.value;
@@ -20078,7 +20107,7 @@ typeof navigator === "object" && (function () {
if (!queueMicrotask$1) {
flush$1 = function () {
var parent, fn;
- if (IS_NODE$2 && (parent = process$7.domain)) parent.exit();
+ if (engineIsNode && (parent = process$7.domain)) parent.exit();
while (head$1) {
fn = head$1.fn;
head$1 = head$1.next;
@@ -20093,15 +20122,10 @@ typeof navigator === "object" && (function () {
if (parent) parent.enter();
};
- // Node.js
- if (IS_NODE$2) {
- notify$2 = function () {
- process$7.nextTick(flush$1);
- };
// browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
- } else if (MutationObserver$2 && !engineIsIos$1) {
+ if (!engineIsIos$1 && !engineIsNode && MutationObserver$2 && document$4) {
toggle$1 = true;
- node$1 = document.createTextNode('');
+ node$1 = document$4.createTextNode('');
new MutationObserver$2(flush$1).observe(node$1, { characterData: true });
notify$2 = function () {
node$1.data = toggle$1 = !toggle$1;
@@ -20114,6 +20138,11 @@ typeof navigator === "object" && (function () {
notify$2 = function () {
then$1.call(promise$1, flush$1);
};
+ // Node.js without promises
+ } else if (engineIsNode) {
+ notify$2 = function () {
+ process$7.nextTick(flush$1);
+ };
// for other environments - macrotask based on:
// - setImmediate
// - MessageChannel
@@ -20192,6 +20221,7 @@ typeof navigator === "object" && (function () {
+
var SPECIES$c = wellKnownSymbol$1('species');
var PROMISE$1 = 'Promise';
var getInternalState$8 = internalState$1.get;
@@ -20199,13 +20229,13 @@ typeof navigator === "object" && (function () {
var getInternalPromiseState$1 = internalState$1.getterFor(PROMISE$1);
var PromiseConstructor$1 = nativePromiseConstructor$1;
var TypeError$2 = global_1$1.TypeError;
- var document$4 = global_1$1.document;
+ var document$5 = global_1$1.document;
var process$8 = global_1$1.process;
var $fetch$3 = getBuiltIn$1('fetch');
var newPromiseCapability$3 = newPromiseCapability$2.f;
var newGenericPromiseCapability$1 = newPromiseCapability$3;
- var IS_NODE$3 = classofRaw$1(process$8) == 'process';
- var DISPATCH_EVENT$1 = !!(document$4 && document$4.createEvent && global_1$1.dispatchEvent);
+ var DISPATCH_EVENT$1 = !!(document$5 && document$5.createEvent && global_1$1.dispatchEvent);
+ var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
var UNHANDLED_REJECTION$1 = 'unhandledrejection';
var REJECTION_HANDLED$1 = 'rejectionhandled';
var PENDING$1 = 0;
@@ -20223,7 +20253,7 @@ typeof navigator === "object" && (function () {
// We can't detect it synchronously, so just check versions
if (engineV8Version$1 === 66) return true;
// Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
- if (!IS_NODE$3 && typeof PromiseRejectionEvent != 'function') return true;
+ if (!engineIsNode && !NATIVE_REJECTION_EVENT) return true;
}
// We can't use @@species feature detection in V8 since it causes
// deoptimization and performance degradation
@@ -20249,7 +20279,7 @@ typeof navigator === "object" && (function () {
return isObject$2(it) && typeof (then = it.then) == 'function' ? then : false;
};
- var notify$3 = function (promise, state, isReject) {
+ var notify$3 = function (state, isReject) {
if (state.notified) return;
state.notified = true;
var chain = state.reactions;
@@ -20268,7 +20298,7 @@ typeof navigator === "object" && (function () {
try {
if (handler) {
if (!ok) {
- if (state.rejection === UNHANDLED$1) onHandleUnhandled$1(promise, state);
+ if (state.rejection === UNHANDLED$1) onHandleUnhandled$1(state);
state.rejection = HANDLED$1;
}
if (handler === true) result = value;
@@ -20293,36 +20323,37 @@ typeof navigator === "object" && (function () {
}
state.reactions = [];
state.notified = false;
- if (isReject && !state.rejection) onUnhandled$1(promise, state);
+ if (isReject && !state.rejection) onUnhandled$1(state);
});
};
var dispatchEvent$1 = function (name, promise, reason) {
var event, handler;
if (DISPATCH_EVENT$1) {
- event = document$4.createEvent('Event');
+ event = document$5.createEvent('Event');
event.promise = promise;
event.reason = reason;
event.initEvent(name, false, true);
global_1$1.dispatchEvent(event);
} else event = { promise: promise, reason: reason };
- if (handler = global_1$1['on' + name]) handler(event);
+ if (!NATIVE_REJECTION_EVENT && (handler = global_1$1['on' + name])) handler(event);
else if (name === UNHANDLED_REJECTION$1) hostReportErrors$1('Unhandled promise rejection', reason);
};
- var onUnhandled$1 = function (promise, state) {
+ var onUnhandled$1 = function (state) {
task$3.call(global_1$1, function () {
+ var promise = state.facade;
var value = state.value;
var IS_UNHANDLED = isUnhandled$1(state);
var result;
if (IS_UNHANDLED) {
result = perform$1(function () {
- if (IS_NODE$3) {
+ if (engineIsNode) {
process$8.emit('unhandledRejection', value, promise);
} else dispatchEvent$1(UNHANDLED_REJECTION$1, promise, value);
});
// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
- state.rejection = IS_NODE$3 || isUnhandled$1(state) ? UNHANDLED$1 : HANDLED$1;
+ state.rejection = engineIsNode || isUnhandled$1(state) ? UNHANDLED$1 : HANDLED$1;
if (result.error) throw result.value;
}
});
@@ -20332,55 +20363,56 @@ typeof navigator === "object" && (function () {
return state.rejection !== HANDLED$1 && !state.parent;
};
- var onHandleUnhandled$1 = function (promise, state) {
+ var onHandleUnhandled$1 = function (state) {
task$3.call(global_1$1, function () {
- if (IS_NODE$3) {
+ var promise = state.facade;
+ if (engineIsNode) {
process$8.emit('rejectionHandled', promise);
} else dispatchEvent$1(REJECTION_HANDLED$1, promise, state.value);
});
};
- var bind$1 = function (fn, promise, state, unwrap) {
+ var bind$1 = function (fn, state, unwrap) {
return function (value) {
- fn(promise, state, value, unwrap);
+ fn(state, value, unwrap);
};
};
- var internalReject$1 = function (promise, state, value, unwrap) {
+ var internalReject$1 = function (state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
state.value = value;
state.state = REJECTED$1;
- notify$3(promise, state, true);
+ notify$3(state, true);
};
- var internalResolve$1 = function (promise, state, value, unwrap) {
+ var internalResolve$1 = function (state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
try {
- if (promise === value) throw TypeError$2("Promise can't be resolved itself");
+ if (state.facade === value) throw TypeError$2("Promise can't be resolved itself");
var then = isThenable$2(value);
if (then) {
microtask$1(function () {
var wrapper = { done: false };
try {
then.call(value,
- bind$1(internalResolve$1, promise, wrapper, state),
- bind$1(internalReject$1, promise, wrapper, state)
+ bind$1(internalResolve$1, wrapper, state),
+ bind$1(internalReject$1, wrapper, state)
);
} catch (error) {
- internalReject$1(promise, wrapper, error, state);
+ internalReject$1(wrapper, error, state);
}
});
} else {
state.value = value;
state.state = FULFILLED$1;
- notify$3(promise, state, false);
+ notify$3(state, false);
}
} catch (error) {
- internalReject$1(promise, { done: false }, error, state);
+ internalReject$1({ done: false }, error, state);
}
};
@@ -20393,9 +20425,9 @@ typeof navigator === "object" && (function () {
Internal$1.call(this);
var state = getInternalState$8(this);
try {
- executor(bind$1(internalResolve$1, this, state), bind$1(internalReject$1, this, state));
+ executor(bind$1(internalResolve$1, state), bind$1(internalReject$1, state));
} catch (error) {
- internalReject$1(this, state, error);
+ internalReject$1(state, error);
}
};
// eslint-disable-next-line no-unused-vars
@@ -20419,10 +20451,10 @@ typeof navigator === "object" && (function () {
var reaction = newPromiseCapability$3(speciesConstructor$1(this, PromiseConstructor$1));
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
reaction.fail = typeof onRejected == 'function' && onRejected;
- reaction.domain = IS_NODE$3 ? process$8.domain : undefined;
+ reaction.domain = engineIsNode ? process$8.domain : undefined;
state.parent = true;
state.reactions.push(reaction);
- if (state.state != PENDING$1) notify$3(this, state, false);
+ if (state.state != PENDING$1) notify$3(state, false);
return reaction.promise;
},
// `Promise.prototype.catch` method
@@ -20435,8 +20467,8 @@ typeof navigator === "object" && (function () {
var promise = new Internal$1();
var state = getInternalState$8(promise);
this.promise = promise;
- this.resolve = bind$1(internalResolve$1, promise, state);
- this.reject = bind$1(internalReject$1, promise, state);
+ this.resolve = bind$1(internalResolve$1, state);
+ this.reject = bind$1(internalReject$1, state);
};
newPromiseCapability$2.f = newPromiseCapability$3 = function (C) {
return C === PromiseConstructor$1 || C === PromiseWrapper$1
@@ -20507,7 +20539,7 @@ typeof navigator === "object" && (function () {
var values = [];
var counter = 0;
var remaining = 1;
- iterate_1$1(iterable, function (promise) {
+ iterate(iterable, function (promise) {
var index = counter++;
var alreadyCalled = false;
values.push(undefined);
@@ -20532,7 +20564,7 @@ typeof navigator === "object" && (function () {
var reject = capability.reject;
var result = perform$1(function () {
var $promiseResolve = aFunction$3(C.resolve);
- iterate_1$1(iterable, function (promise) {
+ iterate(iterable, function (promise) {
$promiseResolve.call(C, promise).then(capability.resolve, reject);
});
});
@@ -20779,12 +20811,17 @@ typeof navigator === "object" && (function () {
+
+
var STRICT_METHOD$a = arrayMethodIsStrict$1('reduce');
var USES_TO_LENGTH$i = arrayMethodUsesToLength$1('reduce', { 1: 0 });
+ // Chrome 80-82 has a critical bug
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+ var CHROME_BUG = !engineIsNode && engineV8Version$1 > 79 && engineV8Version$1 < 83;
// `Array.prototype.reduce` method
// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
- _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$a || !USES_TO_LENGTH$i }, {
+ _export$1({ target: 'Array', proto: true, forced: !STRICT_METHOD$a || !USES_TO_LENGTH$i || CHROME_BUG }, {
reduce: function reduce(callbackfn /* , initialValue */) {
return $reduce$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
}
@@ -24003,7 +24040,7 @@ typeof navigator === "object" && (function () {
// Sprite (for icons)
loadSprite: true,
iconPrefix: 'plyr',
- iconUrl: 'https://cdn.plyr.io/3.6.2/plyr.svg',
+ iconUrl: 'https://cdn.plyr.io/3.6.3/plyr.svg',
// Blank video (used to prevent errors on source change)
blankVideo: 'https://cdn.plyr.io/static/blank.mp4',
// Quality default
@@ -24121,7 +24158,7 @@ typeof navigator === "object" && (function () {
vimeo: {
sdk: 'https://player.vimeo.com/api/player.js',
iframe: 'https://player.vimeo.com/video/{0}?{1}',
- api: 'https://vimeo.com/api/v2/video/{0}.json'
+ api: 'https://vimeo.com/api/oembed.json?url={0}'
},
youtube: {
sdk: 'https://www.youtube.com/iframe_api',
@@ -24291,24 +24328,27 @@ typeof navigator === "object" && (function () {
title: false,
speed: true,
transparent: false,
+ // Custom settings from Plyr
+ customControls: true,
+ referrerPolicy: null,
+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy
// Whether the owner of the video has a Pro or Business account
// (which allows us to properly hide controls without CSS hacks, etc)
- premium: false,
- // Custom settings from Plyr
- referrerPolicy: null // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy
-
+ premium: false
},
// YouTube plugin
youtube: {
- noCookie: true,
- // Whether to use an alternative version of YouTube without cookies
rel: 0,
// No related vids
showinfo: 0,
// Hide info
iv_load_policy: 3,
// Hide annotations
- modestbranding: 1 // Hide logos as much as possible (they still show one in the corner when paused)
+ modestbranding: 1,
+ // Hide logos as much as possible (they still show one in the corner when paused)
+ // Custom settings from Plyr
+ customControls: true,
+ noCookie: false // Whether to use an alternative version of YouTube without cookies
}
};
@@ -24427,7 +24467,7 @@ typeof navigator === "object" && (function () {
return;
}
- _this.toggle();
+ _this.player.listeners.proxy(event, _this.toggle, 'fullscreen');
}); // Tap focus when in fullscreen
on.call(this, this.player.elements.container, 'keydown', function (event) {
@@ -24850,7 +24890,9 @@ typeof navigator === "object" && (function () {
} // Set property synchronously to respect the call order
- this.media.setAttribute('data-poster', poster); // Wait until ui is ready
+ this.media.setAttribute('data-poster', poster); // Show the poster
+
+ this.elements.poster.removeAttribute('hidden'); // Wait until ui is ready
return ready.call(this) // Load image
.then(function () {
@@ -25282,7 +25324,14 @@ typeof navigator === "object" && (function () {
ratio = _setPlayerSize.ratio; // Set Vimeo gutter
- setGutter(ratio, padding, isEnter); // If not using native browser fullscreen API, we need to check for resizes of viewport
+ setGutter(ratio, padding, isEnter); // Horrible hack for Safari 14 not repainting properly on entering fullscreen
+
+ if (isEnter) {
+ setTimeout(function () {
+ return repaint(elements.container);
+ }, 100);
+ } // If not using native browser fullscreen API, we need to check for resizes of viewport
+
if (!usingNative) {
if (isEnter) {
@@ -25473,9 +25522,17 @@ typeof navigator === "object" && (function () {
this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); // Rewind
- this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind'); // Rewind
+ this.bind(elements.buttons.rewind, 'click', function () {
+ // Record seek time so we can prevent hiding controls for a few seconds after rewind
+ player.lastSeekTime = Date.now();
+ player.rewind();
+ }, 'rewind'); // Rewind
- this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward'); // Mute toggle
+ this.bind(elements.buttons.fastForward, 'click', function () {
+ // Record seek time so we can prevent hiding controls for a few seconds after fast forward
+ player.lastSeekTime = Date.now();
+ player.forward();
+ }, 'fastForward'); // Mute toggle
this.bind(elements.buttons.mute, 'click', function () {
player.muted = !player.muted;
@@ -26183,35 +26240,32 @@ typeof navigator === "object" && (function () {
} // Inject the package
- var poster = player.poster;
-
- if (premium) {
- iframe.setAttribute('data-poster', poster);
+ if (premium || !config.customControls) {
+ iframe.setAttribute('data-poster', player.poster);
player.media = replaceElement(iframe, player.media);
} else {
var wrapper = createElement$1('div', {
class: player.config.classNames.embedContainer,
- 'data-poster': poster
+ 'data-poster': player.poster
});
wrapper.appendChild(iframe);
player.media = replaceElement(wrapper, player.media);
} // Get poster image
- fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) {
- if (is$2.empty(response)) {
- return;
- } // Get the URL for thumbnail
-
-
- var url = new URL(response[0].thumbnail_large); // Get original image
+ if (!config.customControls) {
+ fetch(format(player.config.urls.vimeo.api, src)).then(function (response) {
+ if (is$2.empty(response) || !response.thumbnail_url) {
+ return;
+ } // Set and show poster
- url.pathname = "".concat(url.pathname.split('_')[0], ".jpg"); // Set and show poster
- ui.setPoster.call(player, url.href).catch(function () {});
- }); // Setup instance
+ ui.setPoster.call(player, response.thumbnail_url).catch(function () {});
+ });
+ } // Setup instance
// https://github.com/vimeo/player.js
+
player.embed = new window.Vimeo.Player(iframe, {
autopause: player.config.autopause,
muted: player.muted
@@ -26451,9 +26505,11 @@ typeof navigator === "object" && (function () {
triggerEvent.call(player, player.media, 'error');
}); // Rebuild UI
- setTimeout(function () {
- return ui.build.call(player);
- }, 0);
+ if (config.customControls) {
+ setTimeout(function () {
+ return ui.build.call(player);
+ }, 0);
+ }
}
};
@@ -26544,7 +26600,8 @@ typeof navigator === "object" && (function () {
},
// API ready
ready: function ready() {
- var player = this; // Ignore already setup (race condition)
+ var player = this;
+ var config = player.config.youtube; // Ignore already setup (race condition)
var currentId = player.media && player.media.getAttribute('id');
@@ -26561,53 +26618,53 @@ typeof navigator === "object" && (function () {
var videoId = parseId$1(source);
- var id = generateId(player.provider); // Get poster, if already set
-
- var poster = player.poster; // Replace media element
+ var id = generateId(player.provider); // Replace media element
var container = createElement$1('div', {
id: id,
- 'data-poster': poster
+ 'data-poster': config.customControls ? player.poster : undefined
});
- player.media = replaceElement(container, player.media); // Id to poster wrapper
-
- var posterSrc = function posterSrc(s) {
- return "https://i.ytimg.com/vi/".concat(videoId, "/").concat(s, "default.jpg");
- }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
-
-
- loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded
- .catch(function () {
- return loadImage(posterSrc('sd'), 121);
- }) // 480p padded 4:3
- .catch(function () {
- return loadImage(posterSrc('hq'));
- }) // 360p padded 4:3. Always exists
- .then(function (image) {
- return ui.setPoster.call(player, image.src);
- }).then(function (src) {
- // If the image is padded, use background-size "cover" instead (like youtube does too with their posters)
- if (!src.includes('maxres')) {
- player.elements.poster.style.backgroundSize = 'cover';
- }
- }).catch(function () {});
- var config = player.config.youtube; // Setup instance
+ player.media = replaceElement(container, player.media); // Only load the poster when using custom controls
+
+ if (config.customControls) {
+ var posterSrc = function posterSrc(s) {
+ return "https://i.ytimg.com/vi/".concat(videoId, "/").concat(s, "default.jpg");
+ }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
+
+
+ loadImage(posterSrc('maxres'), 121) // Higest quality and unpadded
+ .catch(function () {
+ return loadImage(posterSrc('sd'), 121);
+ }) // 480p padded 4:3
+ .catch(function () {
+ return loadImage(posterSrc('hq'));
+ }) // 360p padded 4:3. Always exists
+ .then(function (image) {
+ return ui.setPoster.call(player, image.src);
+ }).then(function (src) {
+ // If the image is padded, use background-size "cover" instead (like youtube does too with their posters)
+ if (!src.includes('maxres')) {
+ player.elements.poster.style.backgroundSize = 'cover';
+ }
+ }).catch(function () {});
+ } // Setup instance
// https://developers.google.com/youtube/iframe_api_reference
- player.embed = new window.YT.Player(id, {
+
+ player.embed = new window.YT.Player(player.media, {
videoId: videoId,
host: getHost$2(config),
playerVars: extend$1({}, {
- autoplay: player.config.autoplay ? 1 : 0,
// Autoplay
- hl: player.config.hl,
+ autoplay: player.config.autoplay ? 1 : 0,
// iframe interface language
- controls: player.supported.ui ? 0 : 1,
- // Only show controls if not fully supported
- disablekb: 1,
+ hl: player.config.hl,
+ // Only show controls if not fully supported or opted out
+ controls: player.supported.ui && config.customControls ? 0 : 1,
// Disable keyboard as we handle it
- playsinline: !player.config.fullscreen.iosNative ? 1 : 0,
+ disablekb: 1,
// Allow iOS inline playback
+ playsinline: !player.config.fullscreen.iosNative ? 1 : 0,
// Captions are flaky on YouTube
cc_load_policy: player.captions.active ? 1 : 0,
cc_lang_pref: player.config.captions.language,
@@ -26718,6 +26775,7 @@ typeof navigator === "object" && (function () {
var toggle = is$2.boolean(input) ? input : muted;
muted = toggle;
instance[toggle ? 'mute' : 'unMute']();
+ instance.setVolume(volume * 100);
triggerEvent.call(player, player.media, 'volumechange');
}
}); // Source
@@ -26740,7 +26798,7 @@ typeof navigator === "object" && (function () {
return player.config.speed.options.includes(s);
}); // Set the tabindex to avoid focus entering iframe
- if (player.supported.ui) {
+ if (player.supported.ui && config.customControls) {
player.media.setAttribute('tabindex', -1);
}
@@ -26767,9 +26825,11 @@ typeof navigator === "object" && (function () {
}
}, 200); // Rebuild UI
- setTimeout(function () {
- return ui.build.call(player);
- }, 50);
+ if (config.customControls) {
+ setTimeout(function () {
+ return ui.build.call(player);
+ }, 50);
+ }
},
onStateChange: function onStateChange(event) {
// Get the instance
@@ -26815,7 +26875,7 @@ typeof navigator === "object" && (function () {
case 1:
// Restore paused state (YouTube starts playing on seek if the video hasn't been played yet)
- if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {
+ if (config.customControls && !player.config.autoplay && player.media.paused && !player.embed.hasPlayed) {
player.media.pause();
} else {
assurePlaybackState$1.call(player, true);
@@ -26888,7 +26948,8 @@ typeof navigator === "object" && (function () {
wrap$4(this.media, this.elements.wrapper); // Poster image container
this.elements.poster = createElement$1('div', {
- class: this.config.classNames.poster
+ class: this.config.classNames.poster,
+ hidden: ''
});
this.elements.wrapper.appendChild(this.elements.poster);
}