|
@@ -7,9 +7,8 @@ import uuid from 'uuid';
|
7
|
7
|
|
8
|
8
|
import { Dialog } from '../../base/dialog';
|
9
|
9
|
import { translate } from '../../base/i18n';
|
10
|
|
-import { Icon, IconBlurBackground, IconCancelSelection } from '../../base/icons';
|
|
10
|
+import { Icon, IconCloseSmall, IconPlusCircle } from '../../base/icons';
|
11
|
11
|
import { connect } from '../../base/redux';
|
12
|
|
-import { Tooltip } from '../../base/tooltip';
|
13
|
12
|
import { toggleBackgroundEffect } from '../actions';
|
14
|
13
|
import { resizeImage, toDataURL } from '../functions';
|
15
|
14
|
import logger from '../logger';
|
|
@@ -34,6 +33,18 @@ const images = [
|
34
|
33
|
{
|
35
|
34
|
id: '4',
|
36
|
35
|
src: 'images/virtual-background/background-4.jpg'
|
|
36
|
+ },
|
|
37
|
+ {
|
|
38
|
+ id: '5',
|
|
39
|
+ src: 'images/virtual-background/background-5.jpg'
|
|
40
|
+ },
|
|
41
|
+ {
|
|
42
|
+ id: '6',
|
|
43
|
+ src: 'images/virtual-background/background-6.jpg'
|
|
44
|
+ },
|
|
45
|
+ {
|
|
46
|
+ id: '7',
|
|
47
|
+ src: 'images/virtual-background/background-7.jpg'
|
37
|
48
|
}
|
38
|
49
|
];
|
39
|
50
|
type Props = {
|
|
@@ -170,9 +181,9 @@ function VirtualBackground({ _selectedThumbnail, dispatch, t }: Props) {
|
170
|
181
|
return (
|
171
|
182
|
<Dialog
|
172
|
183
|
hideCancelButton = { true }
|
173
|
|
- submitDisabled = { false }
|
|
184
|
+ submitDisabled = { true }
|
174
|
185
|
titleKey = { 'virtualBackground.title' }
|
175
|
|
- width = '450px'>
|
|
186
|
+ width = '640px'>
|
176
|
187
|
{loading ? (
|
177
|
188
|
<div className = 'virtual-background-loading'>
|
178
|
189
|
<span className = 'loading-content-text'>{t('virtualBackground.pleaseWait')}</span>
|
|
@@ -182,35 +193,38 @@ function VirtualBackground({ _selectedThumbnail, dispatch, t }: Props) {
|
182
|
193
|
</div>
|
183
|
194
|
) : (
|
184
|
195
|
<div>
|
|
196
|
+ <label
|
|
197
|
+ className = 'file-upload-label'
|
|
198
|
+ htmlFor = 'file-upload'>
|
|
199
|
+ <Icon
|
|
200
|
+ className = { 'add-background' }
|
|
201
|
+ size = { 20 }
|
|
202
|
+ src = { IconPlusCircle } />
|
|
203
|
+ {t('virtualBackground.addBackground')}
|
|
204
|
+ </label>
|
|
205
|
+ <input
|
|
206
|
+ accept = 'image/*'
|
|
207
|
+ className = 'file-upload-btn'
|
|
208
|
+ id = 'file-upload'
|
|
209
|
+ onChange = { e => uploadImage(e.target.files) }
|
|
210
|
+ type = 'file' />
|
185
|
211
|
<div className = 'virtual-background-dialog'>
|
186
|
|
- <Tooltip
|
187
|
|
- content = { t('virtualBackground.removeBackground') }
|
188
|
|
- position = { 'top' }>
|
189
|
|
- <div
|
190
|
|
- className = { _selectedThumbnail === 'none'
|
191
|
|
- ? 'none-selected' : 'virtual-background-none' }
|
192
|
|
- onClick = { removeBackground }>
|
193
|
|
- {t('virtualBackground.none')}
|
194
|
|
- </div>
|
195
|
|
- </Tooltip>
|
196
|
|
- <Tooltip
|
197
|
|
- content = { t('virtualBackground.slightBlur') }
|
198
|
|
- position = { 'top' }>
|
199
|
|
- <Icon
|
200
|
|
- className = { _selectedThumbnail === 'slight-blur' ? 'blur-selected' : '' }
|
201
|
|
- onClick = { () => enableBlur(8, 'slight-blur') }
|
202
|
|
- size = { 50 }
|
203
|
|
- src = { IconBlurBackground } />
|
204
|
|
- </Tooltip>
|
205
|
|
- <Tooltip
|
206
|
|
- content = { t('virtualBackground.blur') }
|
207
|
|
- position = { 'top' }>
|
208
|
|
- <Icon
|
209
|
|
- className = { _selectedThumbnail === 'blur' ? 'blur-selected' : '' }
|
210
|
|
- onClick = { () => enableBlur(25, 'blur') }
|
211
|
|
- size = { 50 }
|
212
|
|
- src = { IconBlurBackground } />
|
213
|
|
- </Tooltip>
|
|
212
|
+ <div
|
|
213
|
+ className = { _selectedThumbnail === 'none' ? 'none-selected' : 'virtual-background-none' }
|
|
214
|
+ onClick = { removeBackground }>
|
|
215
|
+ {t('virtualBackground.none')}
|
|
216
|
+ </div>
|
|
217
|
+ <div
|
|
218
|
+ className = { _selectedThumbnail === 'slight-blur'
|
|
219
|
+ ? 'slight-blur-selected' : 'slight-blur' }
|
|
220
|
+ onClick = { () => enableBlur(8, 'slight-blur') }>
|
|
221
|
+ {t('virtualBackground.slightBlur')}
|
|
222
|
+ </div>
|
|
223
|
+ <div
|
|
224
|
+ className = { _selectedThumbnail === 'blur' ? 'blur-selected' : 'blur' }
|
|
225
|
+ onClick = { () => enableBlur(25, 'blur') }>
|
|
226
|
+ {t('virtualBackground.blur')}
|
|
227
|
+ </div>
|
214
|
228
|
{images.map((image, index) => (
|
215
|
229
|
<img
|
216
|
230
|
className = { _selectedThumbnail === image.id ? 'thumbnail-selected' : 'thumbnail' }
|
|
@@ -219,24 +233,6 @@ function VirtualBackground({ _selectedThumbnail, dispatch, t }: Props) {
|
219
|
233
|
onError = { event => event.target.style.display = 'none' }
|
220
|
234
|
src = { image.src } />
|
221
|
235
|
))}
|
222
|
|
- <Tooltip
|
223
|
|
- content = { t('virtualBackground.uploadImage') }
|
224
|
|
- position = { 'top' }>
|
225
|
|
- <label
|
226
|
|
- className = 'custom-file-upload'
|
227
|
|
- htmlFor = 'file-upload'>
|
228
|
|
- +
|
229
|
|
- </label>
|
230
|
|
- <input
|
231
|
|
- accept = 'image/*'
|
232
|
|
- className = 'file-upload-btn'
|
233
|
|
- id = 'file-upload'
|
234
|
|
- onChange = { e => uploadImage(e.target.files) }
|
235
|
|
- type = 'file' />
|
236
|
|
- </Tooltip>
|
237
|
|
- </div>
|
238
|
|
-
|
239
|
|
- <div className = 'virtual-background-dialog'>
|
240
|
236
|
{storedImages.map((image, index) => (
|
241
|
237
|
<div
|
242
|
238
|
className = { 'thumbnail-container' }
|
|
@@ -250,7 +246,7 @@ function VirtualBackground({ _selectedThumbnail, dispatch, t }: Props) {
|
250
|
246
|
className = { 'delete-image-icon' }
|
251
|
247
|
onClick = { () => deleteStoredImage(image) }
|
252
|
248
|
size = { 15 }
|
253
|
|
- src = { IconCancelSelection } />
|
|
249
|
+ src = { IconCloseSmall } />
|
254
|
250
|
</div>
|
255
|
251
|
))}
|
256
|
252
|
</div>
|