Added missing modules, including some as submodules.
[yaffs-website] / node_modules / videojs-vtt.js / lib / vttregion.js
1 /**
2  * Copyright 2013 vtt.js Contributors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 (function(root, vttjs) {
18
19   var scrollSetting = {
20     "": true,
21     "up": true
22   };
23
24   function findScrollSetting(value) {
25     if (typeof value !== "string") {
26       return false;
27     }
28     var scroll = scrollSetting[value.toLowerCase()];
29     return scroll ? value.toLowerCase() : false;
30   }
31
32   function isValidPercentValue(value) {
33     return typeof value === "number" && (value >= 0 && value <= 100);
34   }
35
36   // VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface
37   function VTTRegion() {
38     var _width = 100;
39     var _lines = 3;
40     var _regionAnchorX = 0;
41     var _regionAnchorY = 100;
42     var _viewportAnchorX = 0;
43     var _viewportAnchorY = 100;
44     var _scroll = "";
45
46     Object.defineProperties(this, {
47       "width": {
48         enumerable: true,
49         get: function() {
50           return _width;
51         },
52         set: function(value) {
53           if (!isValidPercentValue(value)) {
54             throw new Error("Width must be between 0 and 100.");
55           }
56           _width = value;
57         }
58       },
59       "lines": {
60         enumerable: true,
61         get: function() {
62           return _lines;
63         },
64         set: function(value) {
65           if (typeof value !== "number") {
66             throw new TypeError("Lines must be set to a number.");
67           }
68           _lines = value;
69         }
70       },
71       "regionAnchorY": {
72         enumerable: true,
73         get: function() {
74           return _regionAnchorY;
75         },
76         set: function(value) {
77           if (!isValidPercentValue(value)) {
78             throw new Error("RegionAnchorX must be between 0 and 100.");
79           }
80           _regionAnchorY = value;
81         }
82       },
83       "regionAnchorX": {
84         enumerable: true,
85         get: function() {
86           return _regionAnchorX;
87         },
88         set: function(value) {
89           if(!isValidPercentValue(value)) {
90             throw new Error("RegionAnchorY must be between 0 and 100.");
91           }
92           _regionAnchorX = value;
93         }
94       },
95       "viewportAnchorY": {
96         enumerable: true,
97         get: function() {
98           return _viewportAnchorY;
99         },
100         set: function(value) {
101           if (!isValidPercentValue(value)) {
102             throw new Error("ViewportAnchorY must be between 0 and 100.");
103           }
104           _viewportAnchorY = value;
105         }
106       },
107       "viewportAnchorX": {
108         enumerable: true,
109         get: function() {
110           return _viewportAnchorX;
111         },
112         set: function(value) {
113           if (!isValidPercentValue(value)) {
114             throw new Error("ViewportAnchorX must be between 0 and 100.");
115           }
116           _viewportAnchorX = value;
117         }
118       },
119       "scroll": {
120         enumerable: true,
121         get: function() {
122           return _scroll;
123         },
124         set: function(value) {
125           var setting = findScrollSetting(value);
126           // Have to check for false as an empty string is a legal value.
127           if (setting === false) {
128             throw new SyntaxError("An invalid or illegal string was specified.");
129           }
130           _scroll = setting;
131         }
132       }
133     });
134   }
135
136   root.VTTRegion = root.VTTRegion || VTTRegion;
137   vttjs.VTTRegion = VTTRegion;
138 }(this, (this.vttjs || {})));