Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
1126997b6f
|
@ -157,16 +157,6 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
#remoteVideos .nick {
|
||||
display: none; /* enable when you want nicks to be shown */
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
bottom: -20px;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.videocontainer>span.displayname,
|
||||
.videocontainer>input.displayname {
|
||||
display: none;
|
||||
|
|
|
@ -179,7 +179,6 @@
|
|||
|
||||
<div id="remoteVideos">
|
||||
<span id="localVideoContainer" class="videocontainer">
|
||||
<span id="localNick" class="nick"></span>
|
||||
<span id="localVideoWrapper">
|
||||
<!--<video id="localVideo" autoplay muted></video> - is now per stream generated -->
|
||||
</span>
|
||||
|
@ -221,7 +220,6 @@
|
|||
</form>
|
||||
</div>
|
||||
|
||||
<!--div><i class="fa fa-comments"> </i><span class='nick'></span>: <span class='chattext'></span></div-->
|
||||
<div id="chatconversation"></div>
|
||||
<audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
|
||||
<textarea id="usermsg" data-i18n="[placeholder]chat.messagebox" autofocus></textarea>
|
||||
|
|
|
@ -29,5 +29,6 @@ var interfaceConfig = {
|
|||
*/
|
||||
filmStripOnly: false,
|
||||
RANDOM_AVATAR_URL_PREFIX: false,
|
||||
RANDOM_AVATAR_URL_SUFFIX: false
|
||||
RANDOM_AVATAR_URL_SUFFIX: false,
|
||||
FILM_STRIP_MAX_HEIGHT: 160
|
||||
};
|
||||
|
|
|
@ -16,6 +16,7 @@ import PreziManager from './prezi/Prezi';
|
|||
import EtherpadManager from './etherpad/Etherpad';
|
||||
|
||||
import VideoLayout from "./videolayout/VideoLayout";
|
||||
import FilmStrip from "./videolayout/FilmStrip";
|
||||
import SettingsMenu from "./side_pannels/settings/SettingsMenu";
|
||||
import Settings from "./../settings/Settings";
|
||||
import { reload } from '../util/helpers';
|
||||
|
@ -225,11 +226,6 @@ UI.changeDisplayName = function (id, displayName) {
|
|||
UI.initConference = function () {
|
||||
let id = APP.conference.localId;
|
||||
Toolbar.updateRoomUrl(window.location.href);
|
||||
let meHTML = APP.translation.generateTranslationHTML("me");
|
||||
|
||||
let email = Settings.getEmail();
|
||||
let uid = Settings.getUserId();
|
||||
$("#localNick").html(email || `${uid} (${meHTML})`);
|
||||
|
||||
// Add myself to the contact list.
|
||||
ContactList.addContact(id);
|
||||
|
@ -244,7 +240,7 @@ UI.initConference = function () {
|
|||
}
|
||||
|
||||
// Make sure we configure our avatar id, before creating avatar for us
|
||||
UI.setUserAvatar(id, email);
|
||||
UI.setUserAvatar(id, Settings.getEmail());
|
||||
|
||||
Toolbar.checkAutoEnableDesktopSharing();
|
||||
if(!interfaceConfig.filmStripOnly) {
|
||||
|
@ -293,7 +289,7 @@ function registerListeners() {
|
|||
function bindEvents() {
|
||||
function onResize() {
|
||||
PanelToggler.resizeChat();
|
||||
VideoLayout.resizeLargeVideoContainer(PanelToggler.isVisible());
|
||||
VideoLayout.resizeVideoArea(PanelToggler.isVisible());
|
||||
}
|
||||
|
||||
// Resize and reposition videos in full screen mode.
|
||||
|
@ -334,12 +330,13 @@ UI.start = function () {
|
|||
registerListeners();
|
||||
|
||||
BottomToolbar.init();
|
||||
FilmStrip.init();
|
||||
|
||||
VideoLayout.init(eventEmitter);
|
||||
if (!interfaceConfig.filmStripOnly) {
|
||||
VideoLayout.initLargeVideo(PanelToggler.isVisible());
|
||||
}
|
||||
VideoLayout.resizeLargeVideoContainer(PanelToggler.isVisible(), true);
|
||||
VideoLayout.resizeVideoArea(PanelToggler.isVisible(), true, true);
|
||||
|
||||
ContactList.init(eventEmitter);
|
||||
|
||||
|
@ -367,9 +364,9 @@ UI.start = function () {
|
|||
});
|
||||
} else {
|
||||
$("#header").css("display", "none");
|
||||
$("#bottomToolbar").css("display", "none");
|
||||
$("#downloadlog").css("display", "none");
|
||||
BottomToolbar.setupFilmStripOnly();
|
||||
BottomToolbar.hide();
|
||||
FilmStrip.setupFilmStripOnly();
|
||||
messageHandler.disableNotifications();
|
||||
$('body').popover("disable");
|
||||
JitsiPopover.enabled = false;
|
||||
|
@ -586,19 +583,11 @@ UI.toggleSmileys = function () {
|
|||
Chat.toggleSmileys();
|
||||
};
|
||||
|
||||
/**
|
||||
* Get current settings.
|
||||
* @returns {object} settings
|
||||
*/
|
||||
UI.getSettings = function () {
|
||||
return Settings.getSettings();
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggles film strip.
|
||||
*/
|
||||
UI.toggleFilmStrip = function () {
|
||||
BottomToolbar.toggleFilmStrip();
|
||||
FilmStrip.toggleFilmStrip();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/* jshint -W101 */
|
||||
|
||||
import CanvasUtil from './CanvasUtils';
|
||||
import BottomToolbar from '../toolbars/BottomToolbar';
|
||||
import FilmStrip from '../videolayout/FilmStrip';
|
||||
|
||||
const LOCAL_LEVEL = 'local';
|
||||
|
||||
|
@ -228,7 +228,7 @@ const AudioLevels = {
|
|||
let canvasWidth = thumbWidth + interfaceConfig.CANVAS_EXTRA;
|
||||
let canvasHeight = thumbHeight + interfaceConfig.CANVAS_EXTRA;
|
||||
|
||||
BottomToolbar.getThumbs().children('canvas').each(function () {
|
||||
FilmStrip.getThumbs().children('canvas').each(function () {
|
||||
$(this).attr('width', canvasWidth);
|
||||
$(this).attr('height', canvasHeight);
|
||||
});
|
||||
|
|
|
@ -4,7 +4,7 @@ import VideoLayout from "../videolayout/VideoLayout";
|
|||
import LargeContainer from '../videolayout/LargeContainer';
|
||||
import UIUtil from "../util/UIUtil";
|
||||
import SidePanelToggler from "../side_pannels/SidePanelToggler";
|
||||
import BottomToolbar from '../toolbars/BottomToolbar';
|
||||
import FilmStrip from '../videolayout/FilmStrip';
|
||||
|
||||
/**
|
||||
* Etherpad options.
|
||||
|
@ -101,7 +101,7 @@ class Etherpad extends LargeContainer {
|
|||
}
|
||||
|
||||
resize (containerWidth, containerHeight, animate) {
|
||||
let height = containerHeight - BottomToolbar.getFilmStripHeight();
|
||||
let height = containerHeight - FilmStrip.getFilmStripHeight();
|
||||
let width = containerWidth;
|
||||
|
||||
$(this.iframe).width(width).height(height);
|
||||
|
|
|
@ -9,7 +9,7 @@ import UIEvents from '../../../service/UI/UIEvents';
|
|||
import messageHandler from '../util/MessageHandler';
|
||||
import ToolbarToggler from "../toolbars/ToolbarToggler";
|
||||
import SidePanelToggler from "../side_pannels/SidePanelToggler";
|
||||
import BottomToolbar from '../toolbars/BottomToolbar';
|
||||
import FilmStrip from '../videolayout/FilmStrip';
|
||||
|
||||
/**
|
||||
* Example of Prezi link.
|
||||
|
@ -287,7 +287,7 @@ class PreziContainer extends LargeContainer {
|
|||
}
|
||||
|
||||
resize (containerWidth, containerHeight) {
|
||||
let height = containerHeight - BottomToolbar.getFilmStripHeight();
|
||||
let height = containerHeight - FilmStrip.getFilmStripHeight();
|
||||
|
||||
let width = containerWidth;
|
||||
|
||||
|
|
|
@ -22,11 +22,16 @@ var currentlyOpen = null;
|
|||
* @param onOpenComplete function to be called when the panel is opened
|
||||
* @param onOpen function to be called if the window is going to be opened
|
||||
* @param onClose function to be called if the window is going to be closed
|
||||
* @param onVideoResizeComplete function to be called after the video area
|
||||
* is resized
|
||||
*/
|
||||
function toggle (object, selector, onOpenComplete, onOpen, onClose) {
|
||||
function toggle (object, selector, onOpenComplete,
|
||||
onOpen, onClose, onVideoResizeComplete) {
|
||||
let isSideBarVisible = object.isVisible();
|
||||
|
||||
UIUtil.buttonClick(buttons[selector], "active");
|
||||
|
||||
if (object.isVisible()) {
|
||||
if (isSideBarVisible) {
|
||||
$("#toast-container").animate({
|
||||
right: 5
|
||||
}, {
|
||||
|
@ -38,12 +43,17 @@ function toggle (object, selector, onOpenComplete, onOpen, onClose) {
|
|||
queue: false,
|
||||
duration: 500
|
||||
});
|
||||
|
||||
resizeVideoArea(isSideBarVisible, onVideoResizeComplete);
|
||||
|
||||
if(typeof onClose === "function") {
|
||||
onClose();
|
||||
}
|
||||
|
||||
currentlyOpen = null;
|
||||
} else {
|
||||
resizeVideoArea(isSideBarVisible, onVideoResizeComplete);
|
||||
|
||||
// Undock the toolbar when the chat is shown and if we're in a
|
||||
// video mode.
|
||||
if (VideoLayout.isLargeVideoVisible()) {
|
||||
|
@ -80,6 +90,13 @@ function toggle (object, selector, onOpenComplete, onOpen, onClose) {
|
|||
}
|
||||
}
|
||||
|
||||
function resizeVideoArea(isSidePanelVisible, completeFunction) {
|
||||
VideoLayout.resizeVideoArea(!isSidePanelVisible,
|
||||
false,
|
||||
true,
|
||||
completeFunction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggler for the chat, contact list, settings menu, etc..
|
||||
*/
|
||||
|
@ -96,11 +113,9 @@ var PanelToggler = {
|
|||
$('#chatspace').trigger('shown');
|
||||
};
|
||||
|
||||
VideoLayout.resizeVideoArea(!Chat.isVisible(), chatCompleteFunction);
|
||||
|
||||
toggle(Chat,
|
||||
'#chatspace',
|
||||
function () {
|
||||
toggle(Chat, //Object
|
||||
'#chatspace', // Selector
|
||||
function () { //onOpenComplete
|
||||
// Request the focus in the nickname field or the chat input
|
||||
// field.
|
||||
if ($('#nickname').css('visibility') === 'visible') {
|
||||
|
@ -109,9 +124,9 @@ var PanelToggler = {
|
|||
$('#usermsg').focus();
|
||||
}
|
||||
},
|
||||
() => this.resizeChat(), //OnOpen
|
||||
null,
|
||||
() => this.resizeChat(),
|
||||
null);
|
||||
chatCompleteFunction); //OnClose
|
||||
},
|
||||
|
||||
resizeChat () {
|
||||
|
@ -128,7 +143,6 @@ var PanelToggler = {
|
|||
: function () {
|
||||
$('#contactlist').trigger('shown');
|
||||
};
|
||||
VideoLayout.resizeVideoArea(!ContactList.isVisible(), completeFunction);
|
||||
|
||||
toggle(ContactList,
|
||||
'#contactlist',
|
||||
|
@ -136,14 +150,14 @@ var PanelToggler = {
|
|||
function() {
|
||||
ContactList.setVisualNotification(false);
|
||||
},
|
||||
null);
|
||||
null,
|
||||
completeFunction);
|
||||
},
|
||||
|
||||
/**
|
||||
* Opens / closes the settings menu
|
||||
*/
|
||||
toggleSettingsMenu () {
|
||||
VideoLayout.resizeVideoArea(!SettingsMenu.isVisible(), function (){});
|
||||
toggle(SettingsMenu,
|
||||
'#settingsmenu',
|
||||
null,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* global $ */
|
||||
/* global $, APP, interfaceConfig*/
|
||||
import UIUtil from '../util/UIUtil';
|
||||
import UIEvents from '../../../service/UI/UIEvents';
|
||||
import AnalyticsAdapter from '../../statistics/AnalyticsAdapter';
|
||||
|
@ -11,7 +11,6 @@ const defaultBottomToolbarButtons = {
|
|||
|
||||
const BottomToolbar = {
|
||||
init () {
|
||||
this.filmStrip = $('#remoteVideos');
|
||||
this.toolbar = $('#bottomToolbar');
|
||||
},
|
||||
|
||||
|
@ -38,71 +37,43 @@ const BottomToolbar = {
|
|||
);
|
||||
},
|
||||
|
||||
toggleFilmStrip () {
|
||||
this.filmStrip.toggleClass("hidden");
|
||||
},
|
||||
|
||||
isFilmStripVisible () {
|
||||
return !this.filmStrip.hasClass('hidden');
|
||||
},
|
||||
|
||||
setupFilmStripOnly () {
|
||||
this.filmStrip.css({
|
||||
padding: "0px 0px 18px 0px",
|
||||
right: 0
|
||||
});
|
||||
},
|
||||
|
||||
getFilmStripHeight () {
|
||||
if (this.isFilmStripVisible()) {
|
||||
return this.filmStrip.outerHeight();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
|
||||
getFilmStripWidth () {
|
||||
return this.filmStrip.width();
|
||||
},
|
||||
|
||||
resizeThumbnails (thumbWidth, thumbHeight,
|
||||
animate = false, forceUpdate = false) {
|
||||
return new Promise(resolve => {
|
||||
this.filmStrip.animate({
|
||||
// adds 2 px because of small video 1px border
|
||||
height: thumbHeight + 2
|
||||
}, {
|
||||
queue: false,
|
||||
duration: animate ? 500 : 0
|
||||
});
|
||||
|
||||
this.getThumbs(!forceUpdate).animate({
|
||||
height: thumbHeight,
|
||||
width: thumbWidth
|
||||
}, {
|
||||
queue: false,
|
||||
duration: animate ? 500 : 0,
|
||||
complete: resolve
|
||||
});
|
||||
|
||||
if (!animate) {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
resizeToolbar (thumbWidth, thumbHeight) {
|
||||
let bottom = (thumbHeight - this.toolbar.outerHeight())/2 + 18;
|
||||
this.toolbar.css({bottom});
|
||||
},
|
||||
|
||||
getThumbs (only_visible = false) {
|
||||
let selector = 'span';
|
||||
if (only_visible) {
|
||||
selector += ':visible';
|
||||
}
|
||||
/**
|
||||
* Returns true if this toolbar is currently visible, or false otherwise.
|
||||
* @return <tt>true</tt> if currently visible, <tt>false</tt> - otherwise
|
||||
*/
|
||||
isVisible() {
|
||||
return this.toolbar.is(":visible");
|
||||
},
|
||||
|
||||
return this.filmStrip.children(selector);
|
||||
/**
|
||||
* Hides the bottom toolbar with animation or not depending on the animate
|
||||
* parameter.
|
||||
* @param animate <tt>true</tt> to hide the bottom toolbar with animation,
|
||||
* <tt>false</tt> or nothing to hide it without animation.
|
||||
*/
|
||||
hide(animate) {
|
||||
if (animate)
|
||||
this.toolbar.hide("slide", {direction: "right", duration: 300});
|
||||
else
|
||||
this.toolbar.css("display", "none");
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows the bottom toolbar with animation or not depending on the animate
|
||||
* parameter.
|
||||
* @param animate <tt>true</tt> to show the bottom toolbar with animation,
|
||||
* <tt>false</tt> or nothing to show it without animation.
|
||||
*/
|
||||
show(animate) {
|
||||
if (animate)
|
||||
this.toolbar.show("slide", {direction: "right", duration: 300});
|
||||
else
|
||||
this.toolbar.css("display", "block");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import UIUtil from '../util/UIUtil';
|
||||
import BottomToolbar from './BottomToolbar';
|
||||
import FilmStrip from '../videolayout/FilmStrip.js';
|
||||
|
||||
let toolbarTimeoutObject;
|
||||
let toolbarTimeout = interfaceConfig.INITIAL_TOOLBAR_TIMEOUT;
|
||||
|
@ -28,7 +29,6 @@ function hideToolbar() {
|
|||
}
|
||||
|
||||
let header = $("#header");
|
||||
let bottomToolbar = $("#bottomToolbar");
|
||||
let isToolbarHover = false;
|
||||
header.find('*').each(function () {
|
||||
let id = $(this).attr('id');
|
||||
|
@ -48,10 +48,8 @@ function hideToolbar() {
|
|||
} else {
|
||||
header.hide("slide", { direction: "up", duration: 300});
|
||||
$('#subject').animate({top: "-=40"}, 300);
|
||||
if (!BottomToolbar.isFilmStripVisible()) {
|
||||
bottomToolbar.hide(
|
||||
"slide", {direction: "right", duration: 300}
|
||||
);
|
||||
if (!FilmStrip.isFilmStripVisible()) {
|
||||
BottomToolbar.hide(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,14 +63,11 @@ const ToolbarToggler = {
|
|||
return;
|
||||
}
|
||||
let header = $("#header");
|
||||
let bottomToolbar = $("#bottomToolbar");
|
||||
if (!header.is(':visible') || !bottomToolbar.is(":visible")) {
|
||||
if (!header.is(':visible') || !BottomToolbar.isVisible()) {
|
||||
header.show("slide", { direction: "up", duration: 300});
|
||||
$('#subject').animate({top: "+=40"}, 300);
|
||||
if (!bottomToolbar.is(":visible")) {
|
||||
bottomToolbar.show(
|
||||
"slide", {direction: "right", duration: 300}
|
||||
);
|
||||
if (!BottomToolbar.isVisible()) {
|
||||
BottomToolbar.show(true);
|
||||
}
|
||||
|
||||
if (toolbarTimeoutObject) {
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
return window.innerWidth - rightPanelWidth;
|
||||
},
|
||||
|
||||
/**
|
||||
* Changes the style class of the element given by id.
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
/* global $, APP, interfaceConfig, config*/
|
||||
|
||||
import UIUtil from "../util/UIUtil";
|
||||
|
||||
const thumbAspectRatio = 16.0 / 9.0;
|
||||
|
||||
const FilmStrip = {
|
||||
init () {
|
||||
this.filmStrip = $('#remoteVideos');
|
||||
},
|
||||
|
||||
toggleFilmStrip () {
|
||||
this.filmStrip.toggleClass("hidden");
|
||||
},
|
||||
|
||||
isFilmStripVisible () {
|
||||
return !this.filmStrip.hasClass('hidden');
|
||||
},
|
||||
|
||||
setupFilmStripOnly () {
|
||||
this.filmStrip.css({
|
||||
padding: "0px 0px 18px 0px",
|
||||
right: 0
|
||||
});
|
||||
},
|
||||
|
||||
getFilmStripHeight () {
|
||||
if (this.isFilmStripVisible()) {
|
||||
return this.filmStrip.outerHeight();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
|
||||
getFilmStripWidth () {
|
||||
return this.filmStrip.innerWidth()
|
||||
- parseInt(this.filmStrip.css('paddingLeft'), 10)
|
||||
- parseInt(this.filmStrip.css('paddingRight'), 10);
|
||||
},
|
||||
|
||||
/**
|
||||
* Calculates the thumbnail size.
|
||||
* @param videoAreaAvailableWidth the currently available video area width
|
||||
* that we want to take into account when calculating the film strip width.
|
||||
*/
|
||||
calculateThumbnailSize (isSideBarVisible) {
|
||||
// Calculate the available height, which is the inner window height
|
||||
// minus 39px for the header minus 2px for the delimiter lines on the
|
||||
// top and bottom of the large video, minus the 36px space inside the
|
||||
// remoteVideos container used for highlighting shadow.
|
||||
let availableHeight = 100;
|
||||
|
||||
let numvids = this.getThumbs(true).length;
|
||||
|
||||
let localVideoContainer = $("#localVideoContainer");
|
||||
|
||||
/**
|
||||
* If the videoAreaAvailableWidth is set we use this one to calculate
|
||||
* the filmStrip width, because we're probably in a state where the
|
||||
* film strip size hasn't been updated yet, but it will be.
|
||||
*/
|
||||
let videoAreaAvailableWidth
|
||||
= UIUtil.getAvailableVideoWidth(isSideBarVisible)
|
||||
- parseInt(this.filmStrip.css('right'), 10)
|
||||
- parseInt(this.filmStrip.css('paddingLeft'), 10)
|
||||
- parseInt(this.filmStrip.css('paddingRight'), 10)
|
||||
- parseInt(this.filmStrip.css('borderLeftWidth'), 10)
|
||||
- parseInt(this.filmStrip.css('borderRightWidth'), 10) - 5;
|
||||
|
||||
let availableWidth = Math.floor(
|
||||
(videoAreaAvailableWidth - numvids * (
|
||||
parseInt(localVideoContainer.css('borderLeftWidth'), 10)
|
||||
+ parseInt(localVideoContainer.css('borderRightWidth'), 10)
|
||||
+ parseInt(localVideoContainer.css('paddingLeft'), 10)
|
||||
+ parseInt(localVideoContainer.css('paddingRight'), 10)
|
||||
+ parseInt(localVideoContainer.css('marginLeft'), 10)
|
||||
+ parseInt(localVideoContainer.css('marginRight'), 10)))
|
||||
/ numvids);
|
||||
|
||||
let maxHeight
|
||||
// If the MAX_HEIGHT property hasn't been specified
|
||||
// we have the static value.
|
||||
= Math.min( interfaceConfig.FILM_STRIP_MAX_HEIGHT || 160,
|
||||
availableHeight);
|
||||
|
||||
availableHeight
|
||||
= Math.min( maxHeight,
|
||||
availableWidth / thumbAspectRatio,
|
||||
window.innerHeight - 18);
|
||||
|
||||
if (availableHeight < availableWidth / thumbAspectRatio) {
|
||||
availableWidth = Math.floor(availableHeight * thumbAspectRatio);
|
||||
}
|
||||
|
||||
return {
|
||||
thumbWidth: availableWidth,
|
||||
thumbHeight: availableHeight
|
||||
};
|
||||
},
|
||||
|
||||
resizeThumbnails (thumbWidth, thumbHeight,
|
||||
animate = false, forceUpdate = false) {
|
||||
|
||||
return new Promise(resolve => {
|
||||
this.getThumbs(!forceUpdate).animate({
|
||||
height: thumbHeight,
|
||||
width: thumbWidth
|
||||
}, {
|
||||
queue: false,
|
||||
duration: animate ? 500 : 0,
|
||||
complete: resolve
|
||||
});
|
||||
|
||||
this.filmStrip.animate({
|
||||
// adds 2 px because of small video 1px border
|
||||
height: thumbHeight + 2
|
||||
}, {
|
||||
queue: false,
|
||||
duration: animate ? 500 : 0
|
||||
});
|
||||
|
||||
if (!animate) {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getThumbs (only_visible = false) {
|
||||
let selector = 'span';
|
||||
if (only_visible) {
|
||||
selector += ':visible';
|
||||
}
|
||||
|
||||
return this.filmStrip.children(selector);
|
||||
}
|
||||
};
|
||||
|
||||
export default FilmStrip;
|
|
@ -4,7 +4,7 @@
|
|||
import UIUtil from "../util/UIUtil";
|
||||
import UIEvents from "../../../service/UI/UIEvents";
|
||||
import LargeContainer from './LargeContainer';
|
||||
import BottomToolbar from '../toolbars/BottomToolbar';
|
||||
import FilmStrip from './FilmStrip';
|
||||
import Avatar from "../avatar/Avatar";
|
||||
import {createDeferred} from '../../util/helpers';
|
||||
|
||||
|
@ -43,7 +43,7 @@ function getDesktopVideoSize(videoWidth,
|
|||
let availableWidth = Math.max(videoWidth, videoSpaceWidth);
|
||||
let availableHeight = Math.max(videoHeight, videoSpaceHeight);
|
||||
|
||||
videoSpaceHeight -= BottomToolbar.getFilmStripHeight();
|
||||
videoSpaceHeight -= FilmStrip.getFilmStripHeight();
|
||||
|
||||
if (availableWidth / aspectRatio >= videoSpaceHeight) {
|
||||
availableHeight = videoSpaceHeight;
|
||||
|
|
|
@ -15,10 +15,6 @@ function RemoteVideo(id, VideoLayout, emitter) {
|
|||
this.addRemoteVideoContainer();
|
||||
this.connectionIndicator = new ConnectionIndicator(this, id);
|
||||
this.setDisplayName();
|
||||
var nickfield = document.createElement('span');
|
||||
nickfield.className = "nick";
|
||||
nickfield.appendChild(document.createTextNode(id));
|
||||
this.container.appendChild(nickfield);
|
||||
this.bindHoverHandler();
|
||||
this.flipX = false;
|
||||
this.isLocal = false;
|
||||
|
@ -33,7 +29,7 @@ RemoteVideo.prototype.addRemoteVideoContainer = function() {
|
|||
if (APP.conference.isModerator) {
|
||||
this.addRemoteVideoMenu();
|
||||
}
|
||||
let {thumbWidth, thumbHeight} = this.VideoLayout.calculateThumbnailSize();
|
||||
let {thumbWidth, thumbHeight} = this.VideoLayout.resizeThumbnails();
|
||||
AudioLevels.updateAudioLevelCanvas(this.id, thumbWidth, thumbHeight);
|
||||
|
||||
return this.container;
|
||||
|
@ -46,7 +42,6 @@ RemoteVideo.prototype.addRemoteVideoContainer = function() {
|
|||
* @param id the id indicating the video for which we're adding a menu.
|
||||
* @param parentElement the parent element where this menu will be added
|
||||
*/
|
||||
|
||||
if (!interfaceConfig.filmStripOnly) {
|
||||
RemoteVideo.prototype.addRemoteVideoMenu = function () {
|
||||
var spanElement = document.createElement('span');
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
import AudioLevels from "../audio_levels/AudioLevels";
|
||||
import Avatar from "../avatar/Avatar";
|
||||
import BottomToolbar from "../toolbars/BottomToolbar";
|
||||
|
||||
import FilmStrip from "./FilmStrip";
|
||||
import UIEvents from "../../../service/UI/UIEvents";
|
||||
import UIUtil from "../util/UIUtil";
|
||||
|
||||
|
@ -12,6 +12,7 @@ import RemoteVideo from "./RemoteVideo";
|
|||
import LargeVideoManager, {VideoContainerType} from "./LargeVideo";
|
||||
import {PreziContainerType} from '../prezi/Prezi';
|
||||
import LocalVideo from "./LocalVideo";
|
||||
import PanelToggler from "../side_pannels/SidePanelToggler";
|
||||
|
||||
const RTCUIUtil = JitsiMeetJS.util.RTCUIHelper;
|
||||
|
||||
|
@ -20,7 +21,6 @@ var remoteVideoTypes = {};
|
|||
var localVideoThumbnail = null;
|
||||
|
||||
var currentDominantSpeaker = null;
|
||||
var lastNCount = config.channelLastN;
|
||||
var localLastNCount = config.channelLastN;
|
||||
var localLastNSet = [];
|
||||
var lastNEndpointsCache = [];
|
||||
|
@ -34,8 +34,6 @@ var eventEmitter = null;
|
|||
*/
|
||||
var focusedVideoResourceJid = null;
|
||||
|
||||
const thumbAspectRatio = 16.0 / 9.0;
|
||||
|
||||
/**
|
||||
* On contact list item clicked.
|
||||
*/
|
||||
|
@ -98,6 +96,7 @@ var VideoLayout = {
|
|||
localVideoThumbnail = new LocalVideo(VideoLayout, emitter);
|
||||
|
||||
emitter.addListener(UIEvents.CONTACT_CLICKED, onContactClicked);
|
||||
this.lastNCount = config.channelLastN;
|
||||
},
|
||||
|
||||
initLargeVideo (isSideBarVisible) {
|
||||
|
@ -116,9 +115,9 @@ var VideoLayout = {
|
|||
},
|
||||
|
||||
isInLastN (resource) {
|
||||
return lastNCount < 0 || // lastN is disabled
|
||||
return this.lastNCount < 0 || // lastN is disabled
|
||||
// lastNEndpoints cache not built yet
|
||||
(lastNCount > 0 && !lastNEndpointsCache.length) ||
|
||||
(this.lastNCount > 0 && !lastNEndpointsCache.length) ||
|
||||
(lastNEndpointsCache &&
|
||||
lastNEndpointsCache.indexOf(resource) !== -1);
|
||||
},
|
||||
|
@ -149,9 +148,8 @@ var VideoLayout = {
|
|||
let localId = APP.conference.localId;
|
||||
this.onVideoTypeChanged(localId, stream.videoType);
|
||||
|
||||
let {thumbWidth, thumbHeight} = this.calculateThumbnailSize();
|
||||
AudioLevels.updateAudioLevelCanvas(
|
||||
null, thumbWidth, thumbHeight);
|
||||
let {thumbWidth, thumbHeight} = this.resizeThumbnails(false, true);
|
||||
AudioLevels.updateAudioLevelCanvas(null, thumbWidth, thumbHeight);
|
||||
|
||||
if (!stream.isMuted()) {
|
||||
localVideoThumbnail.changeVideo(stream);
|
||||
|
@ -221,7 +219,7 @@ var VideoLayout = {
|
|||
electLastVisibleVideo () {
|
||||
// pick the last visible video in the row
|
||||
// if nobody else is left, this picks the local video
|
||||
let thumbs = BottomToolbar.getThumbs(true).filter('[id!="mixedstream"]');
|
||||
let thumbs = FilmStrip.getThumbs(true).filter('[id!="mixedstream"]');
|
||||
|
||||
let lastVisible = thumbs.filter(':visible:last');
|
||||
if (lastVisible.length) {
|
||||
|
@ -235,7 +233,7 @@ var VideoLayout = {
|
|||
}
|
||||
|
||||
console.info("Last visible video no longer exists");
|
||||
thumbs = BottomToolbar.getThumbs();
|
||||
thumbs = FilmStrip.getThumbs();
|
||||
if (thumbs.length) {
|
||||
let id = getPeerContainerResourceId(thumbs[0]);
|
||||
if (remoteVideos[id]) {
|
||||
|
@ -271,7 +269,10 @@ var VideoLayout = {
|
|||
|
||||
onRemoteStreamRemoved (stream) {
|
||||
let id = stream.getParticipantId();
|
||||
remoteVideos[id].removeRemoteStreamElement(stream);
|
||||
let remoteVideo = remoteVideos[id];
|
||||
if (remoteVideo) { // remote stream may be removed after participant left the conference
|
||||
remoteVideo.removeRemoteStreamElement(stream);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -345,7 +346,7 @@ var VideoLayout = {
|
|||
|
||||
// In case this is not currently in the last n we don't show it.
|
||||
if (localLastNCount && localLastNCount > 0 &&
|
||||
BottomToolbar.getThumbs().length >= localLastNCount + 2) {
|
||||
FilmStrip.getThumbs().length >= localLastNCount + 2) {
|
||||
remoteVideo.showPeerContainer('hide');
|
||||
} else {
|
||||
VideoLayout.resizeThumbnails(false, true);
|
||||
|
@ -356,8 +357,8 @@ var VideoLayout = {
|
|||
|
||||
console.info(resourceJid + " video is now active", videoelem);
|
||||
|
||||
$(videoelem).show();
|
||||
VideoLayout.resizeThumbnails();
|
||||
VideoLayout.resizeThumbnails(
|
||||
false, false, false, function() {$(videoelem).show();});
|
||||
|
||||
// Update the large video to the last added video only if there's no
|
||||
// current dominant, focused speaker or prezi playing or update it to
|
||||
|
@ -411,74 +412,33 @@ var VideoLayout = {
|
|||
localVideoThumbnail.showAudioIndicator(isMuted);
|
||||
},
|
||||
|
||||
/**
|
||||
* Resizes the large video container.
|
||||
*/
|
||||
resizeLargeVideoContainer (isSideBarVisible, forceUpdate) {
|
||||
let animate = false;
|
||||
if (largeVideo) {
|
||||
largeVideo.updateContainerSize(isSideBarVisible);
|
||||
largeVideo.resize(animate);
|
||||
}
|
||||
this.resizeVideoSpace(animate, isSideBarVisible);
|
||||
this.resizeThumbnails(false, forceUpdate);
|
||||
},
|
||||
|
||||
/**
|
||||
* Resizes thumbnails.
|
||||
*/
|
||||
resizeThumbnails (animate = false, forceUpdate = false) {
|
||||
let {thumbWidth, thumbHeight} = this.calculateThumbnailSize();
|
||||
resizeThumbnails ( animate = false,
|
||||
forceUpdate = false,
|
||||
isSideBarVisible = null,
|
||||
onComplete = null) {
|
||||
isSideBarVisible
|
||||
= (isSideBarVisible !== null)
|
||||
? isSideBarVisible : PanelToggler.isVisible();
|
||||
|
||||
let {thumbWidth, thumbHeight}
|
||||
= FilmStrip.calculateThumbnailSize(isSideBarVisible);
|
||||
|
||||
$('.userAvatar').css('left', (thumbWidth - thumbHeight) / 2);
|
||||
|
||||
BottomToolbar.resizeThumbnails(thumbWidth, thumbHeight,
|
||||
FilmStrip.resizeThumbnails(thumbWidth, thumbHeight,
|
||||
animate, forceUpdate)
|
||||
.then(function () {
|
||||
BottomToolbar.resizeToolbar(thumbWidth, thumbHeight);
|
||||
AudioLevels.updateCanvasSize(thumbWidth, thumbHeight);
|
||||
if (onComplete && typeof onComplete === "function")
|
||||
onComplete();
|
||||
});
|
||||
return {thumbWidth, thumbHeight};
|
||||
},
|
||||
|
||||
/**
|
||||
* Calculates the thumbnail size.
|
||||
*
|
||||
*/
|
||||
calculateThumbnailSize () {
|
||||
let videoSpaceWidth = BottomToolbar.getFilmStripWidth();
|
||||
// Calculate the available height, which is the inner window height
|
||||
// minus 39px for the header minus 2px for the delimiter lines on the
|
||||
// top and bottom of the large video, minus the 36px space inside the
|
||||
// remoteVideos container used for highlighting shadow.
|
||||
let availableHeight = 100;
|
||||
|
||||
let numvids = BottomToolbar.getThumbs().length;
|
||||
if (localLastNCount && localLastNCount > 0) {
|
||||
numvids = Math.min(localLastNCount + 1, numvids);
|
||||
}
|
||||
|
||||
// Remove the 3px borders arround videos and border around the remote
|
||||
// videos area and the 4 pixels between the local video and the others
|
||||
//TODO: Find out where the 4 pixels come from and remove them
|
||||
let availableWinWidth = videoSpaceWidth - 2 * 3 * numvids - 70 - 4;
|
||||
|
||||
let availableWidth = availableWinWidth / numvids;
|
||||
let maxHeight = Math.min(160, availableHeight);
|
||||
availableHeight
|
||||
= Math.min( maxHeight,
|
||||
availableWidth / thumbAspectRatio,
|
||||
window.innerHeight - 18);
|
||||
|
||||
if (availableHeight < availableWidth / thumbAspectRatio) {
|
||||
availableWidth = Math.floor(availableHeight * thumbAspectRatio);
|
||||
}
|
||||
|
||||
return {
|
||||
thumbWidth: availableWidth,
|
||||
thumbHeight: availableHeight
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* On audio muted event.
|
||||
*/
|
||||
|
@ -575,8 +535,8 @@ var VideoLayout = {
|
|||
* endpoints
|
||||
*/
|
||||
onLastNEndpointsChanged (lastNEndpoints, endpointsEnteringLastN) {
|
||||
if (lastNCount !== lastNEndpoints.length)
|
||||
lastNCount = lastNEndpoints.length;
|
||||
if (this.lastNCount !== lastNEndpoints.length)
|
||||
this.lastNCount = lastNEndpoints.length;
|
||||
|
||||
lastNEndpointsCache = lastNEndpoints;
|
||||
|
||||
|
@ -591,8 +551,8 @@ var VideoLayout = {
|
|||
// enters E's local LastN ejecting C.
|
||||
|
||||
// Increase the local LastN set size, if necessary.
|
||||
if (lastNCount > localLastNCount) {
|
||||
localLastNCount = lastNCount;
|
||||
if (this.lastNCount > localLastNCount) {
|
||||
localLastNCount = this.lastNCount;
|
||||
}
|
||||
|
||||
// Update the local LastN set preserving the order in which the
|
||||
|
@ -613,7 +573,7 @@ var VideoLayout = {
|
|||
var updateLargeVideo = false;
|
||||
|
||||
// Handle LastN/local LastN changes.
|
||||
BottomToolbar.getThumbs().each(( index, element ) => {
|
||||
FilmStrip.getThumbs().each(( index, element ) => {
|
||||
var resourceJid = getPeerContainerResourceId(element);
|
||||
var smallVideo = remoteVideos[resourceJid];
|
||||
|
||||
|
@ -667,7 +627,8 @@ var VideoLayout = {
|
|||
endpointsEnteringLastN.forEach(function (resourceJid) {
|
||||
|
||||
var remoteVideo = remoteVideos[resourceJid];
|
||||
remoteVideo.showPeerContainer('show');
|
||||
if (remoteVideo)
|
||||
remoteVideo.showPeerContainer('show');
|
||||
|
||||
if (!remoteVideo.isVisible()) {
|
||||
console.log("Add to last N", resourceJid);
|
||||
|
@ -840,40 +801,31 @@ var VideoLayout = {
|
|||
* Resizes the video area.
|
||||
*
|
||||
* @param isSideBarVisible indicates if the side bar is currently visible
|
||||
* @param callback a function to be called when the video space is
|
||||
* @param forceUpdate indicates that hidden thumbnails will be shown
|
||||
* @param completeFunction a function to be called when the video area is
|
||||
* resized.
|
||||
*/
|
||||
resizeVideoArea (isSideBarVisible, callback) {
|
||||
let animate = true;
|
||||
*/resizeVideoArea (isSideBarVisible,
|
||||
forceUpdate = false,
|
||||
animate = false,
|
||||
completeFunction = null) {
|
||||
|
||||
if (largeVideo) {
|
||||
largeVideo.updateContainerSize(isSideBarVisible);
|
||||
largeVideo.resize(animate);
|
||||
this.resizeVideoSpace(animate, isSideBarVisible, callback);
|
||||
}
|
||||
|
||||
VideoLayout.resizeThumbnails(animate);
|
||||
},
|
||||
|
||||
/**
|
||||
* Resizes the #videospace html element
|
||||
* @param animate boolean property that indicates whether the resize should
|
||||
* be animated or not.
|
||||
* @param isChatVisible boolean property that indicates whether the chat
|
||||
* area is displayed or not.
|
||||
* If that parameter is null the method will check the chat panel
|
||||
* visibility.
|
||||
* @param completeFunction a function to be called when the video space
|
||||
* is resized.
|
||||
*/
|
||||
resizeVideoSpace (animate, isChatVisible, completeFunction) {
|
||||
// Calculate available width and height.
|
||||
let availableHeight = window.innerHeight;
|
||||
let availableWidth = UIUtil.getAvailableVideoWidth(isChatVisible);
|
||||
let availableWidth = UIUtil.getAvailableVideoWidth(isSideBarVisible);
|
||||
|
||||
if (availableWidth < 0 || availableHeight < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Resize the thumbnails first.
|
||||
this.resizeThumbnails(false, forceUpdate, isSideBarVisible);
|
||||
|
||||
// Resize the video area element.
|
||||
$('#videospace').animate({
|
||||
right: window.innerWidth - availableWidth,
|
||||
width: availableWidth,
|
||||
|
|
|
@ -47,7 +47,6 @@ function initShortcutHandlers() {
|
|||
};
|
||||
}
|
||||
|
||||
|
||||
var KeyboardShortcut = {
|
||||
init: function () {
|
||||
initShortcutHandlers();
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
import {generateUsername} from '../util/UsernameGenerator';
|
||||
import UIUtil from '../UI/util/UIUtil';
|
||||
|
||||
let email = '';
|
||||
let displayName = '';
|
||||
let userId;
|
||||
let language = null;
|
||||
let cameraDeviceId = '';
|
||||
let micDeviceId = '';
|
||||
|
@ -32,7 +30,6 @@ if (supportsLocalStorage()) {
|
|||
console.log("generated id", window.localStorage.jitsiMeetId);
|
||||
}
|
||||
|
||||
userId = window.localStorage.jitsiMeetId || '';
|
||||
email = window.localStorage.email || '';
|
||||
displayName = UIUtil.unescapeHtml(window.localStorage.displayname || '');
|
||||
language = window.localStorage.language;
|
||||
|
@ -43,7 +40,6 @@ if (supportsLocalStorage()) {
|
|||
);
|
||||
} else {
|
||||
console.log("local storage is not supported");
|
||||
userId = generateUniqueId();
|
||||
}
|
||||
|
||||
export default {
|
||||
|
@ -67,31 +63,23 @@ export default {
|
|||
},
|
||||
|
||||
/**
|
||||
* Returns id of the user.
|
||||
* @returns {string} user id
|
||||
* Sets new email for local user and saves it to the local storage.
|
||||
* @param {string} newEmail new email for the local user
|
||||
*/
|
||||
getUserId () {
|
||||
return userId;
|
||||
},
|
||||
|
||||
setEmail: function (newEmail) {
|
||||
email = newEmail;
|
||||
window.localStorage.email = newEmail;
|
||||
return email;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns email address of the local user.
|
||||
* @returns {string} email
|
||||
*/
|
||||
getEmail: function () {
|
||||
return email;
|
||||
},
|
||||
|
||||
getSettings: function () {
|
||||
return {
|
||||
email: email,
|
||||
displayName: displayName,
|
||||
uid: userId,
|
||||
language: language
|
||||
};
|
||||
},
|
||||
getLanguage () {
|
||||
return language;
|
||||
},
|
||||
|
|
|
@ -1,425 +0,0 @@
|
|||
import RandomUtil from './RandomUtil';
|
||||
|
||||
/**
|
||||
* from faker.js - Copyright (c) 2014-2015 Matthew Bergman & Marak Squires
|
||||
* MIT License
|
||||
* http://github.com/marak/faker.js/
|
||||
*
|
||||
* @const
|
||||
*/
|
||||
var names = [
|
||||
"Aaliyah", "Aaron", "Abagail", "Abbey", "Abbie", "Abbigail",
|
||||
"Abby", "Abdiel", "Abdul", "Abdullah", "Abe", "Abel", "Abelardo", "Abigail",
|
||||
"Abigale", "Abigayle", "Abner", "Abraham", "Ada", "Adah", "Adalberto",
|
||||
"Adaline", "Adam", "Adan", "Addie", "Addison", "Adela", "Adelbert", "Adele",
|
||||
"Adelia", "Adeline", "Adell", "Adella", "Adelle", "Aditya", "Adolf", "Adolfo",
|
||||
"Adolph", "Adolphus", "Adonis", "Adrain", "Adrian", "Adriana", "Adrianna",
|
||||
"Adriel", "Adrien", "Adrienne", "Afton", "Aglae", "Agnes", "Agustin",
|
||||
"Agustina", "Ahmad", "Ahmed", "Aida", "Aidan", "Aiden", "Aileen", "Aimee",
|
||||
"Aisha", "Aiyana", "Akeem", "Al", "Alaina", "Alan", "Alana", "Alanis",
|
||||
"Alanna", "Alayna", "Alba", "Albert", "Alberta", "Albertha", "Alberto",
|
||||
"Albin", "Albina", "Alda", "Alden", "Alec", "Aleen", "Alejandra",
|
||||
"Alejandrin", "Alek", "Alena", "Alene", "Alessandra", "Alessandro", "Alessia",
|
||||
"Aletha", "Alex", "Alexa", "Alexander", "Alexandra", "Alexandre",
|
||||
"Alexandrea", "Alexandria", "Alexandrine", "Alexandro", "Alexane", "Alexanne",
|
||||
"Alexie", "Alexis", "Alexys", "Alexzander", "Alf", "Alfonso", "Alfonzo",
|
||||
"Alford", "Alfred", "Alfreda", "Alfredo", "Ali", "Alia", "Alice", "Alicia",
|
||||
"Alisa", "Alisha", "Alison", "Alivia", "Aliya", "Aliyah", "Aliza", "Alize",
|
||||
"Allan", "Allen", "Allene", "Allie", "Allison", "Ally", "Alphonso", "Alta",
|
||||
"Althea", "Alva", "Alvah", "Alvena", "Alvera", "Alverta", "Alvina", "Alvis",
|
||||
"Alyce", "Alycia", "Alysa", "Alysha", "Alyson", "Alysson", "Amalia", "Amanda",
|
||||
"Amani", "Amara", "Amari", "Amaya", "Amber", "Ambrose", "Amelia", "Amelie",
|
||||
"Amely", "America", "Americo", "Amie", "Amina", "Amir", "Amira", "Amiya",
|
||||
"Amos", "Amparo", "Amy", "Amya", "Ana", "Anabel", "Anabelle", "Anahi",
|
||||
"Anais", "Anastacio", "Anastasia", "Anderson", "Andre", "Andreane",
|
||||
"Andreanne", "Andres", "Andrew", "Andy", "Angel", "Angela", "Angelica",
|
||||
"Angelina", "Angeline", "Angelita", "Angelo", "Angie", "Angus", "Anibal",
|
||||
"Anika", "Anissa", "Anita", "Aniya", "Aniyah", "Anjali", "Anna", "Annabel",
|
||||
"Annabell", "Annabelle", "Annalise", "Annamae", "Annamarie", "Anne",
|
||||
"Annetta", "Annette", "Annie", "Ansel", "Ansley", "Anthony", "Antoinette",
|
||||
"Antone", "Antonetta", "Antonette", "Antonia", "Antonietta", "Antonina",
|
||||
"Antonio", "Antwan", "Antwon", "Anya", "April", "Ara", "Araceli", "Aracely",
|
||||
"Arch", "Archibald", "Ardella", "Arden", "Ardith", "Arely", "Ari", "Ariane",
|
||||
"Arianna", "Aric", "Ariel", "Arielle", "Arjun", "Arlene", "Arlie", "Arlo",
|
||||
"Armand", "Armando", "Armani", "Arnaldo", "Arne", "Arno", "Arnold", "Arnoldo",
|
||||
"Arnulfo", "Aron", "Art", "Arthur", "Arturo", "Arvel", "Arvid", "Arvilla",
|
||||
"Aryanna", "Asa", "Asha", "Ashlee", "Ashleigh", "Ashley", "Ashly", "Ashlynn",
|
||||
"Ashton", "Ashtyn", "Asia", "Assunta", "Astrid", "Athena", "Aubree", "Aubrey",
|
||||
"Audie", "Audra", "Audreanne", "Audrey", "August", "Augusta", "Augustine",
|
||||
"Augustus", "Aurelia", "Aurelie", "Aurelio", "Aurore", "Austen", "Austin",
|
||||
"Austyn", "Autumn", "Ava", "Avery", "Avis", "Axel", "Ayana", "Ayden", "Ayla",
|
||||
"Aylin", "Baby", "Bailee", "Bailey", "Barbara", "Barney", "Baron", "Barrett",
|
||||
"Barry", "Bart", "Bartholome", "Barton", "Baylee", "Beatrice", "Beau",
|
||||
"Beaulah", "Bell", "Bella", "Belle", "Ben", "Benedict", "Benjamin", "Bennett",
|
||||
"Bennie", "Benny", "Benton", "Berenice", "Bernadette", "Bernadine", "Bernard",
|
||||
"Bernardo", "Berneice", "Bernhard", "Bernice", "Bernie", "Berniece",
|
||||
"Bernita", "Berry", "Bert", "Berta", "Bertha", "Bertram", "Bertrand", "Beryl",
|
||||
"Bessie", "Beth", "Bethany", "Bethel", "Betsy", "Bette", "Bettie", "Betty",
|
||||
"Bettye", "Beulah", "Beverly", "Bianka", "Bill", "Billie", "Billy", "Birdie",
|
||||
"Blair", "Blaise", "Blake", "Blanca", "Blanche", "Blaze", "Bo", "Bobbie",
|
||||
"Bobby", "Bonita", "Bonnie", "Boris", "Boyd", "Brad", "Braden", "Bradford",
|
||||
"Bradley", "Bradly", "Brady", "Braeden", "Brain", "Brandi", "Brando",
|
||||
"Brandon", "Brandt", "Brandy", "Brandyn", "Brannon", "Branson", "Brant",
|
||||
"Braulio", "Braxton", "Brayan", "Breana", "Breanna", "Breanne", "Brenda",
|
||||
"Brendan", "Brenden", "Brendon", "Brenna", "Brennan", "Brennon", "Brent",
|
||||
"Bret", "Brett", "Bria", "Brian", "Briana", "Brianne", "Brice", "Bridget",
|
||||
"Bridgette", "Bridie", "Brielle", "Brigitte", "Brionna", "Brisa", "Britney",
|
||||
"Brittany", "Brock", "Broderick", "Brody", "Brook", "Brooke", "Brooklyn",
|
||||
"Brooks", "Brown", "Bruce", "Bryana", "Bryce", "Brycen", "Bryon", "Buck",
|
||||
"Bud", "Buddy", "Buford", "Bulah", "Burdette", "Burley", "Burnice", "Buster",
|
||||
"Cade", "Caden", "Caesar", "Caitlyn", "Cale", "Caleb", "Caleigh", "Cali",
|
||||
"Calista", "Callie", "Camden", "Cameron", "Camila", "Camilla", "Camille",
|
||||
"Camren", "Camron", "Camryn", "Camylle", "Candace", "Candelario", "Candice",
|
||||
"Candida", "Candido", "Cara", "Carey", "Carissa", "Carlee", "Carleton",
|
||||
"Carley", "Carli", "Carlie", "Carlo", "Carlos", "Carlotta", "Carmel",
|
||||
"Carmela", "Carmella", "Carmelo", "Carmen", "Carmine", "Carol", "Carolanne",
|
||||
"Carole", "Carolina", "Caroline", "Carolyn", "Carolyne", "Carrie", "Carroll",
|
||||
"Carson", "Carter", "Cary", "Casandra", "Casey", "Casimer", "Casimir",
|
||||
"Casper", "Cassandra", "Cassandre", "Cassidy", "Cassie", "Catalina",
|
||||
"Caterina", "Catharine", "Catherine", "Cathrine", "Cathryn", "Cathy", "Cayla",
|
||||
"Ceasar", "Cecelia", "Cecil", "Cecile", "Cecilia", "Cedrick", "Celestine",
|
||||
"Celestino", "Celia", "Celine", "Cesar", "Chad", "Chadd", "Chadrick", "Chaim",
|
||||
"Chance", "Chandler", "Chanel", "Chanelle", "Charity", "Charlene", "Charles",
|
||||
"Charley", "Charlie", "Charlotte", "Chase", "Chasity", "Chauncey", "Chaya",
|
||||
"Chaz", "Chelsea", "Chelsey", "Chelsie", "Chesley", "Chester", "Chet",
|
||||
"Cheyanne", "Cheyenne", "Chloe", "Chris", "Christ", "Christa", "Christelle",
|
||||
"Christian", "Christiana", "Christina", "Christine", "Christop", "Christophe",
|
||||
"Christopher", "Christy", "Chyna", "Ciara", "Cicero", "Cielo", "Cierra",
|
||||
"Cindy", "Citlalli", "Clair", "Claire", "Clara", "Clarabelle", "Clare",
|
||||
"Clarissa", "Clark", "Claud", "Claude", "Claudia", "Claudie", "Claudine",
|
||||
"Clay", "Clemens", "Clement", "Clementina", "Clementine", "Clemmie", "Cleo",
|
||||
"Cleora", "Cleta", "Cletus", "Cleve", "Cleveland", "Clifford", "Clifton",
|
||||
"Clint", "Clinton", "Clotilde", "Clovis", "Cloyd", "Clyde", "Coby", "Cody",
|
||||
"Colby", "Cole", "Coleman", "Colin", "Colleen", "Collin", "Colt", "Colten",
|
||||
"Colton", "Columbus", "Concepcion", "Conner", "Connie", "Connor", "Conor",
|
||||
"Conrad", "Constance", "Constantin", "Consuelo", "Cooper", "Cora", "Coralie",
|
||||
"Corbin", "Cordelia", "Cordell", "Cordia", "Cordie", "Corene", "Corine",
|
||||
"Cornelius", "Cornell", "Corrine", "Cortez", "Cortney", "Cory", "Coty",
|
||||
"Courtney", "Coy", "Craig", "Crawford", "Creola", "Cristal", "Cristian",
|
||||
"Cristina", "Cristobal", "Cristopher", "Cruz", "Crystal", "Crystel", "Cullen",
|
||||
"Curt", "Curtis", "Cydney", "Cynthia", "Cyril", "Cyrus", "Dagmar", "Dahlia",
|
||||
"Daija", "Daisha", "Daisy", "Dakota", "Dale", "Dallas", "Dallin", "Dalton",
|
||||
"Damaris", "Dameon", "Damian", "Damien", "Damion", "Damon", "Dan", "Dana",
|
||||
"Dandre", "Dane", "D'angelo", "Dangelo", "Danial", "Daniela", "Daniella",
|
||||
"Danielle", "Danika", "Dannie", "Danny", "Dante", "Danyka", "Daphne",
|
||||
"Daphnee", "Daphney", "Darby", "Daren", "Darian", "Dariana", "Darien",
|
||||
"Dario", "Darion", "Darius", "Darlene", "Daron", "Darrel", "Darrell",
|
||||
"Darren", "Darrick", "Darrin", "Darrion", "Darron", "Darryl", "Darwin",
|
||||
"Daryl", "Dashawn", "Dasia", "Dave", "David", "Davin", "Davion", "Davon",
|
||||
"Davonte", "Dawn", "Dawson", "Dax", "Dayana", "Dayna", "Dayne", "Dayton",
|
||||
"Dean", "Deangelo", "Deanna", "Deborah", "Declan", "Dedric", "Dedrick", "Dee",
|
||||
"Deion", "Deja", "Dejah", "Dejon", "Dejuan", "Delaney", "Delbert", "Delfina",
|
||||
"Delia", "Delilah", "Dell", "Della", "Delmer", "Delores", "Delpha", "Delphia",
|
||||
"Delphine", "Delta", "Demarco", "Demarcus", "Demario", "Demetris",
|
||||
"Demetrius", "Demond", "Dena", "Denis", "Dennis", "Deon", "Deondre",
|
||||
"Deontae", "Deonte", "Dereck", "Derek", "Derick", "Deron", "Derrick",
|
||||
"Deshaun", "Deshawn", "Desiree", "Desmond", "Dessie", "Destany", "Destin",
|
||||
"Destinee", "Destiney", "Destini", "Destiny", "Devan", "Devante", "Deven",
|
||||
"Devin", "Devon", "Devonte", "Devyn", "Dewayne", "Dewitt", "Dexter",
|
||||
"Diamond", "Diana", "Dianna", "Diego", "Dillan", "Dillon", "Dimitri", "Dina",
|
||||
"Dino", "Dion", "Dixie", "Dock", "Dolly", "Dolores", "Domenic", "Domenica",
|
||||
"Domenick", "Domenico", "Domingo", "Dominic", "Dominique", "Don", "Donald",
|
||||
"Donato", "Donavon", "Donna", "Donnell", "Donnie", "Donny", "Dora", "Dorcas",
|
||||
"Dorian", "Doris", "Dorothea", "Dorothy", "Dorris", "Dortha", "Dorthy",
|
||||
"Doug", "Douglas", "Dovie", "Doyle", "Drake", "Drew", "Duane", "Dudley",
|
||||
"Dulce", "Duncan", "Durward", "Dustin", "Dusty", "Dwight", "Dylan", "Earl",
|
||||
"Earlene", "Earline", "Earnest", "Earnestine", "Easter", "Easton", "Ebba",
|
||||
"Ebony", "Ed", "Eda", "Edd", "Eddie", "Eden", "Edgar", "Edgardo", "Edison",
|
||||
"Edmond", "Edmund", "Edna", "Eduardo", "Edward", "Edwardo", "Edwin", "Edwina",
|
||||
"Edyth", "Edythe", "Effie", "Efrain", "Efren", "Eileen", "Einar", "Eino",
|
||||
"Eladio", "Elaina", "Elbert", "Elda", "Eldon", "Eldora", "Eldred", "Eldridge",
|
||||
"Eleanora", "Eleanore", "Eleazar", "Electa", "Elena", "Elenor", "Elenora",
|
||||
"Eleonore", "Elfrieda", "Eli", "Elian", "Eliane", "Elias", "Eliezer",
|
||||
"Elijah", "Elinor", "Elinore", "Elisa", "Elisabeth", "Elise", "Eliseo",
|
||||
"Elisha", "Elissa", "Eliza", "Elizabeth", "Ella", "Ellen", "Ellie", "Elliot",
|
||||
"Elliott", "Ellis", "Ellsworth", "Elmer", "Elmira", "Elmo", "Elmore", "Elna",
|
||||
"Elnora", "Elody", "Eloisa", "Eloise", "Elouise", "Eloy", "Elroy", "Elsa",
|
||||
"Else", "Elsie", "Elta", "Elton", "Elva", "Elvera", "Elvie", "Elvis", "Elwin",
|
||||
"Elwyn", "Elyse", "Elyssa", "Elza", "Emanuel", "Emelia", "Emelie", "Emely",
|
||||
"Emerald", "Emerson", "Emery", "Emie", "Emil", "Emile", "Emilia", "Emiliano",
|
||||
"Emilie", "Emilio", "Emily", "Emma", "Emmalee", "Emmanuel", "Emmanuelle",
|
||||
"Emmet", "Emmett", "Emmie", "Emmitt", "Emmy", "Emory", "Ena", "Enid", "Enoch",
|
||||
"Enola", "Enos", "Enrico", "Enrique", "Ephraim", "Era", "Eriberto", "Eric",
|
||||
"Erica", "Erich", "Erick", "Ericka", "Erik", "Erika", "Erin", "Erling",
|
||||
"Erna", "Ernest", "Ernestina", "Ernestine", "Ernesto", "Ernie", "Ervin",
|
||||
"Erwin", "Eryn", "Esmeralda", "Esperanza", "Esta", "Esteban", "Estefania",
|
||||
"Estel", "Estell", "Estella", "Estelle", "Estevan", "Esther", "Estrella",
|
||||
"Etha", "Ethan", "Ethel", "Ethelyn", "Ethyl", "Ettie", "Eudora", "Eugene",
|
||||
"Eugenia", "Eula", "Eulah", "Eulalia", "Euna", "Eunice", "Eusebio", "Eva",
|
||||
"Evalyn", "Evan", "Evangeline", "Evans", "Eve", "Eveline", "Evelyn",
|
||||
"Everardo", "Everett", "Everette", "Evert", "Evie", "Ewald", "Ewell",
|
||||
"Ezekiel", "Ezequiel", "Ezra", "Fabian", "Fabiola", "Fae", "Fannie", "Fanny",
|
||||
"Fatima", "Faustino", "Fausto", "Favian", "Fay", "Faye", "Federico",
|
||||
"Felicia", "Felicita", "Felicity", "Felipa", "Felipe", "Felix", "Felton",
|
||||
"Fermin", "Fern", "Fernando", "Ferne", "Fidel", "Filiberto", "Filomena",
|
||||
"Finn", "Fiona", "Flavie", "Flavio", "Fleta", "Fletcher", "Flo", "Florence",
|
||||
"Florencio", "Florian", "Florida", "Florine", "Flossie", "Floy", "Floyd",
|
||||
"Ford", "Forest", "Forrest", "Foster", "Frances", "Francesca", "Francesco",
|
||||
"Francis", "Francisca", "Francisco", "Franco", "Frank", "Frankie", "Franz",
|
||||
"Fred", "Freda", "Freddie", "Freddy", "Frederic", "Frederick", "Frederik",
|
||||
"Frederique", "Fredrick", "Fredy", "Freeda", "Freeman", "Freida", "Frida",
|
||||
"Frieda", "Friedrich", "Fritz", "Furman", "Gabe", "Gabriel", "Gabriella",
|
||||
"Gabrielle", "Gaetano", "Gage", "Gail", "Gardner", "Garett", "Garfield",
|
||||
"Garland", "Garnet", "Garnett", "Garret", "Garrett", "Garrick", "Garrison",
|
||||
"Garry", "Garth", "Gaston", "Gavin", "Gay", "Gayle", "Gaylord", "Gene",
|
||||
"General", "Genesis", "Genevieve", "Gennaro", "Genoveva", "Geo", "Geoffrey",
|
||||
"George", "Georgette", "Georgiana", "Georgianna", "Geovanni", "Geovanny",
|
||||
"Geovany", "Gerald", "Geraldine", "Gerard", "Gerardo", "Gerda", "Gerhard",
|
||||
"Germaine", "German", "Gerry", "Gerson", "Gertrude", "Gia", "Gianni",
|
||||
"Gideon", "Gilbert", "Gilberto", "Gilda", "Giles", "Gillian", "Gina", "Gino",
|
||||
"Giovani", "Giovanna", "Giovanni", "Giovanny", "Gisselle", "Giuseppe",
|
||||
"Gladyce", "Gladys", "Glen", "Glenda", "Glenna", "Glennie", "Gloria",
|
||||
"Godfrey", "Golda", "Golden", "Gonzalo", "Gordon", "Grace", "Gracie",
|
||||
"Graciela", "Grady", "Graham", "Grant", "Granville", "Grayce", "Grayson",
|
||||
"Green", "Greg", "Gregg", "Gregoria", "Gregorio", "Gregory", "Greta",
|
||||
"Gretchen", "Greyson", "Griffin", "Grover", "Guadalupe", "Gudrun", "Guido",
|
||||
"Guillermo", "Guiseppe", "Gunnar", "Gunner", "Gus", "Gussie", "Gust",
|
||||
"Gustave", "Guy", "Gwen", "Gwendolyn", "Hadley", "Hailee", "Hailey", "Hailie",
|
||||
"Hal", "Haleigh", "Haley", "Halie", "Halle", "Hallie", "Hank", "Hanna",
|
||||
"Hannah", "Hans", "Hardy", "Harley", "Harmon", "Harmony", "Harold",
|
||||
"Harrison", "Harry", "Harvey", "Haskell", "Hassan", "Hassie", "Hattie",
|
||||
"Haven", "Hayden", "Haylee", "Hayley", "Haylie", "Hazel", "Hazle", "Heath",
|
||||
"Heather", "Heaven", "Heber", "Hector", "Heidi", "Helen", "Helena", "Helene",
|
||||
"Helga", "Hellen", "Helmer", "Heloise", "Henderson", "Henri", "Henriette",
|
||||
"Henry", "Herbert", "Herman", "Hermann", "Hermina", "Herminia", "Herminio",
|
||||
"Hershel", "Herta", "Hertha", "Hester", "Hettie", "Hilario", "Hilbert",
|
||||
"Hilda", "Hildegard", "Hillard", "Hillary", "Hilma", "Hilton", "Hipolito",
|
||||
"Hiram", "Hobart", "Holden", "Hollie", "Hollis", "Holly", "Hope", "Horace",
|
||||
"Horacio", "Hortense", "Hosea", "Houston", "Howard", "Howell", "Hoyt",
|
||||
"Hubert", "Hudson", "Hugh", "Hulda", "Humberto", "Hunter", "Hyman", "Ian",
|
||||
"Ibrahim", "Icie", "Ida", "Idell", "Idella", "Ignacio", "Ignatius", "Ike",
|
||||
"Ila", "Ilene", "Iliana", "Ima", "Imani", "Imelda", "Immanuel", "Imogene",
|
||||
"Ines", "Irma", "Irving", "Irwin", "Isaac", "Isabel", "Isabell", "Isabella",
|
||||
"Isabelle", "Isac", "Isadore", "Isai", "Isaiah", "Isaias", "Isidro", "Ismael",
|
||||
"Isobel", "Isom", "Israel", "Issac", "Itzel", "Iva", "Ivah", "Ivory", "Ivy",
|
||||
"Izabella", "Izaiah", "Jabari", "Jace", "Jacey", "Jacinthe", "Jacinto",
|
||||
"Jack", "Jackeline", "Jackie", "Jacklyn", "Jackson", "Jacky", "Jaclyn",
|
||||
"Jacquelyn", "Jacques", "Jacynthe", "Jada", "Jade", "Jaden", "Jadon", "Jadyn",
|
||||
"Jaeden", "Jaida", "Jaiden", "Jailyn", "Jaime", "Jairo", "Jakayla", "Jake",
|
||||
"Jakob", "Jaleel", "Jalen", "Jalon", "Jalyn", "Jamaal", "Jamal", "Jamar",
|
||||
"Jamarcus", "Jamel", "Jameson", "Jamey", "Jamie", "Jamil", "Jamir", "Jamison",
|
||||
"Jammie", "Jan", "Jana", "Janae", "Jane", "Janelle", "Janessa", "Janet",
|
||||
"Janice", "Janick", "Janie", "Janis", "Janiya", "Jannie", "Jany", "Jaquan",
|
||||
"Jaquelin", "Jaqueline", "Jared", "Jaren", "Jarod", "Jaron", "Jarred",
|
||||
"Jarrell", "Jarret", "Jarrett", "Jarrod", "Jarvis", "Jasen", "Jasmin",
|
||||
"Jason", "Jasper", "Jaunita", "Javier", "Javon", "Javonte", "Jay", "Jayce",
|
||||
"Jaycee", "Jayda", "Jayde", "Jayden", "Jaydon", "Jaylan", "Jaylen", "Jaylin",
|
||||
"Jaylon", "Jayme", "Jayne", "Jayson", "Jazlyn", "Jazmin", "Jazmyn", "Jazmyne",
|
||||
"Jean", "Jeanette", "Jeanie", "Jeanne", "Jed", "Jedediah", "Jedidiah", "Jeff",
|
||||
"Jefferey", "Jeffery", "Jeffrey", "Jeffry", "Jena", "Jenifer", "Jennie",
|
||||
"Jennifer", "Jennings", "Jennyfer", "Jensen", "Jerad", "Jerald", "Jeramie",
|
||||
"Jeramy", "Jerel", "Jeremie", "Jeremy", "Jermain", "Jermaine", "Jermey",
|
||||
"Jerod", "Jerome", "Jeromy", "Jerrell", "Jerrod", "Jerrold", "Jerry", "Jess",
|
||||
"Jesse", "Jessica", "Jessie", "Jessika", "Jessy", "Jessyca", "Jesus", "Jett",
|
||||
"Jettie", "Jevon", "Jewel", "Jewell", "Jillian", "Jimmie", "Jimmy", "Jo",
|
||||
"Joan", "Joana", "Joanie", "Joanne", "Joannie", "Joanny", "Joany", "Joaquin",
|
||||
"Jocelyn", "Jodie", "Jody", "Joe", "Joel", "Joelle", "Joesph", "Joey",
|
||||
"Johan", "Johann", "Johanna", "Johathan", "John", "Johnathan", "Johnathon",
|
||||
"Johnnie", "Johnny", "Johnpaul", "Johnson", "Jolie", "Jon", "Jonas",
|
||||
"Jonatan", "Jonathan", "Jonathon", "Jordan", "Jordane", "Jordi", "Jordon",
|
||||
"Jordy", "Jordyn", "Jorge", "Jose", "Josefa", "Josefina", "Joseph",
|
||||
"Josephine", "Josh", "Joshua", "Joshuah", "Josiah", "Josiane", "Josianne",
|
||||
"Josie", "Josue", "Jovan", "Jovani", "Jovanny", "Jovany", "Joy", "Joyce",
|
||||
"Juana", "Juanita", "Judah", "Judd", "Jude", "Judge", "Judson", "Judy",
|
||||
"Jules", "Julia", "Julian", "Juliana", "Julianne", "Julie", "Julien",
|
||||
"Juliet", "Julio", "Julius", "June", "Junior", "Junius", "Justen", "Justice",
|
||||
"Justina", "Justine", "Juston", "Justus", "Justyn", "Juvenal", "Juwan",
|
||||
"Kacey", "Kaci", "Kacie", "Kade", "Kaden", "Kadin", "Kaela", "Kaelyn", "Kaia",
|
||||
"Kailee", "Kailey", "Kailyn", "Kaitlin", "Kaitlyn", "Kale", "Kaleb",
|
||||
"Kaleigh", "Kaley", "Kali", "Kallie", "Kameron", "Kamille", "Kamren",
|
||||
"Kamron", "Kamryn", "Kane", "Kara", "Kareem", "Karelle", "Karen", "Kari",
|
||||
"Kariane", "Karianne", "Karina", "Karine", "Karl", "Karlee", "Karley",
|
||||
"Karli", "Karlie", "Karolann", "Karson", "Kasandra", "Kasey", "Kassandra",
|
||||
"Katarina", "Katelin", "Katelyn", "Katelynn", "Katharina", "Katherine",
|
||||
"Katheryn", "Kathleen", "Kathlyn", "Kathryn", "Kathryne", "Katlyn", "Katlynn",
|
||||
"Katrina", "Katrine", "Kattie", "Kavon", "Kay", "Kaya", "Kaycee", "Kayden",
|
||||
"Kayla", "Kaylah", "Kaylee", "Kayleigh", "Kayley", "Kayli", "Kaylie",
|
||||
"Kaylin", "Keagan", "Keanu", "Keara", "Keaton", "Keegan", "Keeley", "Keely",
|
||||
"Keenan", "Keira", "Keith", "Kellen", "Kelley", "Kelli", "Kellie", "Kelly",
|
||||
"Kelsi", "Kelsie", "Kelton", "Kelvin", "Ken", "Kendall", "Kendra", "Kendrick",
|
||||
"Kenna", "Kennedi", "Kennedy", "Kenneth", "Kennith", "Kenny", "Kenton",
|
||||
"Kenya", "Kenyatta", "Kenyon", "Keon", "Keshaun", "Keshawn", "Keven", "Kevin",
|
||||
"Kevon", "Keyon", "Keyshawn", "Khalid", "Khalil", "Kian", "Kiana", "Kianna",
|
||||
"Kiara", "Kiarra", "Kiel", "Kiera", "Kieran", "Kiley", "Kim", "Kimberly",
|
||||
"King", "Kip", "Kira", "Kirk", "Kirsten", "Kirstin", "Kitty", "Kobe", "Koby",
|
||||
"Kody", "Kolby", "Kole", "Korbin", "Korey", "Kory", "Kraig", "Kris", "Krista",
|
||||
"Kristian", "Kristin", "Kristina", "Kristofer", "Kristoffer", "Kristopher",
|
||||
"Kristy", "Krystal", "Krystel", "Krystina", "Kurt", "Kurtis", "Kyla", "Kyle",
|
||||
"Kylee", "Kyleigh", "Kyler", "Kylie", "Kyra", "Lacey", "Lacy", "Ladarius",
|
||||
"Lafayette", "Laila", "Laisha", "Lamar", "Lambert", "Lamont", "Lance",
|
||||
"Landen", "Lane", "Laney", "Larissa", "Laron", "Larry", "Larue", "Laura",
|
||||
"Laurel", "Lauren", "Laurence", "Lauretta", "Lauriane", "Laurianne", "Laurie",
|
||||
"Laurine", "Laury", "Lauryn", "Lavada", "Lavern", "Laverna", "Laverne",
|
||||
"Lavina", "Lavinia", "Lavon", "Lavonne", "Lawrence", "Lawson", "Layla",
|
||||
"Layne", "Lazaro", "Lea", "Leann", "Leanna", "Leanne", "Leatha", "Leda",
|
||||
"Lee", "Leif", "Leila", "Leilani", "Lela", "Lelah", "Leland", "Lelia",
|
||||
"Lempi", "Lemuel", "Lenna", "Lennie", "Lenny", "Lenora", "Lenore", "Leo",
|
||||
"Leola", "Leon", "Leonard", "Leonardo", "Leone", "Leonel", "Leonie", "Leonor",
|
||||
"Leonora", "Leopold", "Leopoldo", "Leora", "Lera", "Lesley", "Leslie",
|
||||
"Lesly", "Lessie", "Lester", "Leta", "Letha", "Letitia", "Levi", "Lew",
|
||||
"Lewis", "Lexi", "Lexie", "Lexus", "Lia", "Liam", "Liana", "Libbie", "Libby",
|
||||
"Lila", "Lilian", "Liliana", "Liliane", "Lilla", "Lillian", "Lilliana",
|
||||
"Lillie", "Lilly", "Lily", "Lilyan", "Lina", "Lincoln", "Linda", "Lindsay",
|
||||
"Lindsey", "Linnea", "Linnie", "Linwood", "Lionel", "Lisa", "Lisandro",
|
||||
"Lisette", "Litzy", "Liza", "Lizeth", "Lizzie", "Llewellyn", "Lloyd", "Logan",
|
||||
"Lois", "Lola", "Lolita", "Loma", "Lon", "London", "Lonie", "Lonnie", "Lonny",
|
||||
"Lonzo", "Lora", "Loraine", "Loren", "Lorena", "Lorenz", "Lorenza", "Lorenzo",
|
||||
"Lori", "Lorine", "Lorna", "Lottie", "Lou", "Louie", "Louisa", "Lourdes",
|
||||
"Louvenia", "Lowell", "Loy", "Loyal", "Loyce", "Lucas", "Luciano", "Lucie",
|
||||
"Lucienne", "Lucile", "Lucinda", "Lucio", "Lucious", "Lucius", "Lucy",
|
||||
"Ludie", "Ludwig", "Lue", "Luella", "Luigi", "Luis", "Luisa", "Lukas", "Lula",
|
||||
"Lulu", "Luna", "Lupe", "Lura", "Lurline", "Luther", "Luz", "Lyda", "Lydia",
|
||||
"Lyla", "Lynn", "Lyric", "Lysanne", "Mabel", "Mabelle", "Mable", "Mac",
|
||||
"Macey", "Maci", "Macie", "Mack", "Mackenzie", "Macy", "Madaline", "Madalyn",
|
||||
"Maddison", "Madeline", "Madelyn", "Madelynn", "Madge", "Madie", "Madilyn",
|
||||
"Madisen", "Madison", "Madisyn", "Madonna", "Madyson", "Mae", "Maegan",
|
||||
"Maeve", "Mafalda", "Magali", "Magdalen", "Magdalena", "Maggie", "Magnolia",
|
||||
"Magnus", "Maia", "Maida", "Maiya", "Major", "Makayla", "Makenna", "Makenzie",
|
||||
"Malachi", "Malcolm", "Malika", "Malinda", "Mallie", "Mallory", "Malvina",
|
||||
"Mandy", "Manley", "Manuel", "Manuela", "Mara", "Marc", "Marcel", "Marcelina",
|
||||
"Marcelino", "Marcella", "Marcelle", "Marcellus", "Marcelo", "Marcia",
|
||||
"Marco", "Marcos", "Marcus", "Margaret", "Margarete", "Margarett",
|
||||
"Margaretta", "Margarette", "Margarita", "Marge", "Margie", "Margot",
|
||||
"Margret", "Marguerite", "Maria", "Mariah", "Mariam", "Marian", "Mariana",
|
||||
"Mariane", "Marianna", "Marianne", "Mariano", "Maribel", "Marie", "Mariela",
|
||||
"Marielle", "Marietta", "Marilie", "Marilou", "Marilyne", "Marina", "Mario",
|
||||
"Marion", "Marisa", "Marisol", "Maritza", "Marjolaine", "Marjorie", "Marjory",
|
||||
"Mark", "Markus", "Marlee", "Marlen", "Marlene", "Marley", "Marlin", "Marlon",
|
||||
"Marques", "Marquis", "Marquise", "Marshall", "Marta", "Martin", "Martina",
|
||||
"Martine", "Marty", "Marvin", "Mary", "Maryam", "Maryjane", "Maryse", "Mason",
|
||||
"Mateo", "Mathew", "Mathias", "Mathilde", "Matilda", "Matilde", "Matt",
|
||||
"Matteo", "Mattie", "Maud", "Maude", "Maudie", "Maureen", "Maurice",
|
||||
"Mauricio", "Maurine", "Maverick", "Mavis", "Max", "Maxie", "Maxime",
|
||||
"Maximilian", "Maximillia", "Maximillian", "Maximo", "Maximus", "Maxine",
|
||||
"Maxwell", "May", "Maya", "Maybell", "Maybelle", "Maye", "Maymie", "Maynard",
|
||||
"Mayra", "Mazie", "Mckayla", "Mckenna", "Mckenzie", "Meagan", "Meaghan",
|
||||
"Meda", "Megane", "Meggie", "Meghan", "Mekhi", "Melany", "Melba", "Melisa",
|
||||
"Melissa", "Mellie", "Melody", "Melvin", "Melvina", "Melyna", "Melyssa",
|
||||
"Mercedes", "Meredith", "Merl", "Merle", "Merlin", "Merritt", "Mertie",
|
||||
"Mervin", "Meta", "Mia", "Micaela", "Micah", "Michael", "Michaela", "Michale",
|
||||
"Micheal", "Michel", "Michele", "Michelle", "Miguel", "Mikayla", "Mike",
|
||||
"Mikel", "Milan", "Miles", "Milford", "Miller", "Millie", "Milo", "Milton",
|
||||
"Mina", "Minerva", "Minnie", "Miracle", "Mireille", "Mireya", "Misael",
|
||||
"Missouri", "Misty", "Mitchel", "Mitchell", "Mittie", "Modesta", "Modesto",
|
||||
"Mohamed", "Mohammad", "Mohammed", "Moises", "Mollie", "Molly", "Mona",
|
||||
"Monica", "Monique", "Monroe", "Monserrat", "Monserrate", "Montana", "Monte",
|
||||
"Monty", "Morgan", "Moriah", "Morris", "Mortimer", "Morton", "Mose", "Moses",
|
||||
"Moshe", "Mossie", "Mozell", "Mozelle", "Muhammad", "Muriel", "Murl",
|
||||
"Murphy", "Murray", "Mustafa", "Mya", "Myah", "Mylene", "Myles", "Myra",
|
||||
"Myriam", "Myrl", "Myrna", "Myron", "Myrtice", "Myrtie", "Myrtis", "Myrtle",
|
||||
"Nadia", "Nakia", "Name", "Nannie", "Naomi", "Naomie", "Napoleon", "Narciso",
|
||||
"Nash", "Nasir", "Nat", "Natalia", "Natalie", "Natasha", "Nathan",
|
||||
"Nathanael", "Nathanial", "Nathaniel", "Nathen", "Nayeli", "Neal", "Ned",
|
||||
"Nedra", "Neha", "Neil", "Nelda", "Nella", "Nelle", "Nellie", "Nels",
|
||||
"Nelson", "Neoma", "Nestor", "Nettie", "Neva", "Newell", "Newton", "Nia",
|
||||
"Nicholas", "Nicholaus", "Nichole", "Nick", "Nicklaus", "Nickolas", "Nico",
|
||||
"Nicola", "Nicolas", "Nicole", "Nicolette", "Nigel", "Nikita", "Nikki",
|
||||
"Nikko", "Niko", "Nikolas", "Nils", "Nina", "Noah", "Noble", "Noe", "Noel",
|
||||
"Noelia", "Noemi", "Noemie", "Noemy", "Nola", "Nolan", "Nona", "Nora",
|
||||
"Norbert", "Norberto", "Norene", "Norma", "Norris", "Norval", "Norwood",
|
||||
"Nova", "Novella", "Nya", "Nyah", "Nyasia", "Obie", "Oceane", "Ocie",
|
||||
"Octavia", "Oda", "Odell", "Odessa", "Odie", "Ofelia", "Okey", "Ola", "Olaf",
|
||||
"Ole", "Olen", "Oleta", "Olga", "Olin", "Oliver", "Ollie", "Oma", "Omari",
|
||||
"Omer", "Ona", "Onie", "Opal", "Ophelia", "Ora", "Oral", "Oran", "Oren",
|
||||
"Orie", "Orin", "Orion", "Orland", "Orlando", "Orlo", "Orpha", "Orrin",
|
||||
"Orval", "Orville", "Osbaldo", "Osborne", "Oscar", "Osvaldo", "Oswald",
|
||||
"Oswaldo", "Otha", "Otho", "Otilia", "Otis", "Ottilie", "Ottis", "Otto",
|
||||
"Ova", "Owen", "Ozella", "Pablo", "Paige", "Palma", "Pamela", "Pansy",
|
||||
"Paolo", "Paris", "Parker", "Pascale", "Pasquale", "Pat", "Patience",
|
||||
"Patricia", "Patrick", "Patsy", "Pattie", "Paul", "Paula", "Pauline",
|
||||
"Paxton", "Payton", "Pearl", "Pearlie", "Pearline", "Pedro", "Peggie",
|
||||
"Penelope", "Percival", "Percy", "Perry", "Pete", "Peter", "Petra", "Peyton",
|
||||
"Philip", "Phoebe", "Phyllis", "Pierce", "Pierre", "Pietro", "Pink", "Pinkie",
|
||||
"Piper", "Polly", "Porter", "Precious", "Presley", "Preston", "Price",
|
||||
"Prince", "Princess", "Priscilla", "Providenci", "Prudence", "Queen",
|
||||
"Queenie", "Quentin", "Quincy", "Quinn", "Quinten", "Quinton", "Rachael",
|
||||
"Rachel", "Rachelle", "Rae", "Raegan", "Rafael", "Rafaela", "Raheem",
|
||||
"Rahsaan", "Rahul", "Raina", "Raleigh", "Ralph", "Ramiro", "Ramon", "Ramona",
|
||||
"Randal", "Randall", "Randi", "Randy", "Ransom", "Raoul", "Raphael",
|
||||
"Raphaelle", "Raquel", "Rashad", "Rashawn", "Rasheed", "Raul", "Raven", "Ray",
|
||||
"Raymond", "Raymundo", "Reagan", "Reanna", "Reba", "Rebeca", "Rebecca",
|
||||
"Rebeka", "Rebekah", "Reece", "Reed", "Reese", "Regan", "Reggie", "Reginald",
|
||||
"Reid", "Reilly", "Reina", "Reinhold", "Remington", "Rene", "Renee", "Ressie",
|
||||
"Reta", "Retha", "Retta", "Reuben", "Reva", "Rex", "Rey", "Reyes", "Reymundo",
|
||||
"Reyna", "Reynold", "Rhea", "Rhett", "Rhianna", "Rhiannon", "Rhoda",
|
||||
"Ricardo", "Richard", "Richie", "Richmond", "Rick", "Rickey", "Rickie",
|
||||
"Ricky", "Rico", "Rigoberto", "Riley", "Rita", "River", "Robb", "Robbie",
|
||||
"Robert", "Roberta", "Roberto", "Robin", "Robyn", "Rocio", "Rocky", "Rod",
|
||||
"Roderick", "Rodger", "Rodolfo", "Rodrick", "Rodrigo", "Roel", "Rogelio",
|
||||
"Roger", "Rogers", "Rolando", "Rollin", "Roma", "Romaine", "Roman", "Ron",
|
||||
"Ronaldo", "Ronny", "Roosevelt", "Rory", "Rosa", "Rosalee", "Rosalia",
|
||||
"Rosalind", "Rosalinda", "Rosalyn", "Rosamond", "Rosanna", "Rosario",
|
||||
"Roscoe", "Rose", "Rosella", "Roselyn", "Rosemarie", "Rosemary", "Rosendo",
|
||||
"Rosetta", "Rosie", "Rosina", "Roslyn", "Ross", "Rossie", "Rowan", "Rowena",
|
||||
"Rowland", "Roxane", "Roxanne", "Roy", "Royal", "Royce", "Rozella", "Ruben",
|
||||
"Rubie", "Ruby", "Rubye", "Rudolph", "Rudy", "Rupert", "Russ", "Russel",
|
||||
"Russell", "Rusty", "Ruth", "Ruthe", "Ruthie", "Ryan", "Ryann", "Ryder",
|
||||
"Rylan", "Rylee", "Ryleigh", "Ryley", "Sabina", "Sabrina", "Sabryna", "Sadie",
|
||||
"Sadye", "Sage", "Saige", "Sallie", "Sally", "Salma", "Salvador", "Salvatore",
|
||||
"Sam", "Samanta", "Samantha", "Samara", "Samir", "Sammie", "Sammy", "Samson",
|
||||
"Sandra", "Sandrine", "Sandy", "Sanford", "Santa", "Santiago", "Santina",
|
||||
"Santino", "Santos", "Sarah", "Sarai", "Sarina", "Sasha", "Saul", "Savanah",
|
||||
"Savanna", "Savannah", "Savion", "Scarlett", "Schuyler", "Scot", "Scottie",
|
||||
"Scotty", "Seamus", "Sean", "Sebastian", "Sedrick", "Selena", "Selina",
|
||||
"Selmer", "Serena", "Serenity", "Seth", "Shad", "Shaina", "Shakira", "Shana",
|
||||
"Shane", "Shanel", "Shanelle", "Shania", "Shanie", "Shaniya", "Shanna",
|
||||
"Shannon", "Shanny", "Shanon", "Shany", "Sharon", "Shaun", "Shawn", "Shawna",
|
||||
"Shaylee", "Shayna", "Shayne", "Shea", "Sheila", "Sheldon", "Shemar",
|
||||
"Sheridan", "Sherman", "Sherwood", "Shirley", "Shyann", "Shyanne", "Sibyl",
|
||||
"Sid", "Sidney", "Sienna", "Sierra", "Sigmund", "Sigrid", "Sigurd", "Silas",
|
||||
"Sim", "Simeon", "Simone", "Sincere", "Sister", "Skye", "Skyla", "Skylar",
|
||||
"Sofia", "Soledad", "Solon", "Sonia", "Sonny", "Sonya", "Sophia", "Sophie",
|
||||
"Spencer", "Stacey", "Stacy", "Stan", "Stanford", "Stanley", "Stanton",
|
||||
"Stefan", "Stefanie", "Stella", "Stephan", "Stephania", "Stephanie",
|
||||
"Stephany", "Stephen", "Stephon", "Sterling", "Steve", "Stevie", "Stewart",
|
||||
"Stone", "Stuart", "Summer", "Sunny", "Susan", "Susana", "Susanna", "Susie",
|
||||
"Suzanne", "Sven", "Syble", "Sydnee", "Sydney", "Sydni", "Sydnie", "Sylvan",
|
||||
"Sylvester", "Sylvia", "Tabitha", "Tad", "Talia", "Talon", "Tamara", "Tamia",
|
||||
"Tania", "Tanner", "Tanya", "Tara", "Taryn", "Tate", "Tatum", "Tatyana",
|
||||
"Taurean", "Tavares", "Taya", "Taylor", "Teagan", "Ted", "Telly", "Terence",
|
||||
"Teresa", "Terrance", "Terrell", "Terrence", "Terrill", "Terry", "Tess",
|
||||
"Tessie", "Tevin", "Thad", "Thaddeus", "Thalia", "Thea", "Thelma", "Theo",
|
||||
"Theodora", "Theodore", "Theresa", "Therese", "Theresia", "Theron", "Thomas",
|
||||
"Thora", "Thurman", "Tia", "Tiana", "Tianna", "Tiara", "Tierra", "Tiffany",
|
||||
"Tillman", "Timmothy", "Timmy", "Timothy", "Tina", "Tito", "Titus", "Tobin",
|
||||
"Toby", "Tod", "Tom", "Tomas", "Tomasa", "Tommie", "Toney", "Toni", "Tony",
|
||||
"Torey", "Torrance", "Torrey", "Toy", "Trace", "Tracey", "Tracy", "Travis",
|
||||
"Travon", "Tre", "Tremaine", "Tremayne", "Trent", "Trenton", "Tressa",
|
||||
"Tressie", "Treva", "Trever", "Trevion", "Trevor", "Trey", "Trinity",
|
||||
"Trisha", "Tristian", "Tristin", "Triston", "Troy", "Trudie", "Trycia",
|
||||
"Trystan", "Turner", "Twila", "Tyler", "Tyra", "Tyree", "Tyreek", "Tyrel",
|
||||
"Tyrell", "Tyrese", "Tyrique", "Tyshawn", "Tyson", "Ubaldo", "Ulices",
|
||||
"Ulises", "Una", "Unique", "Urban", "Uriah", "Uriel", "Ursula", "Vada",
|
||||
"Valentin", "Valentina", "Valentine", "Valerie", "Vallie", "Van", "Vance",
|
||||
"Vanessa", "Vaughn", "Veda", "Velda", "Vella", "Velma", "Velva", "Vena",
|
||||
"Verda", "Verdie", "Vergie", "Verla", "Verlie", "Vern", "Verna", "Verner",
|
||||
"Vernice", "Vernie", "Vernon", "Verona", "Veronica", "Vesta", "Vicenta",
|
||||
"Vicente", "Vickie", "Vicky", "Victor", "Victoria", "Vida", "Vidal", "Vilma",
|
||||
"Vince", "Vincent", "Vincenza", "Vincenzo", "Vinnie", "Viola", "Violet",
|
||||
"Violette", "Virgie", "Virgil", "Virginia", "Virginie", "Vita", "Vito",
|
||||
"Viva", "Vivian", "Viviane", "Vivianne", "Vivien", "Vivienne", "Vladimir",
|
||||
"Wade", "Waino", "Waldo", "Walker", "Wallace", "Walter", "Walton", "Wanda",
|
||||
"Ward", "Warren", "Watson", "Wava", "Waylon", "Wayne", "Webster", "Weldon",
|
||||
"Wellington", "Wendell", "Wendy", "Werner", "Westley", "Weston", "Whitney",
|
||||
"Wilber", "Wilbert", "Wilburn", "Wiley", "Wilford", "Wilfred", "Wilfredo",
|
||||
"Wilfrid", "Wilhelm", "Wilhelmine", "Will", "Willa", "Willard", "William",
|
||||
"Willie", "Willis", "Willow", "Willy", "Wilma", "Wilmer", "Wilson", "Wilton",
|
||||
"Winfield", "Winifred", "Winnifred", "Winona", "Winston", "Woodrow", "Wyatt",
|
||||
"Wyman", "Xander", "Xavier", "Xzavier", "Yadira", "Yasmeen", "Yasmin",
|
||||
"Yasmine", "Yazmin", "Yesenia", "Yessenia", "Yolanda", "Yoshiko", "Yvette",
|
||||
"Yvonne", "Zachariah", "Zachary", "Zachery", "Zack", "Zackary", "Zackery",
|
||||
"Zakary", "Zander", "Zane", "Zaria", "Zechariah", "Zelda", "Zella", "Zelma",
|
||||
"Zena", "Zetta", "Zion", "Zita", "Zoe", "Zoey", "Zoie", "Zoila", "Zola",
|
||||
"Zora", "Zula"
|
||||
];
|
||||
|
||||
/**
|
||||
* Generate random username.
|
||||
* @returns {string} random username
|
||||
*/
|
||||
export function generateUsername () {
|
||||
var name = RandomUtil.randomElement(names);
|
||||
var suffix = RandomUtil.randomAlphanumStr(3);
|
||||
|
||||
return name + '-' + suffix;
|
||||
}
|
Loading…
Reference in New Issue