@veltra/utils 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","names":[],"sources":["../../src/form/validate.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\n\nimport type { Undef } from '../types/helper'\nimport type { ValidateRule, Data, ValidatorConfig, PresetRule } from '../types/utils/form/validate'\n\nconst isEmpty = (value: any): value is null | undefined => {\n return value === null || value === undefined\n}\n\nconst presetRules: Record<PresetRule, (value: string) => string | undefined> = {\n email(v) {\n const re = /^([\\w_-]+)@([\\w-]+[.]?)*[\\w]+\\.[a-zA-Z]{2,10}$/\n if (!re.test(v)) {\n return '邮箱格式不正确'\n }\n },\n phone(v) {\n const re = /^\\d{11}$/\n if (!re.test(v)) {\n return '手机号格式不正确'\n }\n },\n num(v) {\n const re = /^\\d+$/\n if (!re.test(v)) {\n return '数字格式不正确'\n }\n },\n url(v) {\n const re = /^(ftp|https?):\\/\\/([\\w_-]+)\\.([\\w-]+[.]?)*[\\w]+\\.[a-zA-Z]{2,10}(.*)/\n if (!re.test(v)) {\n return '链接格式不正确'\n }\n },\n\n idCard(v) {\n const re = /^(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|X)$/\n if (!re.test(v)) {\n return '身份证格式不正确'\n }\n }\n}\n\n/** 预设规则 */\nconst ruleTypes = {\n required(value: any, required: ValidateRule['required']): Undef<string> {\n if (required === false) return\n\n const errMsg = typeof required === 'string' ? required : '该项不能为空'\n if (isEmpty(value)) return errMsg\n\n if (Array.isArray(value) && !value.length) return errMsg\n if (typeof value === 'string' && !value) return errMsg\n },\n min(value: any, rule: ValidateRule['min']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项必须大于等于${_rule}`\n if (typeof value !== 'number') return `${value}不是一个数字`\n if (value < _rule) return errMsg\n },\n max(value: any, rule: ValidateRule['max']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项必须小于等于${_rule}`\n if (typeof value !== 'number') return `${value}不是一个数字`\n if (value > _rule) return errMsg\n },\n\n minLen(value: any, rule: ValidateRule['minLen']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项长度必须大于等于${_rule}`\n if (!Array.isArray(value) && typeof value !== 'string') return `${value}不是一个字符串或数组`\n if (value.length < _rule) return errMsg\n },\n maxLen(value: any, rule: ValidateRule['maxLen']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项长度必须小于等于:${_rule}`\n if (!Array.isArray(value) && typeof value !== 'string') return `${value}不是一个字符串或数组`\n if (value.length > _rule) return errMsg\n },\n match(value: any, rule: ValidateRule['match']): Undef<string> {\n if (isEmpty(value) || value === '') return\n if (typeof rule === 'string') {\n if (!rule) return\n rule = new RegExp(rule)\n }\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项不匹配正则:${_rule}`\n if (typeof value !== 'string') return `${value}不是一个字符串`\n if (!_rule.test(value)) return errMsg\n },\n preset(value: any, rule: ValidateRule['preset']): Undef<string> {\n if (isEmpty(value) || value === '' || !rule) return\n if (typeof value !== 'string') return `${value}不是一个字符串`\n const ruleValidator = presetRules[rule]\n return ruleValidator(value)\n }\n}\n/** */\nexport class Validator<\n Rules extends Record<string, ValidateRule> = Record<string, ValidateRule>,\n Field extends keyof Rules = keyof Rules\n> {\n protected rules: Rules\n\n private config?: ValidatorConfig\n\n constructor(rules: Rules, config?: ValidatorConfig) {\n this.rules = rules\n if (config) {\n this.config = config\n }\n }\n\n /** 是否存在规则 */\n private get existRules() {\n for (const _ in this.rules) {\n return true\n }\n return false\n }\n\n /**\n * 校验单条数据\n * @param data 数据\n */\n private async validateSingleData(\n data: Record<any, any>,\n fields?: Field | Field[]\n ): Promise<{ [key in Field]?: string[] }> {\n const fieldErrors: { [key in Field]?: string[] } = {}\n\n if (!this.existRules) return fieldErrors\n\n const lazy = this.config?.lazy ?? true\n\n fields = fields\n ? Array.isArray(fields)\n ? fields\n : [fields]\n : (Object.keys(this.rules) as Field[])\n\n // 懒校验,当有一个规则不通过,剩下的规则不再校验\n if (lazy) {\n // 校验字段\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const errors = await this.validateValueLazy(data, field)\n if (errors.length === 0) continue\n fieldErrors[field] = errors\n }\n return fieldErrors\n } else {\n // 校验字段\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const errors = await this.validateValue(data, field)\n if (errors.length === 0) continue\n fieldErrors[field] = errors\n }\n\n return fieldErrors\n }\n }\n\n private async validateValue(data: Record<any, any>, field: Field) {\n const rules = this.rules[field]!\n const value = o(data).get(field as string)\n\n const { validator, required, ...normalRules } = rules\n\n let errors: string[] = []\n\n // 必填要先去校验\n if (required) {\n const err = ruleTypes.required(value, required)\n err && errors.push(err)\n }\n\n // 校验规则\n for (const ruleKey in normalRules) {\n const validate = ruleTypes[ruleKey]\n if (!validate) continue\n const err = validate(value, normalRules[ruleKey])\n err && errors.push(err)\n }\n\n // 自定义校验\n if (validator) {\n const err = await validator(value, data)\n err && errors.push(err)\n }\n\n return errors\n }\n\n private async validateValueLazy(data: Record<any, any>, field: Field): Promise<string[]> {\n const rules = this.rules[field]\n const value = o(data).get(field as string)\n let errors: string[] = []\n\n if (!rules) return errors\n\n const { validator, required, ...normalRules } = rules\n\n // 必填要先去校验\n if (required) {\n const err = ruleTypes.required(value, required)\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n // 校验规则\n for (const ruleKey in normalRules) {\n const validate = ruleTypes[ruleKey]\n if (!validate) continue\n\n const err = validate(value, normalRules[ruleKey])\n\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n // 自定义校验最火校验\n if (validator) {\n const err = await validator(value, data)\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n return errors\n }\n\n /**\n * 校验多条数据\n * @param field 需要校验的字段\n */\n private async validateManyData(\n data: Data,\n field?: Field | Field[]\n ): Promise<{ [key in Field]?: string[] }> {\n let i = 0\n while (i < data.length) {\n const item = data[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const fieldErrors = await this.validateSingleData(item, field)\n if (Object.keys(fieldErrors).length > 0) {\n return fieldErrors\n }\n i++\n }\n\n return {}\n }\n\n /**\n * 校验\n * @param data 数据\n * @param fields 字段\n * @returns\n */\n async validate(data: Data, fields?: Field | Field[]): Promise<{ [key in Field]?: string[] }> {\n return Array.isArray(data)\n ? this.validateManyData(data, fields)\n : this.validateSingleData(data, fields)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","names":[],"sources":["../../src/form/validate.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\n\nimport type { Undef } from '../types/helper'\nimport type { ValidateRule, Data, ValidatorConfig, PresetRule } from '../types/utils/form/validate'\n\nconst isEmpty = (value: any): value is null | undefined => {\n return value === null || value === undefined\n}\n\nconst presetRules: Record<PresetRule, (value: string) => string | undefined> = {\n email(v) {\n const re = /^([\\w_-]+)@([\\w-]+[.]?)*[\\w]+\\.[a-zA-Z]{2,10}$/\n if (!re.test(v)) {\n return '邮箱格式不正确'\n }\n },\n phone(v) {\n const re = /^\\d{11}$/\n if (!re.test(v)) {\n return '手机号格式不正确'\n }\n },\n num(v) {\n const re = /^\\d+$/\n if (!re.test(v)) {\n return '数字格式不正确'\n }\n },\n url(v) {\n const re = /^(ftp|https?):\\/\\/([\\w_-]+)\\.([\\w-]+[.]?)*[\\w]+\\.[a-zA-Z]{2,10}(.*)/\n if (!re.test(v)) {\n return '链接格式不正确'\n }\n },\n\n idCard(v) {\n const re = /^(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|X)$/\n if (!re.test(v)) {\n return '身份证格式不正确'\n }\n }\n}\n\n/** 预设规则 */\nconst ruleTypes = {\n required(value: any, required: ValidateRule['required']): Undef<string> {\n if (required === false) return\n\n const errMsg = typeof required === 'string' ? required : '该项不能为空'\n if (isEmpty(value)) return errMsg\n\n if (Array.isArray(value) && !value.length) return errMsg\n if (typeof value === 'string' && !value) return errMsg\n },\n min(value: any, rule: ValidateRule['min']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项必须大于等于${_rule}`\n if (typeof value !== 'number') return `${value}不是一个数字`\n if (value < _rule) return errMsg\n },\n max(value: any, rule: ValidateRule['max']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项必须小于等于${_rule}`\n if (typeof value !== 'number') return `${value}不是一个数字`\n if (value > _rule) return errMsg\n },\n\n minLen(value: any, rule: ValidateRule['minLen']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项长度必须大于等于${_rule}`\n if (!Array.isArray(value) && typeof value !== 'string') return `${value}不是一个字符串或数组`\n if (value.length < _rule) return errMsg\n },\n maxLen(value: any, rule: ValidateRule['maxLen']): Undef<string> {\n if (isEmpty(value)) return\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项长度必须小于等于:${_rule}`\n if (!Array.isArray(value) && typeof value !== 'string') return `${value}不是一个字符串或数组`\n if (value.length > _rule) return errMsg\n },\n match(value: any, rule: ValidateRule['match']): Undef<string> {\n if (isEmpty(value) || value === '') return\n if (typeof rule === 'string') {\n if (!rule) return\n rule = new RegExp(rule)\n }\n let _rule = Array.isArray(rule) ? rule[0] : rule!\n let errMsg = Array.isArray(rule) ? rule[1] : `该项不匹配正则:${_rule}`\n if (typeof value !== 'string') return `${value}不是一个字符串`\n if (!_rule.test(value)) return errMsg\n },\n preset(value: any, rule: ValidateRule['preset']): Undef<string> {\n if (isEmpty(value) || value === '' || !rule) return\n if (typeof value !== 'string') return `${value}不是一个字符串`\n const ruleValidator = presetRules[rule]\n return ruleValidator(value)\n }\n}\n/** */\nexport class Validator<\n Rules extends Record<string, ValidateRule> = Record<string, ValidateRule>,\n Field extends keyof Rules = keyof Rules\n> {\n protected rules: Rules\n\n private config?: ValidatorConfig\n\n constructor(rules: Rules, config?: ValidatorConfig) {\n this.rules = rules\n if (config) {\n this.config = config\n }\n }\n\n /** 是否存在规则 */\n private get existRules() {\n for (const _ in this.rules) {\n return true\n }\n return false\n }\n\n /**\n * 校验单条数据\n * @param data 数据\n */\n private async validateSingleData(\n data: Record<any, any>,\n fields?: Field | Field[]\n ): Promise<{ [key in Field]?: string[] }> {\n const fieldErrors: { [key in Field]?: string[] } = {}\n\n if (!this.existRules) return fieldErrors\n\n const lazy = this.config?.lazy ?? true\n\n fields = fields\n ? Array.isArray(fields)\n ? fields\n : [fields]\n : (Object.keys(this.rules) as Field[])\n\n // 懒校验,当有一个规则不通过,剩下的规则不再校验\n if (lazy) {\n // 校验字段\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const errors = await this.validateValueLazy(data, field)\n if (errors.length === 0) continue\n fieldErrors[field] = errors\n }\n return fieldErrors\n } else {\n // 校验字段\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const errors = await this.validateValue(data, field)\n if (errors.length === 0) continue\n fieldErrors[field] = errors\n }\n\n return fieldErrors\n }\n }\n\n private async validateValue(data: Record<any, any>, field: Field) {\n const rules = this.rules[field]!\n const value = o(data).get(field as string)\n\n const { validator, required, ...normalRules } = rules\n\n let errors: string[] = []\n\n // 必填要先去校验\n if (required) {\n const err = ruleTypes.required(value, required)\n err && errors.push(err)\n }\n\n // 校验规则\n for (const ruleKey in normalRules) {\n const validate = ruleTypes[ruleKey]\n if (!validate) continue\n const err = validate(value, normalRules[ruleKey])\n err && errors.push(err)\n }\n\n // 自定义校验\n if (validator) {\n const err = await validator(value, data)\n err && errors.push(err)\n }\n\n return errors\n }\n\n private async validateValueLazy(data: Record<any, any>, field: Field): Promise<string[]> {\n const rules = this.rules[field]\n const value = o(data).get(field as string)\n let errors: string[] = []\n\n if (!rules) return errors\n\n const { validator, required, ...normalRules } = rules\n\n // 必填要先去校验\n if (required) {\n const err = ruleTypes.required(value, required)\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n // 校验规则\n for (const ruleKey in normalRules) {\n const validate = ruleTypes[ruleKey]\n if (!validate) continue\n\n const err = validate(value, normalRules[ruleKey])\n\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n // 自定义校验最火校验\n if (validator) {\n const err = await validator(value, data)\n if (err) {\n errors.push(err)\n return errors\n }\n }\n\n return errors\n }\n\n /**\n * 校验多条数据\n * @param field 需要校验的字段\n */\n private async validateManyData(\n data: Data,\n field?: Field | Field[]\n ): Promise<{ [key in Field]?: string[] }> {\n let i = 0\n while (i < data.length) {\n const item = data[i]!\n // oxlint-disable-next-line eslint(no-await-in-loop)\n const fieldErrors = await this.validateSingleData(item, field)\n if (Object.keys(fieldErrors).length > 0) {\n return fieldErrors\n }\n i++\n }\n\n return {}\n }\n\n /**\n * 校验\n * @param data 数据\n * @param fields 字段\n * @returns\n */\n async validate(data: Data, fields?: Field | Field[]): Promise<{ [key in Field]?: string[] }> {\n return Array.isArray(data)\n ? this.validateManyData(data, fields)\n : this.validateSingleData(data, fields)\n }\n}\n"],"mappings":"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"}
|
package/dist/helper/tween.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tween.js","names":[],"sources":["../../src/helper/tween.ts"],"sourcesContent":["/** 自 cat-kit 3.x Tween 行为对齐的轻量动画(原 `cat-kit/fe` 导出) */\n\nexport interface AnimeConfig<State extends Record<string, number>> {\n duration?: number\n easingFunction?: (progress: number) => number\n onComplete?(state: State): void\n}\n\nexport interface TweenConfig<State extends Record<string, number>> {\n duration?: number\n onUpdate?(state: State): void\n onComplete?(state: State): void\n easingFunction?: (progress: number) => number\n}\n\nexport class Tween<State extends Record<string, number> = Record<string, number>> {\n readonly state: State\n protected duration = 300\n protected onUpdate?: (state: State) => void\n protected onComplete?: (state: State) => void\n protected frameId?: number\n protected easingFunction: (progress: number) => number\n private defaultState: State\n\n constructor(state: State, config?: TweenConfig<State>) {\n this.state = state\n this.defaultState = { ...state }\n const { duration, onUpdate, onComplete, easingFunction } = config || {}\n if (duration !== undefined) this.duration = duration\n if (onUpdate !== undefined) this.onUpdate = onUpdate\n if (onComplete !== undefined) this.onComplete = onComplete\n this.easingFunction = easingFunction ?? Tween.easing.linear\n }\n\n protected raf(options: {\n onComplete: () => void\n duration: number\n tick: (p: number) => void\n }): void {\n const start = performance.now()\n const { onComplete, tick, duration } = options\n const update = (timestamp: number) => {\n const elapsed = timestamp - start\n const progress = Math.min(elapsed / duration, 1)\n tick(progress)\n if (progress < 1) {\n this.frameId = requestAnimationFrame(update)\n } else {\n tick(progress)\n this.stop()\n onComplete()\n }\n }\n this.frameId = requestAnimationFrame(update)\n }\n\n to(state: Partial<State>, config?: AnimeConfig<State>): void {\n this.stop()\n const prevState = { ...this.state }\n const stateDistance = Object.keys(state).reduce(\n (acc, key) => {\n const k = key as keyof State\n const sv = state[k] as number\n const pv = prevState[k] as number\n if ((sv || sv === 0) && (pv || pv === 0)) {\n acc[key] = sv - pv\n }\n return acc\n },\n {} as Record<string, number>\n )\n const duration = config?.duration || this.duration\n const easingFunction = config?.easingFunction || this.easingFunction\n const onComplete = config?.onComplete || this.onComplete\n this.raf({\n duration,\n onComplete: () => {\n for (const key in state) {\n if (key in this.state) {\n ;(this.state as Record<string, number>)[key] = state[key as keyof State] as number\n }\n }\n this.onUpdate?.(this.state)\n onComplete?.(this.state)\n },\n tick: (progress) => {\n for (const key in stateDistance) {\n const pk = key as keyof State\n const target = (prevState[pk] as number) + easingFunction(progress) * stateDistance[key]!\n ;(this.state as Record<string, number>)[key] = target\n }\n this.onUpdate?.(this.state)\n }\n })\n }\n\n back(config?: AnimeConfig<State>): void {\n this.to(this.defaultState as Partial<State>, config)\n }\n\n private stop(): boolean {\n if (!this.frameId) return false\n cancelAnimationFrame(this.frameId)\n this.frameId = undefined\n return true\n }\n\n static readonly easing = {\n linear: (p: number) => p,\n easeInQuad: (p: number) => p * p,\n easeOutQuad: (p: number) => p * (2 - p),\n easeInOutQuad: (p: number) => (p < 0.5 ? 2 * p * p : -1 + (4 - 2 * p) * p),\n easeInBack: (p: number) => p * p * ((2.70158 + 1) * p - 1),\n easeOutBack: (p: number) => 1 + 2.70158 * Math.pow(p - 1, 3) + 1.70158 * Math.pow(p - 1, 2),\n easeInOutBack: (p: number) => {\n const c1 = 1.70158\n const c2 = c1 * 1.525\n return p < 0.5\n ? (Math.pow(2 * p, 2) * ((c2 + 1) * 2 * p - c2)) / 2\n : (Math.pow(2 * p - 2, 2) * ((c2 + 1) * (p * 2 - 2) + c2) + 2) / 2\n }\n }\n}\n"],"mappings":";AAeA,IAAa,QAAb,MAAa,MAAqE;CAChF;CACA,WAAqB;CACrB;CACA;CACA;CACA;CACA;CAEA,YAAY,OAAc,QAA6B;AACrD,OAAK,QAAQ;AACb,OAAK,eAAe,EAAE,GAAG,OAAO;EAChC,MAAM,EAAE,UAAU,UAAU,YAAY,mBAAmB,UAAU,EAAE;AACvE,MAAI,aAAa,KAAA,EAAW,MAAK,WAAW;AAC5C,MAAI,aAAa,KAAA,EAAW,MAAK,WAAW;AAC5C,MAAI,eAAe,KAAA,EAAW,MAAK,aAAa;AAChD,OAAK,iBAAiB,kBAAkB,MAAM,OAAO;;CAGvD,IAAc,SAIL;EACP,MAAM,QAAQ,YAAY,KAAK;EAC/B,MAAM,EAAE,YAAY,MAAM,aAAa;EACvC,MAAM,UAAU,cAAsB;GACpC,MAAM,UAAU,YAAY;GAC5B,MAAM,WAAW,KAAK,IAAI,UAAU,UAAU,EAAE;AAChD,QAAK,SAAS;AACd,OAAI,WAAW,EACb,MAAK,UAAU,sBAAsB,OAAO;QACvC;AACL,SAAK,SAAS;AACd,SAAK,MAAM;AACX,gBAAY;;;AAGhB,OAAK,UAAU,sBAAsB,OAAO;;CAG9C,GAAG,OAAuB,QAAmC;AAC3D,OAAK,MAAM;EACX,MAAM,YAAY,EAAE,GAAG,KAAK,OAAO;EACnC,MAAM,gBAAgB,OAAO,KAAK,MAAM,CAAC,QACtC,KAAK,QAAQ;GACZ,MAAM,IAAI;GACV,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,UAAU;AACrB,QAAK,MAAM,OAAO,OAAO,MAAM,OAAO,GACpC,KAAI,OAAO,KAAK;AAElB,UAAO;KAET,EAAE,CACH;EACD,MAAM,WAAW,QAAQ,YAAY,KAAK;EAC1C,MAAM,iBAAiB,QAAQ,kBAAkB,KAAK;EACtD,MAAM,aAAa,QAAQ,cAAc,KAAK;AAC9C,OAAK,IAAI;GACP;GACA,kBAAkB;AAChB,SAAK,MAAM,OAAO,MAChB,KAAI,OAAO,KAAK,MACZ,MAAK,MAAiC,OAAO,MAAM;AAGzD,SAAK,WAAW,KAAK,MAAM;AAC3B,iBAAa,KAAK,MAAM;;GAE1B,OAAO,aAAa;AAClB,SAAK,MAAM,OAAO,eAAe;KAE/B,MAAM,SAAU,
|
|
1
|
+
{"version":3,"file":"tween.js","names":["pk"],"sources":["../../src/helper/tween.ts"],"sourcesContent":["/** 自 cat-kit 3.x Tween 行为对齐的轻量动画(原 `cat-kit/fe` 导出) */\n\nexport interface AnimeConfig<State extends Record<string, number>> {\n duration?: number\n easingFunction?: (progress: number) => number\n onComplete?(state: State): void\n}\n\nexport interface TweenConfig<State extends Record<string, number>> {\n duration?: number\n onUpdate?(state: State): void\n onComplete?(state: State): void\n easingFunction?: (progress: number) => number\n}\n\nexport class Tween<State extends Record<string, number> = Record<string, number>> {\n readonly state: State\n protected duration = 300\n protected onUpdate?: (state: State) => void\n protected onComplete?: (state: State) => void\n protected frameId?: number\n protected easingFunction: (progress: number) => number\n private defaultState: State\n\n constructor(state: State, config?: TweenConfig<State>) {\n this.state = state\n this.defaultState = { ...state }\n const { duration, onUpdate, onComplete, easingFunction } = config || {}\n if (duration !== undefined) this.duration = duration\n if (onUpdate !== undefined) this.onUpdate = onUpdate\n if (onComplete !== undefined) this.onComplete = onComplete\n this.easingFunction = easingFunction ?? Tween.easing.linear\n }\n\n protected raf(options: {\n onComplete: () => void\n duration: number\n tick: (p: number) => void\n }): void {\n const start = performance.now()\n const { onComplete, tick, duration } = options\n const update = (timestamp: number) => {\n const elapsed = timestamp - start\n const progress = Math.min(elapsed / duration, 1)\n tick(progress)\n if (progress < 1) {\n this.frameId = requestAnimationFrame(update)\n } else {\n tick(progress)\n this.stop()\n onComplete()\n }\n }\n this.frameId = requestAnimationFrame(update)\n }\n\n to(state: Partial<State>, config?: AnimeConfig<State>): void {\n this.stop()\n const prevState = { ...this.state }\n const stateDistance = Object.keys(state).reduce(\n (acc, key) => {\n const k = key as keyof State\n const sv = state[k] as number\n const pv = prevState[k] as number\n if ((sv || sv === 0) && (pv || pv === 0)) {\n acc[key] = sv - pv\n }\n return acc\n },\n {} as Record<string, number>\n )\n const duration = config?.duration || this.duration\n const easingFunction = config?.easingFunction || this.easingFunction\n const onComplete = config?.onComplete || this.onComplete\n this.raf({\n duration,\n onComplete: () => {\n for (const key in state) {\n if (key in this.state) {\n ;(this.state as Record<string, number>)[key] = state[key as keyof State] as number\n }\n }\n this.onUpdate?.(this.state)\n onComplete?.(this.state)\n },\n tick: (progress) => {\n for (const key in stateDistance) {\n const pk = key as keyof State\n const target = (prevState[pk] as number) + easingFunction(progress) * stateDistance[key]!\n ;(this.state as Record<string, number>)[key] = target\n }\n this.onUpdate?.(this.state)\n }\n })\n }\n\n back(config?: AnimeConfig<State>): void {\n this.to(this.defaultState as Partial<State>, config)\n }\n\n private stop(): boolean {\n if (!this.frameId) return false\n cancelAnimationFrame(this.frameId)\n this.frameId = undefined\n return true\n }\n\n static readonly easing = {\n linear: (p: number) => p,\n easeInQuad: (p: number) => p * p,\n easeOutQuad: (p: number) => p * (2 - p),\n easeInOutQuad: (p: number) => (p < 0.5 ? 2 * p * p : -1 + (4 - 2 * p) * p),\n easeInBack: (p: number) => p * p * ((2.70158 + 1) * p - 1),\n easeOutBack: (p: number) => 1 + 2.70158 * Math.pow(p - 1, 3) + 1.70158 * Math.pow(p - 1, 2),\n easeInOutBack: (p: number) => {\n const c1 = 1.70158\n const c2 = c1 * 1.525\n return p < 0.5\n ? (Math.pow(2 * p, 2) * ((c2 + 1) * 2 * p - c2)) / 2\n : (Math.pow(2 * p - 2, 2) * ((c2 + 1) * (p * 2 - 2) + c2) + 2) / 2\n }\n }\n}\n"],"mappings":";AAeA,IAAa,QAAb,MAAa,MAAqE;CAChF;CACA,WAAqB;CACrB;CACA;CACA;CACA;CACA;CAEA,YAAY,OAAc,QAA6B;AACrD,OAAK,QAAQ;AACb,OAAK,eAAe,EAAE,GAAG,OAAO;EAChC,MAAM,EAAE,UAAU,UAAU,YAAY,mBAAmB,UAAU,EAAE;AACvE,MAAI,aAAa,KAAA,EAAW,MAAK,WAAW;AAC5C,MAAI,aAAa,KAAA,EAAW,MAAK,WAAW;AAC5C,MAAI,eAAe,KAAA,EAAW,MAAK,aAAa;AAChD,OAAK,iBAAiB,kBAAkB,MAAM,OAAO;;CAGvD,IAAc,SAIL;EACP,MAAM,QAAQ,YAAY,KAAK;EAC/B,MAAM,EAAE,YAAY,MAAM,aAAa;EACvC,MAAM,UAAU,cAAsB;GACpC,MAAM,UAAU,YAAY;GAC5B,MAAM,WAAW,KAAK,IAAI,UAAU,UAAU,EAAE;AAChD,QAAK,SAAS;AACd,OAAI,WAAW,EACb,MAAK,UAAU,sBAAsB,OAAO;QACvC;AACL,SAAK,SAAS;AACd,SAAK,MAAM;AACX,gBAAY;;;AAGhB,OAAK,UAAU,sBAAsB,OAAO;;CAG9C,GAAG,OAAuB,QAAmC;AAC3D,OAAK,MAAM;EACX,MAAM,YAAY,EAAE,GAAG,KAAK,OAAO;EACnC,MAAM,gBAAgB,OAAO,KAAK,MAAM,CAAC,QACtC,KAAK,QAAQ;GACZ,MAAM,IAAI;GACV,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,UAAU;AACrB,QAAK,MAAM,OAAO,OAAO,MAAM,OAAO,GACpC,KAAI,OAAO,KAAK;AAElB,UAAO;KAET,EAAE,CACH;EACD,MAAM,WAAW,QAAQ,YAAY,KAAK;EAC1C,MAAM,iBAAiB,QAAQ,kBAAkB,KAAK;EACtD,MAAM,aAAa,QAAQ,cAAc,KAAK;AAC9C,OAAK,IAAI;GACP;GACA,kBAAkB;AAChB,SAAK,MAAM,OAAO,MAChB,KAAI,OAAO,KAAK,MACZ,MAAK,MAAiC,OAAO,MAAM;AAGzD,SAAK,WAAW,KAAK,MAAM;AAC3B,iBAAa,KAAK,MAAM;;GAE1B,OAAO,aAAa;AAClB,SAAK,MAAM,OAAO,eAAe;KAE/B,MAAM,SAAU,UAAUA,OAAiB,eAAe,SAAS,GAAG,cAAc;AAClF,UAAK,MAAiC,OAAO;;AAEjD,SAAK,WAAW,KAAK,MAAM;;GAE9B,CAAC;;CAGJ,KAAK,QAAmC;AACtC,OAAK,GAAG,KAAK,cAAgC,OAAO;;CAGtD,OAAwB;AACtB,MAAI,CAAC,KAAK,QAAS,QAAO;AAC1B,uBAAqB,KAAK,QAAQ;AAClC,OAAK,UAAU,KAAA;AACf,SAAO;;CAGT,OAAgB,SAAS;EACvB,SAAS,MAAc;EACvB,aAAa,MAAc,IAAI;EAC/B,cAAc,MAAc,KAAK,IAAI;EACrC,gBAAgB,MAAe,IAAI,KAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK;EACxE,aAAa,MAAc,IAAI,KAAM,UAAe,IAAI;EACxD,cAAc,MAAc,IAAI,UAAU,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,UAAU,KAAK,IAAI,IAAI,GAAG,EAAE;EAC3F,gBAAgB,MAAc;GAE5B,MAAM,KAAK,UAAK;AAChB,UAAO,IAAI,KACN,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,KAAK,IAAI,IAAI,MAAO,KAChD,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,KAAK;;EAEtE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veltra/utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"src"
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"check-types": "tsc -p tsconfig.json --noEmit"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-kit/core": "^1.1.
|
|
27
|
+
"@cat-kit/core": "^1.1.3"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"vue": "^3.5.33"
|