vidply 1.0.34 → 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/{vidply.SoundCloudRenderer-RIA3QKP3.js → vidply.SoundCloudRenderer-HCMKXHSX.js} +1 -3
- package/dist/dev/vidply.SoundCloudRenderer-HCMKXHSX.js.map +7 -0
- package/dist/dev/{vidply.TranscriptManager-T3BVTZHZ.js → vidply.TranscriptManager-EIIN5YOF.js} +2 -2
- package/dist/dev/{vidply.VimeoRenderer-DY2FG7LZ.js → vidply.VimeoRenderer-SLEBCZTT.js} +1 -2
- package/dist/dev/vidply.VimeoRenderer-SLEBCZTT.js.map +7 -0
- package/dist/dev/{vidply.YouTubeRenderer-EVXXE34A.js → vidply.YouTubeRenderer-E6F4UGVF.js} +1 -2
- package/dist/dev/vidply.YouTubeRenderer-E6F4UGVF.js.map +7 -0
- package/dist/dev/{vidply.chunk-74NJTDQI.js → vidply.chunk-AXXU22HR.js} +87 -10
- package/dist/dev/{vidply.chunk-74NJTDQI.js.map → vidply.chunk-AXXU22HR.js.map} +2 -2
- package/dist/dev/vidply.esm.js +32 -50
- package/dist/dev/vidply.esm.js.map +2 -2
- package/dist/legacy/vidply.js +119 -58
- package/dist/legacy/vidply.js.map +3 -3
- package/dist/legacy/vidply.min.js +1 -1
- package/dist/legacy/vidply.min.meta.json +18 -18
- package/dist/prod/vidply.SoundCloudRenderer-D2FNOEG6.min.js +6 -0
- package/dist/prod/{vidply.TranscriptManager-GPAOXEK4.min.js → vidply.TranscriptManager-VXCTCJ7X.min.js} +1 -1
- package/dist/prod/vidply.VimeoRenderer-QELFZVDU.min.js +6 -0
- package/dist/prod/vidply.YouTubeRenderer-ZL6YUHTF.min.js +6 -0
- package/dist/prod/{vidply.chunk-OM7DNW5P.min.js → vidply.chunk-Z6BHMOGK.min.js} +1 -1
- package/dist/prod/vidply.esm.min.js +3 -3
- package/dist/vidply.css +218 -108
- package/dist/vidply.esm.min.meta.json +33 -33
- package/dist/vidply.min.css +1 -1
- package/package.json +3 -3
- package/src/controls/ControlBar.js +3 -0
- package/src/controls/KeyboardManager.js +19 -0
- package/src/core/Player.js +1 -64
- package/src/core/SignLanguageManager.js +18 -4
- package/src/index.js +3 -1
- package/src/renderers/SoundCloudRenderer.js +0 -2
- package/src/renderers/VimeoRenderer.js +0 -1
- package/src/renderers/YouTubeRenderer.js +0 -1
- package/src/styles/vidply.css +218 -108
- package/src/utils/DraggableResizable.js +123 -12
- package/dist/dev/vidply.SoundCloudRenderer-RIA3QKP3.js.map +0 -7
- package/dist/dev/vidply.VimeoRenderer-DY2FG7LZ.js.map +0 -7
- package/dist/dev/vidply.YouTubeRenderer-EVXXE34A.js.map +0 -7
- package/dist/prod/vidply.SoundCloudRenderer-BFV5SSIU.min.js +0 -6
- package/dist/prod/vidply.VimeoRenderer-UQWHQ4LC.min.js +0 -6
- package/dist/prod/vidply.YouTubeRenderer-K7A57ICA.min.js +0 -6
- /package/dist/dev/{vidply.TranscriptManager-T3BVTZHZ.js.map → vidply.TranscriptManager-EIIN5YOF.js.map} +0 -0
package/dist/dev/vidply.esm.js
CHANGED
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
focusFirstMenuItem,
|
|
22
22
|
i18n,
|
|
23
23
|
preventDragOnElement
|
|
24
|
-
} from "./vidply.chunk-
|
|
24
|
+
} from "./vidply.chunk-AXXU22HR.js";
|
|
25
25
|
|
|
26
26
|
// src/utils/EventEmitter.js
|
|
27
27
|
var EventEmitter = class {
|
|
@@ -271,6 +271,7 @@ var ControlBar = class {
|
|
|
271
271
|
}
|
|
272
272
|
if (menuRect.top < 10) {
|
|
273
273
|
menu.style.top = "10px";
|
|
274
|
+
menu.style.bottom = "auto";
|
|
274
275
|
}
|
|
275
276
|
if (menuRect.bottom > viewportHeight - 10) {
|
|
276
277
|
menu.style.bottom = "10px";
|
|
@@ -3235,6 +3236,20 @@ var KeyboardManager = class {
|
|
|
3235
3236
|
if (playlistButton) {
|
|
3236
3237
|
return;
|
|
3237
3238
|
}
|
|
3239
|
+
const signWrapper = activeElement.closest(".vidply-sign-language-wrapper");
|
|
3240
|
+
if (signWrapper) {
|
|
3241
|
+
const draggable = this.player.signLanguageManager?.draggable;
|
|
3242
|
+
if (draggable?.keyboardDragMode || draggable?.keyboardResizeMode) {
|
|
3243
|
+
return;
|
|
3244
|
+
}
|
|
3245
|
+
}
|
|
3246
|
+
const transcriptWindow = activeElement.closest(".vidply-transcript-window");
|
|
3247
|
+
if (transcriptWindow) {
|
|
3248
|
+
const draggable = this.player.transcriptManager?.draggableResizable;
|
|
3249
|
+
if (draggable?.keyboardDragMode || draggable?.keyboardResizeMode) {
|
|
3250
|
+
return;
|
|
3251
|
+
}
|
|
3252
|
+
}
|
|
3238
3253
|
}
|
|
3239
3254
|
const key = e.key;
|
|
3240
3255
|
let handled = false;
|
|
@@ -4298,7 +4313,7 @@ var SignLanguageManager = class {
|
|
|
4298
4313
|
_setupInteraction() {
|
|
4299
4314
|
const isMobile2 = window.innerWidth < 768;
|
|
4300
4315
|
const isFullscreen = this.player.state.fullscreen;
|
|
4301
|
-
if (isMobile2 && !isFullscreen) {
|
|
4316
|
+
if (isMobile2 && !isFullscreen && this.player?.options?.signLanguageDragOnMobile === false) {
|
|
4302
4317
|
if (this.draggable) {
|
|
4303
4318
|
this.draggable.destroy();
|
|
4304
4319
|
this.draggable = null;
|
|
@@ -4308,7 +4323,9 @@ var SignLanguageManager = class {
|
|
|
4308
4323
|
if (this.draggable) return;
|
|
4309
4324
|
const classPrefix = this.player.options.classPrefix;
|
|
4310
4325
|
this.draggable = new DraggableResizable(this.wrapper, {
|
|
4311
|
-
|
|
4326
|
+
// Allow dragging from anywhere on the sign-language window (better for touch).
|
|
4327
|
+
// We still block dragging when interacting with controls via `onDragStart` below.
|
|
4328
|
+
dragHandle: this.wrapper,
|
|
4312
4329
|
resizeHandles: this.resizeHandles,
|
|
4313
4330
|
constrainToViewport: true,
|
|
4314
4331
|
maintainAspectRatio: true,
|
|
@@ -4557,9 +4574,15 @@ var SignLanguageManager = class {
|
|
|
4557
4574
|
hasTextClass: true,
|
|
4558
4575
|
onClick: () => {
|
|
4559
4576
|
this.toggleKeyboardDragMode();
|
|
4560
|
-
this.hideSettingsMenu();
|
|
4577
|
+
this.hideSettingsMenu({ focusButton: false });
|
|
4578
|
+
if (this.draggable?.keyboardDragMode) {
|
|
4579
|
+
setTimeout(() => {
|
|
4580
|
+
this.wrapper?.focus?.({ preventScroll: true });
|
|
4581
|
+
}, 20);
|
|
4582
|
+
}
|
|
4561
4583
|
}
|
|
4562
4584
|
});
|
|
4585
|
+
dragOption.setAttribute("data-setting", "keyboard-drag");
|
|
4563
4586
|
dragOption.setAttribute("role", "switch");
|
|
4564
4587
|
dragOption.setAttribute("aria-checked", "false");
|
|
4565
4588
|
this._removeTooltipFromMenuItem(dragOption);
|
|
@@ -5251,7 +5274,7 @@ var Player = class _Player extends EventEmitter {
|
|
|
5251
5274
|
if (!this.options.transcript && !this.options.transcriptButton) {
|
|
5252
5275
|
return null;
|
|
5253
5276
|
}
|
|
5254
|
-
const module = await import("./vidply.TranscriptManager-
|
|
5277
|
+
const module = await import("./vidply.TranscriptManager-EIIN5YOF.js");
|
|
5255
5278
|
const Manager = module.TranscriptManager || module.default;
|
|
5256
5279
|
if (!Manager) {
|
|
5257
5280
|
return null;
|
|
@@ -5335,23 +5358,9 @@ var Player = class _Player extends EventEmitter {
|
|
|
5335
5358
|
if (this.options.height) {
|
|
5336
5359
|
this.container.style.height = typeof this.options.height === "number" ? `${this.options.height}px` : this.options.height;
|
|
5337
5360
|
}
|
|
5338
|
-
if (this.element.tagName === "VIDEO" && !this.options.height) {
|
|
5339
|
-
const wAttr = parseInt(this.element.getAttribute("width") || "", 10);
|
|
5340
|
-
const hAttr = parseInt(this.element.getAttribute("height") || "", 10);
|
|
5341
|
-
if (Number.isFinite(wAttr) && Number.isFinite(hAttr) && wAttr > 0 && hAttr > 0) {
|
|
5342
|
-
if (!this.container.style.aspectRatio) {
|
|
5343
|
-
this.container.style.aspectRatio = `${wAttr} / ${hAttr}`;
|
|
5344
|
-
}
|
|
5345
|
-
if (this.videoWrapper && !this.videoWrapper.style.aspectRatio) {
|
|
5346
|
-
this.videoWrapper.style.aspectRatio = `${wAttr} / ${hAttr}`;
|
|
5347
|
-
this.videoWrapper.style.height = "auto";
|
|
5348
|
-
}
|
|
5349
|
-
}
|
|
5350
|
-
}
|
|
5351
5361
|
if (this.options.poster && this.element.tagName === "VIDEO") {
|
|
5352
5362
|
const resolvedPoster = this.resolvePosterPath(this.options.poster);
|
|
5353
5363
|
this.element.poster = resolvedPoster;
|
|
5354
|
-
this.applyPosterAspectRatio(resolvedPoster);
|
|
5355
5364
|
}
|
|
5356
5365
|
if (this.element.tagName === "VIDEO") {
|
|
5357
5366
|
this.createPlayButtonOverlay();
|
|
@@ -5379,34 +5388,6 @@ var Player = class _Player extends EventEmitter {
|
|
|
5379
5388
|
}
|
|
5380
5389
|
}, { once: true });
|
|
5381
5390
|
}
|
|
5382
|
-
/**
|
|
5383
|
-
* Apply aspect ratio to the video wrapper based on the poster's intrinsic size.
|
|
5384
|
-
* This helps render correct poster sizing before media metadata is available.
|
|
5385
|
-
*/
|
|
5386
|
-
applyPosterAspectRatio(posterUrl) {
|
|
5387
|
-
try {
|
|
5388
|
-
if (!posterUrl) return;
|
|
5389
|
-
if (this.element.tagName !== "VIDEO") return;
|
|
5390
|
-
if (!this.videoWrapper) return;
|
|
5391
|
-
if (this.options.width || this.options.height) return;
|
|
5392
|
-
if (this._posterAspectAppliedFor === posterUrl) return;
|
|
5393
|
-
this._posterAspectAppliedFor = posterUrl;
|
|
5394
|
-
const img = new Image();
|
|
5395
|
-
img.decoding = "async";
|
|
5396
|
-
img.onload = () => {
|
|
5397
|
-
const w = img.naturalWidth;
|
|
5398
|
-
const h = img.naturalHeight;
|
|
5399
|
-
if (!w || !h) return;
|
|
5400
|
-
this.videoWrapper.style.aspectRatio = `${w} / ${h}`;
|
|
5401
|
-
this.videoWrapper.style.height = "auto";
|
|
5402
|
-
if (this.container && !this.container.style.aspectRatio) {
|
|
5403
|
-
this.container.style.aspectRatio = `${w} / ${h}`;
|
|
5404
|
-
}
|
|
5405
|
-
};
|
|
5406
|
-
img.src = posterUrl;
|
|
5407
|
-
} catch (e) {
|
|
5408
|
-
}
|
|
5409
|
-
}
|
|
5410
5391
|
createPlayButtonOverlay() {
|
|
5411
5392
|
this.playButtonOverlay = createPlayOverlay();
|
|
5412
5393
|
this.playButtonOverlay.addEventListener("click", () => {
|
|
@@ -5468,16 +5449,16 @@ var Player = class _Player extends EventEmitter {
|
|
|
5468
5449
|
}
|
|
5469
5450
|
let rendererClass = HTML5Renderer;
|
|
5470
5451
|
if (src.includes("youtube.com") || src.includes("youtu.be")) {
|
|
5471
|
-
const module = await import("./vidply.YouTubeRenderer-
|
|
5452
|
+
const module = await import("./vidply.YouTubeRenderer-E6F4UGVF.js");
|
|
5472
5453
|
rendererClass = module.YouTubeRenderer || module.default;
|
|
5473
5454
|
} else if (src.includes("vimeo.com")) {
|
|
5474
|
-
const module = await import("./vidply.VimeoRenderer-
|
|
5455
|
+
const module = await import("./vidply.VimeoRenderer-SLEBCZTT.js");
|
|
5475
5456
|
rendererClass = module.VimeoRenderer || module.default;
|
|
5476
5457
|
} else if (src.includes(".m3u8")) {
|
|
5477
5458
|
const module = await import("./vidply.HLSRenderer-YGWCAICA.js");
|
|
5478
5459
|
rendererClass = module.HLSRenderer || module.default;
|
|
5479
5460
|
} else if (src.includes("soundcloud.com") || src.includes("api.soundcloud.com")) {
|
|
5480
|
-
const module = await import("./vidply.SoundCloudRenderer-
|
|
5461
|
+
const module = await import("./vidply.SoundCloudRenderer-HCMKXHSX.js");
|
|
5481
5462
|
rendererClass = module.SoundCloudRenderer || module.default;
|
|
5482
5463
|
}
|
|
5483
5464
|
this.log(`Using ${rendererClass?.name || "HTML5Renderer"} renderer`);
|
|
@@ -9809,6 +9790,7 @@ function parseDataAttributes(dataset) {
|
|
|
9809
9790
|
"responsive": "responsive",
|
|
9810
9791
|
"pipButton": "pipButton",
|
|
9811
9792
|
"fullscreenButton": "fullscreenButton"
|
|
9793
|
+
// Layout
|
|
9812
9794
|
};
|
|
9813
9795
|
Object.keys(attributeMap).forEach((dataKey) => {
|
|
9814
9796
|
const optionKey = attributeMap[dataKey];
|