df26b18dfbc84ab16f96d7609547334db5b67be4
[yaffs-website] / control-bar / text-track-controls / text-track-button.js
1 'use strict';
2
3 exports.__esModule = true;
4
5 var _trackButton = require('../track-button.js');
6
7 var _trackButton2 = _interopRequireDefault(_trackButton);
8
9 var _component = require('../../component.js');
10
11 var _component2 = _interopRequireDefault(_component);
12
13 var _textTrackMenuItem = require('./text-track-menu-item.js');
14
15 var _textTrackMenuItem2 = _interopRequireDefault(_textTrackMenuItem);
16
17 var _offTextTrackMenuItem = require('./off-text-track-menu-item.js');
18
19 var _offTextTrackMenuItem2 = _interopRequireDefault(_offTextTrackMenuItem);
20
21 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
22
23 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
25 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
26
27 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
28                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 * @file text-track-button.js
29                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 */
30
31
32 /**
33  * The base class for buttons that toggle specific text track types (e.g. subtitles)
34  *
35  * @extends MenuButton
36  */
37 var TextTrackButton = function (_TrackButton) {
38   _inherits(TextTrackButton, _TrackButton);
39
40   /**
41    * Creates an instance of this class.
42    *
43    * @param {Player} player
44    *        The `Player` that this class should be attached to.
45    *
46    * @param {Object} [options={}]
47    *        The key/value store of player options.
48    */
49   function TextTrackButton(player) {
50     var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
51
52     _classCallCheck(this, TextTrackButton);
53
54     options.tracks = player.textTracks();
55
56     return _possibleConstructorReturn(this, _TrackButton.call(this, player, options));
57   }
58
59   /**
60    * Create a menu item for each text track
61    *
62    * @param {TextTrackMenuItem[]} [items=[]]
63    *        Existing array of items to use during creation
64    *
65    * @return {TextTrackMenuItem[]}
66    *         Array of menu items that were created
67    */
68
69
70   TextTrackButton.prototype.createItems = function createItems() {
71     var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
72
73     // Add an OFF menu item to turn all tracks off
74     items.push(new _offTextTrackMenuItem2['default'](this.player_, { kind: this.kind_ }));
75     this.hideThreshold_ += 1;
76
77     var tracks = this.player_.textTracks();
78
79     if (!tracks) {
80       return items;
81     }
82
83     for (var i = 0; i < tracks.length; i++) {
84       var track = tracks[i];
85
86       // only add tracks that are of the appropriate kind and have a label
87       if (track.kind === this.kind_) {
88         items.push(new _textTrackMenuItem2['default'](this.player_, {
89           track: track,
90           // MenuItem is selectable
91           selectable: true
92         }));
93       }
94     }
95
96     return items;
97   };
98
99   return TextTrackButton;
100 }(_trackButton2['default']);
101
102 _component2['default'].registerComponent('TextTrackButton', TextTrackButton);
103 exports['default'] = TextTrackButton;