diff --git a/android/app/build.gradle b/android/app/build.gradle
index e41b27d79..b3b313464 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -123,7 +123,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57_5"
- versionCode 236
+ versionCode 238
versionName "1.24.0"
multiDexEnabled = true
ndk {
diff --git a/app/components/file_attachment_list/__snapshots__/file_attachment.test.js.snap b/app/components/file_attachment_list/__snapshots__/file_attachment.test.js.snap
new file mode 100644
index 000000000..2e93e4b54
--- /dev/null
+++ b/app/components/file_attachment_list/__snapshots__/file_attachment.test.js.snap
@@ -0,0 +1,80 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`FileAttachment should match snapshot 1`] = `
+
+
+
+
+
+
+`;
diff --git a/app/components/file_attachment_list/file_attachment.js b/app/components/file_attachment_list/file_attachment.js
index 256eedf77..e7d0b8009 100644
--- a/app/components/file_attachment_list/file_attachment.js
+++ b/app/components/file_attachment_list/file_attachment.js
@@ -140,15 +140,14 @@ export default class FileAttachment extends PureComponent {
return (
{fileAttachmentComponent}
-
-
- {this.renderFileInfo()}
-
-
+
+ {this.renderFileInfo()}
+
);
}
diff --git a/app/components/file_attachment_list/file_attachment.test.js b/app/components/file_attachment_list/file_attachment.test.js
new file mode 100644
index 000000000..a138fd8da
--- /dev/null
+++ b/app/components/file_attachment_list/file_attachment.test.js
@@ -0,0 +1,45 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+import React from 'react';
+import {shallow} from 'enzyme';
+
+import FileAttachment from './file_attachment.js';
+import Preferences from 'mattermost-redux/constants/preferences';
+
+jest.mock('react-native-doc-viewer', () => ({
+ openDoc: jest.fn(),
+}));
+
+describe('FileAttachment', () => {
+ const baseProps = {
+ canDownloadFiles: true,
+ file: {
+ create_at: 1546893090093,
+ delete_at: 0,
+ extension: 'png',
+ has_preview_image: true,
+ height: 171,
+ id: 'fileId',
+ name: 'image.png',
+ post_id: 'postId',
+ size: 14894,
+ update_at: 1546893090093,
+ user_id: 'userId',
+ width: 425,
+ data: {
+ mime_type: 'image/png',
+ },
+ },
+ id: 'id',
+ index: 0,
+ theme: Preferences.THEMES.default,
+ };
+
+ test('should match snapshot', () => {
+ const wrapper = shallow(
+
+ );
+
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+});
diff --git a/app/components/markdown/markdown_table/markdown_table.js b/app/components/markdown/markdown_table/markdown_table.js
index f84573979..a288a1d3d 100644
--- a/app/components/markdown/markdown_table/markdown_table.js
+++ b/app/components/markdown/markdown_table/markdown_table.js
@@ -9,6 +9,7 @@ import {
View,
} from 'react-native';
import LinearGradient from 'react-native-linear-gradient';
+import Icon from 'react-native-vector-icons/FontAwesome';
import {CELL_WIDTH} from 'app/components/markdown/markdown_table_cell/markdown_table_cell';
@@ -107,7 +108,7 @@ export default class MarkdownTable extends React.PureComponent {
]}
start={{x: 0, y: 0}}
end={{x: 1, y: 0}}
- style={style.moreRight}
+ style={[style.moreRight, {height: this.state.contentHeight}]}
/>
);
}
@@ -120,13 +121,26 @@ export default class MarkdownTable extends React.PureComponent {
changeOpacity(this.props.theme.centerChannelColor, 0.0),
changeOpacity(this.props.theme.centerChannelColor, 0.1),
]}
- style={style.moreBelow}
+ style={[style.moreBelow, {width: this.getTableWidth()}]}
/>
);
}
+ const expandButton = (
+
+
+
+ );
+
return (
@@ -142,6 +156,7 @@ export default class MarkdownTable extends React.PureComponent {
{moreRight}
{moreBelow}
+ {expandButton}
);
}
@@ -155,26 +170,44 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => {
borderRightWidth: 1,
maxHeight: MAX_HEIGHT,
},
+ expandButton: {
+ height: 30,
+ width: 30,
+ borderWidth: 1,
+ paddingTop: 6,
+ paddingLeft: 7,
+ borderColor: changeOpacity(theme.centerChannelColor, 0.2),
+ borderRadius: 15,
+ bottom: 20,
+ backgroundColor: theme.centerChannelBg,
+ },
+ icon: {
+ fontSize: 15,
+ color: theme.linkColor,
+ },
table: {
borderColor: changeOpacity(theme.centerChannelColor, 0.2),
borderLeftWidth: 1,
borderTopWidth: 1,
},
+ tablePadding: {
+ paddingRight: 10,
+ },
tableExtraBorders: {
borderBottomWidth: 1,
borderRightWidth: 1,
},
moreBelow: {
- bottom: 0,
+ bottom: 30,
height: 20,
position: 'absolute',
- right: 0,
+ left: 0,
width: '100%',
},
moreRight: {
- height: '100%',
+ maxHeight: MAX_HEIGHT,
position: 'absolute',
- right: 0,
+ right: 10,
top: 0,
width: 20,
},
diff --git a/app/screens/channel/channel_nav_bar/channel_title/__snapshots__/channel_title.test.js.snap b/app/screens/channel/channel_nav_bar/channel_title/__snapshots__/channel_title.test.js.snap
index cda04d782..6e5502cc5 100644
--- a/app/screens/channel/channel_nav_bar/channel_title/__snapshots__/channel_title.test.js.snap
+++ b/app/screens/channel/channel_nav_bar/channel_title/__snapshots__/channel_title.test.js.snap
@@ -51,6 +51,133 @@ exports[`ChannelTitle should match snapshot 1`] = `
`;
+exports[`ChannelTitle should match snapshot when is DM and has guests and the teammate is the guest (when can show subtitles) 1`] = `
+
+
+
+ Other user
+
+
+
+
+
+
+
+`;
+
+exports[`ChannelTitle should match snapshot when is DM and has guests but the teammate is not the guest (when can show subtitles) 1`] = `
+
+
+
+ Other user
+
+
+
+
+`;
+
exports[`ChannelTitle should match snapshot when isSelfDMChannel is true 1`] = `
{
expect(wrapper.getElement()).toMatchSnapshot();
});
+
+ test('should match snapshot when is DM and has guests but the teammate is not the guest (when can show subtitles)', () => {
+ const props = {
+ ...baseProps,
+ displayName: 'Other user',
+ channelType: General.DM_CHANNEL,
+ isGuest: false,
+ hasGuests: true,
+ canHaveSubtitle: true,
+ };
+ const wrapper = shallow(
+ ,
+ {context: {intl: {formatMessage: (intlId) => intlId.defaultMessage}}},
+ );
+
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+
+ test('should match snapshot when is DM and has guests and the teammate is the guest (when can show subtitles)', () => {
+ const props = {
+ ...baseProps,
+ displayName: 'Other user',
+ channelType: General.DM_CHANNEL,
+ isGuest: true,
+ hasGuests: true,
+ canHaveSubtitle: true,
+ };
+ const wrapper = shallow(
+ ,
+ {context: {intl: {formatMessage: (intlId) => intlId.defaultMessage}}},
+ );
+
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
});
diff --git a/app/screens/channel_info/__snapshots__/channel_info.test.js.snap b/app/screens/channel_info/__snapshots__/channel_info.test.js.snap
index c2003eb01..5982e5be3 100644
--- a/app/screens/channel_info/__snapshots__/channel_info.test.js.snap
+++ b/app/screens/channel_info/__snapshots__/channel_info.test.js.snap
@@ -27,6 +27,7 @@ exports[`channel_info should match snapshot 1`] = `
isArchived={false}
isBot={false}
isGroupConstrained={false}
+ isTeammateGuest={false}
memberCount={2}
onPermalinkPress={[Function]}
purpose="Purpose"
diff --git a/app/screens/channel_info/__snapshots__/channel_info_header.test.js.snap b/app/screens/channel_info/__snapshots__/channel_info_header.test.js.snap
index 1c745ee44..d48b33ee5 100644
--- a/app/screens/channel_info/__snapshots__/channel_info_header.test.js.snap
+++ b/app/screens/channel_info/__snapshots__/channel_info_header.test.js.snap
@@ -209,10 +209,11 @@ exports[`channel_info_header should match snapshot 1`] = `
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
@@ -356,10 +357,11 @@ exports[`channel_info_header should match snapshot 1`] = `
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
@@ -408,7 +410,7 @@ exports[`channel_info_header should match snapshot 1`] = `
`;
-exports[`channel_info_header should match snapshot when DM and hasGuests 1`] = `
+exports[`channel_info_header should match snapshot when DM and hasGuests and is the teammate 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`channel_info_header should match snapshot when DM and hasGuests but its me and not the teammate 1`] = `
+
+
+
+
+
+ Channel name
+
+
+
+
+
+
0}
isGroupConstrained={currentChannel.group_constrained}
/>
diff --git a/app/screens/channel_info/channel_info.test.js b/app/screens/channel_info/channel_info.test.js
index 3aac0d3dc..9e431bc52 100644
--- a/app/screens/channel_info/channel_info.test.js
+++ b/app/screens/channel_info/channel_info.test.js
@@ -60,6 +60,7 @@ describe('channel_info', () => {
status: 'status',
theme: Preferences.THEMES.default,
isBot: false,
+ isTeammateGuest: false,
isLandscape: false,
actions: {
clearPinnedPosts: jest.fn(),
diff --git a/app/screens/channel_info/channel_info_header.js b/app/screens/channel_info/channel_info_header.js
index 9389822eb..e77f874d2 100644
--- a/app/screens/channel_info/channel_info_header.js
+++ b/app/screens/channel_info/channel_info_header.js
@@ -40,6 +40,7 @@ export default class ChannelInfoHeader extends React.PureComponent {
type: PropTypes.string.isRequired,
isArchived: PropTypes.bool.isRequired,
isBot: PropTypes.bool.isRequired,
+ isTeammateGuest: PropTypes.bool.isRequired,
hasGuests: PropTypes.bool.isRequired,
isGroupConstrained: PropTypes.bool,
timeZone: PropTypes.string,
@@ -50,10 +51,13 @@ export default class ChannelInfoHeader extends React.PureComponent {
};
renderHasGuestText = (style) => {
- const {type, hasGuests} = this.props;
+ const {type, hasGuests, isTeammateGuest} = this.props;
if (!hasGuests) {
return null;
}
+ if (type === General.DM_CHANNEL && !isTeammateGuest) {
+ return null;
+ }
let messageId;
let defaultMessage;
diff --git a/app/screens/channel_info/channel_info_header.test.js b/app/screens/channel_info/channel_info_header.test.js
index 82456fa30..c865d1b3f 100644
--- a/app/screens/channel_info/channel_info_header.test.js
+++ b/app/screens/channel_info/channel_info_header.test.js
@@ -40,6 +40,7 @@ describe('channel_info_header', () => {
type: General.OPEN_CHANNEL,
isArchived: false,
isBot: false,
+ isTeammateGuest: false,
hasGuests: false,
isGroupConstrained: false,
};
@@ -76,12 +77,26 @@ describe('channel_info_header', () => {
expect(wrapper.getElement()).toMatchSnapshot();
});
- test('should match snapshot when DM and hasGuests', async () => {
+ test('should match snapshot when DM and hasGuests but its me and not the teammate', async () => {
const wrapper = shallow(
,
+ {context: {intl: intlMock}},
+ );
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+
+ test('should match snapshot when DM and hasGuests and is the teammate', async () => {
+ const wrapper = shallow(
+ ,
{context: {intl: intlMock}},
);
diff --git a/app/screens/channel_info/index.js b/app/screens/channel_info/index.js
index 03cfd499f..f59603e0e 100644
--- a/app/screens/channel_info/index.js
+++ b/app/screens/channel_info/index.js
@@ -71,6 +71,7 @@ function mapStateToProps(state) {
let status;
let isBot = false;
+ let isTeammateGuest = false;
if (currentChannel.type === General.DM_CHANNEL) {
const teammateId = getUserIdFromChannelName(currentUserId, currentChannel.name);
const teammate = getUser(state, teammateId);
@@ -79,6 +80,7 @@ function mapStateToProps(state) {
isBot = true;
}
if (isGuest(teammate)) {
+ isTeammateGuest = true;
currentChannelGuestCount = 1;
}
}
@@ -116,6 +118,7 @@ function mapStateToProps(state) {
theme: getTheme(state),
canManageUsers,
isBot,
+ isTeammateGuest,
isLandscape: isLandscape(state),
timeZone,
};
diff --git a/app/screens/interactive_dialog/__snapshots__/dialog_introduction_text.test.js.snap b/app/screens/interactive_dialog/__snapshots__/dialog_introduction_text.test.js.snap
index 261557971..fba0ce2bd 100644
--- a/app/screens/interactive_dialog/__snapshots__/dialog_introduction_text.test.js.snap
+++ b/app/screens/interactive_dialog/__snapshots__/dialog_introduction_text.test.js.snap
@@ -109,10 +109,11 @@ exports[`DialogIntroductionText should render the introduction text correctly 1`
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
diff --git a/app/screens/search/search.js b/app/screens/search/search.js
index 91b566181..288b57eb3 100644
--- a/app/screens/search/search.js
+++ b/app/screens/search/search.js
@@ -109,7 +109,7 @@ export default class Search extends PureComponent {
}
setTimeout(() => {
- if (this.refs.searchBar) {
+ if (this.refs.searchBar && !this.props.initialValue) {
this.refs.searchBar.focus();
}
}, 150);
@@ -840,4 +840,3 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme) => {
},
};
});
-
diff --git a/app/screens/settings/notification_settings_mentions_keywords/__snapshots__/notification_settings_mentions_keywords.test.js.snap b/app/screens/settings/notification_settings_mentions_keywords/__snapshots__/notification_settings_mentions_keywords.test.js.snap
index defd9275c..fecf1832a 100644
--- a/app/screens/settings/notification_settings_mentions_keywords/__snapshots__/notification_settings_mentions_keywords.test.js.snap
+++ b/app/screens/settings/notification_settings_mentions_keywords/__snapshots__/notification_settings_mentions_keywords.test.js.snap
@@ -209,6 +209,7 @@ NotificationSettingsMentionsKeywords {
"color": "#3d3c40",
"fontSize": 15,
"height": 150,
+ "paddingHorizontal": 15,
"paddingVertical": 10,
},
null,
diff --git a/app/screens/settings/notification_settings_mentions_keywords/notification_settings_mentions_keywords.js b/app/screens/settings/notification_settings_mentions_keywords/notification_settings_mentions_keywords.js
index 3a6601f99..90e3c4549 100644
--- a/app/screens/settings/notification_settings_mentions_keywords/notification_settings_mentions_keywords.js
+++ b/app/screens/settings/notification_settings_mentions_keywords/notification_settings_mentions_keywords.js
@@ -127,6 +127,7 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => {
fontSize: 15,
height: 150,
paddingVertical: 10,
+ paddingHorizontal: 15,
},
helpContainer: {
marginTop: 10,
diff --git a/app/screens/terms_of_service/__snapshots__/terms_of_service.test.js.snap b/app/screens/terms_of_service/__snapshots__/terms_of_service.test.js.snap
index cbd59ede8..324248811 100644
--- a/app/screens/terms_of_service/__snapshots__/terms_of_service.test.js.snap
+++ b/app/screens/terms_of_service/__snapshots__/terms_of_service.test.js.snap
@@ -115,10 +115,11 @@ exports[`TermsOfService should enable/disable navigator buttons on setNavigatorB
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
@@ -249,10 +250,11 @@ exports[`TermsOfService should enable/disable navigator buttons on setNavigatorB
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
@@ -447,10 +449,11 @@ exports[`TermsOfService should match snapshot on enableNavigatorLogout 1`] = `
"color": "#2389d7",
},
"mention": Object {
- "color": "#2389d7",
+ "color": "#166de0",
},
"mention_highlight": Object {
"backgroundColor": "#ffe577",
+ "color": "#166de0",
},
"strong": Object {
"fontWeight": "bold",
diff --git a/app/utils/markdown.js b/app/utils/markdown.js
index ac2baae84..50f002aeb 100644
--- a/app/utils/markdown.js
+++ b/app/utils/markdown.js
@@ -81,7 +81,7 @@ export const getMarkdownTextStyles = makeStyleSheetFromTheme((theme) => {
fontFamily: codeFont,
},
mention: {
- color: theme.linkColor,
+ color: theme.mentionHighlightLink,
},
error: {
color: theme.errorTextColor,
@@ -91,6 +91,7 @@ export const getMarkdownTextStyles = makeStyleSheetFromTheme((theme) => {
},
mention_highlight: {
backgroundColor: theme.mentionHighlightBg,
+ color: theme.mentionHighlightLink,
},
};
});
diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj
index eddc1fc0f..cffbebf3f 100644
--- a/ios/Mattermost.xcodeproj/project.pbxproj
+++ b/ios/Mattermost.xcodeproj/project.pbxproj
@@ -2856,7 +2856,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CURRENT_PROJECT_VERSION = 236;
+ CURRENT_PROJECT_VERSION = 238;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;
@@ -2917,7 +2917,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CURRENT_PROJECT_VERSION = 236;
+ CURRENT_PROJECT_VERSION = 238;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;
diff --git a/ios/Mattermost/Info.plist b/ios/Mattermost/Info.plist
index 6f8e32fcb..518277cf6 100644
--- a/ios/Mattermost/Info.plist
+++ b/ios/Mattermost/Info.plist
@@ -34,7 +34,7 @@
CFBundleVersion
- 236
+ 238
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/ios/MattermostShare/Info.plist b/ios/MattermostShare/Info.plist
index 037b0b60e..9b9ffcd1b 100644
--- a/ios/MattermostShare/Info.plist
+++ b/ios/MattermostShare/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
1.24.0
CFBundleVersion
- 236
+ 238
NSAppTransportSecurity
NSAllowsArbitraryLoads
diff --git a/ios/MattermostTests/Info.plist b/ios/MattermostTests/Info.plist
index 5aba5d2c3..1553e2ccc 100644
--- a/ios/MattermostTests/Info.plist
+++ b/ios/MattermostTests/Info.plist
@@ -19,6 +19,6 @@
CFBundleSignature
????
CFBundleVersion
- 236
+ 238
diff --git a/ios/NotificationService/Info.plist b/ios/NotificationService/Info.plist
index be47a6a67..1a5d8a77b 100644
--- a/ios/NotificationService/Info.plist
+++ b/ios/NotificationService/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
1.24.0
CFBundleVersion
- 236
+ 238
NSExtension
NSExtensionPointIdentifier
diff --git a/package-lock.json b/package-lock.json
index 015aaed3a..84eb7af0e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5541,6 +5541,21 @@
}
}
},
+ "character-entities": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz",
+ "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w=="
+ },
+ "character-entities-legacy": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz",
+ "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww=="
+ },
+ "character-reference-invalid": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz",
+ "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg=="
+ },
"chardet": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
@@ -5758,6 +5773,17 @@
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
},
+ "clipboard": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz",
+ "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==",
+ "optional": true,
+ "requires": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
@@ -5840,6 +5866,11 @@
"delayed-stream": "~1.0.0"
}
},
+ "comma-separated-tokens": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.7.tgz",
+ "integrity": "sha512-Jrx3xsP4pPv4AwJUDWY9wOXGtwPXARej6Xd99h4TUGotmf8APuquKMpK+dnD3UgyxK7OEWaisjZz+3b5jtL6xQ=="
+ },
"commander": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
@@ -6312,6 +6343,12 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
+ "delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "optional": true
+ },
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
@@ -7524,6 +7561,14 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
+ "fault": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.3.tgz",
+ "integrity": "sha512-sfFuP4X0hzrbGKjAUNXYvNqsZ5F6ohx/dZ9I0KQud/aiZNwg263r5L9yGB0clvXHCkzXh5W3t7RSHchggYIFmA==",
+ "requires": {
+ "format": "^0.2.2"
+ }
+ },
"fb-watchman": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
@@ -8378,6 +8423,11 @@
"mime-types": "^2.1.12"
}
},
+ "format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
+ },
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
@@ -9132,6 +9182,15 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
"integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg=="
},
+ "good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+ "optional": true,
+ "requires": {
+ "delegate": "^3.1.2"
+ }
+ },
"got": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
@@ -9170,9 +9229,9 @@
"integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
},
"handlebars": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
- "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz",
+ "integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==",
"dev": true,
"requires": {
"neo-async": "^2.6.0",
@@ -9195,13 +9254,13 @@
"dev": true
},
"uglify-js": {
- "version": "3.5.10",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz",
- "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz",
+ "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==",
"dev": true,
"optional": true,
"requires": {
- "commander": "~2.20.0",
+ "commander": "2.20.0",
"source-map": "~0.6.1"
}
}
@@ -9324,6 +9383,27 @@
"is-stream": "^1.0.1"
}
},
+ "hast-util-parse-selector": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.2.tgz",
+ "integrity": "sha512-jIMtnzrLTjzqgVEQqPEmwEZV+ea4zHRFTP8Z2Utw0I5HuBOXHzUPPQWr6ouJdJqDKLbFU/OEiYwZ79LalZkmmw=="
+ },
+ "hastscript": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.0.tgz",
+ "integrity": "sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ==",
+ "requires": {
+ "comma-separated-tokens": "^1.0.0",
+ "hast-util-parse-selector": "^2.2.0",
+ "property-information": "^5.0.1",
+ "space-separated-tokens": "^1.0.0"
+ }
+ },
+ "highlight.js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
+ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
+ },
"hoist-non-react-statics": {
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
@@ -9682,6 +9762,20 @@
}
}
},
+ "is-alphabetical": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz",
+ "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA=="
+ },
+ "is-alphanumerical": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz",
+ "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==",
+ "requires": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -9755,6 +9849,11 @@
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
"dev": true
},
+ "is-decimal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz",
+ "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ=="
+ },
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -9819,6 +9918,11 @@
"is-extglob": "^1.0.0"
}
},
+ "is-hexadecimal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz",
+ "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA=="
+ },
"is-installed-globally": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
@@ -13974,6 +14078,15 @@
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true
},
+ "lowlight": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz",
+ "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==",
+ "requires": {
+ "fault": "^1.0.2",
+ "highlight.js": "~9.12.0"
+ }
+ },
"lru-cache": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
@@ -14941,9 +15054,9 @@
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"neo-async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
- "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
"dev": true
},
"nested-error-stacks": {
@@ -15723,6 +15836,19 @@
}
}
},
+ "parse-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
+ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
+ "requires": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
"parse-glob": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
@@ -16056,6 +16182,14 @@
}
}
},
+ "prismjs": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
+ "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
+ "requires": {
+ "clipboard": "^2.0.0"
+ }
+ },
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -16134,6 +16268,14 @@
"retry": "^0.10.0"
}
},
+ "property-information": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.3.0.tgz",
+ "integrity": "sha512-IslotQn1hBCZDY7SaJ3zmCjVea219VTwmOk6Pu3z9haU9m4+T8GwaDubur+6NMHEU+Fjs/6/p66z6QULPkcL1w==",
+ "requires": {
+ "xtend": "^4.0.1"
+ }
+ },
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
@@ -16519,6 +16661,16 @@
"resolved": "https://registry.npmjs.org/react-native-exception-handler/-/react-native-exception-handler-2.10.7.tgz",
"integrity": "sha512-e2zv0BiP9SRdr1vLDUyC2WbWHfgNV1a3BhRxK1ENjXVRY8mu+dfaaIHhFXdvYue//MEuGUQstu61NZoiO1u2KA=="
},
+ "react-native-gesture-handler": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.3.0.tgz",
+ "integrity": "sha512-ASRFIXBuKRvqlmwkWJhV8yP2dTpvcqVrLNpd7FKVBFHYWr6SAxjGyO9Ik8w1lAxDhMlRP2IcJ9p9eq5X2WWeLQ==",
+ "requires": {
+ "hoist-non-react-statics": "^2.3.1",
+ "invariant": "^2.2.2",
+ "prop-types": "^15.5.10"
+ }
+ },
"react-native-haptic-feedback": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-1.8.2.tgz",
@@ -16675,6 +16827,14 @@
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.4.0.tgz",
"integrity": "sha512-IVJlVbS2dAPerPr927fEi4uXzrPXzlra5ddgyJXZZ2IKA2ZygyYWFZDM+vsQs+Vj20CfL8nOWszQQV57vdQgFg=="
},
+ "react-native-syntax-highlighter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/react-native-syntax-highlighter/-/react-native-syntax-highlighter-2.1.0.tgz",
+ "integrity": "sha512-upu8gpKT2ZeslXn2d763KwtzzhM9OUHGgJjIKKIUw1JnFAzVwQmKCaFGoI6PkQa7T1LVggBW5k5VoaLFhZDb+g==",
+ "requires": {
+ "react-syntax-highlighter": "^6.0.4"
+ }
+ },
"react-native-tab-view": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-1.3.5.tgz",
@@ -16975,6 +17135,18 @@
}
}
},
+ "react-syntax-highlighter": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-6.1.2.tgz",
+ "integrity": "sha512-ahNwcZ0FhUd8U5TQYcmAqC/pec6Q308mUAATKMcLFmNYkvGhN9wfmoqxzjACcccGb2e85d5ZnGpOiCIIzGO3yA==",
+ "requires": {
+ "babel-runtime": "^6.18.0",
+ "highlight.js": "~9.12.0",
+ "lowlight": "~1.9.1",
+ "prismjs": "^1.8.4",
+ "refractor": "^2.0.0"
+ }
+ },
"react-test-renderer": {
"version": "16.8.6",
"resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.6.tgz",
@@ -17473,6 +17645,16 @@
"integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=",
"dev": true
},
+ "refractor": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.0.tgz",
+ "integrity": "sha512-maW2ClIkm9IYruuFYGTqKzj+m31heq92wlheW4h7bOstP+gf8bocmMec+j7ljLcaB1CAID85LMB3moye31jH1g==",
+ "requires": {
+ "hastscript": "^5.0.0",
+ "parse-entities": "^1.1.2",
+ "prismjs": "~1.17.0"
+ }
+ },
"regenerate": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
@@ -18292,6 +18474,12 @@
"object-assign": "^4.1.1"
}
},
+ "select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
+ "optional": true
+ },
"semver": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
@@ -18851,6 +19039,11 @@
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
},
+ "space-separated-tokens": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz",
+ "integrity": "sha512-UyhMSmeIqZrQn2UdjYpxEkwY9JUrn8pP+7L4f91zRzOQuI8MF1FGLfYU9DKCYeLdo7LXMxwrX5zKFy7eeeVHuA=="
+ },
"spawn-wrap": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz",
@@ -19363,6 +19556,12 @@
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
+ "tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
+ "optional": true
+ },
"tinycolor2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",