@lls/lls-audio 0.0.3

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.
@@ -0,0 +1,120 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
+
9
+ var _noImportant = require('aphrodite/no-important');
10
+
11
+ var _utils = require('../utils');
12
+
13
+ var defaultClassName = {
14
+ component: 'InputRange',
15
+ labelContainer: 'InputRange-labelContainer',
16
+ labelMax: 'InputRange-label InputRange-label--max',
17
+ labelMin: 'InputRange-label InputRange-label--min',
18
+ labelValue: 'InputRange-label InputRange-label--value',
19
+ slider: 'InputRange-slider',
20
+ sliderContainer: 'InputRange-sliderContainer',
21
+ trackActive: 'InputRange-track InputRange-track--active',
22
+ trackContainer: 'InputRange-track InputRange-track--container'
23
+ };
24
+
25
+ var inputRangeSlider = {
26
+ appearance: 'none',
27
+ background: '#3f51b5',
28
+ border: '1px solid #3f51b5',
29
+ borderRadius: '100%',
30
+ cursor: 'pointer',
31
+ display: 'block',
32
+ height: '1rem',
33
+ marginLeft: '-0.5rem',
34
+ marginTop: '-0.65rem',
35
+ outline: 'none',
36
+ position: 'absolute',
37
+ top: '50%',
38
+ width: '1rem',
39
+ ':active': {
40
+ transform: 'scale(1.3)'
41
+ },
42
+ ':focus': {
43
+ boxShadow: '0 0 0 5px rgba(63, 81, 181, 0.2)'
44
+ }
45
+ };
46
+
47
+ var inputRangeSliderContainer = {};
48
+
49
+ var inputRangeLabel = {
50
+ color: '#aaaaaa',
51
+ fontFamily: ['Helvetica Neue', 'sans-serif'],
52
+ fontSize: '0.8rem',
53
+ whiteSpace: 'nowrap'
54
+ };
55
+
56
+ var inputRangeLabelMin = {
57
+ bottom: '-1.4rem',
58
+ position: 'absolute',
59
+ left: 0
60
+ };
61
+
62
+ var inputRangeLabelMax = {
63
+ bottom: '-1.4rem',
64
+ position: 'absolute',
65
+ right: 0,
66
+ inputRangeLabelContainer: {
67
+ left: '50%'
68
+ }
69
+ };
70
+
71
+ var inputRangeLabelValue = {
72
+ position: 'absolute',
73
+ top: '-1.8rem'
74
+ };
75
+
76
+ var inputRangeLabelContainer = {
77
+ left: '-50%',
78
+ position: 'relative'
79
+ };
80
+
81
+ var inputRangeTrack = {
82
+ background: '#eeeeee',
83
+ borderRadius: '0.3rem',
84
+ cursor: 'pointer',
85
+ display: 'block',
86
+ height: '0.3rem',
87
+ position: 'relative'
88
+ };
89
+
90
+ var inputRangeTrackContainer = {
91
+ left: 0,
92
+ marginTop: '-0.15rem',
93
+ position: 'absolute',
94
+ right: 0,
95
+ top: '50%'
96
+ };
97
+
98
+ var inputRangeTrackActive = {
99
+ background: '#3f51b5'
100
+ };
101
+
102
+ var inputRange = {
103
+ height: '1rem',
104
+ position: 'relative',
105
+ width: '100%'
106
+ };
107
+
108
+ var styles = _noImportant.StyleSheet.create({
109
+ component: inputRange,
110
+ labelContainer: inputRangeLabelContainer,
111
+ labelMax: _extends({}, inputRangeLabel, inputRangeLabelMax),
112
+ labelMin: _extends({}, inputRangeLabel, inputRangeLabelMin),
113
+ trackContainer: _extends({}, inputRangeTrack, inputRangeTrackContainer),
114
+ labelValue: _extends({}, inputRangeLabel, inputRangeLabelValue),
115
+ slider: inputRangeSlider,
116
+ trackActive: _extends({}, inputRangeTrack, inputRangeTrackActive),
117
+ sliderContainer: inputRangeSliderContainer
118
+ });
119
+
120
+ exports.default = (0, _utils.concatStyle)(defaultClassName, styles);
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
+
9
+ var styleDisplayInlineBlock = {
10
+ display: 'inline-block',
11
+ verticalAlign: 'top'
12
+ };
13
+
14
+ exports.default = {
15
+ volume: {
16
+ display: 'inline-block',
17
+ verticalAlign: 'top',
18
+ width: 200,
19
+ height: '300%',
20
+ padding: '32px 30px 0px 30px',
21
+ boxSizing: 'border-box'
22
+ },
23
+ player: {
24
+ position: 'fixed',
25
+ boxShadow: '0px 5px 10px 5px rgba(0, 0, 0, 0.2)',
26
+ backgroundColor: '#fff',
27
+ bottom: 0,
28
+ left: 0,
29
+ right: 0,
30
+ height: 75,
31
+ zIndex: 99999,
32
+ width: '100%'
33
+ },
34
+ play_and_stop: _extends({}, styleDisplayInlineBlock, {
35
+ height: '100%',
36
+ width: 75,
37
+ borderRight: '1px solid #e5e5e5',
38
+ color: '#6d6d6d',
39
+ paddingTop: 28,
40
+ textAlign: 'center',
41
+ boxSizing: 'border-box'
42
+ }),
43
+ timeline: {
44
+ display: 'inline-block',
45
+ width: 'calc(100% - 438px)',
46
+ borderRight: '1px solid #e5e5e5',
47
+ height: '100%',
48
+ padding: '12px 30px 0px 30px',
49
+ position: 'relative'
50
+ },
51
+ repeat_menu: _extends({}, styleDisplayInlineBlock, {
52
+ height: '100%',
53
+ padding: '25px 13px',
54
+ borderRight: '1px solid #e5e5e5'
55
+ }),
56
+ speed_menu: _extends({}, styleDisplayInlineBlock, {
57
+ height: '100%',
58
+ width: 50,
59
+ borderRight: '1px solid #e5e5e5',
60
+ overflow: 'hidden',
61
+ ':hover': {
62
+ overflow: 'visible'
63
+ }
64
+ })
65
+ };
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.styles = undefined;
7
+
8
+ var _sliderDefaultClassNames = require('./sliderDefaultClassNames');
9
+
10
+ var _sliderDefaultClassNames2 = _interopRequireDefault(_sliderDefaultClassNames);
11
+
12
+ var _noImportant = require('aphrodite/no-important');
13
+
14
+ var _utils = require('../utils');
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ var playerAnimation = {
19
+ '0%': { height: 0 },
20
+ '100%': { height: 50 }
21
+ };
22
+
23
+ var styles = exports.styles = _noImportant.StyleSheet.create({
24
+ labelContainer: {
25
+ top: -60,
26
+ fontSize: 11
27
+ },
28
+ labelMin: {
29
+ display: 'none'
30
+ },
31
+ labelMax: {
32
+ display: 'none'
33
+ },
34
+ range: {
35
+ marginTop: -2,
36
+ position: 'absolute',
37
+ width: 'calc(100% - 60px)'
38
+ },
39
+ player_anim: {
40
+ animationName: playerAnimation,
41
+ animationDuration: '1s'
42
+ },
43
+ label: {
44
+ top: 13
45
+ },
46
+ slider: {
47
+ background: '#e51400',
48
+ width: 2,
49
+ borderRadius: 0,
50
+ height: 53,
51
+ top: -70,
52
+ border: 'none',
53
+ margin: 0,
54
+ ':active': { transform: 'scale(1.1)' }
55
+ },
56
+ trackActive: {
57
+ backgroundColor: 'transparent'
58
+ },
59
+ sliderContainer: {}
60
+ });
61
+
62
+ exports.default = (0, _utils.concatStyle)(_sliderDefaultClassNames2.default, styles);
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _noImportant = require('aphrodite/no-important');
8
+
9
+ var _sliderDefaultClassNames = require('./sliderDefaultClassNames');
10
+
11
+ var _sliderDefaultClassNames2 = _interopRequireDefault(_sliderDefaultClassNames);
12
+
13
+ var _utils = require('../utils');
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ var styles = _noImportant.StyleSheet.create({
18
+ slider: {
19
+ marginTop: -9,
20
+ width: 12,
21
+ height: 12,
22
+ transition: 'none',
23
+ backgroundColor: '#a20025',
24
+ borderColor: '#a20025',
25
+ ':active': { transform: 'scale(1.1)' }
26
+ },
27
+ trackActive: {
28
+ height: 3,
29
+ transition: 'none',
30
+ backgroundColor: '#a20025'
31
+ },
32
+ trackActiveContainer: {
33
+ height: 3,
34
+ transition: 'none'
35
+ },
36
+ trackContainer: {
37
+ height: 3
38
+ },
39
+ sliderContainer: {
40
+ transition: 'none'
41
+ }
42
+ });
43
+
44
+ exports.default = (0, _utils.concatStyle)(_sliderDefaultClassNames2.default, styles);
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.autoBind = exports.debounce = exports.timeConvert = exports.concatStyle = undefined;
7
+
8
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9
+
10
+ var _noImportant = require('aphrodite/no-important');
11
+
12
+ 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; }
13
+
14
+ var concatStyle = exports.concatStyle = function concatStyle(initial) {
15
+ for (var _len = arguments.length, other = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
16
+ other[_key - 1] = arguments[_key];
17
+ }
18
+
19
+ return Object.keys(initial).reduce(function (memo, key) {
20
+ return _extends({}, memo, _defineProperty({}, key, initial[key] + ' ' + other.map(function (i) {
21
+ return (0, _noImportant.css)(i[key]);
22
+ }).join(' ')));
23
+ }, {});
24
+ };
25
+
26
+ var timeConvert = exports.timeConvert = function timeConvert(time) {
27
+ var totalSec = Math.round(time);
28
+ var minutes = parseInt(totalSec / 60, 10) % 60;
29
+ var seconds = totalSec % 60;
30
+ return (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);
31
+ };
32
+
33
+ var debounce = exports.debounce = function debounce(func, wait, immediate) {
34
+ var timeout = void 0;
35
+ return function () {
36
+ var context = this,
37
+ args = arguments;
38
+ var later = function later() {
39
+ timeout = null;
40
+ if (!immediate) func.apply(context, args);
41
+ };
42
+ var callNow = immediate && !timeout;
43
+ clearTimeout(timeout);
44
+ timeout = setTimeout(later, wait);
45
+ if (callNow) func.apply(context, args);
46
+ };
47
+ };
48
+
49
+ var autoBind = exports.autoBind = function autoBind(methodNames, instance) {
50
+ methodNames.forEach(function (methodName) {
51
+ instance[methodName] = instance[methodName].bind(instance);
52
+ });
53
+ };
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+
9
+ var _react = require('react');
10
+
11
+ var _react2 = _interopRequireDefault(_react);
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16
+
17
+ 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; }
18
+
19
+ 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; }
20
+
21
+ var loadedScripts = [];
22
+
23
+ var getCssEl = function getCssEl(_ref) {
24
+ var href = _ref.href;
25
+
26
+ var link = document.createElement('link');
27
+ link.rel = 'stylesheet';
28
+ link.type = 'text/css';
29
+ link.href = href;
30
+ link.media = 'all';
31
+ return link;
32
+ };
33
+
34
+ var getScriptEl = function getScriptEl(_ref2) {
35
+ var src = _ref2.src,
36
+ onload = _ref2.onload,
37
+ onError = _ref2.onError;
38
+
39
+ var script = document.createElement('script');
40
+ script.type = 'text/javascript';
41
+ script.src = src;
42
+ script.async = false;
43
+ script.onload = onload;
44
+ script.onerror = onError;
45
+ return script;
46
+ };
47
+
48
+ var AsyncLoader = function (_Component) {
49
+ _inherits(AsyncLoader, _Component);
50
+
51
+ function AsyncLoader() {
52
+ _classCallCheck(this, AsyncLoader);
53
+
54
+ return _possibleConstructorReturn(this, (AsyncLoader.__proto__ || Object.getPrototypeOf(AsyncLoader)).apply(this, arguments));
55
+ }
56
+
57
+ _createClass(AsyncLoader, [{
58
+ key: 'componentDidMount',
59
+ value: function componentDidMount() {
60
+ var _props = this.props,
61
+ src = _props.src,
62
+ href = _props.href,
63
+ _props$onLoad = _props.onLoad,
64
+ onLoad = _props$onLoad === undefined ? function () {} : _props$onLoad,
65
+ _props$onError = _props.onError,
66
+ onError = _props$onError === undefined ? function () {} : _props$onError;
67
+
68
+ if (src && !loadedScripts.includes(href || src)) {
69
+ var el = href ? getCssEl({ href: href }) : getScriptEl({ src: src, onLoad: onLoad, onError: onError });
70
+ document.body.appendChild(el);
71
+ loadedScripts.push(href || src);
72
+ }
73
+ }
74
+ }, {
75
+ key: 'render',
76
+ value: function render() {
77
+ return _react2.default.createElement('noscript', null);
78
+ }
79
+ }]);
80
+
81
+ return AsyncLoader;
82
+ }(_react.Component);
83
+
84
+ exports.default = AsyncLoader;
@@ -0,0 +1,165 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+
9
+ var _react = require('react');
10
+
11
+ var _react2 = _interopRequireDefault(_react);
12
+
13
+ var _Wave = require('../player/Wave');
14
+
15
+ var _Wave2 = _interopRequireDefault(_Wave);
16
+
17
+ var _audioContext = require('../utils/audioContext');
18
+
19
+ var _audioContext2 = _interopRequireDefault(_audioContext);
20
+
21
+ var _audio = require('../utils/audio');
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+
25
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+
27
+ 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; }
28
+
29
+ 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; }
30
+
31
+ var audioContext = new _audioContext2.default();
32
+
33
+ var DesktopAudioRecorder = function (_Component) {
34
+ _inherits(DesktopAudioRecorder, _Component);
35
+
36
+ function DesktopAudioRecorder(props) {
37
+ _classCallCheck(this, DesktopAudioRecorder);
38
+
39
+ var _this = _possibleConstructorReturn(this, (DesktopAudioRecorder.__proto__ || Object.getPrototypeOf(DesktopAudioRecorder)).call(this, props));
40
+
41
+ _this.state = {
42
+ isRecording: false,
43
+ recordedData: null,
44
+ waveform: null
45
+ };
46
+ //this.audioRecorder = null
47
+ _this.buffers = [];
48
+ return _this;
49
+ }
50
+
51
+ _createClass(DesktopAudioRecorder, [{
52
+ key: 'componentDidMount',
53
+ value: function componentDidMount() {
54
+ var _this2 = this;
55
+
56
+ window.navigator.getUserMedia({
57
+ "audio": {
58
+ "mandatory": {
59
+ "googEchoCancellation": "false",
60
+ "googAutoGainControl": "false",
61
+ "googNoiseSuppression": "false",
62
+ "googHighpassFilter": "false"
63
+ },
64
+ "optional": []
65
+ }
66
+ }, function (stream) {
67
+ return _this2.onMediaSuccess(stream);
68
+ }, function (stream) {
69
+ return _this2.onMediaError(stream);
70
+ });
71
+ }
72
+ }, {
73
+ key: 'render',
74
+ value: function render() {
75
+ var _this3 = this;
76
+
77
+ var _state = this.state,
78
+ isRecording = _state.isRecording,
79
+ waveform = _state.waveform;
80
+
81
+ return _react2.default.createElement(
82
+ 'div',
83
+ null,
84
+ 'Desktop audio recorder',
85
+ isRecording ? _react2.default.createElement(
86
+ 'button',
87
+ { onClick: function onClick() {
88
+ return _this3.stopRecording();
89
+ } },
90
+ ' stop recording '
91
+ ) : _react2.default.createElement(
92
+ 'button',
93
+ { onClick: function onClick() {
94
+ return _this3.record();
95
+ } },
96
+ ' record '
97
+ ),
98
+ waveform ? _react2.default.createElement(_Wave2.default, {
99
+ width: 500,
100
+ currentTime: 0,
101
+ totalTime: 200,
102
+ height: 40,
103
+ isLoading: false,
104
+ waveform: waveform
105
+ }) : null
106
+ );
107
+ }
108
+ }, {
109
+ key: 'record',
110
+ value: function record() {
111
+ this.setState({
112
+ isRecording: true
113
+ });
114
+ }
115
+ }, {
116
+ key: 'onMediaSuccess',
117
+ value: function onMediaSuccess(stream) {
118
+ var _this4 = this;
119
+
120
+ var bufferSize = 4096;
121
+ var numberOfInputChannels = 2;
122
+ var numberOfOutputChannels = 2;
123
+
124
+ // creates an audio node from the microphone incoming stream
125
+ var mediaStream = audioContext.createMediaStreamSource(stream);
126
+ // https://developer.mozilla.org/en-US/docs/Web/API/AudioaudioContext/createScriptProcessor
127
+ var recorder = audioContext.createScriptProcessor ? audioContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels) : audioContext.createJavaScriptNode(bufferSize, numberOfInputChannels, numberOfOutputChannels);
128
+
129
+ recorder.onaudioprocess = function (e) {
130
+ var _state2 = _this4.state,
131
+ recordedData = _state2.recordedData,
132
+ isRecording = _state2.isRecording;
133
+
134
+ if (!isRecording) return;
135
+ var audioBuffer = (0, _audio.appendBuffer)(recordedData, e.inputBuffer);
136
+ var waveform = (0, _audio.convertAudioBufferToWaveform)(audioBuffer);
137
+
138
+ _this4.setState({
139
+ recordedData: audioBuffer,
140
+ waveform: waveform
141
+ });
142
+ };
143
+
144
+ // we connect the recorder with the input stream
145
+ mediaStream.connect(recorder);
146
+ recorder.connect(audioContext.destination);
147
+ }
148
+ }, {
149
+ key: 'onMediaError',
150
+ value: function onMediaError(e) {
151
+ console.error('media error', e);
152
+ }
153
+ }, {
154
+ key: 'stopRecording',
155
+ value: function stopRecording() {
156
+ this.setState({
157
+ isRecording: false
158
+ });
159
+ }
160
+ }]);
161
+
162
+ return DesktopAudioRecorder;
163
+ }(_react.Component);
164
+
165
+ exports.default = DesktopAudioRecorder;