diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js
index eb8dd7dc8..ac336bfbb 100644
--- a/app/javascript/mastodon/components/button.js
+++ b/app/javascript/mastodon/components/button.js
@@ -1,6 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
+import Tooltip from 'mastodon/components/tooltip';
export default class Button extends React.PureComponent {
@@ -49,16 +50,17 @@ export default class Button extends React.PureComponent {
});
return (
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/components/icon.js b/app/javascript/mastodon/components/icon.js
index d8a17722f..073bd17cf 100644
--- a/app/javascript/mastodon/components/icon.js
+++ b/app/javascript/mastodon/components/icon.js
@@ -1,20 +1,24 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
+import Tooltip from 'mastodon/components/tooltip';
export default class Icon extends React.PureComponent {
static propTypes = {
id: PropTypes.string.isRequired,
className: PropTypes.string,
+ title: PropTypes.node,
fixedWidth: PropTypes.bool,
};
render () {
- const { id, className, fixedWidth, ...other } = this.props;
+ const { id, className, fixedWidth, title, ...other } = this.props;
return (
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js
index fd715bc3c..d56d117b4 100644
--- a/app/javascript/mastodon/components/icon_button.js
+++ b/app/javascript/mastodon/components/icon_button.js
@@ -2,6 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import Icon from 'mastodon/components/icon';
+import Tooltip from 'mastodon/components/tooltip';
export default class IconButton extends React.PureComponent {
@@ -114,22 +115,23 @@ export default class IconButton extends React.PureComponent {
});
return (
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.js
index a31de206b..93c8e2abe 100644
--- a/app/javascript/mastodon/components/media_gallery.js
+++ b/app/javascript/mastodon/components/media_gallery.js
@@ -8,6 +8,7 @@ import { isIOS } from '../is_mobile';
import classNames from 'classnames';
import { autoPlayGif, cropImages, displayMedia, useBlurhash } from '../initial_state';
import { decode } from 'blurhash';
+import Tooltip from 'mastodon/components/tooltip';
const messages = defineMessages({
toggle_visible: { id: 'media_gallery.toggle_visible',
@@ -165,9 +166,11 @@ class Item extends React.PureComponent {
if (attachment.get('type') === 'unknown') {
return (
);
} else if (attachment.get('type') === 'image') {
@@ -188,42 +191,44 @@ class Item extends React.PureComponent {
const y = ((focusY / -2) + .5) * 100;
thumbnail = (
-
-
-
+
+
+
+
+
);
} else if (attachment.get('type') === 'gifv') {
const autoPlay = !isIOS() && this.getAutoPlay();
thumbnail = (
-
+
+
+
GIF
diff --git a/app/javascript/mastodon/components/permalink.js b/app/javascript/mastodon/components/permalink.js
index b369e9812..4e4841988 100644
--- a/app/javascript/mastodon/components/permalink.js
+++ b/app/javascript/mastodon/components/permalink.js
@@ -1,5 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
+import Tooltip from 'mastodon/components/tooltip';
export default class Permalink extends React.PureComponent {
@@ -28,12 +29,14 @@ export default class Permalink extends React.PureComponent {
}
render () {
- const { href, children, className, onInterceptClick, ...other } = this.props;
+ const { href, children, className, onInterceptClick, title, ...other } = this.props;
return (
-
- {children}
-
+
+
+ {children}
+
+
);
}
diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.js
index 711181dcd..4c2fca1bb 100644
--- a/app/javascript/mastodon/components/relative_timestamp.js
+++ b/app/javascript/mastodon/components/relative_timestamp.js
@@ -1,6 +1,7 @@
import React from 'react';
import { injectIntl, defineMessages } from 'react-intl';
import PropTypes from 'prop-types';
+import Tooltip from 'mastodon/components/tooltip';
const messages = defineMessages({
today: { id: 'relative_time.today', defaultMessage: 'today' },
@@ -181,11 +182,14 @@ class RelativeTimestamp extends React.Component {
const timeGiven = timestamp.includes('T');
const date = new Date(timestamp);
const relativeTime = futureDate ? timeRemainingString(intl, date, this.state.now, timeGiven) : timeAgoString(intl, date, this.state.now, year, timeGiven);
+ const formatted = intl.formatDate(date, dateFormatOptions);
return (
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index f99ccd39a..e94df4c27 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -16,6 +16,7 @@ import { MediaGallery, Video, Audio } from '../features/ui/util/async-components
import { HotKeys } from 'react-hotkeys';
import classNames from 'classnames';
import Icon from 'mastodon/components/icon';
+import Tooltip from 'mastodon/components/tooltip';
import { displayMedia } from '../initial_state';
// We use the component (and not the container) since we do not want
@@ -424,13 +425,15 @@ class Status extends ImmutablePureComponent {
diff --git a/app/javascript/mastodon/components/tooltip.js b/app/javascript/mastodon/components/tooltip.js
new file mode 100644
index 000000000..16f3e78aa
--- /dev/null
+++ b/app/javascript/mastodon/components/tooltip.js
@@ -0,0 +1,22 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import Tooltip from 'rc-tooltip';
+
+const OptionalTooltip = ({ overlay, children, ...other }) => {
+ if (overlay) {
+ return (
+
+ {children}
+
+ );
+ } else {
+ return children;
+ }
+};
+
+OptionalTooltip.propTypes = {
+ children: PropTypes.node,
+ overlay: PropTypes.node,
+};
+
+export default OptionalTooltip;
diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js
index 8c85bbc39..9775fac84 100644
--- a/app/javascript/mastodon/features/account/components/header.js
+++ b/app/javascript/mastodon/features/account/components/header.js
@@ -11,6 +11,7 @@ import Avatar from 'mastodon/components/avatar';
import { shortNumberFormat } from 'mastodon/utils/numbers';
import { NavLink } from 'react-router-dom';
import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';
+import Tooltip from 'mastodon/components/tooltip';
const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
@@ -293,19 +294,34 @@ class Header extends ImmutablePureComponent {
-
-
-
+
+
+
+
+
+
))}
{fields.map((pair, i) => (
-
+ -
+
+
+
+
- -
- {pair.get('verified_at') && }
+
-
+ {pair.get('verified_at') && (
+
+
+
+ )}
+ {' '}
+
+
+
))}
@@ -316,17 +332,23 @@ class Header extends ImmutablePureComponent {
-
- {shortNumberFormat(account.get('statuses_count'))}
-
+
+
+ {shortNumberFormat(account.get('statuses_count'))}
+
+
-
- {shortNumberFormat(account.get('following_count'))}
-
+
+
+ {shortNumberFormat(account.get('following_count'))}
+
+
-
- {shortNumberFormat(account.get('followers_count'))}
-
+
+
+ {shortNumberFormat(account.get('followers_count'))}
+
+
diff --git a/app/javascript/mastodon/features/compose/components/autosuggest_account.js b/app/javascript/mastodon/features/compose/components/autosuggest_account.js
index 1451be0e6..b144a2c3b 100644
--- a/app/javascript/mastodon/features/compose/components/autosuggest_account.js
+++ b/app/javascript/mastodon/features/compose/components/autosuggest_account.js
@@ -3,6 +3,7 @@ import Avatar from '../../../components/avatar';
import DisplayName from '../../../components/display_name';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
+import Tooltip from 'mastodon/components/tooltip';
export default class AutosuggestAccount extends ImmutablePureComponent {
@@ -14,10 +15,12 @@ export default class AutosuggestAccount extends ImmutablePureComponent {
const { account } = this.props;
return (
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
index a6186010b..ed61c904f 100644
--- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
@@ -7,6 +7,7 @@ import classNames from 'classnames';
import ImmutablePropTypes from 'react-immutable-proptypes';
import detectPassiveEvents from 'detect-passive-events';
import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji';
+import Tooltip from 'mastodon/components/tooltip';
const messages = defineMessages({
emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },
@@ -358,13 +359,15 @@ class EmojiPickerDropdown extends React.PureComponent {
return (
-
- {button ||
}
-
+
+
+ {button ||
}
+
+
- {label}
-
+
+
+
);
}
diff --git a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
index 7073f76c2..bd83a034b 100644
--- a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
+++ b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
import classNames from 'classnames';
import { changeComposeSensitivity } from 'mastodon/actions/compose';
import { injectIntl, defineMessages, FormattedMessage } from 'react-intl';
+import Tooltip from 'mastodon/components/tooltip';
const messages = defineMessages({
marked: { id: 'compose_form.sensitive.marked', defaultMessage: 'Media is marked as sensitive' },
@@ -37,19 +38,21 @@ class SensitiveButton extends React.PureComponent {
return (
-
+
);
}
diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js
index e2de8b0e6..133e15f41 100644
--- a/app/javascript/mastodon/features/compose/index.js
+++ b/app/javascript/mastodon/features/compose/index.js
@@ -16,6 +16,7 @@ import { openModal } from 'mastodon/actions/modal';
import elephantUIPlane from '../../../images/elephant_ui_plane.svg';
import { mascot } from '../../initial_state';
import Icon from 'mastodon/components/icon';
+import Tooltip from 'mastodon/components/tooltip';
import { logOut } from 'mastodon/utils/log_out';
const messages = defineMessages({
@@ -97,21 +98,55 @@ class Compose extends React.PureComponent {
const { columns } = this.props;
header = (
);
}
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index 8ebc45b62..03f23cfcf 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -24,5 +24,6 @@
@import 'mastodon/tables';
@import 'mastodon/admin';
@import 'mastodon/dashboard';
+@import 'mastodon/tooltips';
@import 'mastodon/rtl';
@import 'mastodon/accessibility';
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 5d725b908..340537dae 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1076,8 +1076,7 @@
}
.status__info .status__display-name {
- display: block;
- max-width: 100%;
+ display: inline-flex;
padding-right: 25px;
}
diff --git a/app/javascript/styles/mastodon/tooltips.scss b/app/javascript/styles/mastodon/tooltips.scss
new file mode 100644
index 000000000..84eca211c
--- /dev/null
+++ b/app/javascript/styles/mastodon/tooltips.scss
@@ -0,0 +1,233 @@
+//
+// Tooltips
+// --------------------------------------------------
+$font-size-base: 14px;
+$line-height-base: 1.5;
+$border-radius-base: 5px;
+$overlay-shadow: 0 0 4px rgba(0, 0, 0, 0.17);
+//** Tooltip text color
+$tooltip-color: #fff;
+//** Tooltip background color
+$tooltip-bg: #000;
+$tooltip-opacity: 0.9;
+
+//** Tooltip arrow width
+$tooltip-arrow-width: 5px;
+//** Tooltip distance with trigger
+$tooltip-distance: $tooltip-arrow-width + 4;
+//** Tooltip arrow color
+$tooltip-arrow-color: $tooltip-bg;
+
+// Base class
+.rc-tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ visibility: visible;
+ // remove left/top by yiminghe
+ // left: -9999px;
+ // top: -9999px;
+ font-size: $font-size-base;
+ line-height: $line-height-base;
+ font-weight: 500;
+ opacity: $tooltip-opacity;
+ will-change: opacity, transform;
+ pointer-events: none;
+
+ &-hidden {
+ display: none;
+ }
+
+ &-placement-top, &-placement-topLeft, &-placement-topRight {
+ padding: $tooltip-arrow-width 0 $tooltip-distance 0;
+ }
+ &-placement-right, &-placement-rightTop, &-placement-rightBottom {
+ padding: 0 $tooltip-arrow-width 0 $tooltip-distance;
+ }
+ &-placement-bottom, &-placement-bottomLeft, &-placement-bottomRight {
+ padding: $tooltip-distance 0 $tooltip-arrow-width 0;
+ }
+ &-placement-left, &-placement-leftTop, &-placement-leftBottom {
+ padding: 0 $tooltip-distance 0 $tooltip-arrow-width;
+ }
+}
+
+// Wrapper for the tooltip content
+.rc-tooltip-inner {
+ padding: 8px 12px;
+ color: $tooltip-color;
+ text-align: left;
+ text-decoration: none;
+ background-color: $tooltip-bg;
+ border-radius: $border-radius-base;
+ box-shadow: $overlay-shadow;
+ max-width: 290px;
+ box-sizing: border-box;
+ min-height: 34px;
+}
+
+// Arrows
+.rc-tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.rc-tooltip {
+ &-placement-top &-arrow,
+ &-placement-topLeft &-arrow,
+ &-placement-topRight &-arrow {
+ bottom: $tooltip-distance - $tooltip-arrow-width;
+ margin-left: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+ border-top-color: $tooltip-arrow-color;
+ }
+
+ &-placement-top &-arrow {
+ left: 50%;
+ }
+
+ &-placement-topLeft &-arrow {
+ left: 15%;
+ }
+
+ &-placement-topRight &-arrow {
+ right: 15%;
+ }
+
+ &-placement-right &-arrow,
+ &-placement-rightTop &-arrow,
+ &-placement-rightBottom &-arrow {
+ left: $tooltip-distance - $tooltip-arrow-width;
+ margin-top: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
+ border-right-color: $tooltip-arrow-color;
+ }
+
+ &-placement-right &-arrow {
+ top: 50%;
+ }
+
+ &-placement-rightTop &-arrow {
+ top: 15%;
+ margin-top: 0;
+ }
+
+ &-placement-rightBottom &-arrow {
+ bottom: 15%;
+ }
+
+ &-placement-left &-arrow,
+ &-placement-leftTop &-arrow,
+ &-placement-leftBottom &-arrow {
+ right: $tooltip-distance - $tooltip-arrow-width;
+ margin-top: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
+ border-left-color: $tooltip-arrow-color;
+ }
+
+ &-placement-left &-arrow {
+ top: 50%;
+ }
+
+ &-placement-leftTop &-arrow {
+ top: 15%;
+ margin-top: 0;
+ }
+
+ &-placement-leftBottom &-arrow {
+ bottom: 15%;
+ }
+
+ &-placement-bottom &-arrow,
+ &-placement-bottomLeft &-arrow,
+ &-placement-bottomRight &-arrow {
+ top: $tooltip-distance - $tooltip-arrow-width;
+ margin-left: -$tooltip-arrow-width;
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+ border-bottom-color: $tooltip-arrow-color;
+ }
+
+ &-placement-bottom &-arrow {
+ left: 50%;
+ }
+
+ &-placement-bottomLeft &-arrow {
+ left: 15%;
+ }
+
+ &-placement-bottomRight &-arrow {
+ right: 15%;
+ }
+
+ @mixin effect(){
+ animation-duration: 50ms;
+ animation-fill-mode: both;
+ }
+
+ & {
+ &-zoom-enter,
+ &-zoom-leave {
+ display: block;
+ }
+ }
+
+ &-zoom-enter,
+ &-zoom-appear {
+ opacity: 0;
+ @include effect();
+ animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28);
+ animation-play-state: paused;
+ }
+
+ &-zoom-leave {
+ @include effect();
+ animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05);
+ animation-play-state: paused;
+ }
+
+ &-zoom-enter,
+ &-zoom-appear {
+ &-active {
+ animation-name: rcToolTipZoomIn;
+ animation-play-state: running;
+ }
+ }
+
+ &-zoom-leave {
+ &-active {
+ animation-name: rcToolTipZoomOut;
+ animation-play-state: running;
+ }
+ }
+
+ @keyframes rcToolTipZoomIn {
+ 0% {
+ opacity: 0;
+ transform-origin: 50% 50%;
+ transform: scale(0, 0);
+ }
+
+ 100% {
+ opacity: 1;
+ transform-origin: 50% 50%;
+ transform: scale(1, 1);
+ }
+ }
+
+ @keyframes rcToolTipZoomOut {
+ 0% {
+ opacity: 1;
+ transform-origin: 50% 50%;
+ transform: scale(1, 1);
+ }
+
+ 100% {
+ opacity: 0;
+ transform-origin: 50% 50%;
+ transform: scale(0, 0);
+ }
+ }
+}
diff --git a/package.json b/package.json
index 65be5a041..9b162677d 100644
--- a/package.json
+++ b/package.json
@@ -124,6 +124,7 @@
"promise.prototype.finally": "^3.1.2",
"prop-types": "^15.5.10",
"punycode": "^2.1.0",
+ "rc-tooltip": "^4.2.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-hotkeys": "^1.1.4",
diff --git a/yarn.lock b/yarn.lock
index 06b9c5b18..73e8fb805 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@ant-design/css-animation@^1.7.2":
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.2.tgz#4ee5d2ec0fb7cc0a78b44e1c82628bd4621ac7e3"
+ integrity sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw==
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1":
version "7.10.1"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff"
@@ -988,7 +993,7 @@
dependencies:
regenerator-runtime "^0.12.0"
-"@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.10.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839"
integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==
@@ -2840,7 +2845,7 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-classnames@^2.2.5:
+classnames@2.x, classnames@^2.2.5, classnames@^2.2.6:
version "2.2.6"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
@@ -3744,6 +3749,11 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dom-align@^1.7.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c"
+ integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==
+
dom-helpers@^3.2.1, dom-helpers@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
@@ -8769,7 +8779,7 @@ quote@^0.4.0:
resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01"
integrity sha1-EIOSF/bBNiuJGUBE0psjP9fzLwE=
-raf@^3.1.0, raf@^3.4.1:
+raf@^3.1.0, raf@^3.4.0, raf@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
@@ -8819,6 +8829,54 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
+rc-align@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.0.tgz#7a5b212051bdd840b406a6ad547076534a843691"
+ integrity sha512-0mKKfiZGo7VNiRCmnI4MTOG72pBFF0H08zebqcJyXcAm2hgAqTUtvt4I0pjMHh1WdYg+iQDjowpB5X8mZTN2vw==
+ dependencies:
+ "@babel/runtime" "^7.10.1"
+ classnames "2.x"
+ dom-align "^1.7.0"
+ rc-util "^5.0.1"
+ resize-observer-polyfill "^1.5.1"
+
+rc-animate@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa"
+ integrity sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw==
+ dependencies:
+ "@ant-design/css-animation" "^1.7.2"
+ classnames "^2.2.6"
+ raf "^3.4.0"
+ rc-util "^5.0.1"
+
+rc-tooltip@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-4.2.1.tgz#c1a2d5017ee03a771a9301c0dfdb46dfdf8fef94"
+ integrity sha512-oykuaGsHg7RFvPUaxUpxo7ScEqtH61C66x4JUmjlFlSS8gSx2L8JFtfwM1D68SLBxUqGqJObtxj4TED75gQTiA==
+ dependencies:
+ rc-trigger "^4.2.1"
+
+rc-trigger@^4.2.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.3.0.tgz#94ea1851d123359716d1dc3030083c015a92ecfb"
+ integrity sha512-jnGNzosXmDdivMBjPCYe/AfOXTpJU2/xQ9XukgoXDQEoZq/9lcI1r7eUIfq70WlWpLxlUEqQktiV3hwyy6Nw9g==
+ dependencies:
+ "@babel/runtime" "^7.10.1"
+ classnames "^2.2.6"
+ raf "^3.4.1"
+ rc-align "^4.0.0"
+ rc-animate "^3.0.0"
+ rc-util "^5.0.1"
+
+rc-util@^5.0.1:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.0.4.tgz#297bd719b1bd00b3c947a884ab7ef0a07c55dce6"
+ integrity sha512-cd19RCrE0DJH6UcJ9+V3eaXA/5sNWyVKOKkWl8ZM2OqgNzVb8fv0obf/TkuvSN43tmTsgqY8k7OqpFYHhmef8g==
+ dependencies:
+ react-is "^16.12.0"
+ shallowequal "^1.1.0"
+
react-dom@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
@@ -9425,6 +9483,11 @@ reselect@^4.0.0:
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7"
integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==
+resize-observer-polyfill@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
resolve-cwd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -9872,6 +9935,11 @@ shallow-equal@^1.2.1:
resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"