@mediakind/mkplayer 1.0.14 → 1.0.16

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 (61) hide show
  1. package/README.md +15 -1
  2. package/dist/LabelConfig.d.ts +4 -0
  3. package/dist/MKPlayer.d.ts +3 -1
  4. package/dist/MKPlayerConfiguration.d.ts +2 -0
  5. package/dist/MKStream.d.ts +7 -1
  6. package/dist/URLHelper.d.ts +5 -0
  7. package/dist/events/UrlType.d.ts +4 -0
  8. package/dist/lib/LabelConfig.d.ts +4 -0
  9. package/dist/lib/LabelConfig.js +3 -0
  10. package/dist/lib/LabelConfig.js.map +1 -0
  11. package/dist/lib/MKPlayer.d.ts +3 -1
  12. package/dist/lib/MKPlayer.js +75 -16
  13. package/dist/lib/MKPlayer.js.map +1 -1
  14. package/dist/lib/MKPlayerConfiguration.d.ts +2 -0
  15. package/dist/lib/MKStream.d.ts +7 -1
  16. package/dist/lib/MKStream.js +20 -1
  17. package/dist/lib/MKStream.js.map +1 -1
  18. package/dist/lib/URLHelper.d.ts +5 -0
  19. package/dist/lib/URLHelper.js +70 -0
  20. package/dist/lib/URLHelper.js.map +1 -0
  21. package/dist/lib/events/UrlType.d.ts +4 -0
  22. package/dist/lib/events/UrlType.js +9 -0
  23. package/dist/lib/events/UrlType.js.map +1 -0
  24. package/dist/lib-esm/LabelConfig.d.ts +4 -0
  25. package/dist/lib-esm/LabelConfig.js +2 -0
  26. package/dist/lib-esm/LabelConfig.js.map +1 -0
  27. package/dist/lib-esm/MKPlayer.d.ts +3 -1
  28. package/dist/lib-esm/MKPlayer.js +75 -16
  29. package/dist/lib-esm/MKPlayer.js.map +1 -1
  30. package/dist/lib-esm/MKPlayerConfiguration.d.ts +2 -0
  31. package/dist/lib-esm/MKStream.d.ts +7 -1
  32. package/dist/lib-esm/MKStream.js +20 -1
  33. package/dist/lib-esm/MKStream.js.map +1 -1
  34. package/dist/lib-esm/URLHelper.d.ts +5 -0
  35. package/dist/lib-esm/URLHelper.js +67 -0
  36. package/dist/lib-esm/URLHelper.js.map +1 -0
  37. package/dist/lib-esm/events/UrlType.d.ts +4 -0
  38. package/dist/lib-esm/events/UrlType.js +6 -0
  39. package/dist/lib-esm/events/UrlType.js.map +1 -0
  40. package/dist/mkplayer.js +1 -1
  41. package/doc/assets/js/search.json +1 -1
  42. package/doc/classes/mkplayer.html +23 -20
  43. package/doc/enums/mkevent.html +4 -1
  44. package/doc/enums/urltype.html +180 -0
  45. package/doc/globals.html +6 -2
  46. package/doc/index.html +19 -2
  47. package/doc/interfaces/bufferlevel.html +4 -1
  48. package/doc/interfaces/labelconfig.html +198 -0
  49. package/doc/interfaces/mkplayereventcallback.html +4 -1
  50. package/doc/interfaces/subtitletrack.html +4 -1
  51. package/index.html +58 -19
  52. package/multi-camera.html +1 -1
  53. package/package.json +3 -3
  54. package/src/LabelConfig.ts +14 -0
  55. package/src/MKPlayer.ts +77 -24
  56. package/src/MKPlayerConfiguration.ts +7 -0
  57. package/src/MKStream.ts +27 -1
  58. package/src/URLHelper.ts +79 -0
  59. package/src/events/UrlType.ts +7 -0
  60. package/doc/interfaces/mkplayerconfiguration.html +0 -290
  61. package/mkplayer-ui.js +0 -12052
package/src/MKStream.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * Configuration object used when loading a new stream
3
3
  */
4
4
  import { SubtitleTrack } from './SubtitleTrack';
5
+ import { LabelConfig } from './LabelConfig';
5
6
 
6
7
  export class MKStream {
7
8
  private readonly _assetIdentifier: string;
@@ -16,6 +17,8 @@ export class MKStream {
16
17
  private readonly _customData3: string;
17
18
  private readonly _customData4: string;
18
19
  private readonly _customData5: string;
20
+ private readonly _labelConfig: LabelConfig;
21
+ private _didFailOver: boolean = false;
19
22
 
20
23
  /**
21
24
  *
@@ -26,8 +29,9 @@ export class MKStream {
26
29
  * @param cdnFailoverPercent - percent value from 0-100 describing what percentage of users should initially playback
27
30
  * the secondary url
28
31
  * @param assetIdentifier - identifier for the current stream
32
+ * @param labelConfig - config to change the labels in the player dropdown
29
33
  */
30
- constructor(primaryUrl: string, assetIdentifier: string, subtitleTracks?: SubtitleTrack[], poster?: string, secondaryUrl?: string, cdnFailoverPercent?: number, userId?: string, customData1?: string, customData2?: string, customData3?: string, customData4?: string, customData5?: string) {
34
+ constructor(primaryUrl: string, assetIdentifier: string, subtitleTracks?: SubtitleTrack[], poster?: string, secondaryUrl?: string, cdnFailoverPercent?: number, userId?: string, customData1?: string, customData2?: string, customData3?: string, customData4?: string, customData5?: string, labelConfig?: LabelConfig) {
31
35
  this._cdnFailoverPercent = cdnFailoverPercent;
32
36
  this._secondaryUrl = secondaryUrl;
33
37
  this._primaryUrl = primaryUrl;
@@ -40,6 +44,7 @@ export class MKStream {
40
44
  this._customData3 = customData3;
41
45
  this._customData4 = customData4;
42
46
  this._customData5 = customData5;
47
+ this._labelConfig = labelConfig;
43
48
  }
44
49
 
45
50
  /**
@@ -125,4 +130,25 @@ export class MKStream {
125
130
  public get userId(): string {
126
131
  return this._userId;
127
132
  }
133
+
134
+ /**
135
+ * config to change the labels in the player dropdown
136
+ */
137
+ public get labelConfig(): LabelConfig {
138
+ return this._labelConfig;
139
+ }
140
+
141
+ /**
142
+ * boolean value describing if failover happened
143
+ */
144
+ public get didFailOver(): boolean {
145
+ return this._didFailOver;
146
+ }
147
+
148
+ /**
149
+ * setter for the didFailOver boolean value
150
+ */
151
+ public set didFailOver(value: boolean) {
152
+ this._didFailOver = value;
153
+ }
128
154
  }
@@ -0,0 +1,79 @@
1
+ export class URLHelper {
2
+ public static appendQueryParametersToUrl(url: string, parameters: Map<string, string>): string {
3
+ // See if our url still has a queryString
4
+ let queryString = '';
5
+ let queryStringHasStarted = url.indexOf('?') >= 0;
6
+
7
+ if (parameters) {
8
+ parameters.forEach((value, key) => {
9
+ // Add parameter separator
10
+ if (!queryStringHasStarted) {
11
+ // Query string is separated from URL with "?"
12
+ queryString += '?';
13
+ queryStringHasStarted = true;
14
+ } else {
15
+ // Parameters within the query string are concatenated by "&"
16
+ queryString += '&';
17
+ }
18
+
19
+ // Add parameter name
20
+ queryString += key;
21
+
22
+ // Add optional parameter value
23
+ if (value != null) {
24
+ queryString += '=' + encodeURIComponent(value);
25
+ }
26
+ });
27
+ }
28
+ return url + queryString;
29
+ }
30
+
31
+ public static removeUrlParameter(url: string, parameter: string) {
32
+ let urlParts: string[] = url.split('?');
33
+
34
+ if (urlParts.length >= 2) {
35
+ // Get first part, and remove from array
36
+ let urlBase: string = urlParts.shift();
37
+
38
+ // Join it back up
39
+ let queryString: string = urlParts.join('?');
40
+
41
+ let prefix: string = encodeURIComponent(parameter) + '=';
42
+ let parts: string[] = queryString.split(/[&;]/g);
43
+
44
+ // Reverse iteration as may be destructive
45
+ for (let i = parts.length; i-- > 0;) {
46
+ // Idiom for string.startsWith
47
+ if (parts[i].lastIndexOf(prefix, 0) !== -1) {
48
+ parts.splice(i, 1);
49
+ }
50
+ }
51
+
52
+ // Add back any url parameters that were not removed
53
+ if (parts.length > 0) {
54
+ url = urlBase + '?' + parts.join('&');
55
+ } else {
56
+ url = urlBase;
57
+ }
58
+ }
59
+ return url;
60
+ }
61
+
62
+ public static appendToken(url: string, token: string): string {
63
+ if (token) {
64
+ let split = token.split('=');
65
+ if (split && split.length >= 2) {
66
+ let key = split[0];
67
+ let value = split[1];
68
+ let params = new Map<string, string>();
69
+ params.set(key, value);
70
+ let updatedUrl = URLHelper.appendQueryParametersToUrl(url, params);
71
+ return updatedUrl;
72
+ } else {
73
+ return url;
74
+ }
75
+ } else {
76
+ return url;
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * URL Type
3
+ */
4
+ export enum UrlType {
5
+ Primary = 'primary',
6
+ Secondary = 'secondary',
7
+ }
@@ -1,290 +0,0 @@
1
- <!doctype html>
2
- <html class="default no-js">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <title>MKPlayerConfiguration | MKPlayer</title>
7
- <meta name="description" content="Documentation for MKPlayer">
8
- <meta name="viewport" content="width=device-width, initial-scale=1">
9
- <link rel="stylesheet" href="../assets/css/main.css">
10
- </head>
11
- <body>
12
- <header>
13
- <div class="tsd-page-toolbar">
14
- <div class="container">
15
- <div class="table-wrap">
16
- <div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
17
- <div class="field">
18
- <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
19
- <input id="tsd-search-field" type="text" />
20
- </div>
21
- <ul class="results">
22
- <li class="state loading">Preparing search index...</li>
23
- <li class="state failure">The search index is not available</li>
24
- </ul>
25
- <a href="../index.html" class="title">MKPlayer</a>
26
- </div>
27
- <div class="table-cell" id="tsd-widgets">
28
- <div id="tsd-filter">
29
- <a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
30
- <div class="tsd-filter-group">
31
- <div class="tsd-select" id="tsd-filter-visibility">
32
- <span class="tsd-select-label">All</span>
33
- <ul class="tsd-select-list">
34
- <li data-value="public">Public</li>
35
- <li data-value="protected">Public/Protected</li>
36
- <li data-value="private" class="selected">All</li>
37
- </ul>
38
- </div>
39
- <input type="checkbox" id="tsd-filter-inherited" checked />
40
- <label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
41
- <input type="checkbox" id="tsd-filter-externals" checked />
42
- <label class="tsd-widget" for="tsd-filter-externals">Externals</label>
43
- </div>
44
- </div>
45
- <a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
46
- </div>
47
- </div>
48
- </div>
49
- </div>
50
- <div class="tsd-page-title">
51
- <div class="container">
52
- <ul class="tsd-breadcrumb">
53
- <li>
54
- <a href="../globals.html">Globals</a>
55
- </li>
56
- <li>
57
- <a href="mkplayerconfiguration.html">MKPlayerConfiguration</a>
58
- </li>
59
- </ul>
60
- <h1>Interface MKPlayerConfiguration</h1>
61
- </div>
62
- </div>
63
- </header>
64
- <div class="container container-main">
65
- <div class="row">
66
- <div class="col-8 col-content">
67
- <section class="tsd-panel tsd-comment">
68
- <div class="tsd-comment tsd-typography">
69
- <div class="lead">
70
- <p>MKPlayer&#39;s configuration interface</p>
71
- </div>
72
- </div>
73
- </section>
74
- <section class="tsd-panel tsd-hierarchy">
75
- <h3>Hierarchy</h3>
76
- <ul class="tsd-hierarchy">
77
- <li>
78
- <span class="target">MKPlayerConfiguration</span>
79
- </li>
80
- </ul>
81
- </section>
82
- <section class="tsd-panel-group tsd-index-group">
83
- <h2>Index</h2>
84
- <section class="tsd-panel tsd-index-panel">
85
- <div class="tsd-index-content">
86
- <section class="tsd-index-section ">
87
- <h3>Properties</h3>
88
- <ul class="tsd-index-list">
89
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#autoplay" class="tsd-kind-icon">autoplay</a></li>
90
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#debug" class="tsd-kind-icon">debug</a></li>
91
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#key" class="tsd-kind-icon">key</a></li>
92
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#muted" class="tsd-kind-icon">muted</a></li>
93
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#smallscreen" class="tsd-kind-icon">small<wbr>Screen</a></li>
94
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#targetlatency" class="tsd-kind-icon">target<wbr>Latency</a></li>
95
- <li class="tsd-kind-property tsd-parent-kind-interface"><a href="mkplayerconfiguration.html#ui" class="tsd-kind-icon">ui</a></li>
96
- </ul>
97
- </section>
98
- </div>
99
- </section>
100
- </section>
101
- <section class="tsd-panel-group tsd-member-group ">
102
- <h2>Properties</h2>
103
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
104
- <a name="autoplay" class="tsd-anchor"></a>
105
- <h3>autoplay</h3>
106
- <div class="tsd-signature tsd-kind-icon">autoplay<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
107
- <aside class="tsd-sources">
108
- <ul>
109
- <li>Defined in MKPlayerConfiguration.ts:13</li>
110
- </ul>
111
- </aside>
112
- <div class="tsd-comment tsd-typography">
113
- <div class="lead">
114
- <p>Option to enable the player to start playback after successfully loading a source</p>
115
- </div>
116
- </div>
117
- </section>
118
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
119
- <a name="debug" class="tsd-anchor"></a>
120
- <h3>debug</h3>
121
- <div class="tsd-signature tsd-kind-icon">debug<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
122
- <aside class="tsd-sources">
123
- <ul>
124
- <li>Defined in MKPlayerConfiguration.ts:8</li>
125
- </ul>
126
- </aside>
127
- <div class="tsd-comment tsd-typography">
128
- <div class="lead">
129
- <p>Toggles debug output logging</p>
130
- </div>
131
- </div>
132
- </section>
133
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
134
- <a name="key" class="tsd-anchor"></a>
135
- <h3>key</h3>
136
- <div class="tsd-signature tsd-kind-icon">key<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
137
- <aside class="tsd-sources">
138
- <ul>
139
- <li>Defined in MKPlayerConfiguration.ts:38</li>
140
- </ul>
141
- </aside>
142
- <div class="tsd-comment tsd-typography">
143
- <div class="lead">
144
- <p>license key for the video player</p>
145
- </div>
146
- </div>
147
- </section>
148
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
149
- <a name="muted" class="tsd-anchor"></a>
150
- <h3>muted</h3>
151
- <div class="tsd-signature tsd-kind-icon">muted<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
152
- <aside class="tsd-sources">
153
- <ul>
154
- <li>Defined in MKPlayerConfiguration.ts:18</li>
155
- </ul>
156
- </aside>
157
- <div class="tsd-comment tsd-typography">
158
- <div class="lead">
159
- <p>Option to enable the player to start in a muted state. The user is able to unmute via the UI or an API call through</p>
160
- </div>
161
- </div>
162
- </section>
163
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
164
- <a name="smallscreen" class="tsd-anchor"></a>
165
- <h3>small<wbr>Screen</h3>
166
- <div class="tsd-signature tsd-kind-icon">small<wbr>Screen<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
167
- <aside class="tsd-sources">
168
- <ul>
169
- <li>Defined in MKPlayerConfiguration.ts:23</li>
170
- </ul>
171
- </aside>
172
- <div class="tsd-comment tsd-typography">
173
- <div class="lead">
174
- <p>Boolean indicating if the player should load the small screen ui</p>
175
- </div>
176
- </div>
177
- </section>
178
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
179
- <a name="targetlatency" class="tsd-anchor"></a>
180
- <h3>target<wbr>Latency</h3>
181
- <div class="tsd-signature tsd-kind-icon">target<wbr>Latency<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
182
- <aside class="tsd-sources">
183
- <ul>
184
- <li>Defined in MKPlayerConfiguration.ts:33</li>
185
- </ul>
186
- </aside>
187
- <div class="tsd-comment tsd-typography">
188
- <div class="lead">
189
- <p>number of seconds the player attempts to stay behind the live point</p>
190
- </div>
191
- </div>
192
- </section>
193
- <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
194
- <a name="ui" class="tsd-anchor"></a>
195
- <h3>ui</h3>
196
- <div class="tsd-signature tsd-kind-icon">ui<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
197
- <aside class="tsd-sources">
198
- <ul>
199
- <li>Defined in MKPlayerConfiguration.ts:28</li>
200
- </ul>
201
- </aside>
202
- <div class="tsd-comment tsd-typography">
203
- <div class="lead">
204
- <p>Boolean to enable / disable ui</p>
205
- </div>
206
- </div>
207
- </section>
208
- </section>
209
- </div>
210
- <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
211
- <nav class="tsd-navigation primary">
212
- <ul>
213
- <li class="globals ">
214
- <a href="../globals.html"><em>Globals</em></a>
215
- </li>
216
- </ul>
217
- </nav>
218
- <nav class="tsd-navigation secondary menu-sticky">
219
- <ul class="before-current">
220
- <li class=" tsd-kind-enum">
221
- <a href="../enums/mkevent.html" class="tsd-kind-icon">MKEvent</a>
222
- </li>
223
- <li class=" tsd-kind-class">
224
- <a href="../classes/mkplayer.html" class="tsd-kind-icon">MKPlayer</a>
225
- </li>
226
- <li class=" tsd-kind-interface">
227
- <a href="bufferlevel.html" class="tsd-kind-icon">Buffer<wbr>Level</a>
228
- </li>
229
- </ul>
230
- <ul class="current">
231
- <li class="current tsd-kind-interface">
232
- <a href="mkplayerconfiguration.html" class="tsd-kind-icon">MKPlayer<wbr>Configuration</a>
233
- <ul>
234
- <li class=" tsd-kind-property tsd-parent-kind-interface">
235
- <a href="mkplayerconfiguration.html#autoplay" class="tsd-kind-icon">autoplay</a>
236
- </li>
237
- <li class=" tsd-kind-property tsd-parent-kind-interface">
238
- <a href="mkplayerconfiguration.html#debug" class="tsd-kind-icon">debug</a>
239
- </li>
240
- <li class=" tsd-kind-property tsd-parent-kind-interface">
241
- <a href="mkplayerconfiguration.html#key" class="tsd-kind-icon">key</a>
242
- </li>
243
- <li class=" tsd-kind-property tsd-parent-kind-interface">
244
- <a href="mkplayerconfiguration.html#muted" class="tsd-kind-icon">muted</a>
245
- </li>
246
- <li class=" tsd-kind-property tsd-parent-kind-interface">
247
- <a href="mkplayerconfiguration.html#smallscreen" class="tsd-kind-icon">small<wbr>Screen</a>
248
- </li>
249
- <li class=" tsd-kind-property tsd-parent-kind-interface">
250
- <a href="mkplayerconfiguration.html#targetlatency" class="tsd-kind-icon">target<wbr>Latency</a>
251
- </li>
252
- <li class=" tsd-kind-property tsd-parent-kind-interface">
253
- <a href="mkplayerconfiguration.html#ui" class="tsd-kind-icon">ui</a>
254
- </li>
255
- </ul>
256
- </li>
257
- </ul>
258
- <ul class="after-current">
259
- <li class=" tsd-kind-interface">
260
- <a href="mkplayereventcallback.html" class="tsd-kind-icon">MKPlayer<wbr>Event<wbr>Callback</a>
261
- </li>
262
- <li class=" tsd-kind-interface">
263
- <a href="subtitletrack.html" class="tsd-kind-icon">Subtitle<wbr>Track</a>
264
- </li>
265
- </ul>
266
- </nav>
267
- </div>
268
- </div>
269
- </div>
270
- <footer class="with-border-bottom">
271
- <div class="container">
272
- <h2>Legend</h2>
273
- <div class="tsd-legend-group">
274
- <ul class="tsd-legend">
275
- <li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
276
- <li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
277
- </ul>
278
- <ul class="tsd-legend">
279
- <li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
280
- </ul>
281
- </div>
282
- </div>
283
- </footer>
284
- <div class="container tsd-generator">
285
- <p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
286
- </div>
287
- <div class="overlay"></div>
288
- <script src="../assets/js/main.js"></script>
289
- </body>
290
- </html>