Version 1
[yaffs-website] / node_modules / video.js / es5 / tracks / html-track-element-list.js
1 'use strict';
2
3 exports.__esModule = true;
4
5 var _browser = require('../utils/browser.js');
6
7 var browser = _interopRequireWildcard(_browser);
8
9 var _document = require('global/document');
10
11 var _document2 = _interopRequireDefault(_document);
12
13 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
14
15 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
16
17 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /**
18                                                                                                                                                            * @file html-track-element-list.js
19                                                                                                                                                            */
20
21 /**
22  * The current list of {@link HtmlTrackElement}s.
23  */
24 var HtmlTrackElementList = function () {
25
26   /**
27    * Create an instance of this class.
28    *
29    * @param {HtmlTrackElement[]} [tracks=[]]
30    *        A list of `HtmlTrackElement` to instantiate the list with.
31    */
32   function HtmlTrackElementList() {
33     var trackElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
34
35     _classCallCheck(this, HtmlTrackElementList);
36
37     var list = this; // eslint-disable-line
38
39     if (browser.IS_IE8) {
40       list = _document2['default'].createElement('custom');
41
42       for (var prop in HtmlTrackElementList.prototype) {
43         if (prop !== 'constructor') {
44           list[prop] = HtmlTrackElementList.prototype[prop];
45         }
46       }
47     }
48
49     list.trackElements_ = [];
50
51     /**
52      * @member {number} length
53      *         The current number of `Track`s in the this Trackist.
54      */
55     Object.defineProperty(list, 'length', {
56       get: function get() {
57         return this.trackElements_.length;
58       }
59     });
60
61     for (var i = 0, length = trackElements.length; i < length; i++) {
62       list.addTrackElement_(trackElements[i]);
63     }
64
65     if (browser.IS_IE8) {
66       return list;
67     }
68   }
69
70   /**
71    * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`
72    *
73    * @param {HtmlTrackElement} trackElement
74    *        The track element to add to the list.
75    *
76    * @private
77    */
78
79
80   HtmlTrackElementList.prototype.addTrackElement_ = function addTrackElement_(trackElement) {
81     var index = this.trackElements_.length;
82
83     if (!('' + index in this)) {
84       Object.defineProperty(this, index, {
85         get: function get() {
86           return this.trackElements_[index];
87         }
88       });
89     }
90
91     // Do not add duplicate elements
92     if (this.trackElements_.indexOf(trackElement) === -1) {
93       this.trackElements_.push(trackElement);
94     }
95   };
96
97   /**
98    * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an
99    * {@link TextTrack}.
100    *
101    * @param {TextTrack} track
102    *        The track associated with a track element.
103    *
104    * @return {HtmlTrackElement|undefined}
105    *         The track element that was found or undefined.
106    *
107    * @private
108    */
109
110
111   HtmlTrackElementList.prototype.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {
112     var trackElement_ = void 0;
113
114     for (var i = 0, length = this.trackElements_.length; i < length; i++) {
115       if (track === this.trackElements_[i].track) {
116         trackElement_ = this.trackElements_[i];
117
118         break;
119       }
120     }
121
122     return trackElement_;
123   };
124
125   /**
126    * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`
127    *
128    * @param {HtmlTrackElement} trackElement
129    *        The track element to remove from the list.
130    *
131    * @private
132    */
133
134
135   HtmlTrackElementList.prototype.removeTrackElement_ = function removeTrackElement_(trackElement) {
136     for (var i = 0, length = this.trackElements_.length; i < length; i++) {
137       if (trackElement === this.trackElements_[i]) {
138         this.trackElements_.splice(i, 1);
139
140         break;
141       }
142     }
143   };
144
145   return HtmlTrackElementList;
146 }();
147
148 exports['default'] = HtmlTrackElementList;