UNPKG

cometchat-react-ui-kit2

Version:

CometChat UI Kit for React App

98 lines (94 loc) 4.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.linkify = exports.getUnixTimestamp = exports.getMetadataByKey = exports.getExtensionsData = exports.getCometChatMessage = exports.bytesToSize = exports.ID = void 0; var _chat = require("@cometchat-pro/chat"); var _ = require(".."); var wordBoundary = { start: "(?:^|:|;|'|\"|,|{|}|\\.|\\s|\\!|\\?|\\(|\\)|\\[|\\]|\\*)", end: "(?=$|:|;|'|\"|,|{|}|\\.|\\s|\\!|\\?|\\(|\\)|\\[|\\]|\\*)" }; var emailPattern = new RegExp(wordBoundary.start + "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" + wordBoundary.end, "gi"); var urlPattern = new RegExp(wordBoundary.start + "((https?://|www\\.|pic\\.)[-\\w;/?:@&=+$\\|\\_.!~*\\|'()\\[\\]%#,\u263A]+[\\w/#](\\(\\))?)" + wordBoundary.end, "gi"); var phoneNumPattern = new RegExp(wordBoundary.start + "(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)" + wordBoundary.end, "gi"); var ID = function ID() { // Math.random should be unique because of its seeding algorithm. // Convert it to base 36 (numbers + letters), and grab the first 9 characters // after the decimal. return "_" + Math.random().toString(36).substr(2, 9); }; exports.ID = ID; var getUnixTimestamp = function getUnixTimestamp() { return Math.round(+new Date() / 1000); }; exports.getUnixTimestamp = getUnixTimestamp; var getExtensionsData = function getExtensionsData(message, extensionKey) { if (message !== null && message !== void 0 && message.hasOwnProperty("metadata")) { var metadata = message.metadata; var injectedObject = metadata["@injected"]; if (injectedObject && injectedObject.hasOwnProperty("extensions")) { var extensionsObject = injectedObject["extensions"]; if (extensionsObject && extensionsObject.hasOwnProperty(extensionKey)) { return extensionsObject[extensionKey]; } } } return null; }; exports.getExtensionsData = getExtensionsData; var getMetadataByKey = function getMetadataByKey(message, metadataKey) { if (message.hasOwnProperty("metadata")) { var metadata = message["metadata"]; if (metadata.hasOwnProperty(metadataKey)) { return metadata[metadataKey]; } } return null; }; // export const getFileMessageMetadata = (message, metadataKey) => { // if (message.hasOwnProperty("metadata")) { // const metadata = message["metadata"]; // if (metadata.hasOwnProperty(metadataKey)) { // return metadata[metadataKey]; // } // } // return null; // }; exports.getMetadataByKey = getMetadataByKey; var bytesToSize = function bytesToSize(bytes) { var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; if (bytes === 0) return "0 Bytes"; var k = 1024; var dm = decimals < 0 ? 0 : decimals; var sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; var i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i]; }; exports.bytesToSize = bytesToSize; var linkify = function linkify(message) { var outputStr = message.replace(phoneNumPattern, "<a target='blank' rel='noopener noreferrer' href='tel:$&'>$&</a>"); outputStr = outputStr.replace(emailPattern, "<a target='blank' rel='noopener noreferrer' href='mailto:$&'>$&</a>"); var results = outputStr.match(urlPattern); results && results.forEach(function (url) { url = url.trim(); var normalizedURL = url; if (!url.startsWith("http")) { normalizedURL = "//".concat(url); } outputStr = outputStr.replace(url, "<a target='blank' rel='noopener noreferrer' href=\"".concat(normalizedURL, "\">").concat(url, "</a>")); }); return outputStr; }; exports.linkify = linkify; var getCometChatMessage = function getCometChatMessage(messageObject) { if (messageObject.category === _.CometChatMessageCategories.custom) { return new _chat.CometChat.CustomMessage(messageObject); } else if (messageObject.category === _.CometChatMessageCategories.message && messageObject.type === _.CometChatMessageTypes.text) { var newMessageObject = new _chat.CometChat.TextMessage(messageObject); return newMessageObject; } else { return new _chat.CometChat.MediaMessage(messageObject); } }; exports.getCometChatMessage = getCometChatMessage;