Merge branch 'master' into PLT-92

Этот коммит содержится в:
=Corey Hulen
2015-09-17 09:21:56 -07:00
родитель 51c3445e69 3edd8dbdf6
Коммит 9b5198c69c
973 изменённых файлов: 89408 добавлений и 55 удалений

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

@@ -17,19 +17,42 @@ export default class PostBody extends React.Component {
const linkData = Utils.extractLinks(this.props.post.message);
this.state = {links: linkData.links, message: linkData.text};
}
getAllChildNodes(nodeIn) {
var textNodes = [];
function getTextNodes(node) {
textNodes.push(node);
for (var i = 0, len = node.childNodes.length; i < len; ++i) {
getTextNodes(node.childNodes[i]);
}
}
getTextNodes(nodeIn);
return textNodes;
}
parseEmojis() {
twemoji.parse(React.findDOMNode(this), {size: Constants.EMOJI_SIZE});
this.getAllChildNodes(React.findDOMNode(this)).forEach((current) => {
global.window.emojify.run(current);
});
}
componentDidMount() {
this.parseEmojis();
}
componentDidUpdate() {
this.parseEmojis();
}
componentWillReceiveProps(nextProps) {
const linkData = Utils.extractLinks(nextProps.post.message);
this.setState({links: linkData.links, message: linkData.text});
}
render() {
const post = this.props.post;
const filenames = this.props.post.filenames;
@@ -75,7 +98,7 @@ export default class PostBody extends React.Component {
comment = (
<p className='post-link'>
<span>
Commented on {name}{apostrophe} message:
{'Commented on '}{name}{apostrophe}{' message:'}
<a
className='theme'
onClick={this.props.handleCommentClick}
@@ -98,7 +121,7 @@ export default class PostBody extends React.Component {
href='#'
onClick={this.props.retryPost}
>
Retry
{'Retry'}
</a>
);
} else if (post.state === Constants.POST_LOADING) {
@@ -133,6 +156,7 @@ export default class PostBody extends React.Component {
{comment}
<p
key={`${post.id}_message`}
id={`${post.id}_message`}
className={postClass}
>
{loading}

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

@@ -13,6 +13,7 @@ var SidebarHeader = require('./sidebar_header.jsx');
var SearchBox = require('./search_bar.jsx');
var Constants = require('../utils/constants.jsx');
var NewChannelFlow = require('./new_channel_flow.jsx');
var UnreadChannelIndicator = require('./unread_channel_indicator.jsx');
export default class Sidebar extends React.Component {
constructor(props) {
@@ -153,6 +154,16 @@ export default class Sidebar extends React.Component {
$(window).on('resize', this.onResize);
}
shouldComponentUpdate(nextProps, nextState) {
if (!Utils.areStatesEqual(nextProps, this.props)) {
return true;
}
if (!Utils.areStatesEqual(nextState, this.state)) {
return true;
}
return false;
}
componentDidUpdate() {
this.updateTitle();
this.updateUnreadIndicators();
@@ -274,15 +285,16 @@ export default class Sidebar extends React.Component {
this.updateUnreadIndicators();
}
updateUnreadIndicators() {
var container = $(React.findDOMNode(this.refs.container));
const container = $(React.findDOMNode(this.refs.container));
var showTopUnread = false;
var showBottomUnread = false;
if (this.firstUnreadChannel) {
var firstUnreadElement = $(React.findDOMNode(this.refs[this.firstUnreadChannel]));
if (firstUnreadElement.position().top + firstUnreadElement.height() < 0) {
$(React.findDOMNode(this.refs.topUnreadIndicator)).css('display', 'initial');
} else {
$(React.findDOMNode(this.refs.topUnreadIndicator)).css('display', 'none');
showTopUnread = true;
}
}
@@ -290,11 +302,14 @@ export default class Sidebar extends React.Component {
var lastUnreadElement = $(React.findDOMNode(this.refs[this.lastUnreadChannel]));
if (lastUnreadElement.position().top > container.height()) {
$(React.findDOMNode(this.refs.bottomUnreadIndicator)).css('display', 'initial');
} else {
$(React.findDOMNode(this.refs.bottomUnreadIndicator)).css('display', 'none');
showBottomUnread = true;
}
}
this.setState({
showTopUnread,
showBottomUnread
});
}
createChannelElement(channel, index) {
var members = this.state.members;
@@ -432,19 +447,13 @@ export default class Sidebar extends React.Component {
this.lastUnreadChannel = null;
// create elements for all 3 types of channels
var channelItems = this.state.channels.filter(
function filterPublicChannels(channel) {
return channel.type === 'O';
}
).map(this.createChannelElement);
const publicChannels = this.state.channels.filter((channel) => channel.type === 'O');
const publicChannelItems = publicChannels.map(this.createChannelElement);
var privateChannelItems = this.state.channels.filter(
function filterPrivateChannels(channel) {
return channel.type === 'P';
}
).map(this.createChannelElement);
const privateChannels = this.state.channels.filter((channel) => channel.type === 'P');
const privateChannelItems = privateChannels.map(this.createChannelElement);
var directMessageItems = this.state.showDirectChannels.map(this.createChannelElement);
const directMessageItems = this.state.showDirectChannels.map(this.createChannelElement);
// update the favicon to show if there are any notifications
var link = document.createElement('link');
@@ -498,20 +507,16 @@ export default class Sidebar extends React.Component {
/>
<SearchBox />
<div
ref='topUnreadIndicator'
className='nav-pills__unread-indicator nav-pills__unread-indicator-top'
style={{display: 'none'}}
>
Unread post(s) above
</div>
<div
ref='bottomUnreadIndicator'
className='nav-pills__unread-indicator nav-pills__unread-indicator-bottom'
style={{display: 'none'}}
>
Unread post(s) below
</div>
<UnreadChannelIndicator
show={this.state.showTopUnread}
extraClass='nav-pills__unread-indicator-top'
text={'Unread post(s) above'}
/>
<UnreadChannelIndicator
show={this.state.showBottomUnread}
extraClass='nav-pills__unread-indicator-bottom'
text={'Unread post(s) below'}
/>
<div
ref='container'
@@ -531,7 +536,7 @@ export default class Sidebar extends React.Component {
</a>
</h4>
</li>
{channelItems}
{publicChannelItems}
<li>
<a
href='#'

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

@@ -0,0 +1,35 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
// Indicator for the left sidebar which indicate if there's unread posts in a channel that is not shown
// because it is either above or below the screen
export default class UnreadChannelIndicator extends React.Component {
constructor(props) {
super(props);
}
render() {
let displayValue = 'none';
if (this.props.show) {
displayValue = 'initial';
}
return (
<div
className={'nav-pills__unread-indicator ' + this.props.extraClass}
style={{display: displayValue}}
>
{this.props.text}
</div>
);
}
}
UnreadChannelIndicator.defaultProps = {
show: false,
extraClass: '',
text: ''
};
UnreadChannelIndicator.propTypes = {
show: React.PropTypes.bool,
extraClass: React.PropTypes.string,
text: React.PropTypes.string
};

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

@@ -35,7 +35,7 @@ export default class UserSettingsModal extends React.Component {
tabs.push({name: 'security', uiName: 'Security', icon: 'glyphicon glyphicon-lock'});
tabs.push({name: 'notifications', uiName: 'Notifications', icon: 'glyphicon glyphicon-exclamation-sign'});
tabs.push({name: 'appearance', uiName: 'Appearance', icon: 'glyphicon glyphicon-wrench'});
if (global.window.config.EnableOAuthServiceProvider) {
if (global.window.config.EnableOAuthServiceProvider === 'true') {
tabs.push({name: 'developer', uiName: 'Developer', icon: 'glyphicon glyphicon-th'});
}

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

@@ -128,3 +128,11 @@ div.theme {
.white-bg {
background-color: white !important;
}
.emoji {
width: 1.5em;
height: 1.5em;
display: inline-block;
margin-bottom: 0.25em;
background-size: contain;
}

Двоичные данные
web/static/images/emoji/+1.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
web/static/images/emoji/-1.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
web/static/images/emoji/100.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.2 KiB

Двоичные данные
web/static/images/emoji/1234.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.6 KiB

Двоичные данные
web/static/images/emoji/8ball.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичные данные
web/static/images/emoji/a.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/ab.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.8 KiB

Двоичные данные
web/static/images/emoji/abc.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.1 KiB

Двоичные данные
web/static/images/emoji/abcd.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.4 KiB

Двоичные данные
web/static/images/emoji/accept.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.6 KiB

Двоичные данные
web/static/images/emoji/aerial_tramway.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Двоичные данные
web/static/images/emoji/airplane.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.6 KiB

Двоичные данные
web/static/images/emoji/alarm_clock.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.9 KiB

Двоичные данные
web/static/images/emoji/alien.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.3 KiB

Двоичные данные
web/static/images/emoji/ambulance.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.6 KiB

Двоичные данные
web/static/images/emoji/anchor.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.4 KiB

Двоичные данные
web/static/images/emoji/angel.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.5 KiB

Двоичные данные
web/static/images/emoji/anger.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/angry.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Двоичные данные
web/static/images/emoji/anguished.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
web/static/images/emoji/ant.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.8 KiB

Двоичные данные
web/static/images/emoji/apple.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.5 KiB

Двоичные данные
web/static/images/emoji/aquarius.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
web/static/images/emoji/aries.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.2 KiB

Двоичные данные
web/static/images/emoji/arrow_backward.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/arrow_double_down.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/arrow_double_up.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.5 KiB

Двоичные данные
web/static/images/emoji/arrow_down.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.9 KiB

Двоичные данные
web/static/images/emoji/arrow_down_small.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.8 KiB

Двоичные данные
web/static/images/emoji/arrow_forward.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/arrow_heading_down.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Двоичные данные
web/static/images/emoji/arrow_heading_up.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Двоичные данные
web/static/images/emoji/arrow_left.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/arrow_lower_left.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.3 KiB

Двоичные данные
web/static/images/emoji/arrow_lower_right.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.3 KiB

Двоичные данные
web/static/images/emoji/arrow_right.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/arrow_right_hook.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.6 KiB

Двоичные данные
web/static/images/emoji/arrow_up.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/arrow_up_down.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.5 KiB

Двоичные данные
web/static/images/emoji/arrow_up_small.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/arrow_upper_left.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.2 KiB

Двоичные данные
web/static/images/emoji/arrow_upper_right.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.2 KiB

Двоичные данные
web/static/images/emoji/arrows_clockwise.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичные данные
web/static/images/emoji/arrows_counterclockwise.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.7 KiB

Двоичные данные
web/static/images/emoji/art.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.6 KiB

Двоичные данные
web/static/images/emoji/articulated_lorry.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.9 KiB

Двоичные данные
web/static/images/emoji/astonished.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.9 KiB

Двоичные данные
web/static/images/emoji/atm.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичные данные
web/static/images/emoji/b.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/baby.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.8 KiB

Двоичные данные
web/static/images/emoji/baby_bottle.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.4 KiB

Двоичные данные
web/static/images/emoji/baby_chick.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.9 KiB

Двоичные данные
web/static/images/emoji/baby_symbol.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.9 KiB

Двоичные данные
web/static/images/emoji/back.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.3 KiB

Двоичные данные
web/static/images/emoji/baggage_claim.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Двоичные данные
web/static/images/emoji/balloon.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.2 KiB

Двоичные данные
web/static/images/emoji/ballot_box_with_check.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.8 KiB

Двоичные данные
web/static/images/emoji/bamboo.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.6 KiB

Двоичные данные
web/static/images/emoji/banana.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.8 KiB

Двоичные данные
web/static/images/emoji/bangbang.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичные данные
web/static/images/emoji/bank.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.5 KiB

Двоичные данные
web/static/images/emoji/bar_chart.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.4 KiB

Двоичные данные
web/static/images/emoji/barber.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.2 KiB

Двоичные данные
web/static/images/emoji/baseball.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.9 KiB

Двоичные данные
web/static/images/emoji/basketball.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.2 KiB

Двоичные данные
web/static/images/emoji/bath.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичные данные
web/static/images/emoji/bathtub.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.7 KiB

Двоичные данные
web/static/images/emoji/battery.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.7 KiB

Двоичные данные
web/static/images/emoji/bear.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.4 KiB

Двоичные данные
web/static/images/emoji/bee.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.7 KiB

Двоичные данные
web/static/images/emoji/beer.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.0 KiB

Двоичные данные
web/static/images/emoji/beers.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.4 KiB

Двоичные данные
web/static/images/emoji/beetle.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.1 KiB

Двоичные данные
web/static/images/emoji/beginner.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.7 KiB

Двоичные данные
web/static/images/emoji/bell.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.7 KiB

Двоичные данные
web/static/images/emoji/bento.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.6 KiB

Двоичные данные
web/static/images/emoji/bicyclist.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.3 KiB

Двоичные данные
web/static/images/emoji/bike.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.6 KiB

Двоичные данные
web/static/images/emoji/bikini.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.8 KiB

Двоичные данные
web/static/images/emoji/bird.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.8 KiB

Двоичные данные
web/static/images/emoji/birthday.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.3 KiB

Двоичные данные
web/static/images/emoji/black_circle.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.3 KiB

Двоичные данные
web/static/images/emoji/black_joker.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.8 KiB

Двоичные данные
web/static/images/emoji/black_medium_small_square.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Двоичные данные
web/static/images/emoji/black_medium_square.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.9 KiB

Двоичные данные
web/static/images/emoji/black_nib.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.3 KiB

Двоичные данные
web/static/images/emoji/black_small_square.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
web/static/images/emoji/black_square.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.3 KiB

Двоичные данные
web/static/images/emoji/black_square_button.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.3 KiB

Двоичные данные
web/static/images/emoji/blossom.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.1 KiB

Двоичные данные
web/static/images/emoji/blowfish.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.6 KiB

Двоичные данные
web/static/images/emoji/blue_book.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
web/static/images/emoji/blue_car.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичные данные
web/static/images/emoji/blue_heart.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичные данные
web/static/images/emoji/blush.png Исполняемый файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.1 KiB

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше