cmms/frontend/node_modules/@vexip-ui/utils/dist/index.d.ts

2284 lines
59 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 为日期增减给定的天数
*
* @param date 原始日期
* @param amount 增减的天数
*
* @returns 修改后的日期
*/
export declare function addDays(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的半天数12小时
*
* @param date 原始日期
* @param amount 增减的半天数
*
* @returns 修改后的日期
*/
export declare function addHalfDays(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的小时
*
* @param date 原始日期
* @param amount 增减的小时
*
* @returns 修改后的日期
*/
export declare function addHours(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的毫秒
*
* @param date 原始日期
* @param amount 增减的毫秒
*
* @returns 修改后的日期
*/
export declare function addMilliseconds(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的分钟
*
* @param date 原始日期
* @param amount 增减的分钟
*
* @returns 修改后的日期
*/
export declare function addMinutes(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的月数
*
* @param date 原始日期
* @param amount 增减的月数
*
* @returns 修改后的日期
*/
export declare function addMonths(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的季度3个月
*
* @param date 原始日期
* @param amount 增减的季度
*
* @returns 修改后的日期
*/
export declare function addQuarters(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的秒
*
* @param date 原始日期
* @param amount 增减的秒
*
* @returns 修改后的日期
*/
export declare function addSeconds(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的周数
*
* @param date 原始日期
* @param amount 增减的周数
*
* @returns 修改后的日期
*/
export declare function addWeeks(date: Dateable, amount: number): Date;
/**
* 为日期增减给定的年份
*
* @param date 原始日期
* @param amount 增减的年份
*
* @returns 修改后的日期
*/
export declare function addYears(date: Dateable, amount: number): Date;
/**
* 调整给定颜色值的透明度
*
* @param color 需要调整的颜色
* @param alpha 调整后的透明度 0 ~ 10% ~ 100%
*
* @returns 调整后的颜色
*/
export declare function adjustAlpha(color: Color, alpha: number | string): RGBAColor;
/**
* 将给定的常量字符串类型拓展为不区分大小写的任意组合
*/
export declare type AnyCase<S> = string extends S ? string : S extends `${infer F1}${infer F2}${infer R}` ? `${Uppercase<F1> | Lowercase<F1>}${Uppercase<F2> | Lowercase<F2>}${AnyCase<R>}` : S extends `${infer F}${infer R}` ? `${Uppercase<F> | Lowercase<F>}${AnyCase<R>}` : '';
export declare interface BITree {
tree: number[];
/**
* 为第 index 个元素增减值
*
* @param index 索引值
* @param num 增减的值
*/
add(index: number, num: number): void;
/**
* 求前 index 个元素的和
*
* @param index 索引值
*
* @returns 前 index 个元素的和
*/
sum(index?: number): number;
/**
* 获取第 index 个元素的值
*
* @param index 索引值
*
* @returns 第 index 个元素的值
*/
get(index: number): number;
/**
* 根据目标值寻找一个最接近的元素的索引值
*
* @param target 目标值
*
* @returns 最接近的元素的索引值
*/
boundIndex(target: number): number;
}
/**
* 将给定的数字限定在指定的范围内
*
* @param number 需要限定范围的数
* @param min 边界最小值,包含该值
* @param max 边界最大值,包含该值
*
* @returns 限定在范围内的值
*/
export declare function boundRange(number: number | string, min: number, max: number): number;
/**
* 如果一个值为函数,则执行它并返回结果,否则返回其本身
*
* @param value 指定的值
* @param args 若为函数时,传入的参数
*
* @returns 原始值或函数执行结果
*/
export declare function callIfFunc<T, P extends any[] = any[]>(value: T | ((...args: P) => T), ...args: P): T;
/**
* 将给定的常量字符串类型拓展为大驼峰
*/
export declare type CapitalCase<T extends string> = T extends `${infer First} ${infer Rest}` ? CapitalCase<`${First}-${Rest}`> : T extends `${infer First}-${infer Rest}` ? `${Capitalize<First>}${CapitalCase<Rest>}` : Capitalize<T>;
/**
* 当前点击的类型,可以使用触摸交互时为 `pointerdown`,否则为 `click`
*/
export declare const CLICK_TYPE: string;
export declare type Color = string | RGBColor | RGBAColor | HSLColor | HSLAColor | HSVColor | HSVAColor | HEX3Color | HEX4Color | HEX6Color | HEX8Color;
export declare const COLOR_NAMES: Readonly<Set<ColorName>>;
export declare interface ColorMeta {
rgb: RGBColor;
hsl: HSLColor;
hsv: HSVColor;
hex: string;
alpha: number;
rgba: RGBAColor;
hsla: HSLAColor;
hsva: HSVAColor;
hex8: string;
gray: number;
origin: Color;
}
export declare type ColorName = keyof typeof NAMED_COLORS;
export declare type ColorType = 'hex' | 'rgb' | 'hsv' | 'hsl';
/**
* 升序比较两个日期大小,用于给数组的 sort 方法使用
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 比较后的结果,`-1` 则左侧小,`1` 则右侧小,`0` 则相等
*/
export declare function compareAsc(left: Dateable, right: Dateable): number;
/**
* 降序比较两个日期大小,用于给数组的 sort 方法使用
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 比较后的结果,`1` 则左侧小,`-1` 则右侧小,`0` 则相等
*/
export declare function compareDesc(left: Dateable, right: Dateable): number;
/**
* 判断一个元素是否包含另一个元素
*
* @param el 被包含的元素(子元素)
* @param parent 包含的元素(父元素)
*
* @returns 元素是否包含另一个元素
*/
export declare function contains(el?: Element | null, parent?: HTMLElement | null): boolean;
/**
* 创建一个二叉索引树Fenwick 树)对象
*
* 为了节省初始化性能开销,需确保元素最小值已知,其初始值为:元素最小值 * 元素总数
*
* @param length 树的大小,即元素的总数
* @param min 规定元素的最小值
*
* @returns 二叉索引树对象
*/
export declare function createBITree(length: number, min?: number): BITree;
export declare function createCounter(count?: number): {
getCount: () => number;
setCount: (newCount: number) => void;
};
/**
* 创建一个自定义的事件发射器
*
* @returns 事件发射器
*/
export declare function createEventEmitter(): EventEmitter;
export declare type Dateable = number | string | Date;
export declare const DAY_ON_HOURS = 24;
export declare const DAY_ON_MILLISECONDS: number;
/** @deprecated renames to `DAY_ON_MILLISECONDS` */
export declare const DAY_ON_MILLS: number;
export declare const DAY_ON_MINUTES: number;
export declare const DAY_ON_SECONDS: number;
/**
* 将一个方法进行防抖
*
* @param method 需要防抖的方法,需自行绑定 this
* @param delay 防抖的限制时间,默认 100ms
*
* @returns 防抖后的方法
*/
export declare function debounce<T extends (...args: any[]) => any>(method: T, delay?: number): (...args: Parameters<T>) => void;
/**
* 对给定的方法进行渲染帧级别的防抖
*
* @param method 需要防抖的方法,需自行绑定 this
*
* @returns 防抖后的方法
*/
export declare function debounceFrame<T extends (...args: any[]) => any>(method: T): (...args: Parameters<T>) => Promise<Awaited<ReturnType<T>>>;
/**
* 对给定的方法进行微任务级别的防抖
*
* @param method 需要防抖的方法,需自行绑定 this
*
* @returns 防抖后的方法
*/
export declare function debounceMinor<T extends (...args: any[]) => any>(method: T): (...args: Parameters<T>) => Promise<Awaited<ReturnType<T>>>;
/**
* 根据一系列判断条件,执行第一个为 `true` 的条件所对应的回调函数
*
* @param conditions 判断条件及回调函数
* @param options 额外的选项
*
* @returns 是否匹配了任一条件
*/
export declare function decide(conditions: [boolean | (() => boolean), () => void | Promise<void>][], options?: {
/**
* 当匹配任意一个条件时,会在该条件对应的回调函数执行前执行
*/
beforeMatchAny?: () => void | Promise<void>;
/**
* 当匹配任意一个条件时,会在该条件对应的回调函数执行完后执行
*/
afterMatchAny?: () => void | Promise<void>;
}): Promise<boolean>;
/**
* 返回数字的小数位数
*
* @param number 指定的数字
*
* @returns 数字的小数位数
*/
export declare function decimalLength(number: number | string): number;
/**
* 深度拷贝对象或数组
*
* @param obj 需要拷贝的对象或数组
*
* @returns 克隆后的对象
*/
export declare function deepClone<T>(obj: T, options?: DeepCloneOptions): T;
export declare interface DeepCloneOptions {
/**
* 一个自定义的克隆对象方法,用于处理方法内置以外的对象克隆,如 Class 的实例
*
* @param type 对象的类型,注意格式为大驼峰
* @param obj 原始对象
*
* @returns 克隆后对象
*/
cloneObject?: (type: string, obj: unknown) => any;
}
/**
* 将一个对象销毁,销毁后的对象所有方法不可用,属性值均为 `null`
*
* @param object 要销毁的对象
* @param message 销毁后,调用方法时的错误信息
*/
export declare function destroyObject(object: any, message?: string): void;
/**
* 比较两个日期相差的天数
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的天数
*/
export declare function differenceDays(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整天
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整天数
*/
export declare function differenceFullDays(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整小时
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整小时数
*/
export declare function differenceFullHours(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整分钟
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整分钟数
*/
export declare function differenceFullMinutes(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整月
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整月份
*/
export declare function differenceFullMonths(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整季度
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整季度
*/
export declare function differenceFullQuarters(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整秒
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整秒数
*/
export declare function differenceFullSeconds(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整周
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整周数
*/
export declare function differenceFullWeeks(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的完整年份
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的完整年份
*/
export declare function differenceFullYears(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的小时
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的小时数
*/
export declare function differenceHours(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的毫秒
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的毫秒数
*/
export declare function differenceMilliseconds(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的分钟
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的分钟数
*/
export declare function differenceMinutes(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的月
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的月份
*/
export declare function differenceMonths(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的季度
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的季度
*/
export declare function differenceQuarters(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的秒
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的秒数
*/
export declare function differenceSeconds(left: Dateable, right: Dateable): number;
/**
* 比较两个日期相差的周
*
* @param left 原始日期
* @param right 原始日期
* @param weekStartOn 设定周的第一天,默认为周日
*
* @returns 相差的周数
*/
export declare function differenceWeeks(left: Dateable, right: Dateable, weekStartOn?: number): number;
/**
* 比较两个日期相差的年份
*
* @param left 原始日期
* @param right 原始日期
*
* @returns 相差的年份
*/
export declare function differenceYears(left: Dateable, right: Dateable): number;
/**
* Return decimal length of a number
*
* @param number The input number
* @deprecated Using `decimalLength` to replace it
*/
export declare function digitLength(number: number | string): number;
/**
* 为指定的元素派发事件
*
* @param el 指定的元素
* @param payload 事件的属性
* @param Event 事件类
*
* @returns 事件是否派发成功
*/
declare function dispatchEvent_2(el: Element, payload: EventPayload, Event?: {
new (type: string, eventInitDict?: EventInit): Event;
prototype: Event;
readonly NONE: 0;
readonly CAPTURING_PHASE: 1;
readonly AT_TARGET: 2;
readonly BUBBLING_PHASE: 3;
}): boolean;
export { dispatchEvent_2 as dispatchEvent }
/**
* 精确的除法
*
* @param numbers 需要依次相除的数字
*
* @returns 商
*/
export declare const divide: (...numbers: (number | string)[]) => number;
/**
* 将小于 10 整数 N 变成 `0N` 的字符串,方法不会对入参校验
*
* @param number 需要处理的整数
*
* @returns 填充后的字面值
*/
export declare function doubleDigits(number: number): string;
/**
* 获取给定日期所在天的结束日期
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function endOfDay(date: Dateable): Date;
/**
* 如果一个值不为数组,则将其转换为数组
*
* @param value 指定的值
*
* @returns 原始数组或转换后的数组
*/
export declare function ensureArray<T>(value: T | T[]): T[];
/**
* 仅发出一次的错误消息
*
* @param message 消息内容
* @param logFn 输出函数
*/
export declare function errorOnce(message: string, logFn?: (...data: any[]) => void): void;
/**
* 将 html 内容的敏感字符进行转换
*
* @param string html 内容
*
* @returns 转换后的 html 内容
*/
export declare function escapeHtml(string: unknown): string;
export declare interface EventEmitter {
/**
* 为指定的事件添加回调方法
*
* @param type 事件类型
* @param handler 回调方法
*/
on: (type: EventType, handler: EventHandler) => void;
/**
* 为指定的事件移除回调方法
*
* @param type 事件类型
* @param handler 回调方法
*/
off: (type: EventType, handler: EventHandler) => void;
/**
* 为指定的事件清除所有回调方法
*
* @param type 事件类型
*/
clear: (type: EventType) => void;
/**
* 清除所有事件的所有回调方法
*/
clearAll: () => void;
/**
* 派发特定的事件
*
* @param type 事件类型
* @param payload 传入事件回调方法的参数
*/
emit: (type: EventType, ...payload: any[]) => void;
}
export declare type EventHandler = (...payload: any[]) => void;
export declare type EventHandlerMap = Map<EventType, EventHandlerSet>;
export declare type EventHandlerSet = Set<EventHandler>;
export declare interface EventPayload extends EventInit {
/**
* 事件的类型
*/
type: string;
[prop: string]: any;
}
export declare type EventType = number | string | symbol;
/**
* 遍历树并为每个节点执行过滤方法,并用符合条件的节点构建一棵新的树
*
* @param tree 要遍历的树
* @param cb 过滤的方法
* @param options 遍历的配置项
*
* @returns 过滤后新的树
*/
export declare function filterTree<T = any>(tree: T[], cb: (item: T, depth: number, parent: T | null) => boolean, options?: {
/** 判断一个节点是否为叶子节点 */
isLeaf?: (item: T) => boolean;
/** 是否只对叶子节点进行过滤 */
leafOnly?: boolean;
childField?: keyof T;
}): T[];
/**
* 将一个树展平成列表
*
* @param tree 要展平的树
* @param options 转换的配置项
*
* @returns 展平后的列表
*/
export declare function flatTree<T = any>(tree: T[], options?: TreeOptions<keyof T> & {
/** 是否为深度优先遍历 */
depthFirst?: boolean;
/**
* 是否为无 ID 的节点插入 ID 值
*
* @default true
*/
injectId?: boolean;
/** 构建节点的 ID 的方法 */
buildId?: (index: number) => any;
/** 过滤节点的方法 */
filter?: (item: T) => boolean;
/** 过滤的结果是否会影响其子级 */
cascaded?: boolean;
/** 是否强制为节点插入 ID 值 */
forceInject?: boolean;
}): T[];
/**
* 将日期格式化成指定格式
*
* @param date 需要格式化的Date对象
* @param pattern 格式化结构 年-y 月-M 日-d 时-H 分-m 秒-s 季度-q
*
* @returns 格式化后的字面值
*
* @example
* ```ts
* format(new Date(), 'yyyy-MM-dd')
* ```
*
* @example
* ```ts
* format(Date.now(), 'yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')
* ```
*/
export declare function format(date: Dateable, pattern?: string): string;
/**
* 根据给定的 Byte 数值,将其格式化成指定单位的大小
*
* @param byte 需要计算的 Byte 数值
* @param unit 格式化的单位
* @param precision 结果的精度
* @param joinUtil 是否加入单位
*
* @returns 格式化后的值
*/
export declare function formatByteSize(byte: number, unit?: SizeUnitWithAuto): number;
export declare function formatByteSize(byte: number, unit?: SizeUnitWithAuto, precision?: number): number;
export declare function formatByteSize(byte: number, unit?: SizeUnitWithAuto, joinUtil?: true): number;
export declare function formatByteSize(byte: number, unit?: SizeUnitWithAuto, joinUtil?: true, precision?: number): number;
/**
* 获取中文星期
*
* @param date 给定的日期
*
* @returns 中文星期
*/
export declare function getChineseWeek(date: Date): string;
export declare function getGlobalCount(): number;
/**
* 获取字符串的最后一个字符
*
* @param value 指定的字符串
*
* @returns 最后一个字符
*/
export declare function getLast(value: string): string | undefined;
/**
* 获取数组的最后一个元素
*
* @param value 指定的数组
*
* @returns 最后一个元素
*/
export declare function getLast<T>(value: T[]): T | undefined;
/**
* 获取给定年份和月份的最后一天
*
* @param year 原始年份
* @param month 原始月份
*
* @returns 最后一天
*/
export declare function getLastDayOfMonth(year: number, month: number): number;
/**
* 根据给定的日期获取上一个周日
*
* @param date 原始日期
*
* @returns 上一个周日
*/
export declare function getLastSunday(date: Date): Date;
/**
* 获取日期所在的季度
*
* @param date 给定的日期
*
* @returns 日期所在的季度
*/
export declare function getQuarter(date: Dateable): number;
/**
* 获取元素的选中宽度
*
* @param el 指定的元素
*
* @returns 元素的选中宽度
*/
export declare function getRangeWidth(el: HTMLElement | null): number;
/**
* 获取日期的时间部分
*
* @param date 给定的日期
*
* @returns 日期的时间部分
*/
export declare function getTime(date: Dateable): string;
/**
* 获取变量的类型
*
* @param value 任意变量
*
* @returns 变量的类型
*/
export declare function getType(value: unknown): string;
/**
* 获取元素横向的边框像素值
*
* @param el 指定的元素
*
* @returns 元素横向的边框像素值
*/
export declare function getXBorder(el: HTMLElement | null): number;
/**
* 获取元素横向的外边距像素值
*
* @param el 指定的元素
*
* @returns 元素横向的外边距像素值
*/
export declare function getXMargin(el: HTMLElement | null): number;
/**
* 获取元素横向的内边距像素值
*
* @param el 指定的元素
*
* @returns 元素横向的内边距像素值
*/
export declare function getXPadding(el: HTMLElement | null): number;
/**
* 获取元素纵向的边框像素值
*
* @param el 指定的元素
*
* @returns 元素纵向的边框像素值
*/
export declare function getYBorder(el: HTMLElement | null): number;
/**
* 获取元素纵向的外边距像素值
*
* @param el 指定的元素
*
* @returns 元素纵向的外边距像素值
*/
export declare function getYMargin(el: HTMLElement | null): number;
/**
* 获取元素纵向的内边距像素值
*
* @param el 指定的元素
*
* @returns 元素纵向的内边距像素值
*/
export declare function getYPadding(el: HTMLElement | null): number;
/**
* 按照一定顺序的属性对数据进行分组
*
* @param list 需要分数的数据
* @param props 需要按顺序分组的属性
*
* @returns 分组后的对象
*/
export declare function groupByProps<T = any>(list: T[], props?: Array<string | ((item: T) => any)> | string | ((item: T) => any)): Record<string, T[]>;
/**
* 判断一个对象是否包含指定的键值
*
* @param value 需判断的对象
* @param key 指定的键值
*
* @returns 是否包含键值
*/
export declare function has(value: Record<string, any>, key: string | symbol): key is keyof typeof value;
export declare interface HEX3Color extends RGB {
a?: 1;
format?: 'name' | 'hex3';
}
export declare interface HEX4Color extends RGB {
a: number;
format?: 'name' | 'hex4';
}
export declare interface HEX6Color extends RGB {
a?: 1;
format?: 'name' | 'hex6';
}
export declare interface HEX8Color extends RGB {
a: number;
format?: 'name' | 'hex8';
}
export declare const HEX_REG_3: RegExp;
export declare const HEX_REG_4: RegExp;
export declare const HEX_REG_6: RegExp;
export declare const HEX_REG_8: RegExp;
export declare const HOUR_ON_MILLISECONDS: number;
/** @deprecated renames to `HOUR_ON_MILLISECONDS` */
export declare const HOUR_ON_MILLS: number;
export declare const HOUR_ON_MINUTES = 60;
export declare const HOUR_ON_SECONDS: number;
declare interface HSL extends Record<any, any> {
h: number;
s: number;
l: number;
a?: number;
}
export declare const HSL_REG: RegExp;
export declare const HSLA_REG: RegExp;
export declare interface HSLAColor extends HSL {
a: number;
format?: 'name' | 'hsla';
}
export declare interface HSLColor extends HSL {
a?: 1;
format?: 'name' | 'hsl';
}
/**
* 将 HSL 颜色转换为 HSV 颜色
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param l 0 ~ 10% ~ 100%
*
* @returns 转换后的 HSV 颜色
*/
export declare function hslToHsv(h: number | string, s: number | string, l: number | string): HSVColor;
/**
* 将 HSL 颜色转换为 RGB 颜色
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param l 0 ~ 10% ~ 100%
*
* @returns 转换后的 RGB 颜色
*/
export declare function hslToRgb(h: number | string, s: number | string, l: number | string): RGBColor;
declare interface HSV extends Record<any, any> {
h: number;
s: number;
v: number;
a?: number;
}
export declare const HSV_REG: RegExp;
export declare const HSVA_REG: RegExp;
export declare interface HSVAColor extends HSV {
a: number;
format?: 'name' | 'hsva';
}
export declare interface HSVColor extends HSV {
a?: 1;
format?: 'name' | 'hsv';
}
/**
* 将 HSV 颜色转换为 HSL 颜色
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param v 0 ~ 10% ~ 100%
*
* @returns 转换后的 HSL 颜色
*/
export declare function hsvToHsl(h: number | string, s: number | string, v: number | string): HSLColor;
/**
* 将 HSV 颜色转换为 RGB 颜色
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param v 0 ~ 10% ~ 100%
*
* @returns 转换后的 RGB 颜色
*/
export declare function hsvToRgb(h: number | string, s: number | string, v: number | string): RGBColor;
/**
* 仅发出一次的提示消息
*
* @param message 消息内容
* @param logFn 输出函数
*/
export declare function infoOnce(message: string, logFn?: (...data: any[]) => void): void;
/**
* 判断一个值是否为指定的类型
*
* @param value 需判断的值
* @param type 指定的类型,注意大小写
*
* @returns 类型是否匹配
*/
export declare function is(value: unknown, type: string): boolean;
/**
* 判断一个值是否为数组
*
* @param value 需判断的值
*
* @returns 是否为数组
*/
export declare function isArray<T = any>(value: unknown): value is T[];
/**
* 判断一个值是否为 `BigInt`
*
* @param value 需判断的值
*
* @returns 是否为 `BigInt`
*/
export declare function isBigInt(value: unknown): value is bigint;
/**
* 判断一个值是否为布尔值
*
* @param value 需判断的值
*
* @returns 是否为布尔值
*/
export declare function isBoolean(value: unknown): value is boolean;
/** 当前环境是否为客户端 */
export declare const isClient: boolean;
/**
* 判断给定的字符串是否为一个合法颜色值
*
* @param value 原始字符串
*
* @returns 是否为合法颜色
*/
export declare function isColor(value: string): boolean;
/**
* 判断一个值是否为 `Date`
*
* @param value 需判断的值
*
* @returns 是否为 `Date`
*/
export declare function isDate(value: unknown): value is Date;
/**
* 判断一个值是否已定义
*
* @param value 需判断的值
*
* @returns 是否已定义
*/
export declare function isDefined<T = unknown>(value: T | undefined | null): value is Exclude<T, undefined | null>;
/**
* 判断指定的元素是否被禁用
*
* @param el 需判断的元素
*
* @returns 元素是否被禁用
*/
export declare function isDisabled(el?: Element | null): boolean;
/**
* 判断一个值是否为 `Element`
*
* @param value 需判断的值
* @param ssr 是否考虑服务端渲染
*
* @returns 是否为 `Element`
*/
export declare function isElement<T extends Element = Element>(value: unknown, ssr?: boolean): value is T;
/**
* 判断一个值是否为空
*
* - 如果这是一个数组或字符串,则 `length` 为 `0` 时为空
* - 如果这是一个 `Set` 或 `Map`,则 `size` 为 `0` 时为空
* - 如果这是一个对象,则无任何键值时为空
* - 如果这是一个数字,则为 `NaN` 时为空
* - 其余情况下,未定义时为空
*
* @param value 需判断的值
*
* @returns 是否为空
*/
export declare function isEmpty(value: unknown): boolean;
/**
* 判断一个值是否为 `false`
*
* @param value 需判断的值
*
* @returns 是否为 `false`
*/
export declare function isFalse(value: unknown): value is false;
/**
* 判断指定的元素是否聚焦或包含聚焦的元素
*
* @param el 需判断的元素
*
* @returns 是否聚焦或包含聚焦的元素
*/
export declare function isFocusIn(el?: Element | null): boolean;
/**
* 判断一个值是否为函数
*
* @param value 需判断的值
*
* @returns 是否为函数
*/
export declare function isFunction(value: unknown): value is (...any: any[]) => any;
/**
* 判断指定的元素是否隐藏
*
* @param el 需判断的元素
*
* @returns 元素是否隐藏
*/
export declare function isHidden(el?: Element | null): boolean;
/** 当前环境是否为 IOS */
export declare const isIOS: boolean | "";
/**
* 判断一个值能否被迭代
*
* @param value 需判断的值
*
* @returns 能否被迭代
*/
export declare function isIterable(value: unknown): boolean;
/**
* 判断给定的年份是否为闰年
*
* @param year 原始年份
*
* @returns 是否为闰年
*/
export declare function isLeapYear(year: number): boolean;
/**
* 判断一个值是否为 `Map`
*
* @param value 需判断的值
*
* @returns 是否为 `Map`
*/
export declare function isMap<K = any, V = any>(value: unknown): value is Map<K, V>;
/**
* 判断一个值是否为 `NaN`
*
* @param value 需判断的值
*
* @returns 是否为 `NaN`
*/
declare function isNaN_2(value: unknown): value is number;
export { isNaN_2 as isNaN }
/**
* 判断一个值是否未被定义
*
* @param value 需判断的值
*
* @returns 是否未定义
*/
export declare function isNull(value: unknown): value is null | undefined;
/**
* 判断一个值是否为数字
*
* @param value 需判断的值
*
* @returns 是否为数字
*/
export declare function isNumber(value: unknown): value is number;
/**
* 判断一个值是否为对象
*
* 注意,`null` 与原生的特殊对象不被包含
*
* @param value 需判断的值
*
* @returns 是否为对象
*/
export declare function isObject<T extends Record<any, any> = Record<any, any>>(value: unknown): value is T;
/**
* 判断一个值是否为 `Promise`
*
* 如果一个对象包含 `then` 和 `catch` 方法,则被认为是一个 `Promise`
*
* @param value 需判断的值
*
* @returns 是否为 `Promise`
*/
export declare function isPromise<T = any>(value: unknown): value is Promise<T>;
/**
* 判断一个值是否为正则
*
* @param value 需判断的值
*
* @returns 是否为正则
*/
export declare function isRegExp(value: unknown): value is RegExp;
/**
* 判断一个值是否为 `Set`
*
* @param value 需判断的值
*
* @returns 是否为 `Set`
*/
export declare function isSet<T = any>(value: unknown): value is Set<T>;
/**
* 判断一个值是否为字符串
*
* @param value 需判断的值
*
* @returns 是否为字符串
*/
export declare function isString(value: unknown): value is string;
/**
* 判断一个值是否为 `Symbol`
*
* @param value 需判断的值
*
* @returns 是否为 `Symbol`
*/
export declare function isSymbol(value: unknown): value is symbol;
/**
* 判断一个值是否为 `true`
*
* @param value 需判断的值
*
* @returns 是否为 `true`
*/
export declare function isTrue(value: unknown): value is true;
/**
* 检测给定的值是否可以通过 parseFlat 或 Number 方法转为数字
*
* 开启严格模式则通过正则以更严格的方法判断
*
* @param value 需要检测的值
* @param strict 是否为严格模式
*
* @returns 值是否可以转为数字
*/
export declare function isValidNumber(value: unknown, strict?: boolean): boolean;
/**
* 判断指定的元素是否可见
*
* @param el 需判断的元素
*
* @returns 元素是否可见
*/
export declare function isVisible(el?: Element | null): boolean;
/**
* 将给定的被除数和除数,不断的取余直至达到次数限制或余数小于除数,返回系列余数
*
* @param number 被除数,需大于 0
* @param divideBy 除数,需大于 1
* @param limit 次数限制,默认为 0小于 1 则不作限制
*
* @returns 相除过程的系列余数
*/
export declare function leaveNumber(number: number, divideBy: number, limit?: number): number[];
declare function listToMap<T = any, K extends keyof T = keyof T>(list: T[], prop: K, useMap?: false): Record<T[K] extends RecordKey ? T[K] : RecordKey, T>;
declare function listToMap<T = any, O = T, K extends keyof T = keyof T>(list: T[], prop: K, accessor?: (item: T) => O, useMap?: false): Record<T[K] extends RecordKey ? T[K] : RecordKey, O>;
declare function listToMap<T = any, K = RecordKey>(list: T[], prop: (item: T) => K, useMap?: false): Record<K extends RecordKey ? K : RecordKey, T>;
declare function listToMap<T = any, O = T, K = RecordKey>(list: T[], prop: (item: T) => K, accessor?: (item: T) => O, useMap?: false): Record<K extends RecordKey ? K : RecordKey, O>;
declare function listToMap<T = any, K extends keyof T = keyof T>(list: T[], prop: K, useMap?: true): Map<T[K], T>;
declare function listToMap<T = any, O = T, K extends keyof T = keyof T>(list: T[], prop: K, accessor?: (item: T) => O, useMap?: true): Map<T[K], O>;
declare function listToMap<T = any, K = any>(list: T[], prop: (item: T) => K, useMap?: true): Map<K, T>;
declare function listToMap<T = any, O = T, K = any>(list: T[], prop: (item: T) => K, accessor?: (item: T) => O, useMap?: true): Map<K, O>;
export { listToMap }
export { listToMap as transformListToMap }
/**
* 遍历树并为每个节点执行回调方法,并用其返回值构建一颗新的树
*
* @param tree 要遍历的树
* @param cb 回调函数
* @param options 遍历的配置项
*
* @returns 构建后新的树
*/
export declare function mapTree<T = any, R = any>(tree: T[], cb: (item: T, depth: number, parent: T | null) => R, options?: {
/** 是否为深度优先遍历 */
depthFirst?: boolean;
childField?: keyof T;
/** 是否强制重置 `children` 字段 */
clearChildren?: boolean;
}): R[];
/**
* 将两个对象进行深度的动态合并
*
* @param sourceObj 用于接收合并的源对象
* @param targetObj 被合并的对象,当属性名相同但值类型不同的情况,此对象的权重更高
* @param isNewObj 标记合并至一个全新的对象(深度的)
*
* @returns 合并后的对象
*/
export declare function mergeObjects<T extends Record<string, any>, U extends Record<string, any>>(sourceObj: T, targetObj: U, isNewObj?: boolean): T & U;
/**
* 精确的减法
*
* @param numbers 需要依次相减的数字
*
* @returns 差值
*/
export declare const minus: (...numbers: (number | string)[]) => number;
export declare const MINUTE_ON_MILLISECONDS: number;
/** @deprecated renames to `MINUTE_ON_MILLISECONDS` */
export declare const MINUTE_ON_MILLS: number;
export declare const MINUTE_ON_SECONDS = 60;
/**
* 将两种颜色按照一定的比例混合
*
* @param color1 第一种颜色
* @param color2 第二种颜色
* @param weight 混合比例 0 ~ 1越小则第一种颜色越少
*
* @returns 混合后的颜色
*/
export declare function mixColor(color1: Color, color2: Color, weight?: number): RGBAColor;
/**
* 将给定的实数扩大一定的倍数并保留一定的小数
*
* @param number 要处理的实数
* @param multiple 要扩大的倍数
* @param decimal 要保留的小数
*
* @returns 扩大并保留小数后的值
*/
export declare function multipleFixed(number: number, multiple: number, decimal: number): number;
export declare const NAMED_COLORS: Readonly<{
aliceblue: "f0f8ff";
antiquewhite: "faebd7";
aqua: "0ff";
aquamarine: "7fffd4";
azure: "f0ffff";
beige: "f5f5dc";
bisque: "ffe4c4";
black: "000";
blanchedalmond: "ffebcd";
blue: "00f";
blueviolet: "8a2be2";
brown: "a52a2a";
burlywood: "deb887";
burntsienna: "ea7e5d";
cadetblue: "5f9ea0";
chartreuse: "7fff00";
chocolate: "d2691e";
coral: "ff7f50";
cornflowerblue: "6495ed";
cornsilk: "fff8dc";
crimson: "dc143c";
cyan: "0ff";
darkblue: "00008b";
darkcyan: "008b8b";
darkgoldenrod: "b8860b";
darkgray: "a9a9a9";
darkgreen: "006400";
darkgrey: "a9a9a9";
darkkhaki: "bdb76b";
darkmagenta: "8b008b";
darkolivegreen: "556b2f";
darkorange: "ff8c00";
darkorchid: "9932cc";
darkred: "8b0000";
darksalmon: "e9967a";
darkseagreen: "8fbc8f";
darkslateblue: "483d8b";
darkslategray: "2f4f4f";
darkslategrey: "2f4f4f";
darkturquoise: "00ced1";
darkviolet: "9400d3";
deeppink: "ff1493";
deepskyblue: "00bfff";
dimgray: "696969";
dimgrey: "696969";
dodgerblue: "1e90ff";
firebrick: "b22222";
floralwhite: "fffaf0";
forestgreen: "228b22";
fuchsia: "f0f";
gainsboro: "dcdcdc";
ghostwhite: "f8f8ff";
gold: "ffd700";
goldenrod: "daa520";
gray: "808080";
green: "008000";
greenyellow: "adff2f";
grey: "808080";
honeydew: "f0fff0";
hotpink: "ff69b4";
indianred: "cd5c5c";
indigo: "4b0082";
ivory: "fffff0";
khaki: "f0e68c";
lavender: "e6e6fa";
lavenderblush: "fff0f5";
lawngreen: "7cfc00";
lemonchiffon: "fffacd";
lightblue: "add8e6";
lightcoral: "f08080";
lightcyan: "e0ffff";
lightgoldenrodyellow: "fafad2";
lightgray: "d3d3d3";
lightgreen: "90ee90";
lightgrey: "d3d3d3";
lightpink: "ffb6c1";
lightsalmon: "ffa07a";
lightseagreen: "20b2aa";
lightskyblue: "87cefa";
lightslategray: "789";
lightslategrey: "789";
lightsteelblue: "b0c4de";
lightyellow: "ffffe0";
lime: "0f0";
limegreen: "32cd32";
linen: "faf0e6";
magenta: "f0f";
maroon: "800000";
mediumaquamarine: "66cdaa";
mediumblue: "0000cd";
mediumorchid: "ba55d3";
mediumpurple: "9370db";
mediumseagreen: "3cb371";
mediumslateblue: "7b68ee";
mediumspringgreen: "00fa9a";
mediumturquoise: "48d1cc";
mediumvioletred: "c71585";
midnightblue: "191970";
mintcream: "f5fffa";
mistyrose: "ffe4e1";
moccasin: "ffe4b5";
navajowhite: "ffdead";
navy: "000080";
oldlace: "fdf5e6";
olive: "808000";
olivedrab: "6b8e23";
orange: "ffa500";
orangered: "ff4500";
orchid: "da70d6";
palegoldenrod: "eee8aa";
palegreen: "98fb98";
paleturquoise: "afeeee";
palevioletred: "db7093";
papayawhip: "ffefd5";
peachpuff: "ffdab9";
peru: "cd853f";
pink: "ffc0cb";
plum: "dda0dd";
powderblue: "b0e0e6";
purple: "800080";
rebeccapurple: "663399";
red: "f00";
rosybrown: "bc8f8f";
royalblue: "4169e1";
saddlebrown: "8b4513";
salmon: "fa8072";
sandybrown: "f4a460";
seagreen: "2e8b57";
seashell: "fff5ee";
sienna: "a0522d";
silver: "c0c0c0";
skyblue: "87ceeb";
slateblue: "6a5acd";
slategray: "708090";
slategrey: "708090";
snow: "fffafa";
springgreen: "00ff7f";
steelblue: "4682b4";
tan: "d2b48c";
teal: "008080";
thistle: "d8bfd8";
tomato: "ff6347";
turquoise: "40e0d0";
violet: "ee82ee";
wheat: "f5deb3";
white: "fff";
whitesmoke: "f5f5f5";
yellow: "ff0";
yellowgreen: "9acd32";
}>;
/**
* 在下一渲染帧,仅执行一次传入的方法
*
* @param method 需要执行的方法
* @param args 方法的额外参数,在方法调用前多次传入将会覆盖之前的参数
*/
export declare function nextFrameOnce<T extends (...args: any[]) => any>(method: T, ...args: any[]): undefined;
/**
* 在下一微任务,仅执行一次传入的方法
*
* @param method 需要执行的方法
* @param args 方法的额外参数,在方法调用前多次传入将会覆盖之前的参数
*/
export declare function nextTickOnce<T extends (...args: any[]) => any>(method: T, ...args: any[]): undefined;
/**
* 一个空的占位函数
*/
export declare function noop(...args: any[]): any;
/**
* 将原始透明度值标准化为 0 ~ 1 的值
*
* @param a 0 ~ 10% ~ 100%
*
* @returns 标准化后的透明度
*/
export declare function normalizeAlpha(a: number | string): number;
/**
* 将原始的 h、s、l 值标准化为 0 ~ 1 的值
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param l 0 ~ 10% ~ 100%
*
* @returns 标准化后的 HSL 对象
*/
export declare function normalizeHsl(h: number | string, s: number | string, l: number | string): {
h: number;
s: number;
l: number;
};
/**
* 将原始的 h、s、v 值标准化为 0 ~ 1 的值
*
* @param h 0 ~ 360
* @param s 0 ~ 10% ~ 100%
* @param v 0 ~ 10% ~ 100%
*
* @returns 标准化的 HSV 对象
*/
export declare function normalizeHsv(h: number | string, s: number | string, v: number | string): {
h: number;
s: number;
v: number;
};
/**
* 将路径中的 `\` 替换为 `/`
*
* @param path 指定的路径
*
* @returns 替换后的路径
*/
export declare function normalizePath(path: string): string;
/**
* 将原始的 r、g、b 值标准化为 0 ~ 1 的值
*
* @param r 0 ~ 255
* @param g 0 ~ 255
* @param b 0 ~ 255
*
* @returns 标准化后 RGB 对象
*/
export declare function normalizeRgb(r: number | string, g: number | string, b: number | string): {
r: number;
g: number;
b: number;
};
export declare const numberRE: RegExp;
export declare type ObjectColor = Exclude<Color, string>;
/**
* 将给定的数字转换为序数词
*
* @param value 需要转换的数字
*
* @returns 转换后的序数词
*/
export declare function ordinalNumber(value: number): string;
/**
* 为给定的整数开头填充 0直至满足指定的长度
*
* @param number 需要处理的整数
* @param length 填充至的长度
*
* @returns 填充后的字面值
*/
export declare function padStartZeros(number: number, length: number): string;
/**
* 将给定的 {@link Color} 解析为 {@link ColorMeta}
*
* @param color 原始颜色值
*
* @returns 解析后的颜色元数据
*/
export declare function parseColor(color: Color): ColorMeta;
/**
* 将给定的 {@link Color} 解析为 {@link RGBAColor}
*
* @param originColor 原始颜色值
*
* @returns 解析后的 RGB 颜色对象
*/
export declare function parseColorToRgba(originColor: Color): RGBAColor;
/**
* 将给定的字符串转化为 {@link ObjectColor},无法转换时返回 null
*
* @param color 原始颜色字符串
*
* @returns 解析后的颜色对象
*/
export declare function parseStringColor(color: string): ObjectColor | null;
/**
* 精确的加法
*
* @param numbers 需要依次相加的数字
*
* @returns 和
*/
export declare const plus: (...numbers: (number | string)[]) => number;
export declare const QUARTER_ON_MONTHS = 3;
/**
* 检索匹配指定选择器的所有元素
*
* @param selector 选择器
* @param root 根元素,不指定时为 `document.body`
*
* @returns 匹配的所有元素
*/
export declare function queryAll(selector: string, root?: Element | null): HTMLElement[];
/**
* 检索可以被切换焦点Tab的元素
*
* @param root 根元素,不指定时为 `document.body`
* @param includeDisabled 是否包含被禁用的元素
*
* @returns 可以被切换焦点的元素
*/
export declare function queryTabables(root?: HTMLElement, includeDisabled?: boolean): HTMLElement[];
export declare const raf: (cb: FrameRequestCallback) => void;
/**
* 在给定的范围内随机一个数
*
* @param max 最大值
* @param min 最小值,默认为 0
*
* @returns 生成的随机数
*/
export declare function random(max: number, min?: number): number;
/**
* 随机生成一个颜色值
*
* @param withAlpha 是否具有透明度
* @param type 颜色的类型
*
* @returns 生成的颜色字面值
*/
export declare function randomColor(withAlpha?: boolean, type?: ColorType): string;
/**
* 随机生成一个冷色调的颜色值
*
* @param withAlpha 是否具有透明度
* @param type 颜色的类型
*
* @returns 生成的颜色字面值
*/
export declare function randomHardColor(withAlpha?: boolean, type?: ColorType): string;
/**
* 随机生成一个特定色调(冷暖色)的颜色值
*
* @param prefer 色调
* @param withAlpha 是否具有透明度
* @param type 颜色的类型
*
* @returns 生成的颜色字面值
*/
export declare function randomPreferColor(prefer: 'hard' | 'soft', withAlpha?: boolean, type?: ColorType): string;
/**
* 随机生成一个暖色调的颜色值
*
* @param withAlpha 是否具有透明度
* @param type 颜色的类型
*
* @returns 生成的颜色字面值
*/
export declare function randomSoftColor(withAlpha?: boolean, type?: ColorType): string;
/**
* 根据长度生成一串随机的字符串
*
* @param length 字符串的长度
*
* @returns 生成的字符串
*/
export declare function randomString(length?: number): string;
/**
* 生成一个值递进的数组
*
* @param size 大小
* @param start 开始的数值,默认为 1
* @param step 跨度,默认为 1
*
* @returns 生成的数组
*/
export declare function range(size: number, start?: number, step?: number): number[];
/**
* 生成一个天数递进的日期数组
*
* @param start 开始日期
* @param size range 的大小, 默认 42 (一般电子日历为 6 行 7 列)
* @param step range 的跨幅
*
* @returns 生成的日期数组
*/
export declare function rangeDate(start: Dateable, size?: number, step?: number): Date[];
/**
* 生成一个月份递进的日期数组
*
* @param start 开始日期
* @param size range 的大小, 默认 12 (一年)
* @param step range 的跨幅
*
* @returns 生成的日期数组
*/
export declare function rangeMonth(start: Dateable, size?: number, step?: number): Date[];
declare type RecordKey = string | number | symbol;
/**
* 移除数组中的某个元素
*
* @param array 需要被移除元素的数组
* @param item 需要被移除的元素, 或一个查找方法,如果元素为函数时则需要做一层简单包装
* @param isFn 标记数组的元素是否为函数
*
* @returns 被移除的元素
*/
export declare function removeArrayItem<T = any>(array: T[], item: T | ((item: T) => boolean), isFn?: boolean): T | null;
declare interface RGB extends Record<any, any> {
r: number;
g: number;
b: number;
a?: number;
}
export declare const RGB_REG: RegExp;
export declare const RGBA_REG: RegExp;
export declare interface RGBAColor extends RGB {
a: number;
format?: 'name' | 'rgba';
}
/**
* 将 RGBA 颜色转换为 HEX 颜色
*
* @param r 0 ~ 255
* @param g 0 ~ 255
* @param b 0 ~ 255
* @param a 0 ~ 10% ~ 100%
* @param allow4Char 是否允许 4 位的 HEX 值
*
* @returns 转换后的 HEX 颜色
*/
export declare function rgbaToHex(r: number | string, g: number | string, b: number | string, a: number | string, allow4Char?: boolean): string;
export declare interface RGBColor extends RGB {
a?: 1;
format?: 'name' | 'rgb';
}
/**
* 将 RGB 颜色转换为 HEX 颜色
*
* @param r 0 ~ 255
* @param g 0 ~ 255
* @param b 0 ~ 255
* @param allow3Char 是否允许 3 位的 HEX 值
*
* @returns 转换后的 HEX 颜色
*/
export declare function rgbToHex(r: number | string, g: number | string, b: number | string, allow3Char?: boolean): string;
/**
* 将 RGB 颜色转换为 HSL 颜色
*
* @param r 0 ~ 255
* @param g 0 ~ 255
* @param b 0 ~ 255
*
* @returns 转换后的 HSL 颜色
*/
export declare function rgbToHsl(r: number | string, g: number | string, b: number | string): HSLColor;
/**
* 将 RGB 颜色转换为 HSV 颜色
*
* @param r 0 ~ 255
* @param g 0 ~ 255
* @param b 0 ~ 255
*
* @returns 转换后的 HSV 颜色
*/
export declare function rgbToHsv(r: number | string, g: number | string, b: number | string): HSVColor;
/**
* 根据临界值对给定的数字进行舍入
*
* @param number 需要舍入的数
* @param criticalValue 舍入的临界值 (0 ~ 1),达到临界值进位反之舍弃
*
* @returns 舍入后的值
*/
export declare function round(number: number, criticalValue: number): number;
/**
* 按指定的并发数,并行地为系列源数据执行操作
*
* @param maxConcurrency 最大的并发数
* @param source 源数据
* @param iteratorFn 处理操作的异步函数
*
* @returns 等待所有任务执行完的 Promise 对象
*/
export declare function runParallel<T>(maxConcurrency: number, source: T[], iteratorFn: (item: T, source: T[]) => Promise<any>): Promise<any[]>;
/**
* 将一个任务队列按每帧一次依次指定,返回一个触发取消的方法
*
* @param queue 任务队列
*
* @returns 终止队列执行的方法
*/
export declare function runQueueFrame(queue: Array<() => void>): () => boolean;
export declare const SECOND_ON_MILLISECONDS = 1000;
/** @deprecated renames to `SECOND_ON_MILLISECONDS` */
export declare const SECOND_ON_MILLS = 1000;
/**
* 将给定的数字格式化为指定的位阶
*
* @param number 需要格式化的数字
* @param segment 分隔的位数,默认为 3
* @param separator 分隔的符号,默认为 ','
*
* @returns 格式化后的字面值
*/
export declare function segmentNumber(number: number | string, segment?: number, separator?: string): string;
export declare function setGlobalCount(count: number): void;
export declare type SizeUnit = Exclude<SizeUnitWithAuto, AnyCase<'AUTO'>>;
export declare type SizeUnitWithAuto = AnyCase<'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'AUTO'>;
/**
* 根据依赖的属性对数组逐层排序
*
* @param list 需要排序的数组
* @param props 排序依赖的属性
*
* @returns 排序后的数组
*/
export declare function sortByProps<T = any>(list: T[], props: keyof T | SortOptions<keyof T> | (keyof T | SortOptions<keyof T>)[]): T[];
export declare interface SortOptions<T = string> {
/** 属性名 */
key: T;
/** 排序方法 */
method?: (prev: any, next: any) => number;
/** 读取方法 */
accessor?: (...args: any[]) => any;
/** 升降序 */
type?: 'asc' | 'desc';
/** 传入读取器的额外参数 */
params?: any[];
}
/**
* 获取给定的日期所在天的开始日期
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function startOfDay(date: Dateable): Date;
/**
* 获取给定的日期所在小时的开始日期 (分钟归零)
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function startOfHour(date: Dateable): Date;
/**
* 获取给定的日期所在分钟的开始日期 (秒归零)
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function startOfMinute(date: Dateable): Date;
/**
* 获取给定的日期所在月份的第一天的开始日期
*
* @param date 原始日期
* @param startOn 设定一个月的第一天,默认为 1 号
*
* @returns 新的开始日期
*/
export declare function startOfMonth(date: Dateable, startOn?: number): Date;
/**
* 获取给定日期所在季度的第一天的开始日期
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function startOfQuarter(date: Dateable): Date;
/**
* 获取给定的日期所在秒的开始日期(毫秒归零)
*
* @param date 原始日期
*
* @returns 新的开始日期
*/
export declare function startOfSecond(date: Dateable): Date;
/**
* 获取给定的日期所在周的第一天的开始日期
*
* @param date 需要解析的时间
* @param startOn 设定周的第一天,默认为周日
*
* @returns 新的开始日期
*/
export declare function startOfWeek(date: Dateable, startOn?: number): Date;
/**
* 获取给定日期所在年份的第一天的开始日期
*
* @param date 原始日期
* @param startOn 设定年的开始月份,默认为一月
*
* @returns 新的开始日期
*/
export declare function startOfYear(date: Dateable, startOn?: number): Date;
/**
* 判断当前的环境是否支持 CSS 样式:`gap`、`row-gap` 和 `column-gap`
*
* @returns 是否支持
*/
export declare function supportFlexGap(): boolean;
/**
* 判断当前环境是否支持 `<img>` 标签的 `loading` 属性
*
* @returns 是否支持
*/
export declare function supportImgLoading(): boolean;
/**
* 将一个方法进行节流
*
* @param method 需要节流的方法,需自行绑定 this
* @param interval 节流后的触发间隔,默认 16 ms (1 帧)
*
* @returns 节流后的方法
*/
export declare function throttle<T extends (...args: any[]) => any>(method: T, interval?: number): (...args: Parameters<T>) => void;
/**
* 精确的乘法
*
* @param numbers 需要依次相乘的数字
*
* @returns 乘积
*/
export declare const times: (...numbers: (number | string)[]) => number;
/**
* 将指定的值转换为 HTML 属性值
*
* @param value 需要转换的值
*
* @returns 转换后的 HTML 属性值
*/
export declare function toAttrValue(value?: boolean | null): 'true' | undefined;
export declare function toAttrValue(value?: string | number | null): string | undefined;
/**
* 将字面值转换为小驼峰
*
* @param value 需要转换的字面值
*
* @returns 转换后的小驼峰字面值
*/
export declare function toCamelCase(value: string): string;
/**
* 将字面值转换为大驼峰
*
* @param value 需要转换的字面值
*
* @returns 转换后的大驼峰字面值
*/
export declare function toCapitalCase<T extends string>(value: T): CapitalCase<T>;
/**
* 给定的值如果为合法数字,则将转换为像素值
*
* @param value 需要判断的值
*
* @returns 转换后的像素值
*/
export declare function toCssSize(value: number | string): string;
/**
* 将任意可转为 `Date` 对象的变量转为一个新日期
*
* @param any 任意可转换的值
* @param strict 是否在传入非法值时抛错
*
* @returns 转换后的 `Date` 对象
*/
export declare function toDate(any: Dateable, strict?: boolean): Date;
/**
* 一个返回 `false` 的占位函数
*
* @returns `false`
*/
export declare function toFalse(...args: any[]): false;
/**
* 将给定的实数保留一定的小数
*
* @param number 需要处理的实数
* @param decimal 需要保留的小数
*
* @returns 保留小数后的值
*/
export declare function toFixed(number: number, decimal: number): number;
/**
* 获取给定颜色的灰度
*
* @param color 颜色字面值
*
* @returns 颜色的灰度
*/
export declare function toGrayScale(color: string): number;
/**
* 将字面值转换为短横线连接
*
* @param value 需要转换的字面值
*
* @returns 转换后的短横线连接字面值
*
* @example
* ```ts
* toKebabCase('AaBbCc') // aa-bb-cc
* toKebabCase('AABb') // aa-bb
* toKebabCase('AAA') // aaa
* toKebabCase('AaBb CcDd') // aa-bb cc-dd
* ```
*/
export declare function toKebabCase(value: string): string;
/**
* 将给定的值转成数字NaN 的情况将会处理成 0
*
* @param value 需要转换的值
*
* @returns 转换后的数字
*/
export declare function toNumber(value: unknown): number;
/**
* 将数字处理为的指定的有效位数
*
* @param number 需要处理的数字
* @param precision 数字的有效位数
*
* @returns 处理后的数字
*
* @example
* ```ts
* toPrecision(0.09999999999999998) === 0.1 // true
* ```
*/
export declare function toPrecision(number: number | string, precision?: number): number;
/**
* 一个返回 `true` 的占位函数
*
* @returns `true`
*/
export declare function toTrue(...args: any[]): true;
/**
* 专用的类型,用于适配 Vexip UI 中 `transfer` 属性的处理
*/
export declare interface TransferNode extends Element {
__transferElement?: Element | null;
}
/**
* 将一个展平的列表转换为树
*
* @param list 要转换的列表
* @param options 转换的配置项
*
* @returns 转换后的树
*/
declare function transformTree<T = any>(list: T[], options?: TreeOptions<keyof T>): T[];
export { transformTree as buildTree }
export { transformTree }
export declare interface TreeOptions<T = string> {
keyField?: T;
childField?: T;
parentField?: T;
/** 若指定,`parent` 值等于 `rootId` 的节点被认为是顶级节点 */
rootId?: any;
}
/**
* 当前是否可以使用触摸交互
*/
export declare const USE_TOUCH: boolean;
/**
* 遍历树并为每个节点执行回调方法
*
* @param tree 要遍历的树
* @param cb 回调函数
* @param options 遍历的配置项
*/
export declare function walkTree<T = any>(tree: T[], cb: (item: T, depth: number, parent: T | null) => void, options?: {
/** 是否为深度优先遍历 */
depthFirst?: boolean;
childField?: keyof T;
}): void;
/**
* 仅发出一次的警告消息
*
* @param message 消息内容
* @param logFn 输出函数
*/
export declare function warnOnce(message: string, logFn?: (...data: any[]) => void): void;
export declare const WEEK_ON_DAYS = 7;
export declare const WEEK_ON_HOURS: number;
export declare const WEEK_ON_MILLISECONDS: number;
/** @deprecated renames to `WEEK_ON_MILLISECONDS` */
export declare const WEEK_ON_MILLS: number;
export declare const WEEK_ON_MINUTES: number;
export declare const WEEK_ON_SECONDS: number;
/**
* 将指定的文本写入粘贴板
*
* @param text 需要写入的文本
*
* @returns 是否写入成功
*/
export declare function writeClipboard(text: string): Promise<boolean>;
export declare const YEAR_ON_MONTHS: number;
export declare const YEAR_ON_QUARTERS = 4;
export { }