@lls/lls-audio 0.0.25 → 0.0.27

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lls/lls-audio",
3
- "version": "0.0.25",
3
+ "version": "0.0.27",
4
4
  "main": "index.js",
5
5
  "devDependencies": {
6
6
  "@kadira/storybook": "^2.21.0",
@@ -20,6 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@lls/lls-icons": "1.0.37",
23
+ "@lls/lls-ui": "0.1.19",
23
24
  "aphrodite": "^1.1.0",
24
25
  "is_js": "^0.9.0",
25
26
  "merge-audio-buffers": "^1.0.0",
@@ -41,7 +42,7 @@
41
42
  "start": "npm run storybook",
42
43
  "storybook": "start-storybook -p 9009",
43
44
  "deploy-storybook": "storybook-to-ghpages",
44
- "build": "rm -rf dist && mkdir dist && babel -d dist src",
45
+ "build": "rm -rf dist && mkdir dist && $(npm bin)/babel -d dist src",
45
46
  "copy:package": "cp -R package.json dist/",
46
47
  "copy:readme": "cp -R README.md dist/",
47
48
  "npm:publish": "npm run build && npm run release && npm run copy:readme && npm run copy:package && cd dist && npm publish && cd .. && npm run deploy-storybook",
package/player/Audio.js CHANGED
@@ -174,6 +174,7 @@ var Player = function (_Component) {
174
174
  player.removeEventListener('play', this.onPlay);
175
175
  player.removeEventListener('pause', this.onPause);
176
176
  player.removeEventListener('timeupdate', this.onAudioUpdate);
177
+ cancelAnimationFrame(this.requestAnimationId);
177
178
  }
178
179
  }, {
179
180
  key: 'getCurrentTime',
package/player/Range.js CHANGED
@@ -18,19 +18,25 @@ var _llsIcons2 = _interopRequireDefault(_llsIcons);
18
18
 
19
19
  var _utils = require('./utils');
20
20
 
21
+ var _mediaQueries = require('./styles/mediaQueries');
22
+
21
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
24
 
25
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
+
23
27
  var styles = _noImportant.StyleSheet.create({
24
28
  range: {
25
29
  fontSize: 22,
26
30
  padding: '6px 10px',
27
31
  borderLeft: '2px solid #d8d8d8'
28
32
  },
29
- range_menu: {
33
+ range_menu: _defineProperty({
30
34
  ':hover .Range_menu_menu': {
31
35
  display: 'flex'
32
36
  }
33
- },
37
+ }, _mediaQueries.MOBILE, {
38
+ display: 'none'
39
+ }),
34
40
  current: {
35
41
  color: _colors.BLUE,
36
42
  padding: 10
package/player/index.js CHANGED
@@ -190,7 +190,9 @@ var Player = function (_Component) {
190
190
  _props$onClickAddRang = _props.onClickAddRange,
191
191
  onClickAddRange = _props$onClickAddRang === undefined ? false : _props$onClickAddRang,
192
192
  _props$onClickDeleteR = _props.onClickDeleteRange,
193
- onClickDeleteRange = _props$onClickDeleteR === undefined ? false : _props$onClickDeleteR;
193
+ onClickDeleteRange = _props$onClickDeleteR === undefined ? false : _props$onClickDeleteR,
194
+ _props$preload = _props.preload,
195
+ preload = _props$preload === undefined ? 'auto' : _props$preload;
194
196
  var _state = this.state,
195
197
  loading = _state.loading,
196
198
  duration = _state.duration,
@@ -200,7 +202,9 @@ var Player = function (_Component) {
200
202
  containerWidth = _state.containerWidth,
201
203
  speed = _state.speed,
202
204
  _state$currentRange = _state.currentRange,
203
- currentRange = _state$currentRange === undefined ? {} : _state$currentRange;
205
+ currentRange = _state$currentRange === undefined ? {} : _state$currentRange,
206
+ loop = _state.loop,
207
+ volume = _state.volume;
204
208
  var _currentRange$startTi = currentRange.startTime,
205
209
  startTime = _currentRange$startTi === undefined ? 0 : _currentRange$startTi,
206
210
  _currentRange$endTime = currentRange.endTime,
@@ -210,116 +214,63 @@ var Player = function (_Component) {
210
214
  return _react2.default.createElement(
211
215
  'div',
212
216
  { className: 'Audio_player ' + (0, _noImportant.css)(styles.player) + ' ' + className },
213
- _react2.default.createElement(
214
- 'div',
215
- { className: (0, _noImportant.css)(styles.play_and_stop), onClick: function onClick() {
216
- return play ? _this4.refs.audio.pause() : _this4.refs.audio.play();
217
- } },
218
- _react2.default.createElement(_Play2.default, { pause: !play })
219
- ),
217
+ _react2.default.createElement(PlayWrapper, { play: play, audioRef: this.refs.audio }),
220
218
  _react2.default.createElement(_Audio2.default, { autoPlay: autoPlay, onChange: function onChange(state) {
221
219
  return _this4.setState(_extends({}, state));
222
- }, ref: 'audio', src: src }),
223
- _react2.default.createElement(
224
- 'div',
225
- { className: 'Speed_menu ' + (0, _noImportant.css)(styles.speed_menu) },
226
- _react2.default.createElement(_Speed2.default, { speed: speed, onSpeedChange: function onSpeedChange(speed) {
227
- return _this4.refs.audio.setSpeed(speed);
228
- } })
229
- ),
230
- _react2.default.createElement(
231
- 'div',
232
- { onClick: function onClick() {
233
- return _this4.refs.audio.setLoop(!_this4.state.loop);
234
- }, className: 'Repeat_menu ' + (0, _noImportant.css)(styles.repeat_menu) },
235
- _react2.default.createElement(_Loop2.default, { loop: this.state.loop })
236
- ),
237
- _react2.default.createElement(
238
- 'div',
239
- null,
240
- displayRange ? _react2.default.createElement(_Range2.default, { setRange: function setRange(range) {
241
- return _this4.setRange(range);
242
- }, onClickAddRange: onClickAddRange, onClickDeleteRange: onClickDeleteRange, ranges: ranges, startTime: startTime, endTime: endTime }) : null
243
- ),
220
+ }, ref: 'audio', src: src, preload: preload }),
221
+ _react2.default.createElement(SpeedWrapper, { speed: speed, audioRef: this.refs.audio }),
222
+ _react2.default.createElement(LoopWrapper, { loop: loop, audioRef: this.refs.audio }),
223
+ displayRange ? _react2.default.createElement(_Range2.default, {
224
+ setRange: this.setRange,
225
+ onClickAddRange: onClickAddRange,
226
+ onClickDeleteRange: onClickDeleteRange,
227
+ ranges: ranges,
228
+ startTime: startTime,
229
+ endTime: endTime
230
+ }) : null,
244
231
  _react2.default.createElement(
245
232
  'div',
246
- { className: (0, _noImportant.css)(styles.time) },
247
- (0, _utils.timeConvert)(currentTime)
248
- ),
249
- _react2.default.createElement(
250
- 'div',
251
- { className: (0, _noImportant.css)(styles.timeline), ref: 'container' },
233
+ { className: (0, _noImportant.css)(styles.waveAndTimes) },
252
234
  _react2.default.createElement(
253
235
  'div',
254
- null,
255
- _react2.default.createElement(_CustomWave2.default, { currentTime: currentTime, width: containerWidth, height: 60, range: { startTime: startTime, endTime: endTime }, isLoading: loading, waveform: waveform }),
256
- _react2.default.createElement(_reactInputRange2.default, {
257
- classNames: _fallbackTimelineClassNames2.default,
258
- formatLabel: _utils.timeConvert,
259
- maxValue: Math.round(duration) || 1,
260
- minValue: 0,
261
- onChange: function onChange(c, _ref) {
262
- var min = _ref.min,
263
- max = _ref.max;
264
- return _this4.refs.audio.setRange({ startTime: min, endTime: max });
265
- },
266
- value: { min: startTime, max: endTime }
267
- }),
268
- _react2.default.createElement(_reactInputRange2.default, {
269
- classNames: _timelineClassNames2.default,
270
- formatLabel: _utils.timeConvert,
271
- maxValue: duration || 1,
272
- minValue: 0,
273
- value: this.state.currentTime, onChange: function onChange(c, v) {
274
- return _this4.refs.audio.setCurrentTime(v);
275
- }
276
- })
236
+ { className: (0, _noImportant.css)(styles.time, styles.currentTime) },
237
+ (0, _utils.timeConvert)(currentTime)
277
238
  ),
278
239
  _react2.default.createElement(
279
240
  'div',
280
- { className: (0, _noImportant.css)(styles.fallback) },
281
- _react2.default.createElement(_reactInputRange2.default, {
282
- classNames: _fallbackRangelineClassNames2.default,
283
- formatLabel: _utils.timeConvert,
284
- maxValue: Math.round(duration) || 1,
285
- minValue: 0,
286
- onChange: function onChange(c, _ref2) {
287
- var min = _ref2.min,
288
- max = _ref2.max;
289
- return _this4.refs.audio.setRange({ startTime: min, endTime: max });
290
- },
291
- value: { min: startTime, max: endTime }
241
+ { className: (0, _noImportant.css)(styles.timeline), ref: 'container' },
242
+ _react2.default.createElement(WaveTimeline, {
243
+ audioRef: this.refs.audio,
244
+ currentTime: currentTime,
245
+ containerWidth: containerWidth,
246
+ startTime: startTime,
247
+ endTime: endTime,
248
+ loading: loading,
249
+ waveform: waveform,
250
+ fallbackTimelineClassNames: _fallbackTimelineClassNames2.default,
251
+ timeConvert: _utils.timeConvert,
252
+ duration: duration,
253
+ timelineClassNames: _timelineClassNames2.default
292
254
  }),
293
- _react2.default.createElement(_reactInputRange2.default, {
294
- classNames: _timeLineBottom2.default,
295
- formatLabel: _utils.timeConvert,
296
- maxValue: duration || 1,
297
- minValue: 0, value: this.state.currentTime,
298
- onChange: function onChange(c, v) {
299
- return _this4.refs.audio.setCurrentTime(v);
300
- }
255
+ _react2.default.createElement(Timeline, {
256
+ fallbackRangelineClassNames: _fallbackRangelineClassNames2.default,
257
+ timeConvert: _utils.timeConvert,
258
+ duration: duration,
259
+ audioRef: this.refs.audio,
260
+ currentTime: currentTime,
261
+ startTime: startTime,
262
+ endTime: endTime,
263
+ timeLineBottom: _timeLineBottom2.default
301
264
  })
265
+ ),
266
+ _react2.default.createElement(
267
+ 'div',
268
+ { className: (0, _noImportant.css)(styles.time, styles.totalTime) },
269
+ (0, _utils.timeConvert)(duration - currentTime)
302
270
  )
303
271
  ),
304
- _react2.default.createElement(
305
- 'div',
306
- { className: (0, _noImportant.css)(styles.time) },
307
- (0, _utils.timeConvert)(duration - currentTime)
308
- ),
309
- _react2.default.createElement(
310
- 'div',
311
- { className: (0, _noImportant.css)(styles.iconAudio), onClick: function onClick() {
312
- return _this4.refs.audio.setVolume(0);
313
- } },
314
- _react2.default.createElement(_llsIcons2.default, { style: { color: this.state.volume === 0 ? _colors.GREY : _colors.BLUE }, name: 'icon_audio_playervolume' })
315
- ),
316
- _react2.default.createElement(
317
- 'div',
318
- { className: 'Volume ' + (0, _noImportant.css)(styles.volume) },
319
- _react2.default.createElement(_reactInputRange2.default, { classNames: _volumeClassNames2.default, maxValue: 100, minValue: 0, value: this.state.volume, onChange: function onChange(c, v) {
320
- return _this4.refs.audio.setVolume(v);
321
- } })
322
- ),
272
+ _react2.default.createElement(VolumeIcon, { audioRef: this.refs.audio, volume: volume }),
273
+ _react2.default.createElement(VolumeRange, { audioRef: this.refs.audio, volume: volume, volumeClassNames: _volumeClassNames2.default }),
323
274
  _react2.default.createElement(_llsIcons2.default, { className: 'Close ' + (0, _noImportant.css)(styles.close), onClick: function onClick() {
324
275
  return onClose();
325
276
  }, name: 'fermer' })
@@ -330,4 +281,151 @@ var Player = function (_Component) {
330
281
  return Player;
331
282
  }(_react.Component);
332
283
 
284
+ /**** PLAYER COMPONENTS ****/
285
+
286
+ var PlayWrapper = function PlayWrapper(_ref) {
287
+ var play = _ref.play,
288
+ audioRef = _ref.audioRef;
289
+ return _react2.default.createElement(
290
+ 'div',
291
+ { className: (0, _noImportant.css)(styles.play_and_stop), onClick: function onClick() {
292
+ return play ? audioRef.pause() : audioRef.play();
293
+ } },
294
+ _react2.default.createElement(_Play2.default, { pause: !play })
295
+ );
296
+ };
297
+
298
+ var SpeedWrapper = function SpeedWrapper(_ref2) {
299
+ var speed = _ref2.speed,
300
+ audioRef = _ref2.audioRef;
301
+ return _react2.default.createElement(
302
+ 'div',
303
+ { className: 'Speed_menu ' + (0, _noImportant.css)(styles.speed_menu) },
304
+ _react2.default.createElement(_Speed2.default, { speed: speed, onSpeedChange: function onSpeedChange(speed) {
305
+ return audioRef.setSpeed(speed);
306
+ } })
307
+ );
308
+ };
309
+
310
+ var LoopWrapper = function LoopWrapper(_ref3) {
311
+ var loop = _ref3.loop,
312
+ audioRef = _ref3.audioRef;
313
+ return _react2.default.createElement(
314
+ 'div',
315
+ { onClick: function onClick() {
316
+ return audioRef.setLoop(!loop);
317
+ }, className: 'Repeat_menu ' + (0, _noImportant.css)(styles.repeat_menu) },
318
+ _react2.default.createElement(_Loop2.default, { loop: loop })
319
+ );
320
+ };
321
+
322
+ var WaveTimeline = function WaveTimeline(_ref4) {
323
+ var currentTime = _ref4.currentTime,
324
+ containerWidth = _ref4.containerWidth,
325
+ startTime = _ref4.startTime,
326
+ endTime = _ref4.endTime,
327
+ loading = _ref4.loading,
328
+ waveform = _ref4.waveform,
329
+ fallbackTimelineClassNames = _ref4.fallbackTimelineClassNames,
330
+ timeConvert = _ref4.timeConvert,
331
+ duration = _ref4.duration,
332
+ audioRef = _ref4.audioRef,
333
+ timelineClassNames = _ref4.timelineClassNames;
334
+ return _react2.default.createElement(
335
+ 'div',
336
+ { className: (0, _noImportant.css)(styles.wavetimeline) },
337
+ _react2.default.createElement(_CustomWave2.default, {
338
+ currentTime: currentTime,
339
+ width: containerWidth,
340
+ height: 60,
341
+ range: { startTime: startTime, endTime: endTime },
342
+ isLoading: loading,
343
+ waveform: waveform
344
+ }),
345
+ _react2.default.createElement(_reactInputRange2.default, {
346
+ classNames: fallbackTimelineClassNames,
347
+ formatLabel: timeConvert,
348
+ maxValue: Math.round(duration) || 1,
349
+ minValue: 0,
350
+ onChange: function onChange(c, _ref5) {
351
+ var min = _ref5.min,
352
+ max = _ref5.max;
353
+ return audioRef.setRange({ startTime: min, endTime: max });
354
+ },
355
+ value: { min: startTime, max: endTime }
356
+ }),
357
+ _react2.default.createElement(_reactInputRange2.default, {
358
+ classNames: timelineClassNames,
359
+ formatLabel: timeConvert,
360
+ maxValue: duration || 1,
361
+ minValue: 0,
362
+ value: currentTime,
363
+ onChange: function onChange(c, v) {
364
+ return audioRef.setCurrentTime(v);
365
+ }
366
+ })
367
+ );
368
+ };
369
+
370
+ var Timeline = function Timeline(_ref6) {
371
+ var fallbackRangelineClassNames = _ref6.fallbackRangelineClassNames,
372
+ timeConvert = _ref6.timeConvert,
373
+ duration = _ref6.duration,
374
+ audioRef = _ref6.audioRef,
375
+ currentTime = _ref6.currentTime,
376
+ startTime = _ref6.startTime,
377
+ endTime = _ref6.endTime,
378
+ timeLineBottom = _ref6.timeLineBottom;
379
+ return _react2.default.createElement(
380
+ 'div',
381
+ { className: (0, _noImportant.css)(styles.fallback) },
382
+ _react2.default.createElement(_reactInputRange2.default, {
383
+ classNames: fallbackRangelineClassNames,
384
+ formatLabel: timeConvert,
385
+ maxValue: Math.round(duration) || 1,
386
+ minValue: 0,
387
+ onChange: function onChange(c, _ref7) {
388
+ var min = _ref7.min,
389
+ max = _ref7.max;
390
+ return audioRef.setRange({ startTime: min, endTime: max });
391
+ },
392
+ value: { min: startTime, max: endTime }
393
+ }),
394
+ _react2.default.createElement(_reactInputRange2.default, {
395
+ classNames: timeLineBottom,
396
+ formatLabel: timeConvert,
397
+ maxValue: duration || 1,
398
+ minValue: 0, value: currentTime,
399
+ onChange: function onChange(c, v) {
400
+ return audioRef.setCurrentTime(v);
401
+ }
402
+ })
403
+ );
404
+ };
405
+
406
+ var VolumeIcon = function VolumeIcon(_ref8) {
407
+ var audioRef = _ref8.audioRef,
408
+ volume = _ref8.volume;
409
+ return _react2.default.createElement(
410
+ 'div',
411
+ { className: (0, _noImportant.css)(styles.iconAudio), onClick: function onClick() {
412
+ return audioRef.setVolume(0);
413
+ } },
414
+ _react2.default.createElement(_llsIcons2.default, { style: { color: volume === 0 ? _colors.GREY : _colors.BLUE }, name: 'icon_audio_playervolume' })
415
+ );
416
+ };
417
+
418
+ var VolumeRange = function VolumeRange(_ref9) {
419
+ var volumeClassNames = _ref9.volumeClassNames,
420
+ volume = _ref9.volume,
421
+ audioRef = _ref9.audioRef;
422
+ return _react2.default.createElement(
423
+ 'div',
424
+ { className: 'Volume ' + (0, _noImportant.css)(styles.volume) },
425
+ _react2.default.createElement(_reactInputRange2.default, { classNames: volumeClassNames, maxValue: 100, minValue: 0, value: volume, onChange: function onChange(c, v) {
426
+ return audioRef.setVolume(v);
427
+ } })
428
+ );
429
+ };
430
+
333
431
  exports.default = Player;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var MOBILE = exports.MOBILE = '@media only screen and (max-width: 650px), only screen and (max-device-width: 650px)';
7
+ var PHABLET = exports.PHABLET = '@media only screen and (min-width: 651px) and (max-width: 1000px), only screen and (min-device-width: 651px) and (max-device-width:1000px)';
8
+ var TABLET = exports.TABLET = '@media only screen and (min-width: 1001px) and (max-width: 1200px), only screen and (min-device-width: 1001px) and (max-device-width:1200px)';
9
+ var DESKTOP = exports.DESKTOP = '@media only screen and (min-width: 1201px) and (min-device-width:1201px)';
@@ -8,10 +8,12 @@ var _play_and_stop;
8
8
 
9
9
  var _colors = require('./colors');
10
10
 
11
+ var _mediaQueries = require('./mediaQueries');
12
+
11
13
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
14
 
13
15
  exports.default = {
14
- player: {
16
+ player: _defineProperty({
15
17
  position: 'fixed',
16
18
  display: 'flex',
17
19
  alignItems: 'center',
@@ -24,7 +26,10 @@ exports.default = {
24
26
  width: '90%',
25
27
  marginLeft: '50%',
26
28
  transform: 'translate(-50%, 0)'
27
- },
29
+ }, _mediaQueries.MOBILE, {
30
+ flexFlow: 'row wrap',
31
+ paddingTop: 10
32
+ }),
28
33
  volume: {
29
34
  width: 100,
30
35
  cursor: 'pointer'
@@ -34,33 +39,61 @@ exports.default = {
34
39
  marginRight: 20,
35
40
  fontSize: 21
36
41
  },
37
- time: {
42
+ time: _defineProperty({
38
43
  color: _colors.GREY,
39
44
  fontSize: 12,
40
45
  alignSelf: 'flex-end',
41
46
  marginBottom: 7
42
- },
47
+ }, _mediaQueries.MOBILE, {
48
+ flex: '1 auto',
49
+ position: 'relative',
50
+ bottom: 22
51
+ }),
52
+ currentTime: _defineProperty({}, _mediaQueries.MOBILE, {
53
+ order: 1
54
+ }),
55
+ totalTime: _defineProperty({}, _mediaQueries.MOBILE, {
56
+ order: 3
57
+ }),
58
+ waveAndTimes: _defineProperty({
59
+ width: 'calc(100% - 430px)',
60
+ display: 'flex'
61
+ }, _mediaQueries.MOBILE, {
62
+ flex: '1 100%',
63
+ order: 2,
64
+ margin: '0px 28px'
65
+ }),
43
66
  play_and_stop: (_play_and_stop = {
44
67
  height: '100%',
45
68
  width: 40
46
69
  }, _defineProperty(_play_and_stop, 'height', 40), _defineProperty(_play_and_stop, 'color', '#6d6d6d'), _defineProperty(_play_and_stop, 'textAlign', 'center'), _defineProperty(_play_and_stop, 'boxSizing', 'border-box'), _defineProperty(_play_and_stop, 'backgroundColor', _colors.BLUE), _defineProperty(_play_and_stop, 'borderRadius', '50%'), _defineProperty(_play_and_stop, 'display', 'flex'), _defineProperty(_play_and_stop, 'alignItems', 'center'), _defineProperty(_play_and_stop, 'justifyContent', 'center'), _defineProperty(_play_and_stop, 'marginRight', 10), _defineProperty(_play_and_stop, 'cursor', 'pointer'), _play_and_stop),
47
- fallback: {
70
+ fallback: _defineProperty({
48
71
  marginTop: 5,
49
72
  position: 'relative'
50
- },
51
- timeline: {
52
- width: 'calc(100% - 520px)',
73
+ }, _mediaQueries.MOBILE, {
74
+ marginTop: 16
75
+ }),
76
+ wavetimeline: _defineProperty({}, _mediaQueries.MOBILE, {
77
+ display: 'none'
78
+ }),
79
+ timeline: _defineProperty({
80
+ //width: 'calc(100% - 520px)',
81
+ width: '100%',
53
82
  height: 60,
54
83
  margin: '0px 20px',
55
84
  position: 'relative',
56
85
  display: 'flex',
57
86
  flexDirection: 'column'
58
- },
59
- repeat_menu: {
87
+ }, _mediaQueries.MOBILE, {
88
+ order: 2
89
+ }),
90
+ repeat_menu: _defineProperty({
60
91
  margin: 10,
61
92
  fontSize: 22,
62
93
  cursor: 'pointer'
63
- },
94
+ }, _mediaQueries.MOBILE, {
95
+ marginRight: 37
96
+ }),
64
97
  speed_menu: {},
65
98
  close: {
66
99
  cursor: 'pointer',