shaka-player 3.1.0 → 3.1.4
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/AUTHORS +8 -2
- package/CHANGELOG.md +209 -0
- package/CONTRIBUTORS +10 -3
- package/README.md +3 -0
- package/build/apps.py +2 -2
- package/build/check.py +2 -2
- package/build/conformance.textproto +0 -9
- package/build/generateExterns.js +1 -1
- package/build/misspellings.txt +1 -0
- package/build/shakaBuildHelpers.py +6 -5
- package/build/subprocessWindowsPatch.py +103 -0
- package/demo/common/asset.js +11 -0
- package/demo/common/assets.js +1 -1
- package/demo/common/message_ids.js +5 -0
- package/demo/config.js +2 -1
- package/demo/custom.js +84 -3
- package/demo/demo.less +13 -1
- package/demo/demo_utils.js +1 -0
- package/demo/input.js +31 -12
- package/demo/input_container.js +24 -1
- package/demo/locales/en.json +6 -1
- package/demo/locales/source.json +20 -0
- package/demo/main.js +5 -1
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +99 -91
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +99 -91
- package/dist/demo.compiled.map +3 -3
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +9 -9
- package/dist/locales.js +36 -34
- package/dist/receiver.compiled.debug.js +74 -70
- package/dist/receiver.compiled.debug.map +3 -3
- package/dist/receiver.compiled.js +74 -70
- package/dist/receiver.compiled.map +3 -3
- package/dist/shaka-player.compiled.d.ts +165 -9
- package/dist/shaka-player.compiled.debug.d.ts +165 -9
- package/dist/shaka-player.compiled.debug.externs.js +179 -11
- package/dist/shaka-player.compiled.debug.js +367 -339
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +179 -11
- package/dist/shaka-player.compiled.js +818 -807
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +165 -9
- package/dist/shaka-player.ui.debug.d.ts +165 -9
- package/dist/shaka-player.ui.debug.externs.js +181 -13
- package/dist/shaka-player.ui.debug.js +459 -429
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +181 -13
- package/dist/shaka-player.ui.js +973 -961
- package/dist/shaka-player.ui.map +4 -4
- package/docs/tutorials/fairplay.md +1 -1
- package/docs/tutorials/faq.md +25 -0
- package/docs/tutorials/index.json +2 -2
- package/docs/tutorials/upgrade-v3.md +38 -0
- package/docs/tutorials/upgrade.md +3 -3
- package/externs/ima.js +4 -0
- package/externs/media_capabilities.js +16 -0
- package/externs/shaka/ads.js +2 -0
- package/externs/shaka/net.js +2 -2
- package/externs/shaka/player.js +6 -0
- package/karma.conf.js +1 -0
- package/lib/abr/simple_abr_manager.js +1 -1
- package/lib/ads/ad_manager.js +29 -11
- package/lib/ads/client_side_ad_manager.js +76 -86
- package/lib/ads/server_side_ad_manager.js +26 -11
- package/lib/cast/cast_proxy.js +3 -2
- package/lib/cast/cast_receiver.js +2 -1
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cea/sei_processor.js +24 -17
- package/lib/dash/dash_parser.js +107 -4
- package/lib/dash/segment_list.js +1 -1
- package/lib/dash/segment_template.js +45 -15
- package/lib/dependencies/all.js +15 -15
- package/lib/hls/hls_parser.js +46 -18
- package/lib/media/closed_caption_parser.js +3 -1
- package/lib/media/content_workarounds.js +18 -0
- package/lib/media/drm_engine.js +20 -1
- package/lib/media/gap_jumping_controller.js +8 -4
- package/lib/media/media_source_engine.js +1 -2
- package/lib/media/playhead.js +1 -1
- package/lib/media/presentation_timeline.js +3 -1
- package/lib/media/segment_index.js +38 -12
- package/lib/media/segment_reference.js +8 -0
- package/lib/media/streaming_engine.js +30 -21
- package/lib/net/http_fetch_plugin.js +2 -2
- package/lib/net/networking_engine.js +3 -2
- package/lib/offline/storage.js +4 -0
- package/lib/player.js +113 -56
- package/lib/polyfill/encryption_scheme.js +2 -0
- package/lib/polyfill/fullscreen.js +2 -0
- package/lib/polyfill/mathround.js +2 -0
- package/lib/polyfill/media_capabilities.js +62 -23
- package/lib/polyfill/mediasource.js +8 -0
- package/lib/polyfill/orientation.js +3 -1
- package/lib/polyfill/patchedmediakeys_apple.js +6 -4
- package/lib/polyfill/patchedmediakeys_ms.js +6 -4
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
- package/lib/polyfill/pip_webkit.js +2 -0
- package/lib/polyfill/storage_estimate.js +2 -0
- package/lib/polyfill/video_play_promise.js +2 -0
- package/lib/polyfill/videoplaybackquality.js +2 -0
- package/lib/polyfill/vttcue.js +2 -0
- package/lib/text/cue.js +11 -0
- package/lib/text/mp4_ttml_parser.js +3 -0
- package/lib/text/text_engine.js +14 -2
- package/lib/text/ttml_text_parser.js +52 -30
- package/lib/text/ui_text_displayer.js +255 -82
- package/lib/text/vtt_text_parser.js +4 -2
- package/lib/util/error.js +1 -4
- package/lib/util/fake_event.js +53 -7
- package/lib/util/mime_utils.js +33 -0
- package/lib/util/mp4_box_parsers.js +1 -1
- package/lib/util/mp4_parser.js +14 -0
- package/lib/util/networking.js +1 -1
- package/lib/util/periods.js +132 -37
- package/lib/util/platform.js +13 -1
- package/lib/util/stream_utils.js +46 -7
- package/package.json +3 -3
- package/test/cast/cast_proxy_unit.js +12 -6
- package/test/cast/cast_receiver_integration.js +1 -1
- package/test/cast/cast_utils_unit.js +1 -1
- package/test/cea/mp4_cea_parser_unit.js +26 -0
- package/test/dash/dash_parser_live_unit.js +1 -0
- package/test/dash/dash_parser_manifest_unit.js +187 -1
- package/test/dash/dash_parser_segment_template_unit.js +3 -3
- package/test/demo/demo_unit.js +0 -1
- package/test/hls/hls_parser_unit.js +45 -1
- package/test/media/closed_caption_parser_unit.js +20 -0
- package/test/media/drm_engine_unit.js +59 -3
- package/test/media/playhead_unit.js +27 -1
- package/test/media/presentation_timeline_unit.js +19 -0
- package/test/media/segment_index_unit.js +76 -3
- package/test/media/streaming_engine_unit.js +3 -3
- package/test/player_integration.js +38 -0
- package/test/player_unit.js +125 -6
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +30 -0
- package/test/test/assets/3675/dash_1.mpd +30 -0
- package/test/test/assets/3675/dash_2.mpd +30 -0
- package/test/test/assets/3675/dash_3.mpd +30 -0
- package/test/test/assets/3675/dash_4.mpd +30 -0
- package/test/test/assets/3675/dash_5.mpd +26 -0
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/empty_caption_video_init.mp4 +0 -0
- package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
- package/test/test/util/fake_ad_manager.js +4 -1
- package/test/test/util/simple_fakes.js +5 -3
- package/test/test/util/waiter.js +36 -2
- package/test/text/ttml_text_parser_unit.js +55 -0
- package/test/text/ui_text_displayer_unit.js +95 -18
- package/test/text/vtt_text_parser_unit.js +17 -1
- package/test/ui/localization_unit.js +15 -14
- package/test/ui/text_displayer_layout_unit.js +52 -1
- package/test/ui/ui_unit.js +4 -0
- package/test/util/mp4_box_parsers_unit.js +28 -0
- package/test/util/periods_unit.js +190 -2
- package/test/util/stream_utils_unit.js +56 -5
- package/ui/airplay_button.js +5 -0
- package/ui/big_play_button.js +10 -0
- package/ui/cast_button.js +2 -3
- package/ui/controls.js +9 -7
- package/ui/less/containers.less +10 -5
- package/ui/locales/en.json +1 -0
- package/ui/locales/ru.json +6 -6
- package/ui/locales/source.json +4 -0
- package/ui/localization.js +28 -51
- package/ui/pip_button.js +2 -3
- package/ui/play_button.js +10 -10
- package/ui/small_play_button.js +12 -0
- package/ui/ui.js +1 -1
- package/docs/tutorials/upgrade-v2-4.md +0 -481
package/demo/custom.js
CHANGED
|
@@ -10,6 +10,7 @@ goog.provide('shakaDemo.Custom');
|
|
|
10
10
|
|
|
11
11
|
goog.require('ShakaDemoAssetInfo');
|
|
12
12
|
goog.require('shakaDemo.AssetCard');
|
|
13
|
+
goog.require('shakaDemo.Input');
|
|
13
14
|
goog.require('shakaDemo.InputContainer');
|
|
14
15
|
goog.require('shakaDemo.Main');
|
|
15
16
|
goog.require('shakaDemo.MessageIds');
|
|
@@ -104,12 +105,14 @@ shakaDemo.Custom = class {
|
|
|
104
105
|
* @param {!shakaDemo.InputContainer} container
|
|
105
106
|
* @param {string} name
|
|
106
107
|
* @param {function(!HTMLInputElement, !Element)} setup
|
|
107
|
-
* @param {function(!Element)} onChange
|
|
108
|
+
* @param {function(!Element, !shakaDemo.Input)} onChange
|
|
109
|
+
* @param {boolean=} isTextArea
|
|
108
110
|
* @private
|
|
109
111
|
*/
|
|
110
|
-
makeField_(container, name, setup, onChange) {
|
|
112
|
+
makeField_(container, name, setup, onChange, isTextArea) {
|
|
111
113
|
container.addRow(/* labelString= */ null, /* tooltipString= */ null);
|
|
112
|
-
const input =
|
|
114
|
+
const input =
|
|
115
|
+
new shakaDemo.TextInput(container, name, onChange, isTextArea);
|
|
113
116
|
input.extra().textContent = name;
|
|
114
117
|
setup(input.input(), input.container());
|
|
115
118
|
}
|
|
@@ -423,6 +426,63 @@ shakaDemo.Custom = class {
|
|
|
423
426
|
return drmDiv;
|
|
424
427
|
}
|
|
425
428
|
|
|
429
|
+
/**
|
|
430
|
+
* @param {!ShakaDemoAssetInfo} assetInProgress
|
|
431
|
+
* @param {!Array.<!HTMLInputElement>} inputsToCheck
|
|
432
|
+
* @return {!Element} div
|
|
433
|
+
* @private
|
|
434
|
+
*/
|
|
435
|
+
makeAssetDialogContentsExtra_(assetInProgress, inputsToCheck) {
|
|
436
|
+
const extraConfigDiv = document.createElement('div');
|
|
437
|
+
const containerStyle = shakaDemo.InputContainer.Style.FLEX;
|
|
438
|
+
const container = new shakaDemo.InputContainer(
|
|
439
|
+
extraConfigDiv, /* headerText= */ null, containerStyle,
|
|
440
|
+
/* docLink= */ null);
|
|
441
|
+
container.getClassList().add('wide-input');
|
|
442
|
+
container.setDefaultRowClass('wide-input');
|
|
443
|
+
|
|
444
|
+
const extraSetup = (input, container) => {
|
|
445
|
+
input.setAttribute('rows', 10);
|
|
446
|
+
|
|
447
|
+
if (assetInProgress.extraConfig) {
|
|
448
|
+
// Pretty-print the extra config.
|
|
449
|
+
input.value = JSON.stringify(
|
|
450
|
+
assetInProgress.extraConfig,
|
|
451
|
+
/* replacer= */ null, /* spacing= */ 2);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
inputsToCheck.push(input);
|
|
455
|
+
|
|
456
|
+
// Make an error that shows up if you did not provide valid JSON.
|
|
457
|
+
const error = document.createElement('span');
|
|
458
|
+
error.classList.add('mdl-textfield__error');
|
|
459
|
+
error.textContent = shakaDemoMain.getLocalizedString(
|
|
460
|
+
shakaDemo.MessageIds.INVALID_JSON_CONFIG_ERROR);
|
|
461
|
+
|
|
462
|
+
container.appendChild(error);
|
|
463
|
+
};
|
|
464
|
+
const extraOnChange = (inputElement, inputWrapper) => {
|
|
465
|
+
try {
|
|
466
|
+
if (!inputElement.value) {
|
|
467
|
+
assetInProgress.extraConfig = null;
|
|
468
|
+
} else {
|
|
469
|
+
const config = /** @type {!Object} */(JSON.parse(inputElement.value));
|
|
470
|
+
assetInProgress.extraConfig = config;
|
|
471
|
+
}
|
|
472
|
+
inputWrapper.setValid(true);
|
|
473
|
+
} catch (exception) {
|
|
474
|
+
inputWrapper.setValid(false);
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
const extraConfigLabel = shakaDemoMain.getLocalizedString(
|
|
478
|
+
shakaDemo.MessageIds.EXTRA_SHAKA_PLAYER_CONFIG);
|
|
479
|
+
this.makeField_(
|
|
480
|
+
container, extraConfigLabel, extraSetup, extraOnChange,
|
|
481
|
+
/* isTextArea= */ true);
|
|
482
|
+
|
|
483
|
+
return extraConfigDiv;
|
|
484
|
+
}
|
|
485
|
+
|
|
426
486
|
/**
|
|
427
487
|
* @param {!ShakaDemoAssetInfo} assetInProgress
|
|
428
488
|
* @param {!Array.<!HTMLInputElement>} inputsToCheck
|
|
@@ -528,6 +588,22 @@ shakaDemo.Custom = class {
|
|
|
528
588
|
this.makeField_(
|
|
529
589
|
container, iconURLName, iconSetup, iconOnChange);
|
|
530
590
|
|
|
591
|
+
// Make the MIME type field.
|
|
592
|
+
const mimeTypeSetup = (input, container) => {
|
|
593
|
+
if (assetInProgress.mimeType) {
|
|
594
|
+
input.value = assetInProgress.mimeType;
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
|
|
598
|
+
const mimeTypeOnChange = (input) => {
|
|
599
|
+
assetInProgress.mimeType = input.value || null;
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
const mimeTypeName = shakaDemoMain.getLocalizedString(
|
|
603
|
+
shakaDemo.MessageIds.MIME_TYPE);
|
|
604
|
+
this.makeField_(
|
|
605
|
+
container, mimeTypeName, mimeTypeSetup, mimeTypeOnChange);
|
|
606
|
+
|
|
531
607
|
return mainDiv;
|
|
532
608
|
}
|
|
533
609
|
|
|
@@ -598,6 +674,8 @@ shakaDemo.Custom = class {
|
|
|
598
674
|
assetInProgress, inputsToCheck);
|
|
599
675
|
const adsDiv = this.makeAssetDialogContentsAds_(
|
|
600
676
|
assetInProgress, inputsToCheck);
|
|
677
|
+
const extraConfigDiv = this.makeAssetDialogContentsExtra_(
|
|
678
|
+
assetInProgress, inputsToCheck);
|
|
601
679
|
const finishDiv = this.makeAssetDialogContentsFinish_(
|
|
602
680
|
assetInProgress, inputsToCheck);
|
|
603
681
|
|
|
@@ -635,6 +713,8 @@ shakaDemo.Custom = class {
|
|
|
635
713
|
shakaDemo.MessageIds.HEADERS_TAB, headersDiv, /* startOn= */ false);
|
|
636
714
|
addTabButton(
|
|
637
715
|
shakaDemo.MessageIds.ADS_TAB, adsDiv, /* startOn= */ false);
|
|
716
|
+
addTabButton(
|
|
717
|
+
shakaDemo.MessageIds.EXTRA_TAB, extraConfigDiv, /* startOn= */ false);
|
|
638
718
|
|
|
639
719
|
// Append the divs in the desired order.
|
|
640
720
|
this.dialog_.appendChild(tabDiv);
|
|
@@ -642,6 +722,7 @@ shakaDemo.Custom = class {
|
|
|
642
722
|
this.dialog_.appendChild(drmDiv);
|
|
643
723
|
this.dialog_.appendChild(headersDiv);
|
|
644
724
|
this.dialog_.appendChild(adsDiv);
|
|
725
|
+
this.dialog_.appendChild(extraConfigDiv);
|
|
645
726
|
this.dialog_.appendChild(finishDiv);
|
|
646
727
|
this.dialog_.appendChild(iconDiv);
|
|
647
728
|
|
package/demo/demo.less
CHANGED
|
@@ -373,7 +373,7 @@ html, body {
|
|
|
373
373
|
|
|
374
374
|
.mdl-dialog {
|
|
375
375
|
/* Override MDL dialog width, so that input elements don't overflow. */
|
|
376
|
-
width:
|
|
376
|
+
width: 420px;
|
|
377
377
|
}
|
|
378
378
|
|
|
379
379
|
.mdl-dialog img {
|
|
@@ -533,6 +533,8 @@ footer .mdl-mega-footer__link-list {
|
|
|
533
533
|
|
|
534
534
|
/* Style the input containers. */
|
|
535
535
|
.input-container-row {
|
|
536
|
+
/* When a row is preceded by its label, inline-block will ensure the label
|
|
537
|
+
* sits before the input row on the same line. */
|
|
536
538
|
display: inline-block;
|
|
537
539
|
}
|
|
538
540
|
|
|
@@ -560,3 +562,13 @@ footer .mdl-mega-footer__link-list {
|
|
|
560
562
|
* So give it a fixed maximum instead. */
|
|
561
563
|
max-height: 1000px;
|
|
562
564
|
}
|
|
565
|
+
|
|
566
|
+
.input-header {
|
|
567
|
+
font-size: 125%;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.wide-input,
|
|
571
|
+
.wide-input .input-container-row,
|
|
572
|
+
.wide-input .mdl-textfield {
|
|
573
|
+
width: 100%;
|
|
574
|
+
}
|
package/demo/demo_utils.js
CHANGED
|
@@ -38,6 +38,7 @@ shakaDemo.Utils = class {
|
|
|
38
38
|
// Override config values with custom names.
|
|
39
39
|
configOverride('audiolang', 'preferredAudioLanguage');
|
|
40
40
|
configOverride('textlang', 'preferredTextLanguage');
|
|
41
|
+
configOverride('textrole', 'preferredTextRole');
|
|
41
42
|
configOverride('channels', 'preferredAudioChannelCount');
|
|
42
43
|
|
|
43
44
|
// Override config values that are handled manually.
|
package/demo/input.js
CHANGED
|
@@ -25,7 +25,7 @@ shakaDemo.Input = class {
|
|
|
25
25
|
* the input object.
|
|
26
26
|
* @param {string} extraType The element type for the "sibling element" to the
|
|
27
27
|
* input object. If null, it adds no such element.
|
|
28
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
28
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
29
29
|
*/
|
|
30
30
|
constructor(parentContainer, inputType, containerType, extraType, onChange) {
|
|
31
31
|
/** @private {!Element} */
|
|
@@ -36,8 +36,14 @@ shakaDemo.Input = class {
|
|
|
36
36
|
this.input_ =
|
|
37
37
|
/** @type {!HTMLInputElement} */(document.createElement(inputType));
|
|
38
38
|
this.input_.onchange = () => {
|
|
39
|
-
onChange(this.input_);
|
|
39
|
+
onChange(this.input_, this);
|
|
40
40
|
};
|
|
41
|
+
// <textarea> elements need to also react to 'input' events.
|
|
42
|
+
if (inputType == 'textarea') {
|
|
43
|
+
this.input_.oninput = () => {
|
|
44
|
+
onChange(this.input_, this);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
41
47
|
this.input_.id = shakaDemo.Input.generateNewId_('input');
|
|
42
48
|
this.container_.appendChild(this.input_);
|
|
43
49
|
|
|
@@ -81,6 +87,17 @@ shakaDemo.Input = class {
|
|
|
81
87
|
return this.extra_;
|
|
82
88
|
}
|
|
83
89
|
|
|
90
|
+
/** @param {boolean} valid */
|
|
91
|
+
setValid(valid) {
|
|
92
|
+
if (valid) {
|
|
93
|
+
this.input_.setCustomValidity(''); // valid
|
|
94
|
+
this.container_.classList.remove('is-invalid');
|
|
95
|
+
} else {
|
|
96
|
+
this.input_.setCustomValidity('invalid'); // any message will do
|
|
97
|
+
this.container_.parentElement.classList.add('is-invalid');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
84
101
|
/**
|
|
85
102
|
* @param {string} prefix
|
|
86
103
|
* @return {string}
|
|
@@ -105,7 +122,7 @@ shakaDemo.SelectInput = class extends shakaDemo.Input {
|
|
|
105
122
|
/**
|
|
106
123
|
* @param {!shakaDemo.InputContainer} parentContainer
|
|
107
124
|
* @param {?shakaDemo.MessageIds} name
|
|
108
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
125
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
109
126
|
* @param {!Object.<string, string>} values
|
|
110
127
|
*/
|
|
111
128
|
constructor(parentContainer, name, onChange, values) {
|
|
@@ -137,7 +154,7 @@ shakaDemo.BoolInput = class extends shakaDemo.Input {
|
|
|
137
154
|
/**
|
|
138
155
|
* @param {!shakaDemo.InputContainer} parentContainer
|
|
139
156
|
* @param {string} name
|
|
140
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
157
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
141
158
|
*/
|
|
142
159
|
constructor(parentContainer, name, onChange) {
|
|
143
160
|
super(parentContainer, 'input', 'label', 'span', onChange);
|
|
@@ -159,10 +176,12 @@ shakaDemo.TextInput = class extends shakaDemo.Input {
|
|
|
159
176
|
/**
|
|
160
177
|
* @param {!shakaDemo.InputContainer} parentContainer
|
|
161
178
|
* @param {string} name
|
|
162
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
179
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
180
|
+
* @param {boolean=} isTextArea
|
|
163
181
|
*/
|
|
164
|
-
constructor(parentContainer, name, onChange) {
|
|
165
|
-
super(parentContainer, 'input', 'div', 'label',
|
|
182
|
+
constructor(parentContainer, name, onChange, isTextArea) {
|
|
183
|
+
super(parentContainer, isTextArea ? 'textarea' : 'input', 'div', 'label',
|
|
184
|
+
onChange);
|
|
166
185
|
this.container_.classList.add('mdl-textfield');
|
|
167
186
|
this.container_.classList.add('mdl-js-textfield');
|
|
168
187
|
this.container_.classList.add('mdl-textfield--floating-label');
|
|
@@ -180,11 +199,11 @@ shakaDemo.DatalistInput = class extends shakaDemo.TextInput {
|
|
|
180
199
|
/**
|
|
181
200
|
* @param {!shakaDemo.InputContainer} parentContainer
|
|
182
201
|
* @param {string} name
|
|
183
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
202
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
184
203
|
* @param {!Array.<string>} values
|
|
185
204
|
*/
|
|
186
205
|
constructor(parentContainer, name, onChange, values) {
|
|
187
|
-
super(parentContainer, name, onChange);
|
|
206
|
+
super(parentContainer, name, onChange, /* isTextArea= */ false);
|
|
188
207
|
// This element is not literally a datalist, as those are not supported on
|
|
189
208
|
// all platforms (and they also have no MDL style support).
|
|
190
209
|
// Instead, this is using the third-party "awesomplete" module, which acts
|
|
@@ -199,7 +218,7 @@ shakaDemo.DatalistInput = class extends shakaDemo.TextInput {
|
|
|
199
218
|
awesomplete.evaluate();
|
|
200
219
|
});
|
|
201
220
|
this.input_.addEventListener('awesomplete-selectcomplete', () => {
|
|
202
|
-
onChange(this.input_);
|
|
221
|
+
onChange(this.input_, this);
|
|
203
222
|
});
|
|
204
223
|
}
|
|
205
224
|
};
|
|
@@ -212,14 +231,14 @@ shakaDemo.NumberInput = class extends shakaDemo.TextInput {
|
|
|
212
231
|
/**
|
|
213
232
|
* @param {!shakaDemo.InputContainer} parentContainer
|
|
214
233
|
* @param {string} name
|
|
215
|
-
* @param {function(!HTMLInputElement)} onChange
|
|
234
|
+
* @param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
|
|
216
235
|
* @param {boolean} canBeDecimal
|
|
217
236
|
* @param {boolean} canBeZero
|
|
218
237
|
* @param {boolean} canBeUnset
|
|
219
238
|
*/
|
|
220
239
|
constructor(
|
|
221
240
|
parentContainer, name, onChange, canBeDecimal, canBeZero, canBeUnset) {
|
|
222
|
-
super(parentContainer, name, onChange);
|
|
241
|
+
super(parentContainer, name, onChange, /* isTextArea= */ false);
|
|
223
242
|
const error = document.createElement('span');
|
|
224
243
|
error.classList.add('mdl-textfield__error');
|
|
225
244
|
this.container_.appendChild(error);
|
package/demo/input_container.js
CHANGED
|
@@ -40,6 +40,9 @@ shakaDemo.InputContainer = class {
|
|
|
40
40
|
/** @private {?Element} */
|
|
41
41
|
this.latestRow_;
|
|
42
42
|
|
|
43
|
+
/** @private {?string} */
|
|
44
|
+
this.defaultRowClass_ = null;
|
|
45
|
+
|
|
43
46
|
/** @type {?Element} */
|
|
44
47
|
this.latestElementContainer;
|
|
45
48
|
|
|
@@ -117,7 +120,8 @@ shakaDemo.InputContainer = class {
|
|
|
117
120
|
}
|
|
118
121
|
});
|
|
119
122
|
} else {
|
|
120
|
-
this.header_ = document.createElement('
|
|
123
|
+
this.header_ = document.createElement('div');
|
|
124
|
+
this.header_.classList.add('input-header');
|
|
121
125
|
}
|
|
122
126
|
this.header_.textContent = shakaDemoMain.getLocalizedString(headerText);
|
|
123
127
|
parentDiv.appendChild(this.header_);
|
|
@@ -146,6 +150,24 @@ shakaDemo.InputContainer = class {
|
|
|
146
150
|
parentDiv.appendChild(link);
|
|
147
151
|
}
|
|
148
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Set the default row class for future calls to addRow().
|
|
155
|
+
*
|
|
156
|
+
* @param {?string} rowClass
|
|
157
|
+
*/
|
|
158
|
+
setDefaultRowClass(rowClass) {
|
|
159
|
+
this.defaultRowClass_ = rowClass;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Return the CSS class list for the container.
|
|
164
|
+
*
|
|
165
|
+
* @return {!DOMTokenList}
|
|
166
|
+
*/
|
|
167
|
+
getClassList() {
|
|
168
|
+
return this.table_.classList;
|
|
169
|
+
}
|
|
170
|
+
|
|
149
171
|
/**
|
|
150
172
|
* Makes a row, for storing an input.
|
|
151
173
|
* @param {?shakaDemo.MessageIds} labelString
|
|
@@ -153,6 +175,7 @@ shakaDemo.InputContainer = class {
|
|
|
153
175
|
* @param {string=} rowClass
|
|
154
176
|
*/
|
|
155
177
|
addRow(labelString, tooltipString, rowClass) {
|
|
178
|
+
rowClass = rowClass || this.defaultRowClass_ || '';
|
|
156
179
|
this.latestRow_ = document.createElement('div');
|
|
157
180
|
if (rowClass) {
|
|
158
181
|
this.latestRow_.classList.add(rowClass);
|
package/demo/locales/en.json
CHANGED
|
@@ -66,6 +66,8 @@
|
|
|
66
66
|
"DEMO_DURATION_BACKOFF": "Duration Backoff",
|
|
67
67
|
"DEMO_EDIT_CUSTOM": "Edit",
|
|
68
68
|
"DEMO_ENABLED": "Enabled",
|
|
69
|
+
"DEMO_EXTRA_SHAKA_PLAYER_CONFIG": "Extra Shaka Player configuration (JSON)",
|
|
70
|
+
"DEMO_EXTRA_TAB": "Extra Config",
|
|
69
71
|
"DEMO_FAIRPLAY": "Fairplay DRM",
|
|
70
72
|
"DEMO_FORCE_HTTPS": "Force HTTPS",
|
|
71
73
|
"DEMO_FORCE_TRANSMUX_TS": "Force Transmux TS",
|
|
@@ -89,11 +91,11 @@
|
|
|
89
91
|
"DEMO_IMA_ASSET_KEY": "Asset key (for LIVE DAI Content)",
|
|
90
92
|
"DEMO_IMA_CONTENT_SRC_ID": "Content source ID (for VOD DAI Content)",
|
|
91
93
|
"DEMO_IMA_VIDEO_ID": "Video ID (for VOD DAI Content)",
|
|
92
|
-
"DEMO_USE_FULL_SEGMENTS_FOR_START_TIME": "Use Full Segments For Start Time",
|
|
93
94
|
"DEMO_IGNORE_MIN_BUFFER_TIME": "Ignore Min Buffer Time",
|
|
94
95
|
"DEMO_IGNORE_TEXT_FAILURES": "Ignore Text Stream Failures",
|
|
95
96
|
"DEMO_INACCURATE_MANIFEST_TOLERANCE": "Inaccurate Manifest Tolerance",
|
|
96
97
|
"DEMO_INITIAL_SEGMENT_LIMIT": "Initial Segment Limit",
|
|
98
|
+
"DEMO_INVALID_JSON_CONFIG_ERROR": "Invalid JSON configuration",
|
|
97
99
|
"DEMO_IRT": "IRT",
|
|
98
100
|
"DEMO_JSDELIVR": "jsDelivr",
|
|
99
101
|
"DEMO_JUMP_LARGE_GAPS": "Jump Large Gaps",
|
|
@@ -130,6 +132,7 @@
|
|
|
130
132
|
"DEMO_USE_MEDIA_CAPABILITIES": "Use MediaCapabilities",
|
|
131
133
|
"DEMO_METACDN": "MetaCDN",
|
|
132
134
|
"DEMO_MICROSOFT": "Microsoft",
|
|
135
|
+
"DEMO_MIME_TYPE": "MIME Type",
|
|
133
136
|
"DEMO_MIN_BANDWIDTH": "Min Bandwidth",
|
|
134
137
|
"DEMO_MIN_FRAMERATE": "Min Framerate",
|
|
135
138
|
"DEMO_MIN_HEIGHT": "Min Height",
|
|
@@ -184,6 +187,7 @@
|
|
|
184
187
|
"DEMO_SURROUND_SEARCH": "Filters for assets with at least one surround sound audio track.",
|
|
185
188
|
"DEMO_SWITCH_INTERVAL": "Switch Interval",
|
|
186
189
|
"DEMO_TEXT_LANGUAGE": "Preferred Text Language",
|
|
190
|
+
"DEMO_TEXT_ROLE": "Preferred Text Role",
|
|
187
191
|
"DEMO_THUMBNAILS": "Thumbnails",
|
|
188
192
|
"DEMO_TIMEOUT": "Timeout Factor",
|
|
189
193
|
"DEMO_TRICK_MODE": "Special trick mode track",
|
|
@@ -205,6 +209,7 @@
|
|
|
205
209
|
"DEMO_UNSUPPORTED_NO_OFFLINE": "Your browser does not support offline storage.",
|
|
206
210
|
"DEMO_UPDATE_EXPIRATION_TIME": "Update expiration time",
|
|
207
211
|
"DEMO_UPLYNK": "Verizon Digital Media Services",
|
|
212
|
+
"DEMO_USE_FULL_SEGMENTS_FOR_START_TIME": "Use Full Segments For Start Time",
|
|
208
213
|
"DEMO_USE_NATIVE_HLS_SAFARI": "Use native HLS on Safari",
|
|
209
214
|
"DEMO_USE_PERSISTENT_LICENSES": "Use Persistent Licenses",
|
|
210
215
|
"DEMO_VIDEO_ROBUSTNESS": "Video Robustness",
|
package/demo/locales/source.json
CHANGED
|
@@ -267,6 +267,14 @@
|
|
|
267
267
|
"description": "The name of a configuration value.",
|
|
268
268
|
"message": "Enabled"
|
|
269
269
|
},
|
|
270
|
+
"DEMO_EXTRA_SHAKA_PLAYER_CONFIG": {
|
|
271
|
+
"description": "A label for a form field where extra Shaka Player configuration can be set",
|
|
272
|
+
"message": "Extra [PROPER_NAME:Shaka Player] configuration ([JARGON:JSON])"
|
|
273
|
+
},
|
|
274
|
+
"DEMO_EXTRA_TAB": {
|
|
275
|
+
"description": "The header for a tab within the custom asset creation dialog.",
|
|
276
|
+
"message": "Extra Config"
|
|
277
|
+
},
|
|
270
278
|
"DEMO_FAIRPLAY": {
|
|
271
279
|
"description": "Text that describes an asset that is protected with the Fairplay Digital Rights Management system.",
|
|
272
280
|
"message": "[PROPER_NAME:Fairplay] [JARGON:DRM]"
|
|
@@ -379,6 +387,10 @@
|
|
|
379
387
|
"description": "The name of a configuration value.",
|
|
380
388
|
"message": "Initial Segment Limit"
|
|
381
389
|
},
|
|
390
|
+
"DEMO_INVALID_JSON_CONFIG_ERROR": {
|
|
391
|
+
"description": "An error message for an invalid JSON configuration.",
|
|
392
|
+
"message": "Invalid JSON configuration"
|
|
393
|
+
},
|
|
382
394
|
"DEMO_IRT": {
|
|
383
395
|
"description": "Text that describes an asset that comes from the Institut f\u00fcr Rundfunktechnik asset library.",
|
|
384
396
|
"message": "[PROPER_NAME:IRT]"
|
|
@@ -523,6 +535,10 @@
|
|
|
523
535
|
"description": "Text that describes an asset that comes from the Microsoft.",
|
|
524
536
|
"message": "[PROPER_NAME:Microsoft]"
|
|
525
537
|
},
|
|
538
|
+
"DEMO_MIME_TYPE": {
|
|
539
|
+
"description": "The label on a field that allows users to provide a MIME type for a custom asset.",
|
|
540
|
+
"message": "MIME Type"
|
|
541
|
+
},
|
|
526
542
|
"DEMO_MIN_BANDWIDTH": {
|
|
527
543
|
"description": "The name of a configuration value.",
|
|
528
544
|
"message": "Min Bandwidth"
|
|
@@ -739,6 +755,10 @@
|
|
|
739
755
|
"description": "The name of a configuration value.",
|
|
740
756
|
"message": "Preferred Text Language"
|
|
741
757
|
},
|
|
758
|
+
"DEMO_TEXT_ROLE": {
|
|
759
|
+
"description": "The name of a configuration value.",
|
|
760
|
+
"message": "Preferred Text Role"
|
|
761
|
+
},
|
|
742
762
|
"DEMO_THUMBNAILS": {
|
|
743
763
|
"description": "Text that describes an asset that has a thumbnail stream.",
|
|
744
764
|
"message": "Thumbnails"
|
package/demo/main.js
CHANGED
|
@@ -1256,7 +1256,11 @@ shakaDemo.Main = class {
|
|
|
1256
1256
|
if (asset.imaAssetKey || (asset.imaContentSrcId && asset.imaVideoId)) {
|
|
1257
1257
|
manifestUri = await this.getManifestUriFromAdManager_(asset);
|
|
1258
1258
|
}
|
|
1259
|
-
await this.player_.load(
|
|
1259
|
+
await this.player_.load(
|
|
1260
|
+
manifestUri,
|
|
1261
|
+
/* startTime= */ null,
|
|
1262
|
+
asset.mimeType || undefined);
|
|
1263
|
+
|
|
1260
1264
|
if (this.player_.isAudioOnly()) {
|
|
1261
1265
|
this.video_.poster = shakaDemo.Main.audioOnlyPoster_;
|
|
1262
1266
|
}
|
package/dist/controls.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2016 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
.shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s
|
|
6
|
+
.shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;line-height:.5;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s;font-size:20px;line-height:1.4;color:#fff}.shaka-text-container span.shaka-text-wrapper{display:inline;background:0 0}.shaka-controls-container[shown=true]~.shaka-text-container{bottom:15%;transition-delay:0s}.shaka-spinner-container{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;flex-shrink:1;display:flex;justify-content:center;align-items:center}.shaka-video-container:not([shaka-controls=true]) .shaka-spinner-container{display:none}.shaka-spinner{position:relative;top:0;left:0;margin:0;box-sizing:border-box;padding:7.8%;width:0;height:0;filter:drop-shadow(0 0 2px rgba(255, 255, 255, .5))}.shaka-play-button{box-sizing:border-box;padding:7.5%;width:0;height:0;margin:0;border-radius:50%;box-shadow:rgba(0,0,0,.1) 0 0 20px 0;border:none;background-size:50%;background-repeat:no-repeat;background-position:center center;background-color:rgba(255,255,255,.9);opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-play-button,.shaka-controls-container[shown=true] .shaka-play-button{opacity:1}.shaka-play-button[icon=play]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-play-button[icon=pause]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M6%2019h4V5H6v14zm8-14v14h4V5h-4z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-current-time{font-size:14px;color:#fff;height:auto;cursor:pointer}.shaka-current-time[disabled]{background-color:transparent;color:#fff;cursor:default}.shaka-controls-container button:focus,.shaka-controls-container input:focus{outline:1px solid Highlight}.shaka-controls-container button:-moz-focus-inner,.shaka-controls-container input:-moz-focus-outer{outline:0;border:0}.shaka-controls-container:not(.shaka-keyboard-navigation) button:focus,.shaka-controls-container:not(.shaka-keyboard-navigation) input:focus{outline:0}.shaka-range-container{position:relative;top:0;left:0;margin:4px 6px;height:4px;border-radius:4px;background:#fff}.shaka-volume-bar-container{width:100px}.shaka-range-element{-webkit-appearance:none;background:0 0;position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;height:12px;top:-4px;z-index:1}.shaka-range-element::-webkit-slider-runnable-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-webkit-slider-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-range-element::-moz-range-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-moz-range-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-seek-bar-container{opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-seek-bar-container,.shaka-controls-container[shown=true] .shaka-seek-bar-container{opacity:1}.shaka-ad-markers{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%}/*!
|
|
7
7
|
* @license
|
|
8
8
|
* The SVG/CSS buffering spinner is based on http://codepen.io/jczimm/pen/vEBpoL
|
|
9
9
|
* Some local modifications have been made.
|
|
@@ -27,4 +27,4 @@
|
|
|
27
27
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
28
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
29
|
* SOFTWARE.
|
|
30
|
-
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/
|
|
30
|
+
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v93/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
|
package/dist/controls.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../ui/less/general.less","$stdin","../ui/less/containers.less","../ui/less/buttons.less","../ui/less/range_elements.less","../ui/less/spinner.less","../ui/less/other_elements.less","../ui/less/overflow_menu.less","../ui/less/ad_controls.less","../ui/https:/fonts.googleapis.com/css?family=Roboto","../ui/https:/fonts.googleapis.com/icon?family=Material+Icons+Round"],"names":[],"mappings":"AAqBA,cCNE,QDSA,eEZF,uBDwBE,SDgBA,SCPA,IDYA,EACA,KAAA,ECRA,QCjCA,KAGA,6CACE,YAAA,uBACA,UAAA,KAIF,yBACE,YAAA,eAAA,OAAA,WAsBkB,kCFrBpB,MAAA,KACA,OAAA,KEWA,iBAAA,KAEA,wDDiCA,UC7BE,QAIkB,2CFtBpB,MAAA,KACA,OAAA,KEWA,iBAAA,KAEA,iED4CA,UCxCE,QAKkB,wCFvBpB,MAAA,KACA,OAAA,KEWA,iBAAA,KAEA,8DDuDA,UCnDE,QAMkB,sCFxBpB,MAAA,KACA,OAAA,KEWA,iBAAA,KAEA,4DDkEA,UC9DE,QAoBJ,0BD2DE,SDtDA,SAGA,IAAA,EACA,KAAA,EACA,MAAA,EACA,OAAA,EACA,OAAA,EACA,QAAA,EAnDA,MAAA,KACA,OAAA,KE2CA,WAAA,WAGA,QAAA,KAGA,eAAA,OAGA,gBAAA,SAGA,YAAA,ODsEA,QC9DA,EF+BoD,4EAzGpD,QAAA,KEsEA,4BFUA,YAAA,EEFE,iEF9EF,QAAA,KEsFF,uBACE,MAAA,IACA,QAAA,EACA,eAAA,KDsEA,QC/DA,EAMF,6BAEE,QAAA,EACA,OAAA,EAGA,QAAA,KACA,eAAA,IAGA,gBAAA,SAGA,YAAA,OAGA,SAAA,OACA,UAAA,KDgEA,UC5DA,KACA,YAAA,IACA,WAAA,OFpIA,YAAA,KACA,oBAAA,KACA,iBAAA,KACA,gBAAA,KA+FA,QAAA,EAGA,WAAA,QAAA,wBAAA,IAK0C,qEADF,mEAEtC,QAAA,EEkCA,+BAEA,MAAA,KAGA,OAAA,
|
|
1
|
+
{"version":3,"sources":["../ui/less/general.less","$stdin","../ui/less/containers.less","../ui/less/buttons.less","../ui/less/range_elements.less","../ui/less/spinner.less","../ui/less/other_elements.less","../ui/less/overflow_menu.less","../ui/less/ad_controls.less","../ui/https:/fonts.googleapis.com/css?family=Roboto","../ui/https:/fonts.googleapis.com/icon?family=Material+Icons+Round"],"names":[],"mappings":"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"}
|