/*
 * @Date: 2022-03-09 12:34:45
 * @LastEditors: tmzdy
 * @Author: tmzdy
 * @Description: 文件
 */

//颜色类型
export interface rgba {
    r: number,
    g: number,
    b: number,
    a: number
}
export interface hsva {
    h: number,
    s: number,
    v: number,
    a: number
}
export interface hsla {
    h: number,
    s: number,
    l: number,
    a: number
}

//生成主题的必要配置
export interface cssStyleConfig {
    colorname: string,//颜色名称
    borderWidth?: number,//边线宽度
    borderDirection?: cssDirectionType,//边线的方向
    linearDirection?: linearDirectionType,//渐变的方向.
    linearDeep?: linearDeep,//light,dark,亮系渐变和深色渐变。
    shadow?: number,//投影的大小，
    round?: number,//圆角大小
    opaticy?: number,//透明度
    dark: boolean,//暗黑
    outlined?: boolean,
    text?: boolean,
    borderStyle?:string,
	blur?:boolean,
    /**边线颜色，可以不提供。不提供使用自动计算的值。 */
    borderColor?:string
}


//输入主题的属性css样式表。
export interface cssstyle {
    colorname?: string,//颜色名称
    border?: string,//边线颜色
    borderCss?: any,
    backgroundColor?: string,//背景颜色
    backgroundColorCss?: object,
    textColor?: string,//文字颜色
    textColorCss?: object,
    elevation?: number,//安卓端的投影。
    shadowColor?: object,
    config?:cssStyleConfig
    gradientColor?:Array<string>,
    cardcolor?: string,//项目暗黑下的背景色
    inputcolor?: string,//输入框，表单等暗黑下的背景色
    bodycolor?: string,//暗黑下的背景色
    disablecolor?: string,//禁用的项目或者表单暗黑下
    textDisableColor?: string,//文本禁用色.暗黑下
    isBlackAndWhite?:boolean,//该主题是否是黑白色系。
    color?:string//原始颜色未处理过的。
    /**linearDirection对应css的方向 */
    linearDirectionStr?:string,
}

//颜色主题对象。
export interface colorThemeType {
    name: string,
    value: string,
    hsva: hsva,
    rgba: rgba,
    hsla: hsla,
    csscolor?: string
}
//主题方向
export type cssDirectionType = "left"|"right"|"top"|"bottom"|"all"|"leftright"|"topbottom"|"topleft"|"topright"|"bottomleft"|"bottomright"|"x"|"y";
export enum cssDirection {
    left = "left",
    right = "right",
    bottom = "bottom",
    top = "top",
    leftright = "x",
    topbottom = "y",
    topleft = "top-left",
    topright = "top-right",
    bottomleft = "bottom-left",
    bottomright = "bottom-right",
    all = "all"
}
//渐变方向
export type linearDirectionType= "left"|"right"|"top"|"bottom"|""
export enum linearDirection {
    left = "to left",
    right = "to right",
    top = "to top",
    bottom = "to bottom",
    none = ""
}
//渐变的颜色类型
export type linearDeepType = "light"|"dark"|"accent"
export enum linearDeep {
    /**
     * 亮色
     */
    light = "light",
    /**
     * 暗黑，偏暗
     */
    dark = "dark",
    /**
     * 强调色
     */
    accent = "accent",
}
// 边线样式
export type borderStyleType = "solid"|"dashed"|"dotted";
export enum borderStyle {
    solid = 'solid',
    dashed = 'dashed',
    dotted = 'dotted',
}
// 微信分享结构类型
export interface wxshareConfig {
    title?: string, // 分享标题
    desc?: string, // 描述
    imageUrl?: string, // 分享图片
    path?: string, // 分享路径
    copyLink?: string, // 复制链接
    query?: any, // 分享参数
}
//store下的tmcfg参数对象类型。
export interface tmVuetify {
    color: string,
    dark: boolean,
    tmVueTifly_pages: string,
    tmVueTifly_pagesIndex: string,
    //这里是微信小程序和微信H5的配置资料。
    wxshareConfig_miniMp:wxshareConfig ,
    //当前存储存的主题对象。
    colorList: Array<colorThemeType>,
    //当前的语言
    local:string
    os:string
}

export type fetchConfigResponseType= "arraybuffer"|"text";
export type fetchConfigDataType = "json"|"text";
export type fetchConfigMethod= "GET"|"POST"|"PUT"|"DELETE"|"CONNECT"|"HEAD"|"OPTIONS"|"TRACE";

export interface fetchConfigSuccessType{
    data:object|string|ArrayBuffer,
    statusCode:number,
    header:object,
    cookies:Array<string>
}
export interface fetchConfig {
    url?:string,
	/** 定义成功的服务器返回的状态码成功的标志 */
	statusCode?:number,
    data?:object|string|ArrayBuffer,
    header?:object,
    method?:fetchConfigMethod,
    timeout?:number,
    dataType?:fetchConfigDataType,
    responseType?:fetchConfigResponseType,
    sslVerify?:boolean,
    withCredentials?:boolean,
    firstIpv4?:boolean,
    success?:Function,
    fail?:Function,
    complete?:Function
}