Merge pull request #1075 from mattermost/plt-577

PLT-577 Upgrading dependencies.
Этот коммит содержится в:
Christopher Speller
2015-10-15 15:18:39 -04:00
родитель bd2fec0fb1 8d630fc3ee
Коммит c890e21cef
96 изменённых файлов: 14079 добавлений и 17339 удалений

Просмотреть файл

@@ -106,11 +106,12 @@ travis:
mv $(DIST_PATH)/web/static/js/bundle.min.js $(DIST_PATH)/web/static/js/bundle-$(BUILD_NUMBER).min.js mv $(DIST_PATH)/web/static/js/bundle.min.js $(DIST_PATH)/web/static/js/bundle-$(BUILD_NUMBER).min.js
mv $(DIST_PATH)/web/static/js/libs.min.js $(DIST_PATH)/web/static/js/libs-$(BUILD_NUMBER).min.js mv $(DIST_PATH)/web/static/js/libs.min.js $(DIST_PATH)/web/static/js/libs-$(BUILD_NUMBER).min.js
@sed -i'.bak' 's|react-with-addons-0.13.3.js|react-with-addons-0.13.3.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-0.14.0.js|react-0.14.0.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|jquery-1.11.1.js|jquery-1.11.1.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-dom-0.14.0.js|react-dom-0.14.0.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|jquery-2.1.4.js|jquery-2.1.4.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|bootstrap-3.3.5.js|bootstrap-3.3.5.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|bootstrap-3.3.5.js|bootstrap-3.3.5.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|react-bootstrap-0.25.1.js|react-bootstrap-0.25.1.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-bootstrap-0.27.1.js|react-bootstrap-0.27.1.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|perfect-scrollbar.js|perfect-scrollbar.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|perfect-scrollbar-0.6.7.jquery.js|perfect-scrollbar-0.6.7.jquery.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|bundle.js|bundle-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|bundle.js|bundle-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|libs.min.js|libs-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|libs.min.js|libs-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html
rm $(DIST_PATH)/web/templates/*.bak rm $(DIST_PATH)/web/templates/*.bak
@@ -290,11 +291,12 @@ dist: install
mv $(DIST_PATH)/web/static/js/bundle.min.js $(DIST_PATH)/web/static/js/bundle-$(BUILD_NUMBER).min.js mv $(DIST_PATH)/web/static/js/bundle.min.js $(DIST_PATH)/web/static/js/bundle-$(BUILD_NUMBER).min.js
mv $(DIST_PATH)/web/static/js/libs.min.js $(DIST_PATH)/web/static/js/libs-$(BUILD_NUMBER).min.js mv $(DIST_PATH)/web/static/js/libs.min.js $(DIST_PATH)/web/static/js/libs-$(BUILD_NUMBER).min.js
@sed -i'.bak' 's|react-with-addons-0.13.3.js|react-with-addons-0.13.3.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-0.14.0.js|react-0.14.0.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|jquery-1.11.1.js|jquery-1.11.1.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-dom-0.14.0.js|react-dom-0.14.0.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|jquery-2.1.4.js|jquery-2.1.4.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|bootstrap-3.3.5.js|bootstrap-3.3.5.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|bootstrap-3.3.5.js|bootstrap-3.3.5.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|react-bootstrap-0.25.1.js|react-bootstrap-0.25.1.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|react-bootstrap-0.27.1.js|react-bootstrap-0.27.1.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|perfect-scrollbar.js|perfect-scrollbar.min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|perfect-scrollbar-0.6.7.jquery.js|perfect-scrollbar-0.6.7.jquery.min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|bundle.js|bundle-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|bundle.js|bundle-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html
@sed -i'.bak' 's|libs.min.js|libs-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html @sed -i'.bak' 's|libs.min.js|libs-$(BUILD_NUMBER).min.js|g' $(DIST_PATH)/web/templates/head.html
rm $(DIST_PATH)/web/templates/*.bak rm $(DIST_PATH)/web/templates/*.bak

Просмотреть файл

@@ -19,6 +19,7 @@
}, },
"globals": { "globals": {
"React": false, "React": false,
"ReactDOM": false,
"ReactBootstrap": false "ReactBootstrap": false
}, },
"rules": { "rules": {

Просмотреть файл

@@ -37,9 +37,9 @@ export default class AccessHistoryModal extends React.Component {
} }
componentDidMount() { componentDidMount() {
UserStore.addAuditsChangeListener(this.onAuditChange); UserStore.addAuditsChangeListener(this.onAuditChange);
$(React.findDOMNode(this.refs.modal)).on('shown.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('shown.bs.modal', this.onShow);
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide);
} }
componentWillUnmount() { componentWillUnmount() {
UserStore.removeAuditsChangeListener(this.onAuditChange); UserStore.removeAuditsChangeListener(this.onAuditChange);

Просмотреть файл

@@ -56,9 +56,9 @@ export default class ActivityLogModal extends React.Component {
} }
componentDidMount() { componentDidMount() {
UserStore.addSessionsChangeListener(this.onListenerChange); UserStore.addSessionsChangeListener(this.onListenerChange);
$(React.findDOMNode(this.refs.modal)).on('shown.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('shown.bs.modal', this.onShow);
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide);
} }
componentWillUnmount() { componentWillUnmount() {
UserStore.removeSessionsChangeListener(this.onListenerChange); UserStore.removeSessionsChangeListener(this.onListenerChange);

Просмотреть файл

@@ -27,7 +27,7 @@ export default class AdminNavbarDropdown extends React.Component {
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => { $(ReactDOM.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => {
this.blockToggle = true; this.blockToggle = true;
setTimeout(() => { setTimeout(() => {
this.blockToggle = false; this.blockToggle = false;
@@ -36,7 +36,7 @@ export default class AdminNavbarDropdown extends React.Component {
} }
componentWillUnmount() { componentWillUnmount() {
$(React.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown'); $(ReactDOM.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown');
} }
render() { render() {

Просмотреть файл

@@ -41,28 +41,28 @@ export default class EmailSettings extends React.Component {
buildConfig() { buildConfig() {
var config = this.props.config; var config = this.props.config;
config.EmailSettings.EnableSignUpWithEmail = React.findDOMNode(this.refs.allowSignUpWithEmail).checked; config.EmailSettings.EnableSignUpWithEmail = ReactDOM.findDOMNode(this.refs.allowSignUpWithEmail).checked;
config.EmailSettings.SendEmailNotifications = React.findDOMNode(this.refs.sendEmailNotifications).checked; config.EmailSettings.SendEmailNotifications = ReactDOM.findDOMNode(this.refs.sendEmailNotifications).checked;
config.EmailSettings.RequireEmailVerification = React.findDOMNode(this.refs.requireEmailVerification).checked; config.EmailSettings.RequireEmailVerification = ReactDOM.findDOMNode(this.refs.requireEmailVerification).checked;
config.EmailSettings.SendEmailNotifications = React.findDOMNode(this.refs.sendEmailNotifications).checked; config.EmailSettings.SendEmailNotifications = ReactDOM.findDOMNode(this.refs.sendEmailNotifications).checked;
config.EmailSettings.FeedbackName = React.findDOMNode(this.refs.feedbackName).value.trim(); config.EmailSettings.FeedbackName = ReactDOM.findDOMNode(this.refs.feedbackName).value.trim();
config.EmailSettings.FeedbackEmail = React.findDOMNode(this.refs.feedbackEmail).value.trim(); config.EmailSettings.FeedbackEmail = ReactDOM.findDOMNode(this.refs.feedbackEmail).value.trim();
config.EmailSettings.SMTPServer = React.findDOMNode(this.refs.SMTPServer).value.trim(); config.EmailSettings.SMTPServer = ReactDOM.findDOMNode(this.refs.SMTPServer).value.trim();
config.EmailSettings.SMTPPort = React.findDOMNode(this.refs.SMTPPort).value.trim(); config.EmailSettings.SMTPPort = ReactDOM.findDOMNode(this.refs.SMTPPort).value.trim();
config.EmailSettings.SMTPUsername = React.findDOMNode(this.refs.SMTPUsername).value.trim(); config.EmailSettings.SMTPUsername = ReactDOM.findDOMNode(this.refs.SMTPUsername).value.trim();
config.EmailSettings.SMTPPassword = React.findDOMNode(this.refs.SMTPPassword).value.trim(); config.EmailSettings.SMTPPassword = ReactDOM.findDOMNode(this.refs.SMTPPassword).value.trim();
config.EmailSettings.ConnectionSecurity = React.findDOMNode(this.refs.ConnectionSecurity).value.trim(); config.EmailSettings.ConnectionSecurity = ReactDOM.findDOMNode(this.refs.ConnectionSecurity).value.trim();
config.EmailSettings.InviteSalt = React.findDOMNode(this.refs.InviteSalt).value.trim(); config.EmailSettings.InviteSalt = ReactDOM.findDOMNode(this.refs.InviteSalt).value.trim();
if (config.EmailSettings.InviteSalt === '') { if (config.EmailSettings.InviteSalt === '') {
config.EmailSettings.InviteSalt = crypto.randomBytes(256).toString('base64').substring(0, 32); config.EmailSettings.InviteSalt = crypto.randomBytes(256).toString('base64').substring(0, 32);
React.findDOMNode(this.refs.InviteSalt).value = config.EmailSettings.InviteSalt; ReactDOM.findDOMNode(this.refs.InviteSalt).value = config.EmailSettings.InviteSalt;
} }
config.EmailSettings.PasswordResetSalt = React.findDOMNode(this.refs.PasswordResetSalt).value.trim(); config.EmailSettings.PasswordResetSalt = ReactDOM.findDOMNode(this.refs.PasswordResetSalt).value.trim();
if (config.EmailSettings.PasswordResetSalt === '') { if (config.EmailSettings.PasswordResetSalt === '') {
config.EmailSettings.PasswordResetSalt = crypto.randomBytes(256).toString('base64').substring(0, 32); config.EmailSettings.PasswordResetSalt = crypto.randomBytes(256).toString('base64').substring(0, 32);
React.findDOMNode(this.refs.PasswordResetSalt).value = config.EmailSettings.PasswordResetSalt; ReactDOM.findDOMNode(this.refs.PasswordResetSalt).value = config.EmailSettings.PasswordResetSalt;
} }
return config; return config;
@@ -70,14 +70,14 @@ export default class EmailSettings extends React.Component {
handleGenerateInvite(e) { handleGenerateInvite(e) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.InviteSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32); ReactDOM.findDOMNode(this.refs.InviteSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32);
var s = {saveNeeded: true, serverError: this.state.serverError}; var s = {saveNeeded: true, serverError: this.state.serverError};
this.setState(s); this.setState(s);
} }
handleGenerateReset(e) { handleGenerateReset(e) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.PasswordResetSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32); ReactDOM.findDOMNode(this.refs.PasswordResetSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32);
var s = {saveNeeded: true, serverError: this.state.serverError}; var s = {saveNeeded: true, serverError: this.state.serverError};
this.setState(s); this.setState(s);
} }

Просмотреть файл

@@ -37,12 +37,12 @@ export default class GitLabSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.GitLabSettings.Enable = React.findDOMNode(this.refs.Enable).checked; config.GitLabSettings.Enable = ReactDOM.findDOMNode(this.refs.Enable).checked;
config.GitLabSettings.Secret = React.findDOMNode(this.refs.Secret).value.trim(); config.GitLabSettings.Secret = ReactDOM.findDOMNode(this.refs.Secret).value.trim();
config.GitLabSettings.Id = React.findDOMNode(this.refs.Id).value.trim(); config.GitLabSettings.Id = ReactDOM.findDOMNode(this.refs.Id).value.trim();
config.GitLabSettings.AuthEndpoint = React.findDOMNode(this.refs.AuthEndpoint).value.trim(); config.GitLabSettings.AuthEndpoint = ReactDOM.findDOMNode(this.refs.AuthEndpoint).value.trim();
config.GitLabSettings.TokenEndpoint = React.findDOMNode(this.refs.TokenEndpoint).value.trim(); config.GitLabSettings.TokenEndpoint = ReactDOM.findDOMNode(this.refs.TokenEndpoint).value.trim();
config.GitLabSettings.UserApiEndpoint = React.findDOMNode(this.refs.UserApiEndpoint).value.trim(); config.GitLabSettings.UserApiEndpoint = ReactDOM.findDOMNode(this.refs.UserApiEndpoint).value.trim();
Client.saveConfig( Client.saveConfig(
config, config,
@@ -260,7 +260,7 @@ export default class GitLabSettings extends React.Component {
} }
//config.GitLabSettings.Scope = React.findDOMNode(this.refs.Scope).value.trim(); //config.GitLabSettings.Scope = ReactDOM.findDOMNode(this.refs.Scope).value.trim();
// <div className='form-group'> // <div className='form-group'>
// <label // <label
// className='control-label col-sm-4' // className='control-label col-sm-4'

Просмотреть файл

@@ -24,7 +24,7 @@ export default class FileSettings extends React.Component {
var s = {saveNeeded: true, serverError: this.state.serverError}; var s = {saveNeeded: true, serverError: this.state.serverError};
if (action === 'DriverName') { if (action === 'DriverName') {
s.DriverName = React.findDOMNode(this.refs.DriverName).value; s.DriverName = ReactDOM.findDOMNode(this.refs.DriverName).value;
} }
this.setState(s); this.setState(s);
@@ -32,7 +32,7 @@ export default class FileSettings extends React.Component {
handleGenerate(e) { handleGenerate(e) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.PublicLinkSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32); ReactDOM.findDOMNode(this.refs.PublicLinkSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 32);
var s = {saveNeeded: true, serverError: this.state.serverError}; var s = {saveNeeded: true, serverError: this.state.serverError};
this.setState(s); this.setState(s);
} }
@@ -42,62 +42,62 @@ export default class FileSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.FileSettings.DriverName = React.findDOMNode(this.refs.DriverName).value; config.FileSettings.DriverName = ReactDOM.findDOMNode(this.refs.DriverName).value;
config.FileSettings.Directory = React.findDOMNode(this.refs.Directory).value; config.FileSettings.Directory = ReactDOM.findDOMNode(this.refs.Directory).value;
config.FileSettings.AmazonS3AccessKeyId = React.findDOMNode(this.refs.AmazonS3AccessKeyId).value; config.FileSettings.AmazonS3AccessKeyId = ReactDOM.findDOMNode(this.refs.AmazonS3AccessKeyId).value;
config.FileSettings.AmazonS3SecretAccessKey = React.findDOMNode(this.refs.AmazonS3SecretAccessKey).value; config.FileSettings.AmazonS3SecretAccessKey = ReactDOM.findDOMNode(this.refs.AmazonS3SecretAccessKey).value;
config.FileSettings.AmazonS3Bucket = React.findDOMNode(this.refs.AmazonS3Bucket).value; config.FileSettings.AmazonS3Bucket = ReactDOM.findDOMNode(this.refs.AmazonS3Bucket).value;
config.FileSettings.AmazonS3Region = React.findDOMNode(this.refs.AmazonS3Region).value; config.FileSettings.AmazonS3Region = ReactDOM.findDOMNode(this.refs.AmazonS3Region).value;
config.FileSettings.EnablePublicLink = React.findDOMNode(this.refs.EnablePublicLink).checked; config.FileSettings.EnablePublicLink = ReactDOM.findDOMNode(this.refs.EnablePublicLink).checked;
config.FileSettings.PublicLinkSalt = React.findDOMNode(this.refs.PublicLinkSalt).value.trim(); config.FileSettings.PublicLinkSalt = ReactDOM.findDOMNode(this.refs.PublicLinkSalt).value.trim();
if (config.FileSettings.PublicLinkSalt === '') { if (config.FileSettings.PublicLinkSalt === '') {
config.FileSettings.PublicLinkSalt = crypto.randomBytes(256).toString('base64').substring(0, 32); config.FileSettings.PublicLinkSalt = crypto.randomBytes(256).toString('base64').substring(0, 32);
React.findDOMNode(this.refs.PublicLinkSalt).value = config.FileSettings.PublicLinkSalt; ReactDOM.findDOMNode(this.refs.PublicLinkSalt).value = config.FileSettings.PublicLinkSalt;
} }
var thumbnailWidth = 120; var thumbnailWidth = 120;
if (!isNaN(parseInt(React.findDOMNode(this.refs.ThumbnailWidth).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.ThumbnailWidth).value, 10))) {
thumbnailWidth = parseInt(React.findDOMNode(this.refs.ThumbnailWidth).value, 10); thumbnailWidth = parseInt(ReactDOM.findDOMNode(this.refs.ThumbnailWidth).value, 10);
} }
config.FileSettings.ThumbnailWidth = thumbnailWidth; config.FileSettings.ThumbnailWidth = thumbnailWidth;
React.findDOMNode(this.refs.ThumbnailWidth).value = thumbnailWidth; ReactDOM.findDOMNode(this.refs.ThumbnailWidth).value = thumbnailWidth;
var thumbnailHeight = 100; var thumbnailHeight = 100;
if (!isNaN(parseInt(React.findDOMNode(this.refs.ThumbnailHeight).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.ThumbnailHeight).value, 10))) {
thumbnailHeight = parseInt(React.findDOMNode(this.refs.ThumbnailHeight).value, 10); thumbnailHeight = parseInt(ReactDOM.findDOMNode(this.refs.ThumbnailHeight).value, 10);
} }
config.FileSettings.ThumbnailHeight = thumbnailHeight; config.FileSettings.ThumbnailHeight = thumbnailHeight;
React.findDOMNode(this.refs.ThumbnailHeight).value = thumbnailHeight; ReactDOM.findDOMNode(this.refs.ThumbnailHeight).value = thumbnailHeight;
var previewWidth = 1024; var previewWidth = 1024;
if (!isNaN(parseInt(React.findDOMNode(this.refs.PreviewWidth).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.PreviewWidth).value, 10))) {
previewWidth = parseInt(React.findDOMNode(this.refs.PreviewWidth).value, 10); previewWidth = parseInt(ReactDOM.findDOMNode(this.refs.PreviewWidth).value, 10);
} }
config.FileSettings.PreviewWidth = previewWidth; config.FileSettings.PreviewWidth = previewWidth;
React.findDOMNode(this.refs.PreviewWidth).value = previewWidth; ReactDOM.findDOMNode(this.refs.PreviewWidth).value = previewWidth;
var previewHeight = 0; var previewHeight = 0;
if (!isNaN(parseInt(React.findDOMNode(this.refs.PreviewHeight).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.PreviewHeight).value, 10))) {
previewHeight = parseInt(React.findDOMNode(this.refs.PreviewHeight).value, 10); previewHeight = parseInt(ReactDOM.findDOMNode(this.refs.PreviewHeight).value, 10);
} }
config.FileSettings.PreviewHeight = previewHeight; config.FileSettings.PreviewHeight = previewHeight;
React.findDOMNode(this.refs.PreviewHeight).value = previewHeight; ReactDOM.findDOMNode(this.refs.PreviewHeight).value = previewHeight;
var profileWidth = 128; var profileWidth = 128;
if (!isNaN(parseInt(React.findDOMNode(this.refs.ProfileWidth).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.ProfileWidth).value, 10))) {
profileWidth = parseInt(React.findDOMNode(this.refs.ProfileWidth).value, 10); profileWidth = parseInt(ReactDOM.findDOMNode(this.refs.ProfileWidth).value, 10);
} }
config.FileSettings.ProfileWidth = profileWidth; config.FileSettings.ProfileWidth = profileWidth;
React.findDOMNode(this.refs.ProfileWidth).value = profileWidth; ReactDOM.findDOMNode(this.refs.ProfileWidth).value = profileWidth;
var profileHeight = 128; var profileHeight = 128;
if (!isNaN(parseInt(React.findDOMNode(this.refs.ProfileHeight).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.ProfileHeight).value, 10))) {
profileHeight = parseInt(React.findDOMNode(this.refs.ProfileHeight).value, 10); profileHeight = parseInt(ReactDOM.findDOMNode(this.refs.ProfileHeight).value, 10);
} }
config.FileSettings.ProfileHeight = profileHeight; config.FileSettings.ProfileHeight = profileHeight;
React.findDOMNode(this.refs.ProfileHeight).value = profileHeight; ReactDOM.findDOMNode(this.refs.ProfileHeight).value = profileHeight;
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -46,12 +46,12 @@ export default class LogSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.LogSettings.EnableConsole = React.findDOMNode(this.refs.consoleEnable).checked; config.LogSettings.EnableConsole = ReactDOM.findDOMNode(this.refs.consoleEnable).checked;
config.LogSettings.ConsoleLevel = React.findDOMNode(this.refs.consoleLevel).value; config.LogSettings.ConsoleLevel = ReactDOM.findDOMNode(this.refs.consoleLevel).value;
config.LogSettings.EnableFile = React.findDOMNode(this.refs.fileEnable).checked; config.LogSettings.EnableFile = ReactDOM.findDOMNode(this.refs.fileEnable).checked;
config.LogSettings.FileLevel = React.findDOMNode(this.refs.fileLevel).value; config.LogSettings.FileLevel = ReactDOM.findDOMNode(this.refs.fileLevel).value;
config.LogSettings.FileLocation = React.findDOMNode(this.refs.fileLocation).value.trim(); config.LogSettings.FileLocation = ReactDOM.findDOMNode(this.refs.fileLocation).value.trim();
config.LogSettings.FileFormat = React.findDOMNode(this.refs.fileFormat).value.trim(); config.LogSettings.FileFormat = ReactDOM.findDOMNode(this.refs.fileFormat).value.trim();
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -28,8 +28,8 @@ export default class PrivacySettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.PrivacySettings.ShowEmailAddress = React.findDOMNode(this.refs.ShowEmailAddress).checked; config.PrivacySettings.ShowEmailAddress = ReactDOM.findDOMNode(this.refs.ShowEmailAddress).checked;
config.PrivacySettings.ShowFullName = React.findDOMNode(this.refs.ShowFullName).checked; config.PrivacySettings.ShowFullName = ReactDOM.findDOMNode(this.refs.ShowFullName).checked;
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -46,23 +46,23 @@ export default class RateSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.RateLimitSettings.EnableRateLimiter = React.findDOMNode(this.refs.EnableRateLimiter).checked; config.RateLimitSettings.EnableRateLimiter = ReactDOM.findDOMNode(this.refs.EnableRateLimiter).checked;
config.RateLimitSettings.VaryByRemoteAddr = React.findDOMNode(this.refs.VaryByRemoteAddr).checked; config.RateLimitSettings.VaryByRemoteAddr = ReactDOM.findDOMNode(this.refs.VaryByRemoteAddr).checked;
config.RateLimitSettings.VaryByHeader = React.findDOMNode(this.refs.VaryByHeader).value.trim(); config.RateLimitSettings.VaryByHeader = ReactDOM.findDOMNode(this.refs.VaryByHeader).value.trim();
var PerSec = 10; var PerSec = 10;
if (!isNaN(parseInt(React.findDOMNode(this.refs.PerSec).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.PerSec).value, 10))) {
PerSec = parseInt(React.findDOMNode(this.refs.PerSec).value, 10); PerSec = parseInt(ReactDOM.findDOMNode(this.refs.PerSec).value, 10);
} }
config.RateLimitSettings.PerSec = PerSec; config.RateLimitSettings.PerSec = PerSec;
React.findDOMNode(this.refs.PerSec).value = PerSec; ReactDOM.findDOMNode(this.refs.PerSec).value = PerSec;
var MemoryStoreSize = 10000; var MemoryStoreSize = 10000;
if (!isNaN(parseInt(React.findDOMNode(this.refs.MemoryStoreSize).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.MemoryStoreSize).value, 10))) {
MemoryStoreSize = parseInt(React.findDOMNode(this.refs.MemoryStoreSize).value, 10); MemoryStoreSize = parseInt(ReactDOM.findDOMNode(this.refs.MemoryStoreSize).value, 10);
} }
config.RateLimitSettings.MemoryStoreSize = MemoryStoreSize; config.RateLimitSettings.MemoryStoreSize = MemoryStoreSize;
React.findDOMNode(this.refs.MemoryStoreSize).value = MemoryStoreSize; ReactDOM.findDOMNode(this.refs.MemoryStoreSize).value = MemoryStoreSize;
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -18,7 +18,7 @@ export default class ResetPasswordModal extends React.Component {
doSubmit(e) { doSubmit(e) {
e.preventDefault(); e.preventDefault();
var password = React.findDOMNode(this.refs.password).value; var password = ReactDOM.findDOMNode(this.refs.password).value;
if (!password || password.length < 5) { if (!password || password.length < 5) {
this.setState({serverError: 'Please enter at least 5 characters.'}); this.setState({serverError: 'Please enter at least 5 characters.'});
@@ -34,7 +34,7 @@ export default class ResetPasswordModal extends React.Component {
Client.resetPassword(data, Client.resetPassword(data,
() => { () => {
this.props.onModalSubmit(React.findDOMNode(this.refs.password).value); this.props.onModalSubmit(ReactDOM.findDOMNode(this.refs.password).value);
}, },
(err) => { (err) => {
this.setState({serverError: err.message}); this.setState({serverError: err.message});

Просмотреть файл

@@ -13,7 +13,7 @@ export default class SelectTeamModal extends React.Component {
doSubmit(e) { doSubmit(e) {
e.preventDefault(); e.preventDefault();
this.props.onModalSubmit(React.findDOMNode(this.refs.team).value); this.props.onModalSubmit(ReactDOM.findDOMNode(this.refs.team).value);
} }
doCancel() { doCancel() {
this.props.onModalDismissed(); this.props.onModalDismissed();

Просмотреть файл

@@ -27,28 +27,28 @@ export default class ServiceSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.ServiceSettings.ListenAddress = React.findDOMNode(this.refs.ListenAddress).value.trim(); config.ServiceSettings.ListenAddress = ReactDOM.findDOMNode(this.refs.ListenAddress).value.trim();
if (config.ServiceSettings.ListenAddress === '') { if (config.ServiceSettings.ListenAddress === '') {
config.ServiceSettings.ListenAddress = ':8065'; config.ServiceSettings.ListenAddress = ':8065';
React.findDOMNode(this.refs.ListenAddress).value = config.ServiceSettings.ListenAddress; ReactDOM.findDOMNode(this.refs.ListenAddress).value = config.ServiceSettings.ListenAddress;
} }
config.ServiceSettings.SegmentDeveloperKey = React.findDOMNode(this.refs.SegmentDeveloperKey).value.trim(); config.ServiceSettings.SegmentDeveloperKey = ReactDOM.findDOMNode(this.refs.SegmentDeveloperKey).value.trim();
config.ServiceSettings.GoogleDeveloperKey = React.findDOMNode(this.refs.GoogleDeveloperKey).value.trim(); config.ServiceSettings.GoogleDeveloperKey = ReactDOM.findDOMNode(this.refs.GoogleDeveloperKey).value.trim();
config.ServiceSettings.EnableIncomingWebhooks = React.findDOMNode(this.refs.EnableIncomingWebhooks).checked; config.ServiceSettings.EnableIncomingWebhooks = ReactDOM.findDOMNode(this.refs.EnableIncomingWebhooks).checked;
config.ServiceSettings.EnablePostUsernameOverride = React.findDOMNode(this.refs.EnablePostUsernameOverride).checked; config.ServiceSettings.EnablePostUsernameOverride = ReactDOM.findDOMNode(this.refs.EnablePostUsernameOverride).checked;
config.ServiceSettings.EnablePostIconOverride = React.findDOMNode(this.refs.EnablePostIconOverride).checked; config.ServiceSettings.EnablePostIconOverride = ReactDOM.findDOMNode(this.refs.EnablePostIconOverride).checked;
config.ServiceSettings.EnableTesting = React.findDOMNode(this.refs.EnableTesting).checked; config.ServiceSettings.EnableTesting = ReactDOM.findDOMNode(this.refs.EnableTesting).checked;
config.ServiceSettings.EnableSecurityFixAlert = React.findDOMNode(this.refs.EnableSecurityFixAlert).checked; config.ServiceSettings.EnableSecurityFixAlert = ReactDOM.findDOMNode(this.refs.EnableSecurityFixAlert).checked;
//config.ServiceSettings.EnableOAuthServiceProvider = React.findDOMNode(this.refs.EnableOAuthServiceProvider).checked; //config.ServiceSettings.EnableOAuthServiceProvider = ReactDOM.findDOMNode(this.refs.EnableOAuthServiceProvider).checked;
var MaximumLoginAttempts = 10; var MaximumLoginAttempts = 10;
if (!isNaN(parseInt(React.findDOMNode(this.refs.MaximumLoginAttempts).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.MaximumLoginAttempts).value, 10))) {
MaximumLoginAttempts = parseInt(React.findDOMNode(this.refs.MaximumLoginAttempts).value, 10); MaximumLoginAttempts = parseInt(ReactDOM.findDOMNode(this.refs.MaximumLoginAttempts).value, 10);
} }
config.ServiceSettings.MaximumLoginAttempts = MaximumLoginAttempts; config.ServiceSettings.MaximumLoginAttempts = MaximumLoginAttempts;
React.findDOMNode(this.refs.MaximumLoginAttempts).value = MaximumLoginAttempts; ReactDOM.findDOMNode(this.refs.MaximumLoginAttempts).value = MaximumLoginAttempts;
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -29,27 +29,27 @@ export default class SqlSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.SqlSettings.Trace = React.findDOMNode(this.refs.Trace).checked; config.SqlSettings.Trace = ReactDOM.findDOMNode(this.refs.Trace).checked;
config.SqlSettings.AtRestEncryptKey = React.findDOMNode(this.refs.AtRestEncryptKey).value.trim(); config.SqlSettings.AtRestEncryptKey = ReactDOM.findDOMNode(this.refs.AtRestEncryptKey).value.trim();
if (config.SqlSettings.AtRestEncryptKey === '') { if (config.SqlSettings.AtRestEncryptKey === '') {
config.SqlSettings.AtRestEncryptKey = crypto.randomBytes(256).toString('base64').substring(0, 32); config.SqlSettings.AtRestEncryptKey = crypto.randomBytes(256).toString('base64').substring(0, 32);
React.findDOMNode(this.refs.AtRestEncryptKey).value = config.SqlSettings.AtRestEncryptKey; ReactDOM.findDOMNode(this.refs.AtRestEncryptKey).value = config.SqlSettings.AtRestEncryptKey;
} }
var MaxOpenConns = 10; var MaxOpenConns = 10;
if (!isNaN(parseInt(React.findDOMNode(this.refs.MaxOpenConns).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.MaxOpenConns).value, 10))) {
MaxOpenConns = parseInt(React.findDOMNode(this.refs.MaxOpenConns).value, 10); MaxOpenConns = parseInt(ReactDOM.findDOMNode(this.refs.MaxOpenConns).value, 10);
} }
config.SqlSettings.MaxOpenConns = MaxOpenConns; config.SqlSettings.MaxOpenConns = MaxOpenConns;
React.findDOMNode(this.refs.MaxOpenConns).value = MaxOpenConns; ReactDOM.findDOMNode(this.refs.MaxOpenConns).value = MaxOpenConns;
var MaxIdleConns = 10; var MaxIdleConns = 10;
if (!isNaN(parseInt(React.findDOMNode(this.refs.MaxIdleConns).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.MaxIdleConns).value, 10))) {
MaxIdleConns = parseInt(React.findDOMNode(this.refs.MaxIdleConns).value, 10); MaxIdleConns = parseInt(ReactDOM.findDOMNode(this.refs.MaxIdleConns).value, 10);
} }
config.SqlSettings.MaxIdleConns = MaxIdleConns; config.SqlSettings.MaxIdleConns = MaxIdleConns;
React.findDOMNode(this.refs.MaxIdleConns).value = MaxIdleConns; ReactDOM.findDOMNode(this.refs.MaxIdleConns).value = MaxIdleConns;
Client.saveConfig( Client.saveConfig(
config, config,
@@ -79,7 +79,7 @@ export default class SqlSettings extends React.Component {
return; return;
} }
React.findDOMNode(this.refs.AtRestEncryptKey).value = crypto.randomBytes(256).toString('base64').substring(0, 32); ReactDOM.findDOMNode(this.refs.AtRestEncryptKey).value = crypto.randomBytes(256).toString('base64').substring(0, 32);
var s = {saveNeeded: true, serverError: this.state.serverError}; var s = {saveNeeded: true, serverError: this.state.serverError};
this.setState(s); this.setState(s);
} }

Просмотреть файл

@@ -27,17 +27,17 @@ export default class TeamSettings extends React.Component {
$('#save-button').button('loading'); $('#save-button').button('loading');
var config = this.props.config; var config = this.props.config;
config.TeamSettings.SiteName = React.findDOMNode(this.refs.SiteName).value.trim(); config.TeamSettings.SiteName = ReactDOM.findDOMNode(this.refs.SiteName).value.trim();
config.TeamSettings.RestrictCreationToDomains = React.findDOMNode(this.refs.RestrictCreationToDomains).value.trim(); config.TeamSettings.RestrictCreationToDomains = ReactDOM.findDOMNode(this.refs.RestrictCreationToDomains).value.trim();
config.TeamSettings.EnableTeamCreation = React.findDOMNode(this.refs.EnableTeamCreation).checked; config.TeamSettings.EnableTeamCreation = ReactDOM.findDOMNode(this.refs.EnableTeamCreation).checked;
config.TeamSettings.EnableUserCreation = React.findDOMNode(this.refs.EnableUserCreation).checked; config.TeamSettings.EnableUserCreation = ReactDOM.findDOMNode(this.refs.EnableUserCreation).checked;
var MaxUsersPerTeam = 50; var MaxUsersPerTeam = 50;
if (!isNaN(parseInt(React.findDOMNode(this.refs.MaxUsersPerTeam).value, 10))) { if (!isNaN(parseInt(ReactDOM.findDOMNode(this.refs.MaxUsersPerTeam).value, 10))) {
MaxUsersPerTeam = parseInt(React.findDOMNode(this.refs.MaxUsersPerTeam).value, 10); MaxUsersPerTeam = parseInt(ReactDOM.findDOMNode(this.refs.MaxUsersPerTeam).value, 10);
} }
config.TeamSettings.MaxUsersPerTeam = MaxUsersPerTeam; config.TeamSettings.MaxUsersPerTeam = MaxUsersPerTeam;
React.findDOMNode(this.refs.MaxUsersPerTeam).value = MaxUsersPerTeam; ReactDOM.findDOMNode(this.refs.MaxUsersPerTeam).value = MaxUsersPerTeam;
Client.saveConfig( Client.saveConfig(
config, config,

Просмотреть файл

@@ -29,7 +29,7 @@ export default class ChangeUrlModal extends React.Component {
} }
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
if (this.props.show === true && prevProps.show === false) { if (this.props.show === true && prevProps.show === false) {
React.findDOMNode(this.refs.urlinput).select(); ReactDOM.findDOMNode(this.refs.urlinput).select();
} }
} }
onURLChanged(e) { onURLChanged(e) {
@@ -60,7 +60,7 @@ export default class ChangeUrlModal extends React.Component {
doSubmit(e) { doSubmit(e) {
e.preventDefault(); e.preventDefault();
const url = React.findDOMNode(this.refs.urlinput).value; const url = ReactDOM.findDOMNode(this.refs.urlinput).value;
const cleanedURL = Utils.cleanUpUrlable(url); const cleanedURL = Utils.cleanUpUrlable(url);
if (cleanedURL !== url || url.length < 2 || url.indexOf('__') > -1) { if (cleanedURL !== url || url.length < 2 || url.indexOf('__') > -1) {
this.setState({urlError: this.getURLError(url)}); this.setState({urlError: this.getURLError(url)});

Просмотреть файл

@@ -17,6 +17,9 @@ const AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
const Constants = require('../utils/constants.jsx'); const Constants = require('../utils/constants.jsx');
const ActionTypes = Constants.ActionTypes; const ActionTypes = Constants.ActionTypes;
const Popover = ReactBootstrap.Popover;
const OverlayTrigger = ReactBootstrap.OverlayTrigger;
export default class ChannelHeader extends React.Component { export default class ChannelHeader extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
@@ -110,7 +113,21 @@ export default class ChannelHeader extends React.Component {
} }
const channel = this.state.channel; const channel = this.state.channel;
const popoverContent = React.renderToString(<MessageWrapper message={channel.description}/>); const popoverContent = (
<Popover
id='hader-popover'
bStyle='info'
bSize='large'
placement='bottom'
className='description'
onMouseOver={() => this.refs.descriptionOverlay.show()}
onMouseOut={() => this.refs.descriptionOverlay.hide()}
>
<MessageWrapper
message={channel.description}
/>
</Popover>
);
let channelTitle = channel.display_name; let channelTitle = channel.display_name;
const currentId = UserStore.getCurrentId(); const currentId = UserStore.getCurrentId();
const isAdmin = Utils.isAdmin(this.state.memberChannel.roles) || Utils.isAdmin(this.state.memberTeam.roles); const isAdmin = Utils.isAdmin(this.state.memberChannel.roles) || Utils.isAdmin(this.state.memberTeam.roles);
@@ -301,75 +318,82 @@ export default class ChannelHeader extends React.Component {
return ( return (
<table className='channel-header alt'> <table className='channel-header alt'>
<tr> <tbody>
<th> <tr>
<div className='channel-header__info'> <th>
<div className='dropdown'> <div className='channel-header__info'>
<div className='dropdown'>
<a
href='#'
className='dropdown-toggle theme'
type='button'
id='channel_header_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
<strong className='heading'>{channelTitle} </strong>
<span className='glyphicon glyphicon-chevron-down header-dropdown__icon' />
</a>
<ul
className='dropdown-menu'
role='menu'
aria-labelledby='channel_header_dropdown'
>
{dropdownContents}
</ul>
</div>
<OverlayTrigger
trigger={['hover', 'focus']}
placement='bottom'
overlay={popoverContent}
ref='descriptionOverlay'
>
<div
onClick={TextFormatting.handleClick}
className='description'
dangerouslySetInnerHTML={{__html: TextFormatting.formatText(channel.description, {singleline: true, mentionHighlight: false})}}
/>
</OverlayTrigger>
</div>
</th>
<th>
<PopoverListMembers
members={this.state.users}
channelId={channel.id}
/>
</th>
<th className='search-bar__container'><NavbarSearchBox /></th>
<th>
<div className='dropdown channel-header__links'>
<a <a
href='#' href='#'
className='dropdown-toggle theme' className='dropdown-toggle theme'
type='button' type='button'
id='channel_header_dropdown' id='channel_header_right_dropdown'
data-toggle='dropdown' data-toggle='dropdown'
aria-expanded='true' aria-expanded='true'
> >
<strong className='heading'>{channelTitle} </strong> <span dangerouslySetInnerHTML={{__html: Constants.MENU_ICON}} />
<span className='glyphicon glyphicon-chevron-down header-dropdown__icon' />
</a> </a>
<ul <ul
className='dropdown-menu' className='dropdown-menu dropdown-menu-right'
role='menu' role='menu'
aria-labelledby='channel_header_dropdown' aria-labelledby='channel_header_right_dropdown'
> >
{dropdownContents} <li role='presentation'>
<a
role='menuitem'
href='#'
onClick={this.searchMentions}
>
Recent Mentions
</a>
</li>
</ul> </ul>
</div> </div>
<div </th>
data-toggle='popover' </tr>
data-content={popoverContent} </tbody>
className='description'
onClick={TextFormatting.handleClick}
dangerouslySetInnerHTML={{__html: TextFormatting.formatText(channel.description, {singleline: true, mentionHighlight: false})}}
/>
</div>
</th>
<th>
<PopoverListMembers
members={this.state.users}
channelId={channel.id}
/>
</th>
<th className='search-bar__container'><NavbarSearchBox /></th>
<th>
<div className='dropdown channel-header__links'>
<a
href='#'
className='dropdown-toggle theme'
type='button'
id='channel_header_right_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
<span dangerouslySetInnerHTML={{__html: Constants.MENU_ICON}} />
</a>
<ul
className='dropdown-menu dropdown-menu-right'
role='menu'
aria-labelledby='channel_header_right_dropdown'
>
<li role='presentation'>
<a
role='menuitem'
href='#'
onClick={this.searchMentions}
>
Recent Mentions
</a>
</li>
</ul>
</div>
</th>
</tr>
</table> </table>
); );
} }

Просмотреть файл

@@ -15,7 +15,7 @@ export default class CommandList extends React.Component {
componentDidMount() { componentDidMount() {
var self = this; var self = this;
if (this.refs.modal) { if (this.refs.modal) {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', function show(e) { $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', function show(e) {
var button = e.relatedTarget; var button = e.relatedTarget;
self.setState({channel_id: $(button).attr('data-channelid')}); self.setState({channel_id: $(button).attr('data-channelid')});
}); });

Просмотреть файл

@@ -56,8 +56,8 @@ export default class ChannelInviteModal extends React.Component {
}; };
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this)).on('hidden.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this)).on('hidden.bs.modal', this.onHide);
$(React.findDOMNode(this)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this)).on('show.bs.modal', this.onShow);
ChannelStore.addExtraInfoChangeListener(this.onListenerChange); ChannelStore.addExtraInfoChangeListener(this.onListenerChange);
ChannelStore.addChangeListener(this.onListenerChange); ChannelStore.addChangeListener(this.onListenerChange);

Просмотреть файл

@@ -74,9 +74,9 @@ export default class ChannelMembers extends React.Component {
componentDidMount() { componentDidMount() {
ChannelStore.addExtraInfoChangeListener(this.onChange); ChannelStore.addExtraInfoChangeListener(this.onChange);
ChannelStore.addChangeListener(this.onChange); ChannelStore.addChangeListener(this.onChange);
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.onHide);
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
} }
componentWillUnmount() { componentWillUnmount() {
ChannelStore.removeExtraInfoChangeListener(this.onChange); ChannelStore.removeExtraInfoChangeListener(this.onChange);

Просмотреть файл

@@ -51,7 +51,7 @@ export default class ChannelNotifications extends React.Component {
componentDidMount() { componentDidMount() {
ChannelStore.addChangeListener(this.onListenerChange); ChannelStore.addChangeListener(this.onListenerChange);
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
} }
componentWillUnmount() { componentWillUnmount() {
ChannelStore.removeChangeListener(this.onListenerChange); ChannelStore.removeChangeListener(this.onListenerChange);
@@ -104,7 +104,7 @@ export default class ChannelNotifications extends React.Component {
} }
handleUpdateNotifyLevel(notifyLevel) { handleUpdateNotifyLevel(notifyLevel) {
this.setState({notifyLevel}); this.setState({notifyLevel});
React.findDOMNode(this.refs.modal).focus(); ReactDOM.findDOMNode(this.refs.modal).focus();
} }
createNotifyLevelSection(serverError) { createNotifyLevelSection(serverError) {
var handleUpdateSection; var handleUpdateSection;
@@ -266,7 +266,7 @@ export default class ChannelNotifications extends React.Component {
handleUpdateMarkUnreadLevel(markUnreadLevel) { handleUpdateMarkUnreadLevel(markUnreadLevel) {
this.setState({markUnreadLevel}); this.setState({markUnreadLevel});
React.findDOMNode(this.refs.modal).focus(); ReactDOM.findDOMNode(this.refs.modal).focus();
} }
createMarkUnreadLevelSection(serverError) { createMarkUnreadLevelSection(serverError) {

Просмотреть файл

@@ -128,7 +128,7 @@ export default class CreateComment extends React.Component {
commentMsgKeyPress(e) { commentMsgKeyPress(e) {
if (e.which === 13 && !e.shiftKey && !e.altKey) { if (e.which === 13 && !e.shiftKey && !e.altKey) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.textbox).blur(); ReactDOM.findDOMNode(this.refs.textbox).blur();
this.handleSubmit(e); this.handleSubmit(e);
} }
@@ -191,7 +191,7 @@ export default class CreateComment extends React.Component {
handleTextDrop(text) { handleTextDrop(text) {
const newText = this.state.messageText + text; const newText = this.state.messageText + text;
this.handleUserInput(newText); this.handleUserInput(newText);
Utils.setCaretPosition(React.findDOMNode(this.refs.textbox.refs.message), newText.length); Utils.setCaretPosition(ReactDOM.findDOMNode(this.refs.textbox.refs.message), newText.length);
} }
removePreview(id) { removePreview(id) {
let previews = this.state.previews; let previews = this.state.previews;

Просмотреть файл

@@ -174,7 +174,7 @@ export default class CreatePost extends React.Component {
postMsgKeyPress(e) { postMsgKeyPress(e) {
if (e.which === 13 && !e.shiftKey && !e.altKey) { if (e.which === 13 && !e.shiftKey && !e.altKey) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.textbox).blur(); ReactDOM.findDOMNode(this.refs.textbox).blur();
this.handleSubmit(e); this.handleSubmit(e);
} }
@@ -192,7 +192,7 @@ export default class CreatePost extends React.Component {
PostStore.storeCurrentDraft(draft); PostStore.storeCurrentDraft(draft);
} }
resizePostHolder() { resizePostHolder() {
const height = $(window).height() - $(React.findDOMNode(this.refs.topDiv)).height() - 50; const height = $(window).height() - $(ReactDOM.findDOMNode(this.refs.topDiv)).height() - 50;
$('.post-list-holder-by-time').css('height', `${height}px`); $('.post-list-holder-by-time').css('height', `${height}px`);
$(window).trigger('resize'); $(window).trigger('resize');
if ($(window).width() > 960) { if ($(window).width() > 960) {
@@ -243,7 +243,7 @@ export default class CreatePost extends React.Component {
handleTextDrop(text) { handleTextDrop(text) {
const newText = this.state.messageText + text; const newText = this.state.messageText + text;
this.handleUserInput(newText); this.handleUserInput(newText);
Utils.setCaretPosition(React.findDOMNode(this.refs.textbox.refs.message), newText.length); Utils.setCaretPosition(ReactDOM.findDOMNode(this.refs.textbox.refs.message), newText.length);
} }
removePreview(id) { removePreview(id) {
const previews = Object.assign([], this.state.previews); const previews = Object.assign([], this.state.previews);

Просмотреть файл

@@ -41,7 +41,7 @@ export default class DeleteChannelModal extends React.Component {
}); });
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
} }
render() { render() {
const channel = ChannelStore.getCurrent(); const channel = ChannelStore.getCurrent();

Просмотреть файл

@@ -73,7 +73,7 @@ export default class DeletePostModal extends React.Component {
this.setState(newState); this.setState(newState);
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
PostStore.addSelectedPostChangeListener(this.onListenerChange); PostStore.addSelectedPostChangeListener(this.onListenerChange);
} }
componentWillUnmount() { componentWillUnmount() {

Просмотреть файл

@@ -34,7 +34,7 @@ export default class EditChannelModal extends React.Component {
function handleUpdateSuccess() { function handleUpdateSuccess() {
this.setState({serverError: ''}); this.setState({serverError: ''});
AsyncClient.getChannel(this.state.channelId); AsyncClient.getChannel(this.state.channelId);
$(React.findDOMNode(this.refs.modal)).modal('hide'); $(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
}.bind(this), }.bind(this),
function handleUpdateError(err) { function handleUpdateError(err) {
if (err.message === 'Invalid channel_description parameter') { if (err.message === 'Invalid channel_description parameter') {
@@ -56,11 +56,11 @@ export default class EditChannelModal extends React.Component {
this.setState({description: $(button).attr('data-desc'), title: $(button).attr('data-title'), channelId: $(button).attr('data-channelid'), serverError: ''}); this.setState({description: $(button).attr('data-desc'), title: $(button).attr('data-title'), channelId: $(button).attr('data-channelid'), serverError: ''});
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.handleClose);
} }
componentWillUnmount() { componentWillUnmount() {
$(React.findDOMNode(this.refs.modal)).off('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this.refs.modal)).off('hidden.bs.modal', this.handleClose);
} }
render() { render() {
var serverError = null; var serverError = null;

Просмотреть файл

@@ -52,7 +52,7 @@ export default class EditPostModal extends React.Component {
handleEditKeyPress(e) { handleEditKeyPress(e) {
if (e.which === 13 && !e.shiftKey && !e.altKey) { if (e.which === 13 && !e.shiftKey && !e.altKey) {
e.preventDefault(); e.preventDefault();
React.findDOMNode(this.refs.editbox).blur(); ReactDOM.findDOMNode(this.refs.editbox).blur();
this.handleEdit(e); this.handleEdit(e);
} }
} }
@@ -62,16 +62,16 @@ export default class EditPostModal extends React.Component {
componentDidMount() { componentDidMount() {
var self = this; var self = this;
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', function onHidden() { $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', function onHidden() {
self.setState({editText: '', title: '', channel_id: '', post_id: '', comments: 0, refocusId: '', error: ''}); self.setState({editText: '', title: '', channel_id: '', post_id: '', comments: 0, refocusId: '', error: ''});
}); });
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', function onShow(e) { $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', function onShow(e) {
var button = e.relatedTarget; var button = e.relatedTarget;
self.setState({editText: $(button).attr('data-message'), title: $(button).attr('data-title'), channel_id: $(button).attr('data-channelid'), post_id: $(button).attr('data-postid'), comments: $(button).attr('data-comments'), refocusId: $(button).attr('data-refoucsid')}); self.setState({editText: $(button).attr('data-message'), title: $(button).attr('data-title'), channel_id: $(button).attr('data-channelid'), post_id: $(button).attr('data-postid'), comments: $(button).attr('data-comments'), refocusId: $(button).attr('data-refoucsid')});
}); });
$(React.findDOMNode(this.refs.modal)).on('shown.bs.modal', function onShown() { $(ReactDOM.findDOMNode(this.refs.modal)).on('shown.bs.modal', function onShown() {
self.refs.editbox.resize(); self.refs.editbox.resize();
}); });
} }

Просмотреть файл

@@ -43,7 +43,7 @@ export default class FileAttachment extends React.Component {
return function loader() { return function loader() {
$(this).remove(); $(this).remove();
if (name in self.refs) { if (name in self.refs) {
var imgDiv = React.findDOMNode(self.refs[name]); var imgDiv = ReactDOM.findDOMNode(self.refs[name]);
$(imgDiv).removeClass('post__load'); $(imgDiv).removeClass('post__load');
$(imgDiv).addClass('post__image'); $(imgDiv).addClass('post__image');
@@ -82,7 +82,7 @@ export default class FileAttachment extends React.Component {
if (nextState.fileSize !== this.state.fileSize) { if (nextState.fileSize !== this.state.fileSize) {
if (this.refs.fileSize) { if (this.refs.fileSize) {
// update the UI element to display the file size without re-rendering the whole component // update the UI element to display the file size without re-rendering the whole component
React.findDOMNode(this.refs.fileSize).innerHTML = utils.fileSizeToString(nextState.fileSize); ReactDOM.findDOMNode(this.refs.fileSize).innerHTML = utils.fileSizeToString(nextState.fileSize);
return false; return false;
} }

Просмотреть файл

@@ -86,7 +86,7 @@ export default class FileUpload extends React.Component {
} }
handleChange() { handleChange() {
var element = $(React.findDOMNode(this.refs.fileInput)); var element = $(ReactDOM.findDOMNode(this.refs.fileInput));
this.uploadFiles(element.prop('files')); this.uploadFiles(element.prop('files'));
@@ -115,7 +115,7 @@ export default class FileUpload extends React.Component {
} }
componentDidMount() { componentDidMount() {
var inputDiv = React.findDOMNode(this.refs.input); var inputDiv = ReactDOM.findDOMNode(this.refs.input);
var self = this; var self = this;
if (this.props.postType === 'post') { if (this.props.postType === 'post') {

Просмотреть файл

@@ -17,7 +17,7 @@ export default class FindTeam extends React.Component {
var state = { }; var state = { };
var email = React.findDOMNode(this.refs.email).value.trim().toLowerCase(); var email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase();
if (!email || !utils.isEmail(email)) { if (!email || !utils.isEmail(email)) {
state.email_error = 'Please enter a valid email address'; state.email_error = 'Please enter a valid email address';
this.setState(state); this.setState(state);

Просмотреть файл

@@ -22,12 +22,12 @@ export default class GetLinkModal extends React.Component {
} }
componentDidMount() { componentDidMount() {
if (this.refs.modal) { if (this.refs.modal) {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.onShow);
$(React.findDOMNode(this.refs.modal)).on('hide.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this.refs.modal)).on('hide.bs.modal', this.onHide);
} }
} }
handleClick() { handleClick() {
var copyTextarea = $(React.findDOMNode(this.refs.textarea)); var copyTextarea = $(ReactDOM.findDOMNode(this.refs.textarea));
copyTextarea.select(); copyTextarea.select();
try { try {

Просмотреть файл

@@ -36,7 +36,7 @@ export default class InviteMemberModal extends React.Component {
var notEmpty = false; var notEmpty = false;
for (var i = 0; i < self.state.inviteIds.length; i++) { for (var i = 0; i < self.state.inviteIds.length; i++) {
var index = self.state.inviteIds[i]; var index = self.state.inviteIds[i];
if (React.findDOMNode(self.refs['email' + index]).value.trim() !== '') { if (ReactDOM.findDOMNode(self.refs['email' + index]).value.trim() !== '') {
notEmpty = true; notEmpty = true;
break; break;
} }
@@ -69,7 +69,7 @@ export default class InviteMemberModal extends React.Component {
for (var i = 0; i < count; i++) { for (var i = 0; i < count; i++) {
var index = inviteIds[i]; var index = inviteIds[i];
var invite = {}; var invite = {};
invite.email = React.findDOMNode(this.refs['email' + index]).value.trim(); invite.email = ReactDOM.findDOMNode(this.refs['email' + index]).value.trim();
if (!invite.email || !utils.isEmail(invite.email)) { if (!invite.email || !utils.isEmail(invite.email)) {
emailErrors[index] = 'Please enter a valid email address'; emailErrors[index] = 'Please enter a valid email address';
valid = false; valid = false;
@@ -77,9 +77,9 @@ export default class InviteMemberModal extends React.Component {
emailErrors[index] = ''; emailErrors[index] = '';
} }
invite.firstName = React.findDOMNode(this.refs['first_name' + index]).value.trim(); invite.firstName = ReactDOM.findDOMNode(this.refs['first_name' + index]).value.trim();
invite.lastName = React.findDOMNode(this.refs['last_name' + index]).value.trim(); invite.lastName = ReactDOM.findDOMNode(this.refs['last_name' + index]).value.trim();
invites.push(invite); invites.push(invite);
} }
@@ -95,8 +95,8 @@ export default class InviteMemberModal extends React.Component {
Client.inviteMembers(data, Client.inviteMembers(data,
function success() { function success() {
$(React.findDOMNode(this.refs.modal)).attr('data-confirm', 'true'); $(ReactDOM.findDOMNode(this.refs.modal)).attr('data-confirm', 'true');
$(React.findDOMNode(this.refs.modal)).modal('hide'); $(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
}.bind(this), }.bind(this),
function fail(err) { function fail(err) {
if (err.message === 'This person is already on your team') { if (err.message === 'This person is already on your team') {
@@ -110,8 +110,8 @@ export default class InviteMemberModal extends React.Component {
} }
componentDidUpdate() { componentDidUpdate() {
$(React.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200); $(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200);
$(React.findDOMNode(this.refs.modalBody)).css('overflow-y', 'scroll'); $(ReactDOM.findDOMNode(this.refs.modalBody)).css('overflow-y', 'scroll');
} }
addInviteFields() { addInviteFields() {
@@ -126,9 +126,9 @@ export default class InviteMemberModal extends React.Component {
for (var i = 0; i < inviteIds.length; i++) { for (var i = 0; i < inviteIds.length; i++) {
var index = inviteIds[i]; var index = inviteIds[i];
React.findDOMNode(this.refs['email' + index]).value = ''; ReactDOM.findDOMNode(this.refs['email' + index]).value = '';
React.findDOMNode(this.refs['first_name' + index]).value = ''; ReactDOM.findDOMNode(this.refs['first_name' + index]).value = '';
React.findDOMNode(this.refs['last_name' + index]).value = ''; ReactDOM.findDOMNode(this.refs['last_name' + index]).value = '';
} }
this.setState({ this.setState({

Просмотреть файл

@@ -25,14 +25,14 @@ export default class Login extends React.Component {
return; return;
} }
const email = React.findDOMNode(this.refs.email).value.trim(); const email = ReactDOM.findDOMNode(this.refs.email).value.trim();
if (!email) { if (!email) {
state.serverError = 'An email is required'; state.serverError = 'An email is required';
this.setState(state); this.setState(state);
return; return;
} }
const password = React.findDOMNode(this.refs.password).value.trim(); const password = ReactDOM.findDOMNode(this.refs.password).value.trim();
if (!password) { if (!password) {
state.serverError = 'A password is required'; state.serverError = 'A password is required';
this.setState(state); this.setState(state);

Просмотреть файл

@@ -61,7 +61,7 @@ export default class MentionList extends React.Component {
} }
onClick(e) { onClick(e) {
if (!($('#' + this.props.id).is(e.target) || $('#' + this.props.id).has(e.target).length || if (!($('#' + this.props.id).is(e.target) || $('#' + this.props.id).has(e.target).length ||
('mentionlist' in this.refs && $(React.findDOMNode(this.refs.mentionlist)).has(e.target).length))) { ('mentionlist' in this.refs && $(ReactDOM.findDOMNode(this.refs.mentionlist)).has(e.target).length))) {
this.setState({mentionText: '-1'}); this.setState({mentionText: '-1'});
} }
} }

Просмотреть файл

@@ -31,12 +31,12 @@ export default class MoreChannels extends React.Component {
} }
componentDidMount() { componentDidMount() {
ChannelStore.addMoreChangeListener(this.onListenerChange); ChannelStore.addMoreChangeListener(this.onListenerChange);
$(React.findDOMNode(this.refs.modal)).on('shown.bs.modal', function shown() { $(ReactDOM.findDOMNode(this.refs.modal)).on('shown.bs.modal', function shown() {
asyncClient.getMoreChannels(true); asyncClient.getMoreChannels(true);
}); });
var self = this; var self = this;
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', function show(e) { $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', function show(e) {
var button = e.relatedTarget; var button = e.relatedTarget;
self.setState({channelType: $(button).attr('data-channeltype')}); self.setState({channelType: $(button).attr('data-channeltype')});
}); });
@@ -54,7 +54,7 @@ export default class MoreChannels extends React.Component {
this.setState({joiningChannel: channelIndex}); this.setState({joiningChannel: channelIndex});
client.joinChannel(channel.id, client.joinChannel(channel.id,
function joinSuccess() { function joinSuccess() {
$(React.findDOMNode(this.refs.modal)).modal('hide'); $(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
asyncClient.getChannel(channel.id); asyncClient.getChannel(channel.id);
utils.switchChannel(channel); utils.switchChannel(channel);
this.setState({joiningChannel: -1}); this.setState({joiningChannel: -1});
@@ -65,7 +65,7 @@ export default class MoreChannels extends React.Component {
); );
} }
handleNewChannel() { handleNewChannel() {
$(React.findDOMNode(this.refs.modal)).modal('hide'); $(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
this.setState({showNewChannelModal: true}); this.setState({showNewChannelModal: true});
} }
render() { render() {

Просмотреть файл

@@ -54,7 +54,7 @@ export default class MoreDirectChannels extends React.Component {
} }
handleFilterChange() { handleFilterChange() {
const filter = React.findDOMNode(this.refs.filter).value; const filter = ReactDOM.findDOMNode(this.refs.filter).value;
if (filter !== this.state.filter) { if (filter !== this.state.filter) {
this.setState({filter}); this.setState({filter});

Просмотреть файл

@@ -14,6 +14,9 @@ var Constants = require('../utils/constants.jsx');
var ActionTypes = Constants.ActionTypes; var ActionTypes = Constants.ActionTypes;
var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
var Popover = ReactBootstrap.Popover;
var OverlayTrigger = ReactBootstrap.OverlayTrigger;
export default class Navbar extends React.Component { export default class Navbar extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
@@ -36,12 +39,6 @@ export default class Navbar extends React.Component {
ChannelStore.addChangeListener(this.onChange); ChannelStore.addChangeListener(this.onChange);
ChannelStore.addExtraInfoChangeListener(this.onChange); ChannelStore.addExtraInfoChangeListener(this.onChange);
$('.inner__wrap').click(this.hideSidebars); $('.inner__wrap').click(this.hideSidebars);
$('body').on('click.infopopover', function handlePopoverClick(e) {
if ($(e.target).attr('data-toggle') !== 'popover' && $(e.target).parents('.popover.in').length === 0) {
$('.info-popover').popover('hide');
}
});
} }
componentWillUnmount() { componentWillUnmount() {
ChannelStore.removeChangeListener(this.onChange); ChannelStore.removeChangeListener(this.onChange);
@@ -224,11 +221,15 @@ export default class Navbar extends React.Component {
return ( return (
<div className='navbar-brand'> <div className='navbar-brand'>
<div className='dropdown'> <div className='dropdown'>
<div <OverlayTrigger
data-toggle='popover' trigger='click'
data-content={popoverContent} placement='bottom'
className='description info-popover' overlay={popoverContent}
/> className='description'
rootClose={true}
>
<div className='description info-popover'/>
</OverlayTrigger>
<a <a
href='#' href='#'
className='dropdown-toggle theme' className='dropdown-toggle theme'
@@ -330,11 +331,17 @@ export default class Navbar extends React.Component {
var isDirect = false; var isDirect = false;
if (channel) { if (channel) {
popoverContent = React.renderToString( popoverContent = (
<MessageWrapper <Popover
message={channel.description} bsStyle='info'
options={{singleline: true, mentionHighlight: false}} placement='bottom'
/> id='description-popover'
>
<MessageWrapper
message={channel.description}
options={{singleline: true, mentionHighlight: false}}
/>
</Popover>
); );
isAdmin = Utils.isAdmin(this.state.member.roles); isAdmin = Utils.isAdmin(this.state.member.roles);
@@ -354,19 +361,28 @@ export default class Navbar extends React.Component {
} }
if (channel.description.length === 0) { if (channel.description.length === 0) {
popoverContent = React.renderToString( popoverContent = (
<div> <Popover
No channel description yet. <br/> bsStyle='info'
<a placement='bottom'
href='#' id='description-popover'
data-toggle='modal' >
data-desc={channel.description} <div>
data-title={channel.display_name} {'No channel description yet.'}
data-channelid={channel.id} <br/>
data-target='#edit_channel' <a
> href='#'
Click here data-toggle='modal'
</a> to add one.</div> data-desc={channel.description}
data-title={channel.display_name}
data-channelid={channel.id}
data-target='#edit_channel'
>
{'Click here'}
</a>
{' to add one.'}
</div>
</Popover>
); );
} }
} }

Просмотреть файл

@@ -40,7 +40,7 @@ export default class NavbarDropdown extends React.Component {
UserStore.addTeamsChangeListener(this.onListenerChange); UserStore.addTeamsChangeListener(this.onListenerChange);
TeamStore.addChangeListener(this.onListenerChange); TeamStore.addChangeListener(this.onListenerChange);
$(React.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => { $(ReactDOM.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => {
this.blockToggle = true; this.blockToggle = true;
setTimeout(() => { setTimeout(() => {
this.blockToggle = false; this.blockToggle = false;
@@ -51,7 +51,7 @@ export default class NavbarDropdown extends React.Component {
UserStore.removeTeamsChangeListener(this.onListenerChange); UserStore.removeTeamsChangeListener(this.onListenerChange);
TeamStore.removeChangeListener(this.onListenerChange); TeamStore.removeChangeListener(this.onListenerChange);
$(React.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown'); $(ReactDOM.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown');
} }
onListenerChange() { onListenerChange() {
var newState = getStateFromStores(); var newState = getStateFromStores();

Просмотреть файл

@@ -25,7 +25,7 @@ export default class NewChannelModal extends React.Component {
handleSubmit(e) { handleSubmit(e) {
e.preventDefault(); e.preventDefault();
const displayName = React.findDOMNode(this.refs.display_name).value.trim(); const displayName = ReactDOM.findDOMNode(this.refs.display_name).value.trim();
if (displayName.length < 1) { if (displayName.length < 1) {
this.setState({displayNameError: 'This field is required'}); this.setState({displayNameError: 'This field is required'});
return; return;
@@ -35,8 +35,8 @@ export default class NewChannelModal extends React.Component {
} }
handleChange() { handleChange() {
const newData = { const newData = {
displayName: React.findDOMNode(this.refs.display_name).value, displayName: ReactDOM.findDOMNode(this.refs.display_name).value,
description: React.findDOMNode(this.refs.channel_desc).value description: ReactDOM.findDOMNode(this.refs.channel_desc).value
}; };
this.props.onDataChanged(newData); this.props.onDataChanged(newData);
} }

Просмотреть файл

@@ -15,7 +15,7 @@ export default class PasswordResetForm extends React.Component {
e.preventDefault(); e.preventDefault();
var state = {}; var state = {};
var password = React.findDOMNode(this.refs.password).value.trim(); var password = ReactDOM.findDOMNode(this.refs.password).value.trim();
if (!password || password.length < 5) { if (!password || password.length < 5) {
state.error = 'Please enter at least 5 characters.'; state.error = 'Please enter at least 5 characters.';
this.setState(state); this.setState(state);

Просмотреть файл

@@ -16,7 +16,7 @@ export default class PasswordResetSendLink extends React.Component {
e.preventDefault(); e.preventDefault();
var state = {}; var state = {};
var email = React.findDOMNode(this.refs.email).value.trim().toLowerCase(); var email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase();
if (!email || !Utils.isEmail(email)) { if (!email || !Utils.isEmail(email)) {
state.error = 'Please enter a valid email address.'; state.error = 'Please enter a valid email address.';
this.setState(state); this.setState(state);
@@ -33,7 +33,7 @@ export default class PasswordResetSendLink extends React.Component {
client.sendPasswordReset(data, client.sendPasswordReset(data,
function passwordResetSent() { function passwordResetSent() {
this.setState({error: null, updateText: <p>A password reset link has been sent to <b>{email}</b> for your <b>{this.props.teamDisplayName}</b> team on {window.location.hostname}.</p>, moreUpdateText: 'Please check your inbox.'}); this.setState({error: null, updateText: <p>A password reset link has been sent to <b>{email}</b> for your <b>{this.props.teamDisplayName}</b> team on {window.location.hostname}.</p>, moreUpdateText: 'Please check your inbox.'});
$(React.findDOMNode(this.refs.reset_form)).hide(); $(ReactDOM.findDOMNode(this.refs.reset_form)).hide();
}.bind(this), }.bind(this),
function passwordResetFailedToSend(err) { function passwordResetFailedToSend(err) {
this.setState({error: err.message, update_text: null, moreUpdateText: null}); this.setState({error: err.message, update_text: null, moreUpdateText: null});

Просмотреть файл

@@ -37,7 +37,7 @@ export default class PostBody extends React.Component {
} }
parseEmojis() { parseEmojis() {
twemoji.parse(React.findDOMNode(this), {size: Constants.EMOJI_SIZE}); twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
} }
componentDidMount() { componentDidMount() {

Просмотреть файл

@@ -15,7 +15,7 @@ export default class PostDeletedModal extends React.Component {
this.state = {}; this.state = {};
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', () => { $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', () => {
this.handleClose(); this.handleClose();
}); });
} }

Просмотреть файл

@@ -107,7 +107,7 @@ export default class PostList extends React.Component {
UserStore.addStatusesChangeListener(this.onTimeChange); UserStore.addStatusesChangeListener(this.onTimeChange);
SocketStore.addChangeListener(this.onSocketChange); SocketStore.addChangeListener(this.onSocketChange);
const postHolder = $(React.findDOMNode(this.refs.postlist)); const postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
$(window).resize(() => { $(window).resize(() => {
this.resize(); this.resize();
@@ -133,7 +133,7 @@ export default class PostList extends React.Component {
$('.top-visible-post').removeClass('top-visible-post'); $('.top-visible-post').removeClass('top-visible-post');
$(React.findDOMNode(this.refs.postlistcontent)).children().each(function select() { $(ReactDOM.findDOMNode(this.refs.postlistcontent)).children().each(function select() {
if ($(this).position().top + $(this).height() / 2 > 0) { if ($(this).position().top + $(this).height() / 2 > 0) {
$(this).addClass('top-visible-post'); $(this).addClass('top-visible-post');
return false; return false;
@@ -158,7 +158,7 @@ export default class PostList extends React.Component {
SocketStore.removeChangeListener(this.onSocketChange); SocketStore.removeChangeListener(this.onSocketChange);
$('body').off('click.userpopover'); $('body').off('click.userpopover');
$(window).off('resize'); $(window).off('resize');
var postHolder = $(React.findDOMNode(this.refs.postlist)); var postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
postHolder.off('scroll'); postHolder.off('scroll');
} }
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
@@ -214,7 +214,7 @@ export default class PostList extends React.Component {
} }
} }
componentWillUpdate() { componentWillUpdate() {
var postHolder = $(React.findDOMNode(this.refs.postlist)); var postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
this.prevScrollTop = postHolder.scrollTop(); this.prevScrollTop = postHolder.scrollTop();
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
@@ -225,7 +225,7 @@ export default class PostList extends React.Component {
} }
} }
resize() { resize() {
const postHolder = $(React.findDOMNode(this.refs.postlist)); const postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
if ($('#create_post').length > 0) { if ($('#create_post').length > 0) {
const height = $(window).height() - $('#create_post').height() - $('#error_bar').outerHeight() - 50; const height = $(window).height() - $('#create_post').height() - $('#error_bar').outerHeight() - 50;
postHolder.css('height', height + 'px'); postHolder.css('height', height + 'px');
@@ -233,12 +233,12 @@ export default class PostList extends React.Component {
} }
scrollTo(val) { scrollTo(val) {
this.isUserScroll = false; this.isUserScroll = false;
var postHolder = $(React.findDOMNode(this.refs.postlist)); var postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
postHolder[0].scrollTop = val; postHolder[0].scrollTop = val;
} }
scrollToBottom(force) { scrollToBottom(force) {
this.isUserScroll = false; this.isUserScroll = false;
var postHolder = $(React.findDOMNode(this.refs.postlist)); var postHolder = $(ReactDOM.findDOMNode(this.refs.postlist));
if ($('#new_message_' + this.props.channelId)[0] && !this.userHasSeenNew && !force) { if ($('#new_message_' + this.props.channelId)[0] && !this.userHasSeenNew && !force) {
$('#new_message_' + this.props.channelId)[0].scrollIntoView(); $('#new_message_' + this.props.channelId)[0].scrollIntoView();
} else { } else {
@@ -596,14 +596,14 @@ export default class PostList extends React.Component {
var order = this.state.postList.order; var order = this.state.postList.order;
var channelId = this.props.channelId; var channelId = this.props.channelId;
$(React.findDOMNode(this.refs.loadmore)).text('Retrieving more messages...'); $(ReactDOM.findDOMNode(this.refs.loadmore)).text('Retrieving more messages...');
Client.getPostsPage( Client.getPostsPage(
channelId, channelId,
order.length, order.length,
Constants.POST_CHUNK_SIZE, Constants.POST_CHUNK_SIZE,
function success(data) { function success(data) {
$(React.findDOMNode(this.refs.loadmore)).text('Load more messages'); $(ReactDOM.findDOMNode(this.refs.loadmore)).text('Load more messages');
this.gotMorePosts = true; this.gotMorePosts = true;
this.setState({numToDisplay: this.state.numToDisplay + Constants.POST_CHUNK_SIZE}); this.setState({numToDisplay: this.state.numToDisplay + Constants.POST_CHUNK_SIZE});
@@ -628,7 +628,7 @@ export default class PostList extends React.Component {
Client.getProfiles(); Client.getProfiles();
}.bind(this), }.bind(this),
function fail(err) { function fail(err) {
$(React.findDOMNode(this.refs.loadmore)).text('Load more messages'); $(ReactDOM.findDOMNode(this.refs.loadmore)).text('Load more messages');
AsyncClient.dispatchError(err, 'getPosts'); AsyncClient.dispatchError(err, 'getPosts');
}.bind(this) }.bind(this)
); );

Просмотреть файл

@@ -14,7 +14,7 @@ export default class RegisterAppModal extends React.Component {
this.state = {clientId: '', clientSecret: '', saved: false}; this.state = {clientId: '', clientSecret: '', saved: false};
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this)).on('hide.bs.modal', this.onHide); $(ReactDOM.findDOMNode(this)).on('hide.bs.modal', this.onHide);
} }
register() { register() {
var state = this.state; var state = this.state;
@@ -22,7 +22,7 @@ export default class RegisterAppModal extends React.Component {
var app = {}; var app = {};
var name = this.refs.name.getDOMNode().value; var name = this.refs.name.value;
if (!name || name.length === 0) { if (!name || name.length === 0) {
state.nameError = 'Application name must be filled in.'; state.nameError = 'Application name must be filled in.';
this.setState(state); this.setState(state);
@@ -31,7 +31,7 @@ export default class RegisterAppModal extends React.Component {
state.nameError = null; state.nameError = null;
app.name = name; app.name = name;
var homepage = this.refs.homepage.getDOMNode().value; var homepage = this.refs.homepage.value;
if (!homepage || homepage.length === 0) { if (!homepage || homepage.length === 0) {
state.homepageError = 'Homepage must be filled in.'; state.homepageError = 'Homepage must be filled in.';
this.setState(state); this.setState(state);
@@ -40,10 +40,10 @@ export default class RegisterAppModal extends React.Component {
state.homepageError = null; state.homepageError = null;
app.homepage = homepage; app.homepage = homepage;
var desc = this.refs.desc.getDOMNode().value; var desc = this.refs.desc.value;
app.description = desc; app.description = desc;
var rawCallbacks = this.refs.callback.getDOMNode().value.trim(); var rawCallbacks = this.refs.callback.value.trim();
if (!rawCallbacks || rawCallbacks.length === 0) { if (!rawCallbacks || rawCallbacks.length === 0) {
state.callbackError = 'At least one callback URL must be filled in.'; state.callbackError = 'At least one callback URL must be filled in.';
this.setState(state); this.setState(state);
@@ -73,7 +73,7 @@ export default class RegisterAppModal extends React.Component {
this.setState({clientId: '', clientSecret: '', saved: false}); this.setState({clientId: '', clientSecret: '', saved: false});
} }
save() { save() {
this.setState({saved: this.refs.save.getDOMNode().checked}); this.setState({saved: this.refs.save.checked});
} }
render() { render() {
var nameError; var nameError;

Просмотреть файл

@@ -37,13 +37,13 @@ export default class RemovedFromChannelModal extends React.Component {
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this)).on('show.bs.modal', this.handleShow); $(ReactDOM.findDOMNode(this)).on('show.bs.modal', this.handleShow);
$(React.findDOMNode(this)).on('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this)).on('hidden.bs.modal', this.handleClose);
} }
componentWillUnmount() { componentWillUnmount() {
$(React.findDOMNode(this)).off('show.bs.modal', this.handleShow); $(ReactDOM.findDOMNode(this)).off('show.bs.modal', this.handleShow);
$(React.findDOMNode(this)).off('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this)).off('hidden.bs.modal', this.handleClose);
} }
render() { render() {

Просмотреть файл

@@ -76,13 +76,13 @@ export default class RenameChannelModal extends React.Component {
Client.updateChannel(channel, Client.updateChannel(channel,
function handleUpdateSuccess() { function handleUpdateSuccess() {
$(React.findDOMNode(this.refs.modal)).modal('hide'); $(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
AsyncClient.getChannel(channel.id); AsyncClient.getChannel(channel.id);
Utils.updateAddressBar(channel.name); Utils.updateAddressBar(channel.name);
React.findDOMNode(this.refs.displayName).value = ''; ReactDOM.findDOMNode(this.refs.displayName).value = '';
React.findDOMNode(this.refs.channelName).value = ''; ReactDOM.findDOMNode(this.refs.channelName).value = '';
}.bind(this), }.bind(this),
function handleUpdateError(err) { function handleUpdateError(err) {
state.serverError = err.message; state.serverError = err.message;
@@ -92,15 +92,15 @@ export default class RenameChannelModal extends React.Component {
); );
} }
onNameChange() { onNameChange() {
this.setState({channelName: React.findDOMNode(this.refs.channelName).value}); this.setState({channelName: ReactDOM.findDOMNode(this.refs.channelName).value});
} }
onDisplayNameChange() { onDisplayNameChange() {
this.setState({displayName: React.findDOMNode(this.refs.displayName).value}); this.setState({displayName: ReactDOM.findDOMNode(this.refs.displayName).value});
} }
displayNameKeyUp() { displayNameKeyUp() {
const displayName = React.findDOMNode(this.refs.displayName).value.trim(); const displayName = ReactDOM.findDOMNode(this.refs.displayName).value.trim();
const channelName = Utils.cleanUpUrlable(displayName); const channelName = Utils.cleanUpUrlable(displayName);
React.findDOMNode(this.refs.channelName).value = channelName; ReactDOM.findDOMNode(this.refs.channelName).value = channelName;
this.setState({channelName: channelName}); this.setState({channelName: channelName});
} }
handleClose() { handleClose() {
@@ -119,11 +119,11 @@ export default class RenameChannelModal extends React.Component {
this.setState({displayName: button.attr('data-display'), channelName: button.attr('data-name'), channelId: button.attr('data-channelid')}); this.setState({displayName: button.attr('data-display'), channelName: button.attr('data-name'), channelId: button.attr('data-channelid')});
} }
componentDidMount() { componentDidMount() {
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', this.handleShow); $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', this.handleShow);
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', this.handleClose);
} }
componentWillUnmount() { componentWillUnmount() {
$(React.findDOMNode(this.refs.modal)).off('hidden.bs.modal', this.handleClose); $(ReactDOM.findDOMNode(this.refs.modal)).off('hidden.bs.modal', this.handleClose);
} }
render() { render() {
let displayNameError = null; let displayNameError = null;

Просмотреть файл

@@ -55,7 +55,7 @@ export default class RhsComment extends React.Component {
this.forceUpdate(); this.forceUpdate();
} }
parseEmojis() { parseEmojis() {
twemoji.parse(React.findDOMNode(this), {size: Constants.EMOJI_SIZE}); twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
} }
componentDidMount() { componentDidMount() {
this.parseEmojis(); this.parseEmojis();

Просмотреть файл

@@ -19,7 +19,7 @@ export default class RhsRootPost extends React.Component {
this.state = {}; this.state = {};
} }
parseEmojis() { parseEmojis() {
twemoji.parse(React.findDOMNode(this), {size: Constants.EMOJI_SIZE}); twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
} }
componentDidMount() { componentDidMount() {
this.parseEmojis(); this.parseEmojis();

Просмотреть файл

@@ -90,7 +90,7 @@ export default class SearchBar extends React.Component {
function success(data) { function success(data) {
this.setState({isSearching: false}); this.setState({isSearching: false});
if (utils.isMobile()) { if (utils.isMobile()) {
React.findDOMNode(this.refs.search).value = ''; ReactDOM.findDOMNode(this.refs.search).value = '';
} }
AppDispatcher.handleServerAction({ AppDispatcher.handleServerAction({

Просмотреть файл

@@ -12,7 +12,7 @@ export default class SettingPicture extends React.Component {
if (file) { if (file) {
var reader = new FileReader(); var reader = new FileReader();
var img = React.findDOMNode(this.refs.image); var img = ReactDOM.findDOMNode(this.refs.image);
reader.onload = function load(e) { reader.onload = function load(e) {
$(img).attr('src', e.target.result); $(img).attr('src', e.target.result);
}; };

Просмотреть файл

@@ -37,7 +37,7 @@ export default class SettingsUpload extends React.Component {
doSubmit(e) { doSubmit(e) {
e.preventDefault(); e.preventDefault();
var inputnode = React.findDOMNode(this.refs.uploadinput); var inputnode = ReactDOM.findDOMNode(this.refs.uploadinput);
if (inputnode.files && inputnode.files[0]) { if (inputnode.files && inputnode.files[0]) {
this.props.submit(inputnode.files[0]); this.props.submit(inputnode.files[0]);
} else { } else {

Просмотреть файл

@@ -284,13 +284,13 @@ export default class Sidebar extends React.Component {
this.updateUnreadIndicators(); this.updateUnreadIndicators();
} }
updateUnreadIndicators() { updateUnreadIndicators() {
const container = $(React.findDOMNode(this.refs.container)); const container = $(ReactDOM.findDOMNode(this.refs.container));
var showTopUnread = false; var showTopUnread = false;
var showBottomUnread = false; var showBottomUnread = false;
if (this.firstUnreadChannel) { if (this.firstUnreadChannel) {
var firstUnreadElement = $(React.findDOMNode(this.refs[this.firstUnreadChannel])); var firstUnreadElement = $(ReactDOM.findDOMNode(this.refs[this.firstUnreadChannel]));
if (firstUnreadElement.position().top + firstUnreadElement.height() < 0) { if (firstUnreadElement.position().top + firstUnreadElement.height() < 0) {
showTopUnread = true; showTopUnread = true;
@@ -298,7 +298,7 @@ export default class Sidebar extends React.Component {
} }
if (this.lastUnreadChannel) { if (this.lastUnreadChannel) {
var lastUnreadElement = $(React.findDOMNode(this.refs[this.lastUnreadChannel])); var lastUnreadElement = $(ReactDOM.findDOMNode(this.refs[this.lastUnreadChannel]));
if (lastUnreadElement.position().top > container.height()) { if (lastUnreadElement.position().top > container.height()) {
showBottomUnread = true; showBottomUnread = true;

Просмотреть файл

@@ -28,7 +28,7 @@ export default class SignupUserComplete extends React.Component {
handleSubmit(e) { handleSubmit(e) {
e.preventDefault(); e.preventDefault();
const providedEmail = React.findDOMNode(this.refs.email).value.trim(); const providedEmail = ReactDOM.findDOMNode(this.refs.email).value.trim();
if (!providedEmail) { if (!providedEmail) {
this.setState({nameError: '', emailError: 'This field is required', passwordError: ''}); this.setState({nameError: '', emailError: 'This field is required', passwordError: ''});
return; return;
@@ -39,7 +39,7 @@ export default class SignupUserComplete extends React.Component {
return; return;
} }
const providedUsername = React.findDOMNode(this.refs.name).value.trim().toLowerCase(); const providedUsername = ReactDOM.findDOMNode(this.refs.name).value.trim().toLowerCase();
if (!providedUsername) { if (!providedUsername) {
this.setState({nameError: 'This field is required', emailError: '', passwordError: '', serverError: ''}); this.setState({nameError: 'This field is required', emailError: '', passwordError: '', serverError: ''});
return; return;
@@ -59,7 +59,7 @@ export default class SignupUserComplete extends React.Component {
return; return;
} }
const providedPassword = React.findDOMNode(this.refs.password).value.trim(); const providedPassword = ReactDOM.findDOMNode(this.refs.password).value.trim();
if (!providedPassword || providedPassword.length < 5) { if (!providedPassword || providedPassword.length < 5) {
this.setState({nameError: '', emailError: '', passwordError: 'Please enter at least 5 characters', serverError: ''}); this.setState({nameError: '', emailError: '', passwordError: 'Please enter at least 5 characters', serverError: ''});
return; return;

Просмотреть файл

@@ -44,11 +44,11 @@ export default class TeamMembers extends React.Component {
UserStore.addChangeListener(this.onChange); UserStore.addChangeListener(this.onChange);
var self = this; var self = this;
$(React.findDOMNode(this.refs.modal)).on('hidden.bs.modal', function show() { $(ReactDOM.findDOMNode(this.refs.modal)).on('hidden.bs.modal', function show() {
self.setState({render_members: false}); self.setState({render_members: false});
}); });
$(React.findDOMNode(this.refs.modal)).on('show.bs.modal', function hide() { $(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', function hide() {
self.setState({render_members: true}); self.setState({render_members: true});
}); });
} }

Просмотреть файл

@@ -21,7 +21,7 @@ export default class TeamSignupDisplayNamePage extends React.Component {
submitNext(e) { submitNext(e) {
e.preventDefault(); e.preventDefault();
var displayName = React.findDOMNode(this.refs.name).value.trim(); var displayName = ReactDOM.findDOMNode(this.refs.name).value.trim();
if (!displayName) { if (!displayName) {
this.setState({nameError: 'This field is required'}); this.setState({nameError: 'This field is required'});
return; return;

Просмотреть файл

@@ -13,10 +13,10 @@ export default class TeamSignupEmailItem extends React.Component {
this.state = {}; this.state = {};
} }
getValue() { getValue() {
return React.findDOMNode(this.refs.email).value.trim(); return ReactDOM.findDOMNode(this.refs.email).value.trim();
} }
validate(teamEmail) { validate(teamEmail) {
const email = React.findDOMNode(this.refs.email).value.trim().toLowerCase(); const email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase();
if (!email) { if (!email) {
return true; return true;

Просмотреть файл

@@ -22,7 +22,7 @@ export default class TeamSignupPasswordPage extends React.Component {
submitNext(e) { submitNext(e) {
e.preventDefault(); e.preventDefault();
var password = React.findDOMNode(this.refs.password).value.trim(); var password = ReactDOM.findDOMNode(this.refs.password).value.trim();
if (!password || password.length < 5) { if (!password || password.length < 5) {
this.setState({passwordError: 'Please enter at least 5 characters'}); this.setState({passwordError: 'Please enter at least 5 characters'});
return; return;

Просмотреть файл

@@ -23,7 +23,7 @@ export default class TeamSignupUrlPage extends React.Component {
submitNext(e) { submitNext(e) {
e.preventDefault(); e.preventDefault();
const name = React.findDOMNode(this.refs.name).value.trim(); const name = ReactDOM.findDOMNode(this.refs.name).value.trim();
if (!name) { if (!name) {
this.setState({nameError: 'This field is required'}); this.setState({nameError: 'This field is required'});
return; return;

Просмотреть файл

@@ -21,7 +21,7 @@ export default class TeamSignupUsernamePage extends React.Component {
submitNext(e) { submitNext(e) {
e.preventDefault(); e.preventDefault();
var name = React.findDOMNode(this.refs.name).value.trim().toLowerCase(); var name = ReactDOM.findDOMNode(this.refs.name).value.trim().toLowerCase();
var usernameError = Utils.isValidUsername(name); var usernameError = Utils.isValidUsername(name);
if (usernameError === 'Cannot use a reserved word as a username.') { if (usernameError === 'Cannot use a reserved word as a username.') {

Просмотреть файл

@@ -36,7 +36,7 @@ export default class TeamSignupWelcomePage extends React.Component {
var state = {useDiff: true, serverError: ''}; var state = {useDiff: true, serverError: ''};
var email = React.findDOMNode(this.refs.email).value.trim().toLowerCase(); var email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase();
if (!email || !Utils.isEmail(email)) { if (!email || !Utils.isEmail(email)) {
state.emailError = 'Please enter a valid email address'; state.emailError = 'Please enter a valid email address';
this.setState(state); this.setState(state);

Просмотреть файл

@@ -17,7 +17,7 @@ export default class EmailSignUpPage extends React.Component {
var team = {}; var team = {};
var state = {serverError: ''}; var state = {serverError: ''};
team.email = React.findDOMNode(this.refs.email).value.trim().toLowerCase(); team.email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase();
if (!team.email || !Utils.isEmail(team.email)) { if (!team.email || !Utils.isEmail(team.email)) {
state.emailError = 'Please enter a valid email address'; state.emailError = 'Please enter a valid email address';
state.inValid = true; state.inValid = true;

Просмотреть файл

@@ -54,7 +54,7 @@ export default class SSOSignUpPage extends React.Component {
); );
} }
nameChange() { nameChange() {
this.setState({name: React.findDOMNode(this.refs.teamname).value.trim()}); this.setState({name: ReactDOM.findDOMNode(this.refs.teamname).value.trim()});
} }
render() { render() {
var nameError = null; var nameError = null;

Просмотреть файл

@@ -83,7 +83,7 @@ export default class Textbox extends React.Component {
componentDidUpdate() { componentDidUpdate() {
if (this.caret >= 0) { if (this.caret >= 0) {
Utils.setCaretPosition(React.findDOMNode(this.refs.message), this.caret); Utils.setCaretPosition(ReactDOM.findDOMNode(this.refs.message), this.caret);
this.caret = -1; this.caret = -1;
} }
if (this.doProcessMentions) { if (this.doProcessMentions) {
@@ -97,7 +97,7 @@ export default class Textbox extends React.Component {
if (!this.addedMention) { if (!this.addedMention) {
this.checkForNewMention(nextProps.messageText); this.checkForNewMention(nextProps.messageText);
} }
const text = React.findDOMNode(this.refs.message).value; const text = ReactDOM.findDOMNode(this.refs.message).value;
if (nextProps.channelId !== this.props.channelId || nextProps.messageText !== text) { if (nextProps.channelId !== this.props.channelId || nextProps.messageText !== text) {
this.doProcessMentions = true; this.doProcessMentions = true;
} }
@@ -117,11 +117,11 @@ export default class Textbox extends React.Component {
} }
handleChange() { handleChange() {
this.props.onUserInput(React.findDOMNode(this.refs.message).value); this.props.onUserInput(ReactDOM.findDOMNode(this.refs.message).value);
} }
handleKeyPress(e) { handleKeyPress(e) {
const text = React.findDOMNode(this.refs.message).value; const text = ReactDOM.findDOMNode(this.refs.message).value;
if (!this.refs.commands.isEmpty() && text.indexOf('/') === 0 && e.which === 13) { if (!this.refs.commands.isEmpty() && text.indexOf('/') === 0 && e.which === 13) {
this.refs.commands.addFirstCommand(); this.refs.commands.addFirstCommand();
@@ -130,7 +130,7 @@ export default class Textbox extends React.Component {
} }
if (!this.doProcessMentions) { if (!this.doProcessMentions) {
const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
const preText = text.substring(0, caret); const preText = text.substring(0, caret);
const lastSpace = preText.lastIndexOf(' '); const lastSpace = preText.lastIndexOf(' ');
const lastAt = preText.lastIndexOf('@'); const lastAt = preText.lastIndexOf('@');
@@ -144,7 +144,7 @@ export default class Textbox extends React.Component {
} }
handleKeyDown(e) { handleKeyDown(e) {
if (Utils.getSelectedText(React.findDOMNode(this.refs.message)) !== '') { if (Utils.getSelectedText(ReactDOM.findDOMNode(this.refs.message)) !== '') {
this.doProcessMentions = true; this.doProcessMentions = true;
} }
@@ -154,7 +154,7 @@ export default class Textbox extends React.Component {
} }
handleBackspace() { handleBackspace() {
const text = React.findDOMNode(this.refs.message).value; const text = ReactDOM.findDOMNode(this.refs.message).value;
if (text.indexOf('/') === 0) { if (text.indexOf('/') === 0) {
this.refs.commands.getSuggestedCommands(text.substring(0, text.length - 1)); this.refs.commands.getSuggestedCommands(text.substring(0, text.length - 1));
} }
@@ -163,7 +163,7 @@ export default class Textbox extends React.Component {
return; return;
} }
const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
const preText = text.substring(0, caret); const preText = text.substring(0, caret);
const lastSpace = preText.lastIndexOf(' '); const lastSpace = preText.lastIndexOf(' ');
const lastAt = preText.lastIndexOf('@'); const lastAt = preText.lastIndexOf('@');
@@ -174,7 +174,7 @@ export default class Textbox extends React.Component {
} }
checkForNewMention(text) { checkForNewMention(text) {
const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
const preText = text.substring(0, caret); const preText = text.substring(0, caret);
@@ -201,7 +201,7 @@ export default class Textbox extends React.Component {
} }
addMention(name) { addMention(name) {
const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
const text = this.props.messageText; const text = this.props.messageText;
@@ -224,14 +224,14 @@ export default class Textbox extends React.Component {
} }
addCommand(cmd) { addCommand(cmd) {
const elm = React.findDOMNode(this.refs.message); const elm = ReactDOM.findDOMNode(this.refs.message);
elm.value = cmd; elm.value = cmd;
this.handleChange(); this.handleChange();
} }
resize() { resize() {
const e = React.findDOMNode(this.refs.message); const e = ReactDOM.findDOMNode(this.refs.message);
const w = React.findDOMNode(this.refs.wrapper); const w = ReactDOM.findDOMNode(this.refs.wrapper);
const prevHeight = $(e).height(); const prevHeight = $(e).height();
@@ -259,14 +259,14 @@ export default class Textbox extends React.Component {
} }
handleFocus() { handleFocus() {
const elm = React.findDOMNode(this.refs.message); const elm = ReactDOM.findDOMNode(this.refs.message);
if (elm.title === elm.value) { if (elm.title === elm.value) {
elm.value = ''; elm.value = '';
} }
} }
handleBlur() { handleBlur() {
const elm = React.findDOMNode(this.refs.message); const elm = ReactDOM.findDOMNode(this.refs.message);
if (elm.value === '') { if (elm.value === '') {
elm.value = elm.title; elm.value = elm.title;
} }

Просмотреть файл

@@ -35,7 +35,7 @@ export default class ImportThemeModal extends React.Component {
handleSubmit(e) { handleSubmit(e) {
e.preventDefault(); e.preventDefault();
const text = React.findDOMNode(this.refs.input).value; const text = ReactDOM.findDOMNode(this.refs.input).value;
if (!this.isInputValid(text)) { if (!this.isInputValid(text)) {
this.setState({inputError: 'Invalid format, please try copying and pasting in again.'}); this.setState({inputError: 'Invalid format, please try copying and pasting in again.'});

Просмотреть файл

@@ -29,14 +29,14 @@ export default class UserSettingsAppearance extends React.Component {
UserStore.addChangeListener(this.onChange); UserStore.addChangeListener(this.onChange);
if (this.props.activeSection === 'theme') { if (this.props.activeSection === 'theme') {
$(React.findDOMNode(this.refs[this.state.theme])).addClass('active-border'); $(ReactDOM.findDOMNode(this.refs[this.state.theme])).addClass('active-border');
} }
$('#user_settings').on('hidden.bs.modal', this.handleClose); $('#user_settings').on('hidden.bs.modal', this.handleClose);
} }
componentDidUpdate() { componentDidUpdate() {
if (this.props.activeSection === 'theme') { if (this.props.activeSection === 'theme') {
$('.color-btn').removeClass('active-border'); $('.color-btn').removeClass('active-border');
$(React.findDOMNode(this.refs[this.state.theme])).addClass('active-border'); $(ReactDOM.findDOMNode(this.refs[this.state.theme])).addClass('active-border');
} }
} }
componentWillUnmount() { componentWillUnmount() {

Просмотреть файл

@@ -211,7 +211,7 @@ export default class UserSettingsGeneralTab extends React.Component {
this.props.updateSection(section); this.props.updateSection(section);
} }
handleClose() { handleClose() {
$(React.findDOMNode(this)).find('.form-control').each(function clearForms() { $(ReactDOM.findDOMNode(this)).find('.form-control').each(function clearForms() {
this.value = ''; this.value = '';
}); });

Просмотреть файл

@@ -129,7 +129,7 @@ export default class NotificationsTab extends React.Component {
); );
} }
handleClose() { handleClose() {
$(React.findDOMNode(this)).find('.form-control').each(function clearField() { $(ReactDOM.findDOMNode(this)).find('.form-control').each(function clearField() {
this.value = ''; this.value = '';
}); });
@@ -158,15 +158,15 @@ export default class NotificationsTab extends React.Component {
} }
handleNotifyRadio(notifyLevel) { handleNotifyRadio(notifyLevel) {
this.setState({notifyLevel: notifyLevel}); this.setState({notifyLevel: notifyLevel});
React.findDOMNode(this.refs.wrapper).focus(); ReactDOM.findDOMNode(this.refs.wrapper).focus();
} }
handleEmailRadio(enableEmail) { handleEmailRadio(enableEmail) {
this.setState({enableEmail: enableEmail}); this.setState({enableEmail: enableEmail});
React.findDOMNode(this.refs.wrapper).focus(); ReactDOM.findDOMNode(this.refs.wrapper).focus();
} }
handleSoundRadio(enableSound) { handleSoundRadio(enableSound) {
this.setState({enableSound: enableSound}); this.setState({enableSound: enableSound});
React.findDOMNode(this.refs.wrapper).focus(); ReactDOM.findDOMNode(this.refs.wrapper).focus();
} }
updateUsernameKey(val) { updateUsernameKey(val) {
this.setState({usernameKey: val}); this.setState({usernameKey: val});
@@ -184,10 +184,10 @@ export default class NotificationsTab extends React.Component {
this.setState({channelKey: val}); this.setState({channelKey: val});
} }
updateCustomMentionKeys() { updateCustomMentionKeys() {
var checked = React.findDOMNode(this.refs.customcheck).checked; var checked = ReactDOM.findDOMNode(this.refs.customcheck).checked;
if (checked) { if (checked) {
var text = React.findDOMNode(this.refs.custommentions).value; var text = ReactDOM.findDOMNode(this.refs.custommentions).value;
// remove all spaces and split string into individual keys // remove all spaces and split string into individual keys
this.setState({customKeys: text.replace(/ /g, ''), customKeysChecked: true}); this.setState({customKeys: text.replace(/ /g, ''), customKeysChecked: true});
@@ -196,7 +196,7 @@ export default class NotificationsTab extends React.Component {
} }
} }
onCustomChange() { onCustomChange() {
React.findDOMNode(this.refs.customcheck).checked = true; ReactDOM.findDOMNode(this.refs.customcheck).checked = true;
this.updateCustomMentionKeys(); this.updateCustomMentionKeys();
} }
render() { render() {

Просмотреть файл

@@ -82,7 +82,7 @@ export default class SecurityTab extends React.Component {
$('#user_settings').modal('hide'); $('#user_settings').modal('hide');
} }
handleClose() { handleClose() {
$(React.findDOMNode(this)).find('.form-control').each(function resetValue() { $(ReactDOM.findDOMNode(this)).find('.form-control').each(function resetValue() {
this.value = ''; this.value = '';
}); });
this.setState({currentPassword: '', newPassword: '', confirmPassword: '', serverError: null, passwordError: null}); this.setState({currentPassword: '', newPassword: '', confirmPassword: '', serverError: null, passwordError: null});

Просмотреть файл

@@ -77,7 +77,7 @@ export default class ViewImageModal extends React.Component {
} }
onModalHidden() { onModalHidden() {
if (this.refs.video) { if (this.refs.video) {
var video = React.findDOMNode(this.refs.video); var video = ReactDOM.findDOMNode(this.refs.video);
video.pause(); video.pause();
video.currentTime = 0; video.currentTime = 0;
} }

Просмотреть файл

@@ -6,17 +6,17 @@ var SelectTeamModal = require('../components/admin_console/select_team_modal.jsx
var AdminController = require('../components/admin_console/admin_controller.jsx'); var AdminController = require('../components/admin_console/admin_controller.jsx');
export function setupAdminConsolePage() { export function setupAdminConsolePage() {
React.render( ReactDOM.render(
<AdminController />, <AdminController />,
document.getElementById('admin_controller') document.getElementById('admin_controller')
); );
React.render( ReactDOM.render(
<SelectTeamModal />, <SelectTeamModal />,
document.getElementById('select_team_modal') document.getElementById('select_team_modal')
); );
React.render( ReactDOM.render(
<ErrorBar/>, <ErrorBar/>,
document.getElementById('error_bar') document.getElementById('error_bar')
); );

Просмотреть файл

@@ -4,7 +4,7 @@
var Authorize = require('../components/authorize.jsx'); var Authorize = require('../components/authorize.jsx');
function setupAuthorizePage(props) { function setupAuthorizePage(props) {
React.render( ReactDOM.render(
<Authorize <Authorize
teamName={props.TeamName} teamName={props.TeamName}
appName={props.AppName} appName={props.AppName}

Просмотреть файл

@@ -55,22 +55,22 @@ function setupChannelPage(props) {
}); });
// ChannelLoader must be rendered first // ChannelLoader must be rendered first
React.render( ReactDOM.render(
<ChannelLoader/>, <ChannelLoader/>,
document.getElementById('channel_loader') document.getElementById('channel_loader')
); );
React.render( ReactDOM.render(
<ErrorBar/>, <ErrorBar/>,
document.getElementById('error_bar') document.getElementById('error_bar')
); );
React.render( ReactDOM.render(
<Navbar teamDisplayName={props.TeamDisplayName} />, <Navbar teamDisplayName={props.TeamDisplayName} />,
document.getElementById('navbar') document.getElementById('navbar')
); );
React.render( ReactDOM.render(
<Sidebar <Sidebar
teamDisplayName={props.TeamDisplayName} teamDisplayName={props.TeamDisplayName}
teamName={props.TeamName} teamName={props.TeamName}
@@ -79,112 +79,112 @@ function setupChannelPage(props) {
document.getElementById('sidebar-left') document.getElementById('sidebar-left')
); );
React.render( ReactDOM.render(
<GetLinkModal />, <GetLinkModal />,
document.getElementById('get_link_modal') document.getElementById('get_link_modal')
); );
React.render( ReactDOM.render(
<UserSettingsModal />, <UserSettingsModal />,
document.getElementById('user_settings_modal') document.getElementById('user_settings_modal')
); );
React.render( ReactDOM.render(
<ImportThemeModal />, <ImportThemeModal />,
document.getElementById('import_theme_modal') document.getElementById('import_theme_modal')
); );
React.render( ReactDOM.render(
<TeamSettingsModal teamDisplayName={props.TeamDisplayName} />, <TeamSettingsModal teamDisplayName={props.TeamDisplayName} />,
document.getElementById('team_settings_modal') document.getElementById('team_settings_modal')
); );
React.render( ReactDOM.render(
<TeamMembersModal teamDisplayName={props.TeamDisplayName} />, <TeamMembersModal teamDisplayName={props.TeamDisplayName} />,
document.getElementById('team_members_modal') document.getElementById('team_members_modal')
); );
React.render( ReactDOM.render(
<MemberInviteModal teamType={props.TeamType} />, <MemberInviteModal teamType={props.TeamType} />,
document.getElementById('invite_member_modal') document.getElementById('invite_member_modal')
); );
React.render( ReactDOM.render(
<ChannelHeader />, <ChannelHeader />,
document.getElementById('channel-header') document.getElementById('channel-header')
); );
React.render( ReactDOM.render(
<EditChannelModal />, <EditChannelModal />,
document.getElementById('edit_channel_modal') document.getElementById('edit_channel_modal')
); );
React.render( ReactDOM.render(
<DeleteChannelModal />, <DeleteChannelModal />,
document.getElementById('delete_channel_modal') document.getElementById('delete_channel_modal')
); );
React.render( ReactDOM.render(
<RenameChannelModal />, <RenameChannelModal />,
document.getElementById('rename_channel_modal') document.getElementById('rename_channel_modal')
); );
React.render( ReactDOM.render(
<ChannelNotificationsModal />, <ChannelNotificationsModal />,
document.getElementById('channel_notifications_modal') document.getElementById('channel_notifications_modal')
); );
React.render( ReactDOM.render(
<ChannelMembersModal />, <ChannelMembersModal />,
document.getElementById('channel_members_modal') document.getElementById('channel_members_modal')
); );
React.render( ReactDOM.render(
<ChannelInviteModal />, <ChannelInviteModal />,
document.getElementById('channel_invite_modal') document.getElementById('channel_invite_modal')
); );
React.render( ReactDOM.render(
<ChannelInfoModal />, <ChannelInfoModal />,
document.getElementById('channel_info_modal') document.getElementById('channel_info_modal')
); );
React.render( ReactDOM.render(
<MoreChannelsModal />, <MoreChannelsModal />,
document.getElementById('more_channels_modal') document.getElementById('more_channels_modal')
); );
React.render( ReactDOM.render(
<PostListContainer />, <PostListContainer />,
document.getElementById('post-list') document.getElementById('post-list')
); );
React.render( ReactDOM.render(
<EditPostModal />, <EditPostModal />,
document.getElementById('edit_post_modal') document.getElementById('edit_post_modal')
); );
React.render( ReactDOM.render(
<DeletePostModal />, <DeletePostModal />,
document.getElementById('delete_post_modal') document.getElementById('delete_post_modal')
); );
React.render( ReactDOM.render(
<PostDeletedModal />, <PostDeletedModal />,
document.getElementById('post_deleted_modal') document.getElementById('post_deleted_modal')
); );
React.render( ReactDOM.render(
<CreatePost />, <CreatePost />,
document.getElementById('post-create') document.getElementById('post-create')
); );
React.render( ReactDOM.render(
<SidebarRight />, <SidebarRight />,
document.getElementById('sidebar-right') document.getElementById('sidebar-right')
); );
React.render( ReactDOM.render(
<SidebarRightMenu <SidebarRightMenu
teamDisplayName={props.TeamDisplayName} teamDisplayName={props.TeamDisplayName}
teamType={props.TeamType} teamType={props.TeamType}
@@ -192,44 +192,44 @@ function setupChannelPage(props) {
document.getElementById('sidebar-menu') document.getElementById('sidebar-menu')
); );
React.render( ReactDOM.render(
<MentionList id='post_textbox' />, <MentionList id='post_textbox' />,
document.getElementById('post_mention_tab') document.getElementById('post_mention_tab')
); );
React.render( ReactDOM.render(
<MentionList id='reply_textbox' />, <MentionList id='reply_textbox' />,
document.getElementById('reply_mention_tab') document.getElementById('reply_mention_tab')
); );
React.render( ReactDOM.render(
<MentionList id='edit_textbox' />, <MentionList id='edit_textbox' />,
document.getElementById('edit_mention_tab') document.getElementById('edit_mention_tab')
); );
React.render( ReactDOM.render(
<AccessHistoryModal />, <AccessHistoryModal />,
document.getElementById('access_history_modal') document.getElementById('access_history_modal')
); );
React.render( ReactDOM.render(
<ActivityLogModal />, <ActivityLogModal />,
document.getElementById('activity_log_modal') document.getElementById('activity_log_modal')
); );
React.render( ReactDOM.render(
<RemovedFromChannelModal />, <RemovedFromChannelModal />,
document.getElementById('removed_from_channel_modal') document.getElementById('removed_from_channel_modal')
); );
React.render( ReactDOM.render(
<FileUploadOverlay <FileUploadOverlay
overlayType='center' overlayType='center'
/>, />,
document.getElementById('file_upload_overlay') document.getElementById('file_upload_overlay')
); );
React.render( ReactDOM.render(
<RegisterAppModal />, <RegisterAppModal />,
document.getElementById('register_app_modal') document.getElementById('register_app_modal')
); );

Просмотреть файл

@@ -4,7 +4,7 @@
var FindTeam = require('../components/find_team.jsx'); var FindTeam = require('../components/find_team.jsx');
function setupFindTeamPage() { function setupFindTeamPage() {
React.render( ReactDOM.render(
<FindTeam />, <FindTeam />,
document.getElementById('find-team') document.getElementById('find-team')
); );

Просмотреть файл

@@ -4,7 +4,7 @@
var Login = require('../components/login.jsx'); var Login = require('../components/login.jsx');
function setupLoginPage(props) { function setupLoginPage(props) {
React.render( ReactDOM.render(
<Login <Login
teamDisplayName={props.TeamDisplayName} teamDisplayName={props.TeamDisplayName}
teamName={props.TeamName} teamName={props.TeamName}

Просмотреть файл

@@ -4,7 +4,7 @@
var PasswordReset = require('../components/password_reset.jsx'); var PasswordReset = require('../components/password_reset.jsx');
function setupPasswordResetPage(props) { function setupPasswordResetPage(props) {
React.render( ReactDOM.render(
<PasswordReset <PasswordReset
isReset={props.IsReset} isReset={props.IsReset}
teamDisplayName={props.TeamDisplayName} teamDisplayName={props.TeamDisplayName}

Просмотреть файл

@@ -4,7 +4,7 @@
var SignupTeam = require('../components/signup_team.jsx'); var SignupTeam = require('../components/signup_team.jsx');
function setupSignupTeamPage() { function setupSignupTeamPage() {
React.render( ReactDOM.render(
<SignupTeam />, <SignupTeam />,
document.getElementById('signup-team') document.getElementById('signup-team')
); );

Просмотреть файл

@@ -4,7 +4,7 @@
var SignupTeamComplete = require('../components/signup_team_complete.jsx'); var SignupTeamComplete = require('../components/signup_team_complete.jsx');
function setupSignupTeamCompletePage(props) { function setupSignupTeamCompletePage(props) {
React.render( ReactDOM.render(
<SignupTeamComplete <SignupTeamComplete
email={props.Email} email={props.Email}
hash={props.Hash} hash={props.Hash}

Просмотреть файл

@@ -4,7 +4,7 @@
var SignupUserComplete = require('../components/signup_user_complete.jsx'); var SignupUserComplete = require('../components/signup_user_complete.jsx');
function setupSignupUserCompletePage(props) { function setupSignupUserCompletePage(props) {
React.render( ReactDOM.render(
<SignupUserComplete <SignupUserComplete
teamId={props.TeamId} teamId={props.TeamId}
teamName={props.TeamName} teamName={props.TeamName}

Просмотреть файл

@@ -4,7 +4,7 @@
var EmailVerify = require('../components/email_verify.jsx'); var EmailVerify = require('../components/email_verify.jsx');
global.window.setupVerifyPage = function setupVerifyPage(props) { global.window.setupVerifyPage = function setupVerifyPage(props) {
React.render( ReactDOM.render(
<EmailVerify <EmailVerify
isVerified={props.IsVerified} isVerified={props.IsVerified}
teamURL={props.TeamURL} teamURL={props.TeamURL}

4
web/static/js/jquery-1.11.1.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

4
web/static/js/jquery-2.1.4.min.js поставляемый Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

215
web/static/js/perfect-scrollbar-0.6.5.jquery.js → web/static/js/perfect-scrollbar-0.6.7.jquery.js Исполняемый файл → Обычный файл
Просмотреть файл

@@ -1,4 +1,4 @@
/* perfect-scrollbar v0.6.5-1 */ /* perfect-scrollbar v0.6.7 */
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
@@ -88,7 +88,7 @@ exports.remove = function (element, className) {
exports.list = function (element) { exports.list = function (element) {
if (element.classList) { if (element.classList) {
return element.classList; return Array.prototype.slice.apply(element.classList);
} else { } else {
return element.className.split(' '); return element.className.split(' ');
} }
@@ -379,25 +379,26 @@ module.exports = {
destroy: destroy destroy: destroy
}; };
},{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":20}],8:[function(require,module,exports){ },{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
'use strict'; 'use strict';
module.exports = { module.exports = {
wheelSpeed: 1,
wheelPropagation: false,
swipePropagation: true,
minScrollbarLength: null,
maxScrollbarLength: null, maxScrollbarLength: null,
useBothWheelAxes: false, minScrollbarLength: null,
useKeyboard: true,
suppressScrollX: false,
suppressScrollY: false,
scrollXMarginOffset: 0, scrollXMarginOffset: 0,
scrollYMarginOffset: 0, scrollYMarginOffset: 0,
stopPropagationOnClick: true stopPropagationOnClick: true,
suppressScrollX: false,
suppressScrollY: false,
swipePropagation: true,
useBothWheelAxes: false,
useKeyboard: true,
useSelectionScroll: false,
wheelPropagation: false,
wheelSpeed: 1
}; };
},{}],9:[function(require,module,exports){ },{}],9:[function(require,module,exports){
@@ -435,17 +436,17 @@ module.exports = function (element) {
var h = require('../../lib/helper') var h = require('../../lib/helper')
, instances = require('../instances') , instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindClickRailHandler(element, i) { function bindClickRailHandler(element, i) {
function pageOffset(el) { function pageOffset(el) {
return el.getBoundingClientRect(); return el.getBoundingClientRect();
} }
var stopPropagation = window.Event.prototype.stopPropagation.bind;
if (i.settings.stopPropagationOnClick) { if (i.settings.stopPropagationOnClick) {
i.event.bind(i.scrollbarY, 'click', function (e) { i.event.bind(i.scrollbarY, 'click', stopPropagation);
e.stopPropagation();
});
} }
i.event.bind(i.scrollbarYRail, 'click', function (e) { i.event.bind(i.scrollbarYRail, 'click', function (e) {
var halfOfScrollbarLength = h.toInt(i.scrollbarYHeight / 2); var halfOfScrollbarLength = h.toInt(i.scrollbarYHeight / 2);
@@ -459,16 +460,14 @@ function bindClickRailHandler(element, i) {
positionRatio = 1; positionRatio = 1;
} }
element.scrollTop = (i.contentHeight - i.containerHeight) * positionRatio; updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio);
updateGeometry(element); updateGeometry(element);
e.stopPropagation(); e.stopPropagation();
}); });
if (i.settings.stopPropagationOnClick) { if (i.settings.stopPropagationOnClick) {
i.event.bind(i.scrollbarY, 'click', function (e) { i.event.bind(i.scrollbarX, 'click', stopPropagation);
e.stopPropagation();
});
} }
i.event.bind(i.scrollbarXRail, 'click', function (e) { i.event.bind(i.scrollbarXRail, 'click', function (e) {
var halfOfScrollbarLength = h.toInt(i.scrollbarXWidth / 2); var halfOfScrollbarLength = h.toInt(i.scrollbarXWidth / 2);
@@ -482,7 +481,7 @@ function bindClickRailHandler(element, i) {
positionRatio = 1; positionRatio = 1;
} }
element.scrollLeft = ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment; updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment);
updateGeometry(element); updateGeometry(element);
e.stopPropagation(); e.stopPropagation();
@@ -494,7 +493,7 @@ module.exports = function (element) {
bindClickRailHandler(element, i); bindClickRailHandler(element, i);
}; };
},{"../../lib/helper":6,"../instances":18,"../update-geometry":19}],11:[function(require,module,exports){ },{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
@@ -503,7 +502,8 @@ module.exports = function (element) {
var d = require('../../lib/dom') var d = require('../../lib/dom')
, h = require('../../lib/helper') , h = require('../../lib/helper')
, instances = require('../instances') , instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindMouseScrollXHandler(element, i) { function bindMouseScrollXHandler(element, i) {
var currentLeft = null; var currentLeft = null;
@@ -522,7 +522,7 @@ function bindMouseScrollXHandler(element, i) {
} }
var scrollLeft = h.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment; var scrollLeft = h.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;
element.scrollLeft = scrollLeft; updateScroll(element, 'left', scrollLeft);
} }
var mouseMoveHandler = function (e) { var mouseMoveHandler = function (e) {
@@ -567,7 +567,7 @@ function bindMouseScrollYHandler(element, i) {
} }
var scrollTop = h.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight))); var scrollTop = h.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));
element.scrollTop = scrollTop; updateScroll(element, 'top', scrollTop);
} }
var mouseMoveHandler = function (e) { var mouseMoveHandler = function (e) {
@@ -601,7 +601,7 @@ module.exports = function (element) {
bindMouseScrollYHandler(element, i); bindMouseScrollYHandler(element, i);
}; };
},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19}],12:[function(require,module,exports){ },{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
@@ -609,7 +609,8 @@ module.exports = function (element) {
var h = require('../../lib/helper') var h = require('../../lib/helper')
, instances = require('../instances') , instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindKeyboardHandler(element, i) { function bindKeyboardHandler(element, i) {
var hovered = false; var hovered = false;
@@ -711,8 +712,8 @@ function bindKeyboardHandler(element, i) {
return; return;
} }
element.scrollTop = element.scrollTop - deltaY; updateScroll(element, 'top', element.scrollTop - deltaY);
element.scrollLeft = element.scrollLeft + deltaX; updateScroll(element, 'left', element.scrollLeft + deltaX);
updateGeometry(element); updateGeometry(element);
shouldPrevent = shouldPreventDefault(deltaX, deltaY); shouldPrevent = shouldPreventDefault(deltaX, deltaY);
@@ -727,7 +728,7 @@ module.exports = function (element) {
bindKeyboardHandler(element, i); bindKeyboardHandler(element, i);
}; };
},{"../../lib/helper":6,"../instances":18,"../update-geometry":19}],13:[function(require,module,exports){ },{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
@@ -735,7 +736,8 @@ module.exports = function (element) {
var h = require('../../lib/helper') var h = require('../../lib/helper')
, instances = require('../instances') , instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindMouseWheelHandler(element, i) { function bindMouseWheelHandler(element, i) {
var shouldPrevent = false; var shouldPrevent = false;
@@ -830,24 +832,24 @@ function bindMouseWheelHandler(element, i) {
if (!i.settings.useBothWheelAxes) { if (!i.settings.useBothWheelAxes) {
// deltaX will only be used for horizontal scrolling and deltaY will // deltaX will only be used for horizontal scrolling and deltaY will
// only be used for vertical scrolling - this is the default // only be used for vertical scrolling - this is the default
element.scrollTop = element.scrollTop - (deltaY * i.settings.wheelSpeed); updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));
element.scrollLeft = element.scrollLeft + (deltaX * i.settings.wheelSpeed); updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));
} else if (i.scrollbarYActive && !i.scrollbarXActive) { } else if (i.scrollbarYActive && !i.scrollbarXActive) {
// only vertical scrollbar is active and useBothWheelAxes option is // only vertical scrollbar is active and useBothWheelAxes option is
// active, so let's scroll vertical bar using both mouse wheel axes // active, so let's scroll vertical bar using both mouse wheel axes
if (deltaY) { if (deltaY) {
element.scrollTop = element.scrollTop - (deltaY * i.settings.wheelSpeed); updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));
} else { } else {
element.scrollTop = element.scrollTop + (deltaX * i.settings.wheelSpeed); updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));
} }
shouldPrevent = true; shouldPrevent = true;
} else if (i.scrollbarXActive && !i.scrollbarYActive) { } else if (i.scrollbarXActive && !i.scrollbarYActive) {
// useBothWheelAxes and only horizontal bar is active, so use both // useBothWheelAxes and only horizontal bar is active, so use both
// wheel axes for horizontal bar // wheel axes for horizontal bar
if (deltaX) { if (deltaX) {
element.scrollLeft = element.scrollLeft + (deltaX * i.settings.wheelSpeed); updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));
} else { } else {
element.scrollLeft = element.scrollLeft - (deltaY * i.settings.wheelSpeed); updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));
} }
shouldPrevent = true; shouldPrevent = true;
} }
@@ -873,7 +875,7 @@ module.exports = function (element) {
bindMouseWheelHandler(element, i); bindMouseWheelHandler(element, i);
}; };
},{"../../lib/helper":6,"../instances":18,"../update-geometry":19}],14:[function(require,module,exports){ },{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
@@ -901,7 +903,8 @@ module.exports = function (element) {
var h = require('../../lib/helper') var h = require('../../lib/helper')
, instances = require('../instances') , instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindSelectionHandler(element, i) { function bindSelectionHandler(element, i) {
function getRangeNode() { function getRangeNode() {
@@ -924,8 +927,8 @@ function bindSelectionHandler(element, i) {
return; return;
} }
element.scrollTop = element.scrollTop + scrollDiff.top; updateScroll(element, 'top', element.scrollTop + scrollDiff.top);
element.scrollLeft = element.scrollLeft + scrollDiff.left; updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);
updateGeometry(element); updateGeometry(element);
}, 50); // every .1 sec }, 50); // every .1 sec
} }
@@ -1006,14 +1009,15 @@ module.exports = function (element) {
bindSelectionHandler(element, i); bindSelectionHandler(element, i);
}; };
},{"../../lib/helper":6,"../instances":18,"../update-geometry":19}],16:[function(require,module,exports){ },{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
'use strict'; 'use strict';
var instances = require('../instances') var instances = require('../instances')
, updateGeometry = require('../update-geometry'); , updateGeometry = require('../update-geometry')
, updateScroll = require('../update-scroll');
function bindTouchHandler(element, i, supportsTouch, supportsIePointer) { function bindTouchHandler(element, i, supportsTouch, supportsIePointer) {
function shouldPreventDefault(deltaX, deltaY) { function shouldPreventDefault(deltaX, deltaY) {
@@ -1042,8 +1046,8 @@ function bindTouchHandler(element, i, supportsTouch, supportsIePointer) {
} }
function applyTouchMove(differenceX, differenceY) { function applyTouchMove(differenceX, differenceY) {
element.scrollTop = element.scrollTop - differenceY; updateScroll(element, 'top', element.scrollTop - differenceY);
element.scrollLeft = element.scrollLeft - differenceX; updateScroll(element, 'left', element.scrollLeft - differenceX);
updateGeometry(element); updateGeometry(element);
} }
@@ -1178,7 +1182,7 @@ module.exports = function (element, supportsTouch, supportsIePointer) {
bindTouchHandler(element, i, supportsTouch, supportsIePointer); bindTouchHandler(element, i, supportsTouch, supportsIePointer);
}; };
},{"../instances":18,"../update-geometry":19}],17:[function(require,module,exports){ },{"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */
@@ -1212,7 +1216,10 @@ module.exports = function (element, userSettings) {
dragScrollbarHandler(element); dragScrollbarHandler(element);
mouseWheelHandler(element); mouseWheelHandler(element);
nativeScrollHandler(element); nativeScrollHandler(element);
selectionHandler(element);
if (i.settings.useSelectionScroll) {
selectionHandler(element);
}
if (h.env.supportsTouch || h.env.supportsIePointer) { if (h.env.supportsTouch || h.env.supportsIePointer) {
touchHandler(element, h.env.supportsTouch, h.env.supportsIePointer); touchHandler(element, h.env.supportsTouch, h.env.supportsIePointer);
@@ -1342,7 +1349,8 @@ exports.get = function (element) {
var cls = require('../lib/class') var cls = require('../lib/class')
, d = require('../lib/dom') , d = require('../lib/dom')
, h = require('../lib/helper') , h = require('../lib/helper')
, instances = require('./instances'); , instances = require('./instances')
, updateScroll = require('./update-scroll');
function getThumbSize(i, thumbSize) { function getThumbSize(i, thumbSize) {
if (i.settings.minScrollbarLength) { if (i.settings.minScrollbarLength) {
@@ -1439,7 +1447,7 @@ module.exports = function (element) {
i.scrollbarYActive = false; i.scrollbarYActive = false;
i.scrollbarYHeight = 0; i.scrollbarYHeight = 0;
i.scrollbarYTop = 0; i.scrollbarYTop = 0;
element.scrollTop = 0; updateScroll(element, 'top', 0);
} }
if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) { if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {
@@ -1455,7 +1463,114 @@ module.exports = function (element) {
cls[i.scrollbarYActive ? 'add' : 'remove'](element, 'ps-active-y'); cls[i.scrollbarYActive ? 'add' : 'remove'](element, 'ps-active-y');
}; };
},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18}],20:[function(require,module,exports){ },{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License
*/
'use strict';
var instances = require('./instances');
var upEvent = document.createEvent('Event')
, downEvent = document.createEvent('Event')
, leftEvent = document.createEvent('Event')
, rightEvent = document.createEvent('Event')
, yEvent = document.createEvent('Event')
, xEvent = document.createEvent('Event')
, xStartEvent = document.createEvent('Event')
, xEndEvent = document.createEvent('Event')
, yStartEvent = document.createEvent('Event')
, yEndEvent = document.createEvent('Event')
, lastTop
, lastLeft;
upEvent.initEvent('ps-scroll-up', true, true);
downEvent.initEvent('ps-scroll-down', true, true);
leftEvent.initEvent('ps-scroll-left', true, true);
rightEvent.initEvent('ps-scroll-right', true, true);
yEvent.initEvent('ps-scroll-y', true, true);
xEvent.initEvent('ps-scroll-x', true, true);
xStartEvent.initEvent('ps-x-reach-start', true, true);
xEndEvent.initEvent('ps-x-reach-end', true, true);
yStartEvent.initEvent('ps-y-reach-start', true, true);
yEndEvent.initEvent('ps-y-reach-end', true, true);
module.exports = function (element, axis, value) {
if (typeof element === 'undefined') {
throw 'You must provide an element to the update-scroll function';
}
if (typeof axis === 'undefined') {
throw 'You must provide an axis to the update-scroll function';
}
if (typeof value === 'undefined') {
throw 'You must provide a value to the update-scroll function';
}
if (axis === 'top' && value <= 0) {
element.scrollTop = 0;
element.dispatchEvent(yStartEvent);
return; // don't allow negative scroll
}
if (axis === 'left' && value <= 0) {
element.scrollLeft = 0;
element.dispatchEvent(xStartEvent);
return; // don't allow negative scroll
}
var i = instances.get(element);
if (axis === 'top' && value > i.contentHeight - i.containerHeight) {
element.scrollTop = i.contentHeight - i.containerHeight;
element.dispatchEvent(yEndEvent);
return; // don't allow scroll past container
}
if (axis === 'left' && value > i.contentWidth - i.containerWidth) {
element.scrollLeft = i.contentWidth - i.containerWidth;
element.dispatchEvent(xEndEvent);
return; // don't allow scroll past container
}
if (!lastTop) {
lastTop = element.scrollTop;
}
if (!lastLeft) {
lastLeft = element.scrollLeft;
}
if (axis === 'top' && value < lastTop) {
element.dispatchEvent(upEvent);
}
if (axis === 'top' && value > lastTop) {
element.dispatchEvent(downEvent);
}
if (axis === 'left' && value < lastLeft) {
element.dispatchEvent(leftEvent);
}
if (axis === 'left' && value > lastLeft) {
element.dispatchEvent(rightEvent);
}
if (axis === 'top') {
element.scrollTop = lastTop = value;
element.dispatchEvent(yEvent);
}
if (axis === 'left') {
element.scrollLeft = lastLeft = value;
element.dispatchEvent(xEvent);
}
};
},{"./instances":18}],21:[function(require,module,exports){
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors /* Copyright (c) 2015 Hyunje Alex Jun and other contributors
* Licensed under the MIT License * Licensed under the MIT License
*/ */

2
web/static/js/perfect-scrollbar-0.6.7.jquery.min.js поставляемый Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

16
web/static/js/react-0.14.0.min.js поставляемый Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

13
web/static/js/react-bootstrap-0.25.1.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

14
web/static/js/react-bootstrap-0.27.1.min.js поставляемый Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

42
web/static/js/react-dom-0.14.0.js Обычный файл
Просмотреть файл

@@ -0,0 +1,42 @@
/**
* ReactDOM v0.14.0
*
* Copyright 2013-2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
// Based off https://github.com/ForbesLindesay/umd/blob/master/template.js
;(function(f) {
// CommonJS
if (typeof exports === "object" && typeof module !== "undefined") {
module.exports = f(require('react'));
// RequireJS
} else if (typeof define === "function" && define.amd) {
define(['react'], f);
// <script>
} else {
var g
if (typeof window !== "undefined") {
g = window;
} else if (typeof global !== "undefined") {
g = global;
} else if (typeof self !== "undefined") {
g = self;
} else {
// works providing we're not in "use strict";
// needed for Java 8 Nashorn
// see https://github.com/facebook/react/issues/3037
g = this;
}
g.ReactDOM = f(g.React);
}
})(function(React) {
return React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
});

12
web/static/js/react-dom-0.14.0.min.js поставляемый Обычный файл
Просмотреть файл

@@ -0,0 +1,12 @@
/**
* ReactDOM v0.14.0
*
* Copyright 2013-2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e(require("react"));else if("function"==typeof define&&define.amd)define(["react"],e);else{var f;f="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,f.ReactDOM=e(f.React)}}(function(e){return e.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED});

18
web/static/js/react-with-addons-0.13.3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@@ -32,12 +32,13 @@
<link id="favicon" rel="icon" href="/static/images/favicon.ico" type="image/x-icon"> <link id="favicon" rel="icon" href="/static/images/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="/static/images/favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="/static/images/favicon.ico" type="image/x-icon">
<script src="/static/js/react-with-addons-0.13.3.js"></script> <script src="/static/js/react-0.14.0.js"></script>
<script src="/static/js/jquery-1.11.1.js"></script> <script src="/static/js/react-dom-0.14.0.js"></script>
<script src="/static/js/jquery-2.1.4.js"></script>
<script src="/static/js/bootstrap-3.3.5.js"></script> <script src="/static/js/bootstrap-3.3.5.js"></script>
<script src="/static/js/bootstrap-colorpicker.min.js"></script> <script src="/static/js/bootstrap-colorpicker.min.js"></script>
<script src="/static/js/react-bootstrap-0.25.1.js"></script> <script src="/static/js/react-bootstrap-0.27.1.js"></script>
<script src="/static/js/perfect-scrollbar-0.6.5.jquery.min.js"></script> <script src="/static/js/perfect-scrollbar-0.6.7.jquery.min.js"></script>
<script src="/static/js/jquery-dragster/jquery.dragster.js"></script> <script src="/static/js/jquery-dragster/jquery.dragster.js"></script>
<style id="antiClickjack">body{display:none !important;}</style> <style id="antiClickjack">body{display:none !important;}</style>