123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- const fileHeader = {
- "/9j": { type: 'image', suffix: "JPG" },
- "iVB": { type: 'image', suffix: "PNG" },
- "Qk0": { type: 'image', suffix: "BMP" },
- "SUk": { type: 'image', suffix: "TIFF" },
- "JVB": { type: 'image', suffix: "PDF" },
- "UEs": { type: 'image', suffix: "OFD" },
- "IyF": { type: 'audio', suffix: "AMR" }
- };
- export function addBase64head(base64) {
- if (base64.startsWith('data:/') || base64.startsWith('http')) {
- return base64;
- }
- const head = base64.substr(0, 3);
- if (fileHeader[head]) {
- return `data:${fileHeader[head].type}/${fileHeader[head].suffix.toLowerCase()};base64,${base64}`;
- }
-
- return base64;
- }
- export function formatTime(time, format, locale) {
- format = Object.assign({
- year: locale.message.year,
- month: locale.message.month,
- day: locale.message.day,
- hour: locale.message.hour,
- minute: locale.message.minute
- }, format || {});
- if (!time) {
- return null;
- }
- const date = new Date(time);
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const day = date.getDate();
- let hour = date.getHours() + "";
- if (hour.length < 2) {
- hour = '0' + hour;
- }
- let minute = date.getMinutes() + "";
- if (minute.length < 2) {
- minute = '0' + minute;
- }
- const now = new Date();
- const dValue = judgeDay(date);
- if (dValue === -1) {
-
- let yesterday = locale.conversation.yesterday;
-
-
- return `${yesterday}`;
- }
- if (now.getFullYear() === year) {
- if (now.toDateString() === date.toDateString()) {
- return `${hour}:${minute}`;
- }
- return `${month}/${day}`;
- }
- return locale.area === 'zh_CN' ? `${year}/${month}/${day}` : `${month}/${day}/${year}`;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- function judgeDay(sourceDate, targetDate = new Date()) {
- var year = sourceDate.getFullYear();
- var month = sourceDate.getMonth() + 1;
- var day = sourceDate.getDate();
- var d1 = new Date(year + '/' + month + '/' + day).getTime();
- var y = targetDate.getFullYear();
- var m = targetDate.getMonth() + 1;
- var d = targetDate.getDate();
- var d2 = new Date(y + '/' + m + '/' + d).getTime();
- var iday = (d1 - d2) / 1000 / 60 / 60 / 24;
- return iday;
- }
- export function getCursortPosition(element) {
- var caretOffset = 0;
- var doc = element.ownerDocument || element.document;
- var win = doc.defaultView || doc.parentWindow;
- var sel;
- if (typeof win.getSelection != "undefined") {
- sel = win.getSelection();
- if (sel.rangeCount > 0) {
- var range = win.getSelection().getRangeAt(0);
- var preCaretRange = range.cloneRange();
- preCaretRange.selectNodeContents(element);
- preCaretRange.setEnd(range.endContainer, range.endOffset);
- caretOffset = preCaretRange.toString().length;
- }
- }
- else if ((sel = doc.selection) && sel.type != "Control") {
- var textRange = sel.createRange();
- var preCaretTextRange = doc.body.createTextRange();
- preCaretTextRange.moveToElementText(element);
- preCaretTextRange.setEndPoint("EndToEnd", textRange);
- caretOffset = preCaretTextRange.text.length;
- }
- return caretOffset;
- }
- export function getTextBeforeCursor(containerEl) {
- var precedingChar = '', sel, range, precedingRange;
- if (window.getSelection) {
- sel = window.getSelection();
- if (sel.rangeCount > 0) {
- range = sel.getRangeAt(0).cloneRange();
- range.collapse(true);
- range.setStart(containerEl, 0);
- precedingChar = range.cloneContents();
- }
- }
- else if ((sel = document.selection)) {
- range = sel.createRange();
- precedingRange = range.duplicate();
- precedingRange.moveToElementText(containerEl);
- precedingRange.setEndPoint("EndToStart", range);
- precedingChar = precedingRange.htmlText;
- }
- return [precedingChar, range];
- }
- export function delHtmlTag(str) {
-
- return str.replace(/<[^>]+>/g, '');
- }
- export function deepClone(target) {
- let result;
- if (typeof target === 'object') {
- if (Array.isArray(target)) {
- result = [];
- for (const i in target) {
- result.push(deepClone(target[i]));
- }
- }
- else if (target === null) {
- result = null;
- }
- else if (target instanceof RegExp) {
- result = target;
- }
- else {
- result = {};
- for (const i in target) {
- result[i] = deepClone(target[i]);
- }
- }
- }
- else {
- result = target;
- }
- return result;
- }
- export function formatTextMessage(content) {
-
- const urlReg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/g;
-
- content = content.replace('<', '<');
- content = content.replace('>', '>');
- if (urlReg.test(content)) {
- content = content.replace(urlReg, a => {
- let prefix = '';
- if (a.indexOf('http:') < 0 && a.indexOf('https:') < 0) {
- prefix = '//';
- }
- return `<a target="_blank" class="url-wrap" href="${prefix}${a}">${a}</a>`;
- });
- }
- return content;
- }
|