speaker-calibration 2.0.0 → 2.1.0

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 (126) hide show
  1. package/.eslintignore +72 -0
  2. package/.eslintrc.json +40 -0
  3. package/.gitignore +78 -0
  4. package/.prettierignore +70 -0
  5. package/.prettierrc +15 -0
  6. package/LICENSE +20 -20
  7. package/README.md +133 -133
  8. package/__mocks__/fileMock.js +1 -0
  9. package/__mocks__/styleMock.js +1 -0
  10. package/babel.config.js +3 -0
  11. package/coverage/clover.xml +71 -0
  12. package/coverage/coverage-final.json +224 -0
  13. package/coverage/lcov-report/PythonServerInterface.js.html +265 -0
  14. package/coverage/lcov-report/base.css +354 -0
  15. package/coverage/lcov-report/block-navigation.js +82 -0
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +123 -0
  18. package/coverage/lcov-report/prettify.css +101 -0
  19. package/coverage/lcov-report/prettify.js +937 -0
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +189 -0
  22. package/coverage/lcov-report/src/index.html +121 -0
  23. package/coverage/lcov-report/src/server/PythonServerInterface.js.html +268 -0
  24. package/coverage/lcov-report/src/server/index.html +123 -0
  25. package/coverage/lcov-report/src/tasks/audioCalibrator.js.html +499 -0
  26. package/coverage/lcov-report/src/tasks/audioRecorder.js.html +412 -0
  27. package/coverage/lcov-report/src/tasks/index.html +143 -0
  28. package/coverage/lcov-report/src/tasks/volume/index.html +123 -0
  29. package/coverage/lcov-report/src/tasks/volume/volume.js.html +409 -0
  30. package/coverage/lcov-report/src/utils.js.html +172 -0
  31. package/coverage/lcov.info +91 -0
  32. package/dist/example/Queen-Bohemian_Rhapsody.wav +0 -0
  33. package/dist/example/Queen-Bohemian_Rhapsody_g_filtered.wav +0 -0
  34. package/dist/example/index.html +47 -0
  35. package/dist/example/listener.html +89 -0
  36. package/dist/example/server.js +49 -0
  37. package/dist/example/speaker.html +126 -0
  38. package/dist/example/speakerUI.js +217 -0
  39. package/dist/example/styles.css +40 -0
  40. package/dist/main.js +1 -1
  41. package/dist/mlsGen.js +6814 -6814
  42. package/dist/mlsGen.wasm +0 -0
  43. package/doc/AudioCalibrator.html +417 -0
  44. package/doc/AudioPeer.html +251 -0
  45. package/doc/AudioRecorder.html +195 -0
  46. package/doc/ImpulseResponse.html +215 -0
  47. package/doc/Listener.html +308 -0
  48. package/doc/MlsGenInterface.html +226 -0
  49. package/doc/MyEventEmitter.html +274 -0
  50. package/doc/PythonServerAPI.html +109 -0
  51. package/doc/Speaker-Calibration-UML-Diagram.png +0 -0
  52. package/doc/Speaker.html +276 -0
  53. package/doc/Takes%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +128 -0
  54. package/doc/Takes%20the%20url%20of%20the%20current%20site%0Aand%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +138 -0
  55. package/doc/Takes%20the%20url%20of%20the%20current%20site%20and%20a%20target%20element%20where%20html%20elements%20will%20be%20appended..html +137 -0
  56. package/doc/Volume.html +88 -0
  57. package/doc/audioCalibrator.js.html +179 -0
  58. package/doc/audioPeer.js.html +175 -0
  59. package/doc/audioRecorder.js.html +163 -0
  60. package/doc/creates%20a%20new%20AudioRecorder%20instance.%20%0ASets%20up%20the%20audio%20context%20and%20file%20reader..html +114 -0
  61. package/doc/fonts/OpenSans-Bold-webfont.eot +0 -0
  62. package/doc/fonts/OpenSans-Bold-webfont.svg +1830 -0
  63. package/doc/fonts/OpenSans-Bold-webfont.woff +0 -0
  64. package/doc/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  65. package/doc/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  66. package/doc/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  67. package/doc/fonts/OpenSans-Italic-webfont.eot +0 -0
  68. package/doc/fonts/OpenSans-Italic-webfont.svg +1830 -0
  69. package/doc/fonts/OpenSans-Italic-webfont.woff +0 -0
  70. package/doc/fonts/OpenSans-Light-webfont.eot +0 -0
  71. package/doc/fonts/OpenSans-Light-webfont.svg +1831 -0
  72. package/doc/fonts/OpenSans-Light-webfont.woff +0 -0
  73. package/doc/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  74. package/doc/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  75. package/doc/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  76. package/doc/fonts/OpenSans-Regular-webfont.eot +0 -0
  77. package/doc/fonts/OpenSans-Regular-webfont.svg +1831 -0
  78. package/doc/fonts/OpenSans-Regular-webfont.woff +0 -0
  79. package/doc/global.html +308 -0
  80. package/doc/index.html +58 -0
  81. package/doc/listener.js.html +170 -0
  82. package/doc/mlsGen_mlsGenInterface.js.html +117 -0
  83. package/doc/myEventEmitter.js.html +124 -0
  84. package/doc/peer-connection_audioPeer.js.html +188 -0
  85. package/doc/peer-connection_listener.js.html +311 -0
  86. package/doc/peer-connection_speaker.js.html +381 -0
  87. package/doc/sc-activity-diagram.png +0 -0
  88. package/doc/scripts/linenumber.js +25 -0
  89. package/doc/scripts/prettify/Apache-License-2.0.txt +202 -0
  90. package/doc/scripts/prettify/lang-css.js +24 -0
  91. package/doc/scripts/prettify/prettify.js +640 -0
  92. package/doc/server_PythonServerAPI.js.html +160 -0
  93. package/doc/speaker.js.html +248 -0
  94. package/doc/styles/jsdoc-default.css +371 -0
  95. package/doc/styles/prettify-jsdoc.css +111 -0
  96. package/doc/styles/prettify-tomorrow.css +163 -0
  97. package/doc/tasks_audioCalibrator.js.html +207 -0
  98. package/doc/tasks_audioRecorder.js.html +190 -0
  99. package/doc/tasks_impulse-response_impulseResponse.js.html +442 -0
  100. package/doc/tasks_impulse-response_mlsGen_mlsGenInterface.js.html +175 -0
  101. package/doc/tasks_volume_volume.js.html +185 -0
  102. package/doc/utils.js.html +105 -0
  103. package/jest.config.js +173 -0
  104. package/netlify.toml +27 -0
  105. package/package.json +67 -66
  106. package/src/index.html +21 -0
  107. package/src/main.js +21 -0
  108. package/src/myEventEmitter.js +83 -0
  109. package/src/peer-connection/audioPeer.js +151 -0
  110. package/src/peer-connection/listener.js +251 -0
  111. package/src/peer-connection/peerErrors.js +25 -0
  112. package/src/peer-connection/speaker.js +346 -0
  113. package/src/server/PythonServerAPI.js +117 -0
  114. package/src/tasks/audioCalibrator.js +218 -0
  115. package/src/tasks/audioRecorder.js +148 -0
  116. package/src/tasks/impulse-response/impulseResponse.js +436 -0
  117. package/src/tasks/impulse-response/mlsGen/mlsGen.cpp +99 -0
  118. package/src/tasks/impulse-response/mlsGen/mlsGen.hpp +304 -0
  119. package/src/tasks/impulse-response/mlsGen/mlsGenInterface.js +131 -0
  120. package/src/tasks/impulse-response/mlsGen/mlsGenTest.cpp +181 -0
  121. package/src/tasks/volume/volume.cpp +3 -0
  122. package/src/tasks/volume/volume.hpp +23 -0
  123. package/src/tasks/volume/volume.js +157 -0
  124. package/src/utils.js +55 -0
  125. package/webpack.config.js +37 -0
  126. package/README +0 -3
@@ -0,0 +1,371 @@
1
+ @font-face {
2
+ font-family: 'Open Sans';
3
+ font-weight: normal;
4
+ font-style: normal;
5
+ src: url('../fonts/OpenSans-Regular-webfont.eot');
6
+ src: local('Open Sans'), local('OpenSans'),
7
+ url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
8
+ url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
9
+ url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg');
10
+ }
11
+
12
+ @font-face {
13
+ font-family: 'Open Sans Light';
14
+ font-weight: normal;
15
+ font-style: normal;
16
+ src: url('../fonts/OpenSans-Light-webfont.eot');
17
+ src: local('Open Sans Light'), local('OpenSans Light'),
18
+ url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
19
+ url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
20
+ url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg');
21
+ }
22
+
23
+ html {
24
+ overflow: auto;
25
+ background-color: #fff;
26
+ font-size: 14px;
27
+ }
28
+
29
+ body {
30
+ font-family: 'Open Sans', sans-serif;
31
+ line-height: 1.5;
32
+ color: #4d4e53;
33
+ background-color: white;
34
+ }
35
+
36
+ a,
37
+ a:visited,
38
+ a:active {
39
+ color: #0095dd;
40
+ text-decoration: none;
41
+ }
42
+
43
+ a:hover {
44
+ text-decoration: underline;
45
+ }
46
+
47
+ header {
48
+ display: block;
49
+ padding: 0px 4px;
50
+ }
51
+
52
+ tt,
53
+ code,
54
+ kbd,
55
+ samp {
56
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
57
+ }
58
+
59
+ .class-description {
60
+ font-size: 130%;
61
+ line-height: 140%;
62
+ margin-bottom: 1em;
63
+ margin-top: 1em;
64
+ }
65
+
66
+ .class-description:empty {
67
+ margin: 0;
68
+ }
69
+
70
+ #main {
71
+ float: left;
72
+ width: 70%;
73
+ }
74
+
75
+ article dl {
76
+ margin-bottom: 40px;
77
+ }
78
+
79
+ article img {
80
+ max-width: 100%;
81
+ }
82
+
83
+ section {
84
+ display: block;
85
+ background-color: #fff;
86
+ padding: 12px 24px;
87
+ border-bottom: 1px solid #ccc;
88
+ margin-right: 30px;
89
+ }
90
+
91
+ .variation {
92
+ display: none;
93
+ }
94
+
95
+ .signature-attributes {
96
+ font-size: 60%;
97
+ color: #aaa;
98
+ font-style: italic;
99
+ font-weight: lighter;
100
+ }
101
+
102
+ nav {
103
+ display: block;
104
+ float: right;
105
+ margin-top: 28px;
106
+ width: 30%;
107
+ box-sizing: border-box;
108
+ border-left: 1px solid #ccc;
109
+ padding-left: 16px;
110
+ }
111
+
112
+ nav ul {
113
+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
114
+ font-size: 100%;
115
+ line-height: 17px;
116
+ padding: 0;
117
+ margin: 0;
118
+ list-style-type: none;
119
+ }
120
+
121
+ nav ul a,
122
+ nav ul a:visited,
123
+ nav ul a:active {
124
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
125
+ line-height: 18px;
126
+ color: #4d4e53;
127
+ }
128
+
129
+ nav h3 {
130
+ margin-top: 12px;
131
+ }
132
+
133
+ nav li {
134
+ margin-top: 6px;
135
+ }
136
+
137
+ footer {
138
+ display: block;
139
+ padding: 6px;
140
+ margin-top: 12px;
141
+ font-style: italic;
142
+ font-size: 90%;
143
+ }
144
+
145
+ h1,
146
+ h2,
147
+ h3,
148
+ h4 {
149
+ font-weight: 200;
150
+ margin: 0;
151
+ }
152
+
153
+ h1 {
154
+ font-family: 'Open Sans Light', sans-serif;
155
+ font-size: 48px;
156
+ letter-spacing: -2px;
157
+ margin: 12px 24px 20px;
158
+ }
159
+
160
+ h2,
161
+ h3.subsection-title {
162
+ font-size: 30px;
163
+ font-weight: 700;
164
+ letter-spacing: -1px;
165
+ margin-bottom: 12px;
166
+ }
167
+
168
+ h3 {
169
+ font-size: 24px;
170
+ letter-spacing: -0.5px;
171
+ margin-bottom: 12px;
172
+ }
173
+
174
+ h4 {
175
+ font-size: 18px;
176
+ letter-spacing: -0.33px;
177
+ margin-bottom: 12px;
178
+ color: #4d4e53;
179
+ }
180
+
181
+ h5,
182
+ .container-overview .subsection-title {
183
+ font-size: 120%;
184
+ font-weight: bold;
185
+ letter-spacing: -0.01em;
186
+ margin: 8px 0 3px 0;
187
+ }
188
+
189
+ h6 {
190
+ font-size: 100%;
191
+ letter-spacing: -0.01em;
192
+ margin: 6px 0 3px 0;
193
+ font-style: italic;
194
+ }
195
+
196
+ table {
197
+ border-spacing: 0;
198
+ border: 0;
199
+ border-collapse: collapse;
200
+ }
201
+
202
+ td,
203
+ th {
204
+ border: 1px solid #ddd;
205
+ margin: 0px;
206
+ text-align: left;
207
+ vertical-align: top;
208
+ padding: 4px 6px;
209
+ display: table-cell;
210
+ }
211
+
212
+ thead tr {
213
+ background-color: #ddd;
214
+ font-weight: bold;
215
+ }
216
+
217
+ th {
218
+ border-right: 1px solid #aaa;
219
+ }
220
+ tr > th:last-child {
221
+ border-right: 1px solid #ddd;
222
+ }
223
+
224
+ .ancestors,
225
+ .attribs {
226
+ color: #999;
227
+ }
228
+ .ancestors a,
229
+ .attribs a {
230
+ color: #999 !important;
231
+ text-decoration: none;
232
+ }
233
+
234
+ .clear {
235
+ clear: both;
236
+ }
237
+
238
+ .important {
239
+ font-weight: bold;
240
+ color: #950b02;
241
+ }
242
+
243
+ .yes-def {
244
+ text-indent: -1000px;
245
+ }
246
+
247
+ .type-signature {
248
+ color: #aaa;
249
+ }
250
+
251
+ .name,
252
+ .signature {
253
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
254
+ }
255
+
256
+ .details {
257
+ margin-top: 14px;
258
+ border-left: 2px solid #ddd;
259
+ }
260
+ .details dt {
261
+ width: 120px;
262
+ float: left;
263
+ padding-left: 10px;
264
+ padding-top: 6px;
265
+ }
266
+ .details dd {
267
+ margin-left: 70px;
268
+ }
269
+ .details ul {
270
+ margin: 0;
271
+ }
272
+ .details ul {
273
+ list-style-type: none;
274
+ }
275
+ .details li {
276
+ margin-left: 30px;
277
+ padding-top: 6px;
278
+ }
279
+ .details pre.prettyprint {
280
+ margin: 0;
281
+ }
282
+ .details .object-value {
283
+ padding-top: 0;
284
+ }
285
+
286
+ .description {
287
+ margin-bottom: 1em;
288
+ margin-top: 1em;
289
+ }
290
+
291
+ .code-caption {
292
+ font-style: italic;
293
+ font-size: 107%;
294
+ margin: 0;
295
+ }
296
+
297
+ .source {
298
+ border: 1px solid #ddd;
299
+ width: 80%;
300
+ overflow: auto;
301
+ }
302
+
303
+ .prettyprint.source {
304
+ width: inherit;
305
+ }
306
+
307
+ .source code {
308
+ font-size: 100%;
309
+ line-height: 18px;
310
+ display: block;
311
+ padding: 4px 12px;
312
+ margin: 0;
313
+ background-color: #fff;
314
+ color: #4d4e53;
315
+ }
316
+
317
+ .prettyprint code span.line {
318
+ display: inline-block;
319
+ }
320
+
321
+ .prettyprint.linenums {
322
+ padding-left: 70px;
323
+ -webkit-user-select: none;
324
+ -moz-user-select: none;
325
+ -ms-user-select: none;
326
+ user-select: none;
327
+ }
328
+
329
+ .prettyprint.linenums ol {
330
+ padding-left: 0;
331
+ }
332
+
333
+ .prettyprint.linenums li {
334
+ border-left: 3px #ddd solid;
335
+ }
336
+
337
+ .prettyprint.linenums li.selected,
338
+ .prettyprint.linenums li.selected * {
339
+ background-color: lightyellow;
340
+ }
341
+
342
+ .prettyprint.linenums li * {
343
+ -webkit-user-select: text;
344
+ -moz-user-select: text;
345
+ -ms-user-select: text;
346
+ user-select: text;
347
+ }
348
+
349
+ .params .name,
350
+ .props .name,
351
+ .name code {
352
+ color: #4d4e53;
353
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
354
+ font-size: 100%;
355
+ }
356
+
357
+ .params td.description > p:first-child,
358
+ .props td.description > p:first-child {
359
+ margin-top: 0;
360
+ padding-top: 0;
361
+ }
362
+
363
+ .params td.description > p:last-child,
364
+ .props td.description > p:last-child {
365
+ margin-bottom: 0;
366
+ padding-bottom: 0;
367
+ }
368
+
369
+ .disabled {
370
+ color: #454545;
371
+ }
@@ -0,0 +1,111 @@
1
+ /* JSDoc prettify.js theme */
2
+
3
+ /* plain text */
4
+ .pln {
5
+ color: #000000;
6
+ font-weight: normal;
7
+ font-style: normal;
8
+ }
9
+
10
+ /* string content */
11
+ .str {
12
+ color: #006400;
13
+ font-weight: normal;
14
+ font-style: normal;
15
+ }
16
+
17
+ /* a keyword */
18
+ .kwd {
19
+ color: #000000;
20
+ font-weight: bold;
21
+ font-style: normal;
22
+ }
23
+
24
+ /* a comment */
25
+ .com {
26
+ font-weight: normal;
27
+ font-style: italic;
28
+ }
29
+
30
+ /* a type name */
31
+ .typ {
32
+ color: #000000;
33
+ font-weight: normal;
34
+ font-style: normal;
35
+ }
36
+
37
+ /* a literal value */
38
+ .lit {
39
+ color: #006400;
40
+ font-weight: normal;
41
+ font-style: normal;
42
+ }
43
+
44
+ /* punctuation */
45
+ .pun {
46
+ color: #000000;
47
+ font-weight: bold;
48
+ font-style: normal;
49
+ }
50
+
51
+ /* lisp open bracket */
52
+ .opn {
53
+ color: #000000;
54
+ font-weight: bold;
55
+ font-style: normal;
56
+ }
57
+
58
+ /* lisp close bracket */
59
+ .clo {
60
+ color: #000000;
61
+ font-weight: bold;
62
+ font-style: normal;
63
+ }
64
+
65
+ /* a markup tag name */
66
+ .tag {
67
+ color: #006400;
68
+ font-weight: normal;
69
+ font-style: normal;
70
+ }
71
+
72
+ /* a markup attribute name */
73
+ .atn {
74
+ color: #006400;
75
+ font-weight: normal;
76
+ font-style: normal;
77
+ }
78
+
79
+ /* a markup attribute value */
80
+ .atv {
81
+ color: #006400;
82
+ font-weight: normal;
83
+ font-style: normal;
84
+ }
85
+
86
+ /* a declaration */
87
+ .dec {
88
+ color: #000000;
89
+ font-weight: bold;
90
+ font-style: normal;
91
+ }
92
+
93
+ /* a variable name */
94
+ .var {
95
+ color: #000000;
96
+ font-weight: normal;
97
+ font-style: normal;
98
+ }
99
+
100
+ /* a function name */
101
+ .fun {
102
+ color: #000000;
103
+ font-weight: bold;
104
+ font-style: normal;
105
+ }
106
+
107
+ /* Specify class=linenums on a pre to get line numbering */
108
+ ol.linenums {
109
+ margin-top: 0;
110
+ margin-bottom: 0;
111
+ }
@@ -0,0 +1,163 @@
1
+ /* Tomorrow Theme */
2
+ /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3
+ /* Pretty printing styles. Used with prettify.js. */
4
+ /* SPAN elements with the classes below are added by prettyprint. */
5
+ /* plain text */
6
+ .pln {
7
+ color: #4d4d4c;
8
+ }
9
+
10
+ @media screen {
11
+ /* string content */
12
+ .str {
13
+ color: #718c00;
14
+ }
15
+
16
+ /* a keyword */
17
+ .kwd {
18
+ color: #8959a8;
19
+ }
20
+
21
+ /* a comment */
22
+ .com {
23
+ color: #8e908c;
24
+ }
25
+
26
+ /* a type name */
27
+ .typ {
28
+ color: #4271ae;
29
+ }
30
+
31
+ /* a literal value */
32
+ .lit {
33
+ color: #f5871f;
34
+ }
35
+
36
+ /* punctuation */
37
+ .pun {
38
+ color: #4d4d4c;
39
+ }
40
+
41
+ /* lisp open bracket */
42
+ .opn {
43
+ color: #4d4d4c;
44
+ }
45
+
46
+ /* lisp close bracket */
47
+ .clo {
48
+ color: #4d4d4c;
49
+ }
50
+
51
+ /* a markup tag name */
52
+ .tag {
53
+ color: #c82829;
54
+ }
55
+
56
+ /* a markup attribute name */
57
+ .atn {
58
+ color: #f5871f;
59
+ }
60
+
61
+ /* a markup attribute value */
62
+ .atv {
63
+ color: #3e999f;
64
+ }
65
+
66
+ /* a declaration */
67
+ .dec {
68
+ color: #f5871f;
69
+ }
70
+
71
+ /* a variable name */
72
+ .var {
73
+ color: #c82829;
74
+ }
75
+
76
+ /* a function name */
77
+ .fun {
78
+ color: #4271ae;
79
+ }
80
+ }
81
+ /* Use higher contrast and text-weight for printable form. */
82
+ @media print, projection {
83
+ .str {
84
+ color: #060;
85
+ }
86
+
87
+ .kwd {
88
+ color: #006;
89
+ font-weight: bold;
90
+ }
91
+
92
+ .com {
93
+ color: #600;
94
+ font-style: italic;
95
+ }
96
+
97
+ .typ {
98
+ color: #404;
99
+ font-weight: bold;
100
+ }
101
+
102
+ .lit {
103
+ color: #044;
104
+ }
105
+
106
+ .pun,
107
+ .opn,
108
+ .clo {
109
+ color: #440;
110
+ }
111
+
112
+ .tag {
113
+ color: #006;
114
+ font-weight: bold;
115
+ }
116
+
117
+ .atn {
118
+ color: #404;
119
+ }
120
+
121
+ .atv {
122
+ color: #060;
123
+ }
124
+ }
125
+ /* Style */
126
+ /*
127
+ pre.prettyprint {
128
+ background: white;
129
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
130
+ font-size: 12px;
131
+ line-height: 1.5;
132
+ border: 1px solid #ccc;
133
+ padding: 10px; }
134
+ */
135
+
136
+ /* Specify class=linenums on a pre to get line numbering */
137
+ ol.linenums {
138
+ margin-top: 0;
139
+ margin-bottom: 0;
140
+ }
141
+
142
+ /* IE indents via margin-left */
143
+ li.L0,
144
+ li.L1,
145
+ li.L2,
146
+ li.L3,
147
+ li.L4,
148
+ li.L5,
149
+ li.L6,
150
+ li.L7,
151
+ li.L8,
152
+ li.L9 {
153
+ /* */
154
+ }
155
+
156
+ /* Alternate shading for lines */
157
+ li.L1,
158
+ li.L3,
159
+ li.L5,
160
+ li.L7,
161
+ li.L9 {
162
+ /* */
163
+ }