@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
63 lines (60 loc) • 2.37 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isUnbadgedUrl = exports.ExternalImageBadge = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactIntlNext = require("react-intl-next");
var _info = _interopRequireDefault(require("@atlaskit/icon/glyph/info"));
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var _primitives = require("@atlaskit/primitives");
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
var _media = require("../media");
var baseStyles = (0, _primitives.xcss)({
borderRadius: 'border.radius',
backgroundColor: 'elevation.surface',
// eslint-disable-next-line @atlaskit/design-system/use-tokens-typography
lineHeight: "var(--ds-space-200, 16px)",
cursor: 'pointer'
});
// On cleanup of 'platform_editor_hide_external_media_badge', make types non-optional
var NO_EXTERNAL_BADGE_HOSTS = ['atlassian.com'];
var isUnbadgedUrl = exports.isUnbadgedUrl = function isUnbadgedUrl(url) {
var hostname;
try {
var _URL = new URL(url || '');
hostname = _URL.hostname;
} catch (e) {
// If the URL is invalid (or empty), just carry on showing the badge
return false;
}
return Boolean(hostname &&
// Do not show badge for atlassian domains and subdomains
NO_EXTERNAL_BADGE_HOSTS.some(function (host) {
return hostname === host || hostname.endsWith(".".concat(host));
}));
};
var ExternalImageBadge = exports.ExternalImageBadge = function ExternalImageBadge(_ref) {
var badgeSize = _ref.badgeSize,
type = _ref.type,
url = _ref.url;
var intl = (0, _reactIntlNext.useIntl)();
var message = intl.formatMessage(_media.externalMediaMessages.externalMediaFile);
if ((0, _platformFeatureFlags.fg)('platform_editor_hide_external_media_badge')) {
if (type !== 'external' || isUnbadgedUrl(url)) {
return null;
}
}
return /*#__PURE__*/_react.default.createElement(_primitives.Box, {
padding: badgeSize === 'medium' ? 'space.050' : 'space.0',
xcss: baseStyles,
tabIndex: 0
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
content: message,
position: "top"
}, /*#__PURE__*/_react.default.createElement(_info.default, {
size: "small",
label: message
})));
};