var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
import { jsx as _jsx } from "react/jsx-runtime";
import { ceil, compact, fill, isArray, isEmpty, isObject, some, truncate, zipObject } from "lodash";
import moment from "moment";
import React from "react";
import WORD_IMG from "./icon/word.svg";
import PDF_IMG from "./icon/pdf.svg";
import PPT_IMG from "./icon/ppt.svg";
import EXCEL_IMG from "./icon/excel.svg";
import OTHER_IMG from "./icon/other.svg";
import VIDEO_IMG from "./icon/video.svg";
import { clearStorage } from "../lib";
import { Modal } from "antd";
import axios from "axios";
import { getToken } from "./store";
// 退出登录
export function logoutOut(navigate) {
    clearStorage();
    const loca = window.location;
    if (process.env.NODE_ENV === "development") {
        navigate && navigate("/");
    }
    else {
        const REACT_APP_PATH_NAME = process.env.REACT_APP_PATH_NAME;
        loca.href = REACT_APP_PATH_NAME + "?logoutType=manual";
    }
}
//手机号加密
export function phoneEncryption(phone) {
    const tel = phone.split("");
    return fill(tel, "*", 3, tel.length - 4);
}
export function idEncryption(id) {
    if (id) {
        return id.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2");
    }
    else {
        return id;
    }
}
//字符串转对象
export function jsonString(str) {
    return __awaiter(this, void 0, void 0, function* () {
        try {
            JSON.parse(str);
        }
        catch (e) {
            return [];
        }
        const data = JSON.parse(str);
        if (isArray(data) && some(data, item => item.uid)) {
            return yield formatImageUrl(data);
        }
        return JSON.parse(str);
    });
}
// message
export function themeMessage(result, callback, content) {
    Modal[result.type]({
        content: content || result.message,
        onOk() {
            if (result.type === "success") {
                callback && callback();
            }
        }
    });
}
export function replaceString(str) {
    return str ? str.replace(/(\r\n)|(\n)/g, "<br>") : "";
}
export function dateFormatter(str) {
    if (!str) {
        return "";
    }
    return moment(str).format("YYYY-MM-DD HH:mm");
}
export function truncateText(text) {
    if (!text) {
        return "-";
    }
    return (_jsx("div", Object.assign({ title: text }, { children: truncate(text, {
            length: 24,
            separator: "..."
        }) })));
}
export const extname = (url) => {
    var _a;
    const l = url ? url === null || url === void 0 ? void 0 : url.split("?") : [];
    return l[0] ? (_a = l[0]) === null || _a === void 0 ? void 0 : _a.split(".").pop().toLowerCase() : "";
};
export function isImageUrl(url) {
    const fileExtension = extname(url);
    if (/^data:image\//.test(url) ||
        /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(fileExtension)) {
        return true;
    }
}
export function getPreviewIcon(url) {
    const fileExtension = extname(url);
    if (isImageUrl(url)) {
        return url;
    }
    switch (fileExtension) {
        case "doc":
        case "docx":
        case "pages":
            return WORD_IMG;
        case "csv":
        case "xls":
        case "xlsx":
        case "numbers":
            return EXCEL_IMG;
        case "ppt":
            return PPT_IMG;
        case "pdf":
            return PDF_IMG;
        case "mp4":
            return VIDEO_IMG;
        default:
            return OTHER_IMG;
    }
}
//图片url请求接口并将文件流转为地址
function getFileUrl(api, path) {
    return axios.get(`${api}${path}`, {
        responseType: "blob",
        withCredentials: false,
        headers: {
            token: getToken()
        }
    }).then((response) => {
        return URL.createObjectURL(response.data);
    }).catch(e => {
        console.log(e);
    });
}
function getImageData(item) {
    return __awaiter(this, void 0, void 0, function* () {
        const api = process.env.REACT_APP_API_URL;
        if (isImageUrl(item.name)) {
            const url = yield getFileUrl(api === null || api === void 0 ? void 0 : api.replace("/base", ""), `${item === null || item === void 0 ? void 0 : item.thumbUrl}`);
            return {
                uid: item.uid,
                name: item.name,
                status: item.status,
                url: item.url,
                thumbUrl: url,
                init: item
            };
        }
        else {
            return Object.assign(Object.assign({}, item), { thumbUrl: getPreviewIcon(item.name) });
        }
    });
}
//格式化图片地址
export function formatImageUrl(str) {
    if (!str) {
        return [];
    }
    if (Array.isArray(str)) {
        return Promise.all(str.map((item) => {
            return getImageData(item);
        }));
    }
    if (typeof str === "string") {
        try {
            JSON.parse(str);
        }
        catch (e) {
            return [];
        }
        const data = JSON.parse(str);
        const api = process.env.REACT_APP_API_URL;
        if (Array.isArray(data)) {
            return data.map((item) => {
                if (isImageUrl(item.name)) {
                    return getFileUrl(api === null || api === void 0 ? void 0 : api.replace("/base", ""), `${item === null || item === void 0 ? void 0 : item.thumbUrl}`).then((url) => {
                        return {
                            uid: item.uid,
                            name: item.name,
                            status: item.status,
                            thumbUrl: url,
                            url: item.url
                        };
                    });
                }
                else {
                    const url = getPreviewIcon(item.name);
                    return {
                        uid: item.uid,
                        name: item.name,
                        status: item.status,
                        thumbUrl: url,
                        url: item.url
                    };
                }
            });
        }
        if (isObject(data)) {
            if (isImageUrl(data.name)) {
                return getFileUrl(api === null || api === void 0 ? void 0 : api.replace("/base", ""), `${data === null || data === void 0 ? void 0 : data.thumbUrl}`).then((response) => {
                    return [
                        {
                            uid: data.uid,
                            name: data.name,
                            status: data.status,
                            thumbUrl: URL.createObjectURL(response.data),
                            url: data.url
                        }
                    ];
                });
            }
            else {
                return [
                    {
                        uid: data.uid,
                        name: data.name,
                        status: data.status,
                        thumbUrl: getPreviewIcon(data.name),
                        url: data.url
                    }
                ];
            }
        }
    }
    return [];
}
export function transformDate(value, dataLabel) {
    const data = compact(value);
    const times = isEmpty(data)
        ? []
        : data.map((item) => moment(item).format("YYYY-MM-DD"));
    return zipObject(dataLabel, isEmpty(times)
        ? [null, null]
        : [`${times[0]} 00:00:00`, `${times[1]} 23:59:59`]);
}
export function toFixed(num) {
    if (!num || num == null) {
        return "0.00";
    }
    return ceil(Number(num), 3).toFixed(2);
}
export function numberWithStatistic(x) {
    return x === null || x === void 0 ? void 0 : x.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
}