@mux/mux-player 0.1.0-beta.21

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +281 -0
  2. package/LICENSE +9 -0
  3. package/README.md +231 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +161 -0
  8. package/coverage/lcov-report/prettify.css +1 -0
  9. package/coverage/lcov-report/prettify.js +2 -0
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +196 -0
  12. package/coverage/lcov-report/src/dialog.ts.html +247 -0
  13. package/coverage/lcov-report/src/errors.ts.html +574 -0
  14. package/coverage/lcov-report/src/helpers.ts.html +478 -0
  15. package/coverage/lcov-report/src/html.ts.html +580 -0
  16. package/coverage/lcov-report/src/index.html +251 -0
  17. package/coverage/lcov-report/src/index.ts.html +2941 -0
  18. package/coverage/lcov-report/src/logger.ts.html +163 -0
  19. package/coverage/lcov-report/src/media-chrome/dialog.ts.html +661 -0
  20. package/coverage/lcov-report/src/media-chrome/index.html +131 -0
  21. package/coverage/lcov-report/src/media-chrome/time-display.ts.html +295 -0
  22. package/coverage/lcov-report/src/media-theme-mux/icons/airplay.svg.html +109 -0
  23. package/coverage/lcov-report/src/media-theme-mux/icons/captions-off.svg.html +100 -0
  24. package/coverage/lcov-report/src/media-theme-mux/icons/captions-on.svg.html +100 -0
  25. package/coverage/lcov-report/src/media-theme-mux/icons/fullscreen-enter.svg.html +100 -0
  26. package/coverage/lcov-report/src/media-theme-mux/icons/fullscreen-exit.svg.html +100 -0
  27. package/coverage/lcov-report/src/media-theme-mux/icons/index.html +326 -0
  28. package/coverage/lcov-report/src/media-theme-mux/icons/pause.svg.html +100 -0
  29. package/coverage/lcov-report/src/media-theme-mux/icons/pip-enter.svg.html +100 -0
  30. package/coverage/lcov-report/src/media-theme-mux/icons/pip-exit.svg.html +100 -0
  31. package/coverage/lcov-report/src/media-theme-mux/icons/play.svg.html +100 -0
  32. package/coverage/lcov-report/src/media-theme-mux/icons/seek-backward.svg.html +124 -0
  33. package/coverage/lcov-report/src/media-theme-mux/icons/seek-forward.svg.html +124 -0
  34. package/coverage/lcov-report/src/media-theme-mux/icons/volume-high.svg.html +103 -0
  35. package/coverage/lcov-report/src/media-theme-mux/icons/volume-low.svg.html +103 -0
  36. package/coverage/lcov-report/src/media-theme-mux/icons/volume-medium.svg.html +103 -0
  37. package/coverage/lcov-report/src/media-theme-mux/icons/volume-off.svg.html +103 -0
  38. package/coverage/lcov-report/src/media-theme-mux/icons.ts.html +184 -0
  39. package/coverage/lcov-report/src/media-theme-mux/index.html +146 -0
  40. package/coverage/lcov-report/src/media-theme-mux/media-theme-mux.ts.html +1279 -0
  41. package/coverage/lcov-report/src/media-theme-mux/styles.css.html +586 -0
  42. package/coverage/lcov-report/src/styles.css.html +211 -0
  43. package/coverage/lcov-report/src/template.ts.html +463 -0
  44. package/coverage/lcov-report/src/utils.ts.html +385 -0
  45. package/coverage/lcov-report/src/video-api.ts.html +979 -0
  46. package/coverage/lcov.info +4058 -0
  47. package/dist/index.cjs.js +1432 -0
  48. package/dist/index.mjs +709 -0
  49. package/dist/mux-player.js +1478 -0
  50. package/dist/mux-player.mjs +1478 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -0
  52. package/dist/types/dialog.d.ts +6 -0
  53. package/dist/types/errors.d.ts +6 -0
  54. package/dist/types/helpers.d.ts +26 -0
  55. package/dist/types/html.d.ts +18 -0
  56. package/dist/types/index.d.ts +199 -0
  57. package/dist/types/logger.d.ts +5 -0
  58. package/dist/types/media-chrome/dialog.d.ts +12 -0
  59. package/dist/types/media-chrome/time-display.d.ts +9 -0
  60. package/dist/types/media-theme-mux/icons.d.ts +15 -0
  61. package/dist/types/media-theme-mux/media-theme-mux.d.ts +29 -0
  62. package/dist/types/template.d.ts +5 -0
  63. package/dist/types/utils.d.ts +10 -0
  64. package/dist/types/video-api.d.ts +64 -0
  65. package/dist/types-ts3.4/dialog.d.ts +6 -0
  66. package/dist/types-ts3.4/errors.d.ts +6 -0
  67. package/dist/types-ts3.4/helpers.d.ts +26 -0
  68. package/dist/types-ts3.4/html.d.ts +18 -0
  69. package/dist/types-ts3.4/index.d.ts +180 -0
  70. package/dist/types-ts3.4/logger.d.ts +5 -0
  71. package/dist/types-ts3.4/media-chrome/dialog.d.ts +12 -0
  72. package/dist/types-ts3.4/media-chrome/time-display.d.ts +9 -0
  73. package/dist/types-ts3.4/media-theme-mux/icons.d.ts +15 -0
  74. package/dist/types-ts3.4/media-theme-mux/media-theme-mux.d.ts +29 -0
  75. package/dist/types-ts3.4/template.d.ts +5 -0
  76. package/dist/types-ts3.4/utils.d.ts +10 -0
  77. package/dist/types-ts3.4/video-api.d.ts +53 -0
  78. package/lang/en.json +32 -0
  79. package/lang/nl.json +31 -0
  80. package/package.json +107 -0
  81. package/src/dialog.ts +54 -0
  82. package/src/errors.ts +163 -0
  83. package/src/helpers.ts +131 -0
  84. package/src/html.ts +165 -0
  85. package/src/index.ts +952 -0
  86. package/src/logger.ts +26 -0
  87. package/src/media-chrome/dialog.ts +192 -0
  88. package/src/media-chrome/time-display.ts +70 -0
  89. package/src/media-theme-mux/icons/airplay.svg +8 -0
  90. package/src/media-theme-mux/icons/captions-off.svg +5 -0
  91. package/src/media-theme-mux/icons/captions-on.svg +5 -0
  92. package/src/media-theme-mux/icons/fullscreen-enter.svg +5 -0
  93. package/src/media-theme-mux/icons/fullscreen-exit.svg +5 -0
  94. package/src/media-theme-mux/icons/pause.svg +5 -0
  95. package/src/media-theme-mux/icons/pip-enter.svg +5 -0
  96. package/src/media-theme-mux/icons/pip-exit.svg +5 -0
  97. package/src/media-theme-mux/icons/play.svg +5 -0
  98. package/src/media-theme-mux/icons/seek-backward.svg +13 -0
  99. package/src/media-theme-mux/icons/seek-forward.svg +13 -0
  100. package/src/media-theme-mux/icons/volume-high.svg +6 -0
  101. package/src/media-theme-mux/icons/volume-low.svg +6 -0
  102. package/src/media-theme-mux/icons/volume-medium.svg +6 -0
  103. package/src/media-theme-mux/icons/volume-off.svg +6 -0
  104. package/src/media-theme-mux/icons.ts +33 -0
  105. package/src/media-theme-mux/media-theme-mux.ts +398 -0
  106. package/src/media-theme-mux/styles.css +167 -0
  107. package/src/styles.css +42 -0
  108. package/src/template.ts +126 -0
  109. package/src/types.d.ts +52 -0
  110. package/src/utils.ts +100 -0
  111. package/src/video-api.ts +298 -0
  112. package/test/errors.test.js +169 -0
  113. package/test/helpers.test.js +78 -0
  114. package/test/player.test.js +696 -0
  115. package/test/template.test.js +70 -0
  116. package/test/utils.test.js +21 -0
  117. package/test/web-test-runner.config.mjs +29 -0
  118. package/tsconfig.json +21 -0
@@ -0,0 +1,478 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/helpers.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> helpers.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">97.7% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>128/131</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">88% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>22/25</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>12/12</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">97.7% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>128/131</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
198
+ <span class="cline-any cline-yes">4x</span>
199
+ <span class="cline-any cline-yes">4x</span>
200
+ <span class="cline-any cline-yes">4x</span>
201
+ <span class="cline-any cline-yes">4x</span>
202
+ <span class="cline-any cline-yes">4x</span>
203
+ <span class="cline-any cline-yes">4x</span>
204
+ <span class="cline-any cline-yes">4x</span>
205
+ <span class="cline-any cline-yes">4x</span>
206
+ <span class="cline-any cline-yes">4x</span>
207
+ <span class="cline-any cline-yes">4x</span>
208
+ <span class="cline-any cline-yes">4x</span>
209
+ <span class="cline-any cline-yes">4x</span>
210
+ <span class="cline-any cline-yes">4x</span>
211
+ <span class="cline-any cline-yes">4x</span>
212
+ <span class="cline-any cline-yes">4x</span>
213
+ <span class="cline-any cline-yes">4x</span>
214
+ <span class="cline-any cline-yes">4x</span>
215
+ <span class="cline-any cline-yes">4x</span>
216
+ <span class="cline-any cline-yes">3x</span>
217
+ <span class="cline-any cline-yes">3x</span>
218
+ <span class="cline-any cline-yes">3x</span>
219
+ <span class="cline-any cline-yes">3x</span>
220
+ <span class="cline-any cline-yes">3x</span>
221
+ <span class="cline-any cline-yes">3x</span>
222
+ <span class="cline-any cline-yes">3x</span>
223
+ <span class="cline-any cline-yes">3x</span>
224
+ <span class="cline-any cline-yes">3x</span>
225
+ <span class="cline-any cline-yes">3x</span>
226
+ <span class="cline-any cline-yes">3x</span>
227
+ <span class="cline-any cline-yes">3x</span>
228
+ <span class="cline-any cline-yes">3x</span>
229
+ <span class="cline-any cline-yes">3x</span>
230
+ <span class="cline-any cline-yes">3x</span>
231
+ <span class="cline-any cline-yes">3x</span>
232
+ <span class="cline-any cline-yes">4x</span>
233
+ <span class="cline-any cline-yes">4x</span>
234
+ <span class="cline-any cline-yes">4x</span>
235
+ <span class="cline-any cline-yes">3x</span>
236
+ <span class="cline-any cline-yes">3x</span>
237
+ <span class="cline-any cline-yes">3x</span>
238
+ <span class="cline-any cline-yes">3x</span>
239
+ <span class="cline-any cline-yes">3x</span>
240
+ <span class="cline-any cline-yes">3x</span>
241
+ <span class="cline-any cline-yes">3x</span>
242
+ <span class="cline-any cline-yes">3x</span>
243
+ <span class="cline-any cline-yes">4x</span>
244
+ <span class="cline-any cline-yes">4x</span>
245
+ <span class="cline-any cline-yes">4x</span>
246
+ <span class="cline-any cline-yes">4x</span>
247
+ <span class="cline-any cline-yes">3x</span>
248
+ <span class="cline-any cline-yes">3x</span>
249
+ <span class="cline-any cline-yes">3x</span>
250
+ <span class="cline-any cline-yes">3x</span>
251
+ <span class="cline-any cline-yes">3x</span>
252
+ <span class="cline-any cline-yes">4x</span>
253
+ <span class="cline-any cline-yes">4x</span>
254
+ <span class="cline-any cline-yes">4x</span>
255
+ <span class="cline-any cline-yes">4x</span>
256
+ <span class="cline-any cline-yes">4x</span>
257
+ <span class="cline-any cline-yes">4x</span>
258
+ <span class="cline-any cline-yes">4x</span>
259
+ <span class="cline-any cline-yes">4x</span>
260
+ <span class="cline-any cline-yes">4x</span>
261
+ <span class="cline-any cline-yes">2x</span>
262
+ <span class="cline-any cline-yes">4x</span>
263
+ <span class="cline-any cline-yes">4x</span>
264
+ <span class="cline-any cline-yes">4x</span>
265
+ <span class="cline-any cline-yes">4x</span>
266
+ <span class="cline-any cline-yes">2x</span>
267
+ <span class="cline-any cline-yes">2x</span>
268
+ <span class="cline-any cline-yes">2x</span>
269
+ <span class="cline-any cline-yes">2x</span>
270
+ <span class="cline-any cline-yes">2x</span>
271
+ <span class="cline-any cline-yes">4x</span>
272
+ <span class="cline-any cline-yes">4x</span>
273
+ <span class="cline-any cline-yes">4x</span>
274
+ <span class="cline-any cline-yes">2x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">2x</span>
277
+ <span class="cline-any cline-yes">2x</span>
278
+ <span class="cline-any cline-yes">2x</span>
279
+ <span class="cline-any cline-yes">2x</span>
280
+ <span class="cline-any cline-yes">2x</span>
281
+ <span class="cline-any cline-yes">4x</span>
282
+ <span class="cline-any cline-yes">4x</span>
283
+ <span class="cline-any cline-yes">4x</span>
284
+ <span class="cline-any cline-yes">4x</span>
285
+ <span class="cline-any cline-yes">2x</span>
286
+ <span class="cline-any cline-yes">4x</span>
287
+ <span class="cline-any cline-yes">4x</span>
288
+ <span class="cline-any cline-yes">4x</span>
289
+ <span class="cline-any cline-yes">2x</span>
290
+ <span class="cline-any cline-yes">2x</span>
291
+ <span class="cline-any cline-yes">2x</span>
292
+ <span class="cline-any cline-yes">2x</span>
293
+ <span class="cline-any cline-yes">4x</span>
294
+ <span class="cline-any cline-yes">4x</span>
295
+ <span class="cline-any cline-yes">4x</span>
296
+ <span class="cline-any cline-yes">4x</span>
297
+ <span class="cline-any cline-yes">1x</span>
298
+ <span class="cline-any cline-yes">1x</span>
299
+ <span class="cline-any cline-no">&nbsp;</span>
300
+ <span class="cline-any cline-no">&nbsp;</span>
301
+ <span class="cline-any cline-yes">1x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-yes">4x</span>
304
+ <span class="cline-any cline-yes">4x</span>
305
+ <span class="cline-any cline-yes">4x</span>
306
+ <span class="cline-any cline-yes">4x</span>
307
+ <span class="cline-any cline-yes">4x</span>
308
+ <span class="cline-any cline-yes">4x</span>
309
+ <span class="cline-any cline-yes">4x</span>
310
+ <span class="cline-any cline-yes">4x</span>
311
+ <span class="cline-any cline-yes">2x</span>
312
+ <span class="cline-any cline-yes">2x</span>
313
+ <span class="cline-any cline-yes">2x</span>
314
+ <span class="cline-any cline-yes">2x</span>
315
+ <span class="cline-any cline-yes">2x</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-yes">1x</span>
320
+ <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-yes">1x</span>
322
+ <span class="cline-any cline-yes">1x</span>
323
+ <span class="cline-any cline-yes">2x</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-yes">1x</span>
327
+ <span class="cline-any cline-yes">4x</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { toQuery, camelCase } from './utils';
329
+ import type MuxPlayerElement from '.';
330
+ import { StreamTypes } from '@mux/playback-core';
331
+ &nbsp;
332
+ const MUX_VIDEO_DOMAIN = 'mux.com';
333
+ &nbsp;
334
+ /* eslint-disable */
335
+ const getEnvPlayerVersion = () =&gt; {
336
+ try {
337
+ // @ts-ignore
338
+ return PLAYER_VERSION;
339
+ } catch {}
340
+ return 'UNKNOWN';
341
+ };
342
+ &nbsp;
343
+ const player_version = getEnvPlayerVersion();
344
+ export const getPlayerVersion = () =&gt; player_version;
345
+ &nbsp;
346
+ export const getSrcFromPlaybackId = (
347
+ playbackId?: string,
348
+ { token, domain = MUX_VIDEO_DOMAIN }: { token?: string; domain?: string } = {}
349
+ ) =&gt; {
350
+ /*
351
+ * 2022-04-01 djhaveri
352
+ *
353
+ * `redundant_streams` query param can only be added to public
354
+ * playback IDs, in order to use this feature with signed URLs
355
+ * the query param must be added to the signing token.
356
+ *
357
+ * https://docs.mux.com/guides/video/play-your-videos#add-delivery-redundancy-with-redundant-streams
358
+ *
359
+ * */
360
+ const isSignedUrl = !!token;
361
+ const query = isSignedUrl ? { token } : { redundant_streams: true };
362
+ return `https://stream.${domain}/${playbackId}.m3u8${toQuery(query)}`;
363
+ };
364
+ &nbsp;
365
+ export const getPosterURLFromPlaybackId = (
366
+ playbackId?: string,
367
+ { token, thumbnailTime, domain = MUX_VIDEO_DOMAIN }: { token?: string; domain?: string; thumbnailTime?: number } = {}
368
+ ) =&gt; {
369
+ // NOTE: thumbnailTime is not supported when using a signedURL/token. Remove under these cases. (CJP)
370
+ const time = token == null ? thumbnailTime : undefined;
371
+ return `https://image.${domain}/${playbackId}/thumbnail.jpg${toQuery({
372
+ token,
373
+ time,
374
+ })}`;
375
+ };
376
+ &nbsp;
377
+ export const getStoryboardURLFromPlaybackId = (
378
+ playbackId?: string,
379
+ { token, domain = MUX_VIDEO_DOMAIN }: { token?: string; domain?: string } = {}
380
+ ) =&gt; {
381
+ return `https://image.${domain}/${playbackId}/storyboard.vtt${toQuery({
382
+ token,
383
+ })}`;
384
+ };
385
+ &nbsp;
386
+ const attrToPropNameMap: Record&lt;string, string&gt; = {
387
+ crossorigin: 'crossOrigin',
388
+ playsinline: 'playsInline',
389
+ };
390
+ &nbsp;
391
+ export function toPropName(attrName: string) {
392
+ return attrToPropNameMap[attrName] ?? camelCase(attrName);
393
+ }
394
+ &nbsp;
395
+ let testMediaEl: HTMLMediaElement | undefined;
396
+ export const getTestMediaEl = (nodeName = 'video') =&gt; {
397
+ if (testMediaEl) return testMediaEl;
398
+ if (typeof window !== 'undefined') {
399
+ testMediaEl = document.createElement(nodeName as 'video' | 'audio');
400
+ }
401
+ return testMediaEl;
402
+ };
403
+ &nbsp;
404
+ export const hasVolumeSupportAsync = async (mediaEl: HTMLMediaElement | undefined = getTestMediaEl()) =&gt; {
405
+ if (!mediaEl) <span class="branch-0 cbranch-no" title="branch not covered" >return false;</span>
406
+ const prevVolume = mediaEl.volume;
407
+ mediaEl.volume = prevVolume / 2 + 0.1;
408
+ return new Promise&lt;boolean&gt;((resolve, reject) =&gt; {
409
+ setTimeout(() =&gt; {
410
+ resolve(mediaEl.volume !== prevVolume);
411
+ }, 0);
412
+ });
413
+ };
414
+ &nbsp;
415
+ export function getCcSubTracks(el: MuxPlayerElement) {
416
+ return Array.from(el.media?.textTracks ?? []).filter(({ kind }) =&gt; kind === 'subtitles' || kind === 'captions');
417
+ }
418
+ &nbsp;
419
+ export const getLiveTime = (el: MuxPlayerElement) =&gt; {
420
+ const { media } = el;
421
+ return (
422
+ media?._hls?.liveSyncPosition ??
423
+ (media?.seekable.<span class="branch-0 cbranch-no" title="branch not covered" >length ? media?.seekable.end(media.seekable.length - 1) : u</span>ndefined)
424
+ );
425
+ };
426
+ &nbsp;
427
+ export const seekToLive = (el: MuxPlayerElement) =&gt; {
428
+ const liveTime = getLiveTime(el);
429
+ if (liveTime == undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
430
+ <span class="cstat-no" title="statement not covered" > console.warn('attempting to seek to live but cannot determine live edge time!');</span>
431
+ <span class="cstat-no" title="statement not covered" > return;</span>
432
+ }
433
+ el.currentTime = liveTime;
434
+ };
435
+ &nbsp;
436
+ export const LL_LIVE_SEGMENT_SECS = 1;
437
+ export const LIVE_SEGMENT_SECS = 5;
438
+ export const DEFAULT_HOLDBACK = 3;
439
+ export const LIVE_HOLDBACK_MOE = 0.5;
440
+ &nbsp;
441
+ export const isInLiveWindow = (el: MuxPlayerElement) =&gt; {
442
+ const { streamType } = el;
443
+ const liveTime = getLiveTime(el);
444
+ const currentTime = el.media?.currentTime;
445
+ if (liveTime == undefined || currentTime == undefined) {
446
+ return false;
447
+ }
448
+ const delta = liveTime - currentTime;
449
+ // The live window is based on whether or not the current playhead is within n segment durations (plus a margin of error)
450
+ // of the live edge (CJP)
451
+ if (streamType === StreamTypes.LL_LIVE || streamType === StreamTypes.LL_DVR) {
452
+ return delta &lt;= LL_LIVE_SEGMENT_SECS * (DEFAULT_HOLDBACK + LIVE_HOLDBACK_MOE);
453
+ }
454
+ if (streamType === StreamTypes.LIVE || streamType === StreamTypes.DVR) {
455
+ <span class="cstat-no" title="statement not covered" > return delta &lt;= LIVE_SEGMENT_SECS * (DEFAULT_HOLDBACK + LIVE_HOLDBACK_MOE);</span>
456
+ }
457
+ return false;
458
+ };
459
+ &nbsp;</pre></td></tr></table></pre>
460
+
461
+ <div class='push'></div><!-- for sticky footer -->
462
+ </div><!-- /wrapper -->
463
+ <div class='footer quiet pad2 space-top1 center small'>
464
+ Code coverage generated by
465
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
466
+ at Tue Jul 05 2022 17:07:41 GMT+0000 (Coordinated Universal Time)
467
+ </div>
468
+ <script src="../prettify.js"></script>
469
+ <script>
470
+ window.onload = function () {
471
+ prettyPrint();
472
+ };
473
+ </script>
474
+ <script src="../sorter.js"></script>
475
+ <script src="../block-navigation.js"></script>
476
+ </body>
477
+ </html>
478
+