@atlaskit/global-search
Version:
A cross-product search component (batteries included)
129 lines (103 loc) • 4.33 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getMediaTypeAvatarForResult = exports.getAvatarForConfluenceObjectResult = void 0;
var _react = _interopRequireDefault(require("react"));
var _Result = require("../model/Result");
var _ = _interopRequireDefault(require("@atlaskit/icon-object/glyph/page/24"));
var _2 = _interopRequireDefault(require("@atlaskit/icon-object/glyph/blog/24"));
var _3 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/image/24"));
var _4 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/excel-spreadsheet/24"));
var _5 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/video/24"));
var _6 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/archive/24"));
var _7 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/powerpoint-presentation/24"));
var _8 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/source-code/24"));
var _9 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/audio/24"));
var _10 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/word-document/24"));
var _11 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/pdf-document/24"));
var _12 = _interopRequireDefault(require("@atlaskit/icon-file-type/glyph/generic/24"));
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
/**
* The following code was derived from an implementation in confluence-frontend,
* although it differs substantially.
*
* The original can be found at ./packages/confluence-rest-api/src/helpers/icons.js
*/
var ATTACHMENT_ICON_CLASS_PREFIXES = [// Quick Nav prefix
'content-type-attachment-', // CQL prefix
'icon-file-'];
var DEFAULT_ATTACHMENT_AVATAR = _12.default;
var ATTACHMENT_FILE_EXTENSION_MATCHERS = [{
regexp: /\.(gif|jpeg|jpg|png)$/i,
avatar: _3.default
}, {
regexp: /\.(pdf)$/i,
avatar: _11.default
}, {
regexp: /\.(docx|dotx|doc|dot)$/i,
avatar: _10.default
}, {
regexp: /\.(xml|html|js|css|java|jar|war|ear)$/i,
avatar: _8.default
}, {
regexp: /\.(xlt|xls|xlsm|xlsx|xlst)$/i,
avatar: _4.default
}, {
regexp: /\.(wma|wmv|ram|mp3)$/i,
avatar: _9.default
}, {
regexp: /\.(pptx|ppsx|potx|pot|ppt|pptm)$/i,
avatar: _7.default
}, {
regexp: /\.(mov|mpeg|mpg|mp4|avi)$/i,
avatar: _5.default
}, {
regexp: /\.(zip)$/i,
avatar: _6.default
}];
var getIconType = function getIconType(iconClass, fileName) {
// Check the iconClass to make sure we're looking at an attachment
var prefixMatches = ATTACHMENT_ICON_CLASS_PREFIXES.find(function (prefix) {
return iconClass.startsWith(prefix);
}); // if it's an attachment, look at the file extension to work out which type
if (prefixMatches) {
var matchingType = ATTACHMENT_FILE_EXTENSION_MATCHERS.find(function (extensionMatcher) {
var matches = extensionMatcher.regexp.exec(fileName);
return !!matches && matches.length > 0;
});
if (matchingType) {
return matchingType.avatar;
}
}
return DEFAULT_ATTACHMENT_AVATAR;
};
var getAvatarForConfluenceObjectResult = function getAvatarForConfluenceObjectResult(result) {
if (result.contentType === _Result.ContentType.ConfluencePage) {
return /*#__PURE__*/_react.default.createElement(_.default, {
label: result.name
});
} else if (result.contentType === _Result.ContentType.ConfluenceBlogpost) {
return /*#__PURE__*/_react.default.createElement(_2.default, {
label: result.name
});
} else if (result.contentType === _Result.ContentType.ConfluenceAttachment) {
return getMediaTypeAvatarForResult(result);
} else {
return /*#__PURE__*/_react.default.createElement(_avatar.default, {
src: result.avatarUrl,
size: "medium",
appearance: "square"
});
}
};
exports.getAvatarForConfluenceObjectResult = getAvatarForConfluenceObjectResult;
var getMediaTypeAvatarForResult = function getMediaTypeAvatarForResult(result) {
var IconComponent = getIconType(result.iconClass, result.name);
return /*#__PURE__*/_react.default.createElement(IconComponent, {
label: result.name,
size: "medium"
});
};
exports.getMediaTypeAvatarForResult = getMediaTypeAvatarForResult;