UNPKG

@atlaskit/global-search

Version:

A cross-product search component (batteries included)

129 lines (103 loc) 4.33 kB
"use strict"; 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;