Repository URL to install this package:
|
Version:
3.12.2 ▾
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import getFileExtension from './getFileExtension';
import getFileLink from './getFileLink';
import isImage from './isImage';
import isThumbnailCloudimgSupported from './isThumbnailCloudimgSupported';
import isPdf from './isPdf';
import { FILE_TYPES_AND_ICONS, LAYOUTS_IDS, COLORS } from './constants';
import getItemPreviewWidthAndHeight from './getItemPreviewWidthHeight';
import isCloudimageFastPreviewSupported from './isCloudimageFastPreviewSupported';
import isFolder from './isFolder';
import isAi from './isAi';
import getFormattedPreviewUrl from './getFormattedPreviewUrl';
var ultrafastPrefix = 'https://scaleflex.ultrafast.io/';
var folderIcon = 'https://cdn.scaleflex.com/assets/folder-preview/folder.png';
var replaceAirstoreWithFilerobot = function replaceAirstoreWithFilerobot() {
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
return url.replace('.airstore.io/', '.filerobot.com/').replace(/(\?|&)func=proxy&?/, '$1').replace(/&|\?$/, '');
};
// showFuncAndHeight : false , when we need it to cover the entire background
var getItemIcon = function getItemIcon(_ref) {
var _fileOrFolder$info, _fileOrFolder$info2, _fileOrFolder$info3, _fileOrFolder$info4;
var fileOrFolder = _ref.fileOrFolder,
_ref$viewLayout = _ref.viewLayout,
viewLayout = _ref$viewLayout === void 0 ? LAYOUTS_IDS.GRID : _ref$viewLayout,
_ref$showFuncAndHeigh = _ref.showFuncAndHeight,
showFuncAndHeight = _ref$showFuncAndHeigh === void 0 ? false : _ref$showFuncAndHeigh,
forceIcon = _ref.forceIcon,
showVideoGif = _ref.showVideoGif,
_ref$cloudimgFunc = _ref.cloudimgFunc,
cloudimgFunc = _ref$cloudimgFunc === void 0 ? '' : _ref$cloudimgFunc,
_ref$isImageTranspare = _ref.isImageTransparencySupported,
isImageTransparencySupported = _ref$isImageTranspare === void 0 ? false : _ref$isImageTranspare,
container = _ref.container,
floaty = _ref.floaty,
isDevEnv = _ref.isDevEnv;
if (!fileOrFolder) {
return '';
}
if (fileOrFolder.preview && !forceIcon && !isImageTransparencySupported) {
return fileOrFolder.preview;
}
// TODO: if remote file then don't take its icon as it might not public till BE implements it
if (fileOrFolder.icon && !fileOrFolder.isRemote) {
return fileOrFolder.icon;
}
if (isFolder(fileOrFolder)) {
return folderIcon;
}
var thumbnail = showVideoGif ? (fileOrFolder === null || fileOrFolder === void 0 ? void 0 : (_fileOrFolder$info = fileOrFolder.info) === null || _fileOrFolder$info === void 0 ? void 0 : _fileOrFolder$info.video_gif) || (fileOrFolder === null || fileOrFolder === void 0 ? void 0 : (_fileOrFolder$info2 = fileOrFolder.info) === null || _fileOrFolder$info2 === void 0 ? void 0 : _fileOrFolder$info2.video_thumbnail) : (fileOrFolder === null || fileOrFolder === void 0 ? void 0 : (_fileOrFolder$info3 = fileOrFolder.info) === null || _fileOrFolder$info3 === void 0 ? void 0 : _fileOrFolder$info3.video_thumbnail) || (fileOrFolder === null || fileOrFolder === void 0 ? void 0 : (_fileOrFolder$info4 = fileOrFolder.info) === null || _fileOrFolder$info4 === void 0 ? void 0 : _fileOrFolder$info4.image_thumbnail);
if (thumbnail) {
// replacing any thumbnail that has the airstore domain and replacing with filerobot domain
// to be able to apply cdn transformation
// new videos uploaded will have the filerobot domain
// so only apply this for the old videos
var newThumbnail = replaceAirstoreWithFilerobot(thumbnail);
if (container) {
newThumbnail = getFormattedPreviewUrl({
url: newThumbnail,
isDevEnv: isDevEnv,
isHubMode: floaty,
containerToken: container
});
}
var _getItemPreviewWidthA = getItemPreviewWidthAndHeight(viewLayout),
_getItemPreviewWidthA2 = _slicedToArray(_getItemPreviewWidthA, 2),
width = _getItemPreviewWidthA2[0],
height = _getItemPreviewWidthA2[1];
return "".concat(newThumbnail, "?w=").concat(width, "&h=").concat(height);
}
var extension = getFileExtension(fileOrFolder);
if (isPdf(fileOrFolder) && !isAi(fileOrFolder)) {
var link = replaceAirstoreWithFilerobot(getFileLink(fileOrFolder));
if (link) {
link = link.replace('func=proxy', '');
var separator = link[link.length - 1] !== '&' && (link.lastIndexOf('?') !== -1 ? '&' : '?');
return "".concat(link).concat(separator || '', "w=200&force_format=webp,jpeg&doc_page=1&bypass_process_proxy=1");
}
}
if (isThumbnailCloudimgSupported(fileOrFolder) || isImageTransparencySupported) {
var _fileOrFolder$url, _fileOrFolder$remote, _fileOrFolder$remote$;
// fileOrFolder.remote?.body?.url for having the url for imported image from url
var _link = replaceAirstoreWithFilerobot(getFileLink(fileOrFolder, (fileOrFolder === null || fileOrFolder === void 0 ? void 0 : (_fileOrFolder$url = fileOrFolder.url) === null || _fileOrFolder$url === void 0 ? void 0 : _fileOrFolder$url.version_preview_link) && 'version_preview_link', ((_fileOrFolder$remote = fileOrFolder.remote) === null || _fileOrFolder$remote === void 0 ? void 0 : (_fileOrFolder$remote$ = _fileOrFolder$remote.body) === null || _fileOrFolder$remote$ === void 0 ? void 0 : _fileOrFolder$remote$.url) || ''));
var bgColor = COLORS.LIGHT.HOVER.replace('#', '');
if (_link) {
// TODO: ADD A CDN URL THAT LOAD ANY URL FOR SUPPORTING RESIZED THUMBNAILS FROM OTHER 3RD PARTIES AS scaleflex.cloudimg.io HAS SPECIFIC DOMAINS.
// TMP SOLUTION FOR AVOIDING ADDING THE CDN'S QUERY PARAMS
// THAT CAUSE AN ERROR IN LOADING THE FILE OF CANVA DESIGN FROM THEIR URL
if (_link.startsWith('https://export-download.canva.com')) {
return _link;
}
var _separator = _link.lastIndexOf('?') !== -1 ? '&' : '?';
var _getItemPreviewWidthA3 = getItemPreviewWidthAndHeight(viewLayout),
_getItemPreviewWidthA4 = _slicedToArray(_getItemPreviewWidthA3, 2),
_width = _getItemPreviewWidthA4[0],
_height = _getItemPreviewWidthA4[1];
return "".concat(_link).concat(_separator || '', "w=").concat(_width).concat(showFuncAndHeight ? "&h=".concat(_height, "&func=").concat(cloudimgFunc || 'fit', "&bg_colour=").concat(bgColor) : '').concat(!isImage(fileOrFolder) ? '&bypass_process_proxy=1' : '').concat(isCloudimageFastPreviewSupported(fileOrFolder) ? '&ci_fast_preview=1' : '', "\n ");
}
}
if (extension) {
return FILE_TYPES_AND_ICONS[extension.toLowerCase()] || FILE_TYPES_AND_ICONS._default;
}
return FILE_TYPES_AND_ICONS._default;
};
export default getItemIcon;
export { ultrafastPrefix };