@mi-avalon/libs 0.0.4 → 0.0.6
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.
- package/LICENSE +2 -2
- package/README.md +159 -2
- package/dist/constants/date.d.ts +11 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/pageInfo.d.ts +1 -0
- package/dist/constants/pattern.d.ts +24 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -7
- package/dist/libs.cjs.development.js +622 -0
- package/dist/libs.cjs.development.js.map +1 -0
- package/dist/libs.cjs.production.min.js +2 -0
- package/dist/libs.cjs.production.min.js.map +1 -0
- package/dist/libs.esm.js +605 -0
- package/dist/libs.esm.js.map +1 -0
- package/dist/utils/calc.d.ts +20 -0
- package/dist/utils/index.d.ts +5 -1
- package/dist/utils/nextTick.d.ts +14 -0
- package/dist/utils/openModal.d.ts +15 -0
- package/dist/utils/util.d.ts +4 -0
- package/dist/utils/version.d.ts +70 -0
- package/package.json +62 -37
- package/src/constants/date.ts +11 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/pageInfo.ts +1 -0
- package/src/constants/pattern.ts +53 -0
- package/src/index.tsx +4 -0
- package/src/utils/calc.ts +92 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/nextTick.ts +89 -0
- package/src/utils/openModal.tsx +137 -0
- package/src/utils/util.ts +37 -0
- package/src/utils/version.ts +206 -0
- package/dist/components/MyButton/index.d.ts +0 -6
- package/dist/components/MyButton/index.js +0 -8606
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -4
- package/dist/utils/format.d.ts +0 -2
- package/dist/utils/format.js +0 -5
- package/dist/utils/index.js +0 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs.esm.js","sources":["../src/constants/date.ts","../src/constants/pageInfo.ts","../src/constants/pattern.ts","../src/utils/calc.ts","../src/utils/nextTick.ts","../src/utils/openModal.tsx","../src/utils/util.ts","../src/utils/version.ts"],"sourcesContent":["export const DATE_FORMAT = {\n\tYMD_Hms: 'YYYY-MM-DD HH:mm:ss',\n\tYMD: 'YYYY-MM-DD',\n\tYMD2: 'YYYYMMDD',\n\tYMD_POINT: 'YYYY.M.DD',\n\tHms: 'HH:mm:ss',\n\tHm: 'HH:mm',\n\tYMD_000: 'YYYY-MM-DD 00:00:00',\n\tYMD_end: 'YYYY-MM-DD 23:59:59',\n\tYMD_Hm: 'YYYYMMDD HHmm',\n};\n","export const PAGE_SIZE = 10;\n","export class PatternType {\n\t// 整数\n\tstatic readonly integerRegex = /^-?\\d+$/;\n\t// 正整数\n\tstatic readonly positiveIntegerRegex = /^[1-9]\\d*$/;\n\t// 负整数\n\tstatic readonly negativeIntegerRegex = /^-[1-9]\\d*$/;\n\t// 浮点数\n\tstatic readonly floatRegex = /^-?\\d+(\\.\\d+)?$/;\n\t// 字母\n\tstatic readonly letter = /^[a-zA-Z]+$/;\n\t// 汉字\n\tstatic readonly chinese = /^[\\u4e00-\\u9fa5]+$/;\n\t// 数字\n\tstatic readonly number = /^[0-9]*$/;\n\n\t// 用户名 字母开头,允许字母数字下划线,长度4-16\n\tstatic readonly username = /^[a-zA-Z]\\w{3,15}$/;\n\t// 强用户名 必须包含大小写字母和数字,6-20位\n\tstatic readonly strongUsername = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{6,20}$/;\n\n\t// 密码 至少8位,包含字母和数字\n\tstatic readonly password = /^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$/;\n\t// 强密码 至少8位,包含大小写字母、数字和特殊字符\n\tstatic readonly strongPassword =\n\t\t/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$/;\n\n\t// 中国大陆的手机号\n\tstatic readonly phone = /^1[3-9]\\d{9}$/;\n\t// 带区号的手机号\n\tstatic readonly phoneWithAreaCode = /^\\+?\\d{2,3}-?\\d{8,11}$/;\n\t// 邮箱\n\tstatic readonly email = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\t// 身份证\n\tstatic readonly idCard =\n\t\t/^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/;\n\t// 银行卡\n\tstatic readonly bankCard = /^[1-9]\\d{3,30}$/;\n\t// 邮政编码\n\tstatic readonly zipCode = /^[1-9]\\d{5}$/;\n\t// IP\n\tstatic readonly ip =\n\t\t/^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$/;\n\t// URL\n\tstatic readonly url = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([/\\w .-]*)*\\/?$/;\n\t// 车牌\n\tstatic readonly carNumber =\n\t\t/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/;\n\t// 时间 hh:mm:ss\n\tstatic readonly time = /^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;\n\t// 日期 YYYY-MM-DD\n\tstatic readonly date = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n}\n","class CMX {\n /**\n ** 加\n **/\n add = function (arg1: number, arg2: number) {\n let r1, r2, m, c;\n try {\n r1 = arg1.toString().split('.')[1].length;\n } catch (e) {\n r1 = 0;\n }\n try {\n r2 = arg2.toString().split('.')[1].length;\n } catch (e) {\n r2 = 0;\n }\n c = Math.abs(r1 - r2);\n m = Math.pow(10, Math.max(r1, r2));\n if (c > 0) {\n let cm = Math.pow(10, c);\n if (r1 > r2) {\n arg1 = Number(arg1.toString().replace('.', ''));\n arg2 = Number(arg2.toString().replace('.', '')) * cm;\n } else {\n arg1 = Number(arg1.toString().replace('.', '')) * cm;\n arg2 = Number(arg2.toString().replace('.', ''));\n }\n } else {\n arg1 = Number(arg1?.toString().replace('.', ''));\n arg2 = Number(arg2?.toString().replace('.', ''));\n }\n return (arg1 + arg2) / m;\n };\n /**\n ** 减\n **/\n sub = function (arg1: number, arg2: number) {\n let r1, r2, m, n;\n try {\n r1 = arg1.toString().split('.')[1].length;\n } catch (e) {\n r1 = 0;\n }\n try {\n r2 = arg2.toString().split('.')[1].length;\n } catch (e) {\n r2 = 0;\n }\n m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度\n n = r1 >= r2 ? r1 : r2;\n return Number(((arg1 * m - arg2 * m) / m).toFixed(n));\n };\n\n /**\n ** 乘\n **/\n mul = function (arg1: number, arg2: number) {\n let m = 0,\n s1 = arg1.toString(),\n s2 = arg2.toString();\n try {\n m += s1.split('.')[1].length;\n } catch (e) { }\n try {\n m += s2.split('.')[1].length;\n } catch (e) { }\n return (\n (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m)\n );\n };\n\n /**\n ** 除\n **/\n div = function (arg1: number, arg2: number) {\n let t1 = 0,\n t2 = 0,\n r1,\n r2;\n try {\n t1 = arg1.toString().split('.')[1].length;\n } catch (e) { }\n try {\n t2 = arg2.toString().split('.')[1].length;\n } catch (e) { }\n r1 = Number(arg1.toString().replace('.', ''));\n r2 = Number(arg2.toString().replace('.', ''));\n return (r1 / r2) * Math.pow(10, t2 - t1);\n };\n}\n\nexport const cmx = new CMX();\n","type NextTickCallback = () => void;\ntype NextTickPromiseResolver = () => void;\n\nclass NextTick {\n\tprivate callbacks: NextTickCallback[] = [];\n\tprivate pending = false;\n\tprivate timerFunc: () => void;\n\n\tconstructor() {\n\t\tthis.timerFunc = this.determineTimerFunc();\n\t}\n\n\tprivate determineTimerFunc(): () => void {\n\t\tif (typeof Promise !== 'undefined') {\n\t\t\tconst p = Promise.resolve();\n\t\t\treturn () => p.then(this.flushCallbacks.bind(this));\n\t\t}\n\n\t\tif (typeof MutationObserver !== 'undefined' && typeof window !== 'undefined') {\n\t\t\tlet counter = 1;\n\t\t\tconst observer = new MutationObserver(this.flushCallbacks.bind(this));\n\t\t\tconst textNode = document.createTextNode(String(counter));\n\t\t\tobserver.observe(textNode, { characterData: true });\n\n\t\t\treturn () => {\n\t\t\t\tcounter = (counter + 1) % 2;\n\t\t\t\ttextNode.data = String(counter);\n\t\t\t};\n\t\t}\n\n\t\t// // 仅在 Node.js 环境中使用 setImmediate\n\t\t// if (typeof global !== 'undefined' && typeof setImmediate !== 'undefined') {\n\t\t// \treturn () => setImmediate(this.flushCallbacks.bind(this));\n\t\t// }\n\n\t\treturn () => setTimeout(this.flushCallbacks.bind(this), 0);\n\t}\n\n\tprivate flushCallbacks(): void {\n\t\tthis.pending = false;\n\t\tconst copies = this.callbacks.slice(0);\n\t\tthis.callbacks.length = 0;\n\t\tfor (let i = 0; i < copies.length; i++) {\n\t\t\tcopies[i]();\n\t\t}\n\t}\n\n\tpublic nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void {\n\t\tlet _resolve: NextTickPromiseResolver | undefined;\n\n\t\tthis.callbacks.push(() => {\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\tcallback.call(ctx as T);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error('Error in nextTick:', e);\n\t\t\t\t}\n\t\t\t} else if (_resolve) {\n\t\t\t\t_resolve();\n\t\t\t}\n\t\t});\n\n\t\tif (!this.pending) {\n\t\t\tthis.pending = true;\n\t\t\tthis.timerFunc();\n\t\t}\n\n\t\tif (!callback && typeof Promise !== 'undefined') {\n\t\t\treturn new Promise(resolve => {\n\t\t\t\t_resolve = resolve;\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic static nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void {\n\t\treturn NextTick.instance.nextTick(callback, ctx);\n\t}\n\n\tprivate static _instance: NextTick;\n\tpublic static get instance(): NextTick {\n\t\tif (!this._instance) {\n\t\t\tthis._instance = new NextTick();\n\t\t}\n\t\treturn this._instance;\n\t}\n}\n\nconst nextTick = NextTick.instance.nextTick.bind(NextTick.instance);\nexport { NextTick, nextTick };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ModalProps } from 'antd';\nimport React, { ComponentType } from 'react';\nimport * as ReactDOMClient from 'react-dom/client';\nconst { createRoot } = ReactDOMClient;\ntype Root = ReactDOMClient.Root;\n\nconst destroyFns: Array<() => void> = [];\nlet modalContainer: HTMLDivElement | null = null;\nlet root: Root | null = null;\n\ninterface IModalBaseClosedParams {\n cancel?: boolean;\n ok?: boolean;\n}\n\nexport interface IModalBaseProps extends ModalProps {\n onClosed?: (params?: IModalBaseClosedParams) => void;\n}\n\nexport interface IModalControls<T = any> {\n destroy: (params?: IModalBaseClosedParams) => void;\n update: (configUpdate: Partial<T> | ((prevConfig: T) => T)) => void;\n}\n\nfunction getOrCreateContainer(): HTMLDivElement {\n if (!modalContainer) {\n modalContainer = document.createElement('div');\n document.body.appendChild(modalContainer);\n }\n return modalContainer;\n}\n\nfunction openModal<ITModalProps extends IModalBaseProps = IModalBaseProps>(\n DialogComponent: ComponentType<ITModalProps>,\n initialConfig: ITModalProps\n): IModalControls<ITModalProps> {\n const container = getOrCreateContainer();\n\n let currentConfig = {\n open: true,\n ...initialConfig,\n // 默认自动关闭\n onClosed:\n initialConfig.onClosed ||\n ((params?: IModalBaseClosedParams) => {\n unifiedDestroy(params);\n }),\n } as ITModalProps;\n\n if (!root) {\n try {\n root = createRoot(container);\n } catch (error) {\n console.error('Failed to create root:', error);\n return {\n destroy: () => {},\n update: () => {},\n };\n }\n }\n\n const cleanup = () => {\n if (root) {\n root.unmount();\n root = null;\n }\n\n if (modalContainer && modalContainer.parentNode) {\n modalContainer.parentNode.removeChild(modalContainer);\n modalContainer = null;\n }\n };\n\n const destroy = (params?: IModalBaseClosedParams) => {\n if (typeof currentConfig.onClosed === 'function') {\n currentConfig.onClosed(params);\n }\n\n // 从 destroyFns 中移除\n const index = destroyFns.indexOf(destroy);\n if (index !== -1) {\n destroyFns.splice(index, 1);\n }\n\n // 销毁 modal\n cleanup();\n };\n\n const render = (props: ITModalProps) => {\n if (root) {\n root.render(<DialogComponent {...props} />);\n }\n };\n\n const update = (\n configUpdate:\n | Partial<ITModalProps>\n | ((prevConfig: ITModalProps) => ITModalProps)\n ) => {\n currentConfig =\n typeof configUpdate === 'function'\n ? configUpdate(currentConfig)\n : { ...currentConfig, ...configUpdate };\n render(currentConfig);\n };\n\n // 统一的销毁函数\n const unifiedDestroy = (params?: IModalBaseClosedParams) => {\n // 如果当前配置是打开的,关闭\n if (currentConfig.open) {\n currentConfig = {\n ...currentConfig,\n open: false,\n onClosed: (closedParams?: IModalBaseClosedParams) => {\n if (initialConfig.onClosed) {\n initialConfig.onClosed(closedParams || params);\n }\n destroy(closedParams || params);\n },\n };\n render(currentConfig);\n } else {\n console.warn('Modal is already closed.');\n }\n };\n\n render(currentConfig);\n destroyFns.push(unifiedDestroy);\n\n return {\n destroy: unifiedDestroy,\n update,\n };\n}\n\nexport { openModal };\n","export const noop = () => {};\n\n// 生成类名\nexport const getClassName = (key1: string, key2: string) => {\n const cn = key1;\n let str = key1;\n if (key2.includes(' ')) {\n str = '';\n const nArr = key2?.split(' ');\n for (const i of nArr) {\n str += ` ${cn}-${i}`;\n }\n } else if (key2) {\n str = `${key1}-${key2}`;\n }\n return str;\n};\n\n// 根据路径获取数据\nexport const getFieldsByPath = (data: any, path: string) => {\n const arr = path?.split('.');\n let res = data;\n for (const i of arr) {\n res = res[i];\n }\n return res;\n};\n\n// 删除空值\nexport const removeNull = (obj: any) => {\n for (const key in obj) {\n if (obj[key] === null) {\n delete obj[key];\n }\n }\n return obj;\n};\n","/**\n * 版本号工具类\n * 支持语义化版本 (SemVer) 和基本版本号比较\n */\nexport class VersionUtil {\n\t/**\n\t * 验证版本号格式是否有效\n\t * @param version 版本号字符串\n\t * @returns 是否有效\n\t */\n\tstatic isValid(version: string): boolean {\n\t\tconst semverRegex =\n\t\t\t/^v?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/i;\n\t\treturn semverRegex.test(version);\n\t}\n\n\t/**\n\t * 比较两个版本号\n\t * @param v1 版本号1\n\t * @param v2 版本号2\n\t * @returns 比较结果: 1(v1>v2), 0(v1=v2), -1(v1<v2)\n\t */\n\tstatic compare(v1: string, v2: string): number {\n\t\tif (!this.isValid(v1) || !this.isValid(v2)) {\n\t\t\tthrow new Error('Invalid version format');\n\t\t}\n\n\t\t// 去除前缀v并分割版本号\n\t\tconst normalize = (v: string) => v.replace(/^v/, '').split(/[-+]/)[0].split('.');\n\t\tconst parts1 = normalize(v1);\n\t\tconst parts2 = normalize(v2);\n\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\tconst num1 = parseInt(parts1[i] || '0', 10);\n\t\t\tconst num2 = parseInt(parts2[i] || '0', 10);\n\n\t\t\tif (num1 > num2) return 1;\n\t\t\tif (num1 < num2) return -1;\n\t\t}\n\n\t\t// 比较预发布版本\n\t\tconst preRelease1 = v1.match(/-(.+)/);\n\t\tconst preRelease2 = v2.match(/-(.+)/);\n\n\t\tif (preRelease1 && !preRelease2) return -1;\n\t\tif (!preRelease1 && preRelease2) return 1;\n\t\tif (preRelease1 && preRelease2) {\n\t\t\treturn preRelease1[1].localeCompare(preRelease2[1]);\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * 检查版本号是否满足范围要求\n\t * @param version 要检查的版本\n\t * @param range 版本范围 (如 \">=1.0.0 <2.0.0\") 支持: >, >=, <, <=, ^, ~, ==, =\n\t * @returns 是否满足\n\t */\n\tstatic satisfies(version: string, range: string): boolean {\n\t\tif (!this.isValid(version)) return false;\n\n\t\tconst rangeRegex =\n\t\t\t/([<>]=?|==?|\\^|~)?\\s*v?([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+)?)/g;\n\t\tconst ranges = range.match(rangeRegex);\n\n\t\tif (!ranges || ranges.length === 0) return false;\n\n\t\treturn ranges.every(r => {\n\t\t\tconst match = r.match(/([<>]=?|==?|\\^|~)?\\s*(v?[0-9].*)/);\n\t\t\tif (!match) return false;\n\n\t\t\tconst operator = match[1] || '==';\n\t\t\tconst rangeVersion = match[2];\n\n\t\t\tif (!this.isValid(rangeVersion)) return false;\n\n\t\t\tconst comparison = this.compare(version, rangeVersion);\n\n\t\t\tswitch (operator) {\n\t\t\t\tcase '>':\n\t\t\t\t\treturn comparison > 0;\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn comparison >= 0;\n\t\t\t\tcase '<':\n\t\t\t\t\treturn comparison < 0;\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn comparison <= 0;\n\t\t\t\tcase '^':\n\t\t\t\t\treturn this.caretRange(version, rangeVersion);\n\t\t\t\tcase '~':\n\t\t\t\t\treturn this.tildeRange(version, rangeVersion);\n\t\t\t\tcase '=':\n\t\t\t\tcase '==':\n\t\t\t\tdefault:\n\t\t\t\t\treturn comparison === 0;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * 处理 ^ 范围 (允许不修改最左边的非零数字)\n\t * @param version 版本号\n\t * @param range 范围版本\n\t * @returns 是否匹配\n\t */\n\tprivate static caretRange(version: string, range: string): boolean {\n\t\tconst normalize = (v: string) => v.replace(/^v/, '').split(/[-+]/)[0].split('.');\n\t\tconst vParts = normalize(version);\n\t\tconst rParts = normalize(range);\n\n\t\t// 找到第一个非零部分\n\t\tlet firstNonZero = 0;\n\t\tfor (let i = 0; i < rParts.length; i++) {\n\t\t\tif (parseInt(rParts[i], 10) !== 0) {\n\t\t\t\tfirstNonZero = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i <= firstNonZero; i++) {\n\t\t\tconst vNum = parseInt(vParts[i] || '0', 10);\n\t\t\tconst rNum = parseInt(rParts[i] || '0', 10);\n\t\t\tif (vNum !== rNum) return false;\n\t\t}\n\n\t\treturn this.compare(version, range) >= 0;\n\t}\n\n\t/**\n\t * 处理 ~ 范围 (允许修改最后一位数字)\n\t * @param version 版本号\n\t * @param range 范围版本\n\t * @returns 是否匹配\n\t */\n\tprivate static tildeRange(version: string, range: string): boolean {\n\t\tconst normalize = (v: string) => v.replace(/^v/, '').split(/[-+]/)[0].split('.');\n\t\tconst vParts = normalize(version);\n\t\tconst rParts = normalize(range);\n\n\t\tfor (let i = 0; i < rParts.length - 1; i++) {\n\t\t\tconst vNum = parseInt(vParts[i] || '0', 10);\n\t\t\tconst rNum = parseInt(rParts[i] || '0', 10);\n\t\t\tif (vNum !== rNum) return false;\n\t\t}\n\n\t\tconst lastVNum = parseInt(vParts[rParts.length - 1] || '0', 10);\n\t\tconst lastRNum = parseInt(rParts[rParts.length - 1] || '0', 10);\n\t\treturn lastVNum >= lastRNum;\n\t}\n\n\t/**\n\t * 获取主版本号 (major)\n\t * @param version 版本号\n\t * @returns 主版本号\n\t */\n\tstatic getMajor(version: string): number {\n\t\tif (!this.isValid(version)) throw new Error('Invalid version format');\n\t\tconst parts = version.replace(/^v/, '').split('.');\n\t\treturn parseInt(parts[0], 10);\n\t}\n\n\t/**\n\t * 获取次版本号 (minor)\n\t * @param version 版本号\n\t * @returns 次版本号\n\t */\n\tstatic getMinor(version: string): number {\n\t\tif (!this.isValid(version)) throw new Error('Invalid version format');\n\t\tconst parts = version.replace(/^v/, '').split('.');\n\t\treturn parseInt(parts[1] || '0', 10);\n\t}\n\n\t/**\n\t * 获取修订号 (patch)\n\t * @param version 版本号\n\t * @returns 修订号\n\t */\n\tstatic getPatch(version: string): number {\n\t\tif (!this.isValid(version)) throw new Error('Invalid version format');\n\t\tconst parts = version.replace(/^v/, '').split('.');\n\t\treturn parseInt(parts[2] || '0', 10);\n\t}\n\n\t/**\n\t * 获取预发布版本标识\n\t * @param version 版本号\n\t * @returns 预发布标识 (无则返回null)\n\t */\n\tstatic getPrerelease(version: string): string | null {\n\t\tif (!this.isValid(version)) throw new Error('Invalid version format');\n\t\tconst match = version.match(/-([^+]+)/);\n\t\treturn match ? match[1] : null;\n\t}\n\n\t/**\n\t * 获取构建元数据\n\t * @param version 版本号\n\t * @returns 构建元数据 (无则返回null)\n\t */\n\tstatic getBuildMetadata(version: string): string | null {\n\t\tif (!this.isValid(version)) throw new Error('Invalid version format');\n\t\tconst match = version.match(/\\+([^]+)/);\n\t\treturn match ? match[1] : null;\n\t}\n}\n"],"names":["DATE_FORMAT","YMD_Hms","YMD","YMD2","YMD_POINT","Hms","Hm","YMD_000","YMD_end","YMD_Hm","PAGE_SIZE","PatternType","CMX","arg1","arg2","r1","r2","m","c","toString","split","length","e","Math","abs","pow","max","cm","Number","replace","_arg","_arg2","n","toFixed","s1","s2","t1","t2","cmx","NextTick","timerFunc","determineTimerFunc","_proto","prototype","Promise","p","resolve","then","_this","flushCallbacks","bind","MutationObserver","window","counter","observer","textNode","document","createTextNode","String","observe","characterData","data","setTimeout","pending","copies","callbacks","slice","i","nextTick","callback","ctx","_resolve","push","call","console","error","instance","_createClass","key","get","_instance","createRoot","ReactDOMClient","modalContainer","root","getOrCreateContainer","createElement","body","appendChild","openModal","DialogComponent","initialConfig","container","currentConfig","_extends","open","onClosed","params","unifiedDestroy","destroy","update","cleanup","unmount","parentNode","removeChild","render","props","React","configUpdate","closedParams","warn","noop","getClassName","key1","key2","cn","str","includes","nArr","_iterator","_createForOfIteratorHelperLoose","_step","done","value","getFieldsByPath","path","arr","res","_iterator2","_step2","removeNull","obj","VersionUtil","isValid","version","semverRegex","test","compare","v1","v2","Error","normalize","v","parts1","parts2","num1","parseInt","num2","preRelease1","match","preRelease2","localeCompare","satisfies","range","rangeRegex","ranges","every","r","operator","rangeVersion","comparison","caretRange","tildeRange","vParts","rParts","firstNonZero","vNum","rNum","lastVNum","lastRNum","getMajor","parts","getMinor","getPatch","getPrerelease","getBuildMetadata"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare class CMX {
|
|
2
|
+
/**
|
|
3
|
+
** 加
|
|
4
|
+
**/
|
|
5
|
+
add: (arg1: number, arg2: number) => number;
|
|
6
|
+
/**
|
|
7
|
+
** 减
|
|
8
|
+
**/
|
|
9
|
+
sub: (arg1: number, arg2: number) => number;
|
|
10
|
+
/**
|
|
11
|
+
** 乘
|
|
12
|
+
**/
|
|
13
|
+
mul: (arg1: number, arg2: number) => number;
|
|
14
|
+
/**
|
|
15
|
+
** 除
|
|
16
|
+
**/
|
|
17
|
+
div: (arg1: number, arg2: number) => number;
|
|
18
|
+
}
|
|
19
|
+
export declare const cmx: CMX;
|
|
20
|
+
export {};
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare class NextTick {
|
|
2
|
+
private callbacks;
|
|
3
|
+
private pending;
|
|
4
|
+
private timerFunc;
|
|
5
|
+
constructor();
|
|
6
|
+
private determineTimerFunc;
|
|
7
|
+
private flushCallbacks;
|
|
8
|
+
nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void;
|
|
9
|
+
static nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void;
|
|
10
|
+
private static _instance;
|
|
11
|
+
static get instance(): NextTick;
|
|
12
|
+
}
|
|
13
|
+
declare const nextTick: <T = void>(callback?: ((this: T) => void) | undefined, ctx?: T | undefined) => Promise<void> | void;
|
|
14
|
+
export { NextTick, nextTick };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ModalProps } from 'antd';
|
|
2
|
+
import { ComponentType } from 'react';
|
|
3
|
+
interface IModalBaseClosedParams {
|
|
4
|
+
cancel?: boolean;
|
|
5
|
+
ok?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface IModalBaseProps extends ModalProps {
|
|
8
|
+
onClosed?: (params?: IModalBaseClosedParams) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface IModalControls<T = any> {
|
|
11
|
+
destroy: (params?: IModalBaseClosedParams) => void;
|
|
12
|
+
update: (configUpdate: Partial<T> | ((prevConfig: T) => T)) => void;
|
|
13
|
+
}
|
|
14
|
+
declare function openModal<ITModalProps extends IModalBaseProps = IModalBaseProps>(DialogComponent: ComponentType<ITModalProps>, initialConfig: ITModalProps): IModalControls<ITModalProps>;
|
|
15
|
+
export { openModal };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 版本号工具类
|
|
3
|
+
* 支持语义化版本 (SemVer) 和基本版本号比较
|
|
4
|
+
*/
|
|
5
|
+
export declare class VersionUtil {
|
|
6
|
+
/**
|
|
7
|
+
* 验证版本号格式是否有效
|
|
8
|
+
* @param version 版本号字符串
|
|
9
|
+
* @returns 是否有效
|
|
10
|
+
*/
|
|
11
|
+
static isValid(version: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* 比较两个版本号
|
|
14
|
+
* @param v1 版本号1
|
|
15
|
+
* @param v2 版本号2
|
|
16
|
+
* @returns 比较结果: 1(v1>v2), 0(v1=v2), -1(v1<v2)
|
|
17
|
+
*/
|
|
18
|
+
static compare(v1: string, v2: string): number;
|
|
19
|
+
/**
|
|
20
|
+
* 检查版本号是否满足范围要求
|
|
21
|
+
* @param version 要检查的版本
|
|
22
|
+
* @param range 版本范围 (如 ">=1.0.0 <2.0.0") 支持: >, >=, <, <=, ^, ~, ==, =
|
|
23
|
+
* @returns 是否满足
|
|
24
|
+
*/
|
|
25
|
+
static satisfies(version: string, range: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 处理 ^ 范围 (允许不修改最左边的非零数字)
|
|
28
|
+
* @param version 版本号
|
|
29
|
+
* @param range 范围版本
|
|
30
|
+
* @returns 是否匹配
|
|
31
|
+
*/
|
|
32
|
+
private static caretRange;
|
|
33
|
+
/**
|
|
34
|
+
* 处理 ~ 范围 (允许修改最后一位数字)
|
|
35
|
+
* @param version 版本号
|
|
36
|
+
* @param range 范围版本
|
|
37
|
+
* @returns 是否匹配
|
|
38
|
+
*/
|
|
39
|
+
private static tildeRange;
|
|
40
|
+
/**
|
|
41
|
+
* 获取主版本号 (major)
|
|
42
|
+
* @param version 版本号
|
|
43
|
+
* @returns 主版本号
|
|
44
|
+
*/
|
|
45
|
+
static getMajor(version: string): number;
|
|
46
|
+
/**
|
|
47
|
+
* 获取次版本号 (minor)
|
|
48
|
+
* @param version 版本号
|
|
49
|
+
* @returns 次版本号
|
|
50
|
+
*/
|
|
51
|
+
static getMinor(version: string): number;
|
|
52
|
+
/**
|
|
53
|
+
* 获取修订号 (patch)
|
|
54
|
+
* @param version 版本号
|
|
55
|
+
* @returns 修订号
|
|
56
|
+
*/
|
|
57
|
+
static getPatch(version: string): number;
|
|
58
|
+
/**
|
|
59
|
+
* 获取预发布版本标识
|
|
60
|
+
* @param version 版本号
|
|
61
|
+
* @returns 预发布标识 (无则返回null)
|
|
62
|
+
*/
|
|
63
|
+
static getPrerelease(version: string): string | null;
|
|
64
|
+
/**
|
|
65
|
+
* 获取构建元数据
|
|
66
|
+
* @param version 版本号
|
|
67
|
+
* @returns 构建元数据 (无则返回null)
|
|
68
|
+
*/
|
|
69
|
+
static getBuildMetadata(version: string): string | null;
|
|
70
|
+
}
|
package/package.json
CHANGED
|
@@ -1,39 +1,64 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
2
|
+
"name": "@mi-avalon/libs",
|
|
3
|
+
"author": "顾冬杰",
|
|
4
|
+
"module": "dist/lib.esm.js",
|
|
5
|
+
"version": "0.0.6",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"typings": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"src"
|
|
12
|
+
],
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=20"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"start": "tsdx watch",
|
|
18
|
+
"build": "tsdx build",
|
|
19
|
+
"test": "tsdx test --passWithNoTests",
|
|
20
|
+
"lint": "tsdx lint",
|
|
21
|
+
"prepare": "tsdx build",
|
|
22
|
+
"size": "size-limit",
|
|
23
|
+
"analyze": "size-limit --why"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"react": ">=18",
|
|
27
|
+
"react-dom": ">=18",
|
|
28
|
+
"antd": ">=5"
|
|
29
|
+
},
|
|
30
|
+
"husky": {
|
|
31
|
+
"hooks": {
|
|
32
|
+
"pre-commit": "tsdx lint"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"prettier": {
|
|
36
|
+
"printWidth": 80,
|
|
37
|
+
"semi": true,
|
|
38
|
+
"singleQuote": true,
|
|
39
|
+
"trailingComma": "es5"
|
|
40
|
+
},
|
|
41
|
+
"size-limit": [
|
|
42
|
+
{
|
|
43
|
+
"path": "dist/lib.cjs.production.min.js",
|
|
44
|
+
"limit": "10 KB"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"path": "dist/lib.esm.js",
|
|
48
|
+
"limit": "10 KB"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@size-limit/preset-small-lib": "^11.2.0",
|
|
53
|
+
"@types/react": "^19.1.8",
|
|
54
|
+
"@types/react-dom": "^19.1.6",
|
|
55
|
+
"antd": "^5.26.6",
|
|
56
|
+
"husky": "^9.1.7",
|
|
57
|
+
"react": "^19.1.0",
|
|
58
|
+
"react-dom": "^19.1.0",
|
|
59
|
+
"size-limit": "^11.2.0",
|
|
60
|
+
"tsdx": "^0.14.1",
|
|
61
|
+
"tslib": "^2.8.1",
|
|
62
|
+
"typescript": "^5.8.3"
|
|
63
|
+
}
|
|
39
64
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const DATE_FORMAT = {
|
|
2
|
+
YMD_Hms: 'YYYY-MM-DD HH:mm:ss',
|
|
3
|
+
YMD: 'YYYY-MM-DD',
|
|
4
|
+
YMD2: 'YYYYMMDD',
|
|
5
|
+
YMD_POINT: 'YYYY.M.DD',
|
|
6
|
+
Hms: 'HH:mm:ss',
|
|
7
|
+
Hm: 'HH:mm',
|
|
8
|
+
YMD_000: 'YYYY-MM-DD 00:00:00',
|
|
9
|
+
YMD_end: 'YYYY-MM-DD 23:59:59',
|
|
10
|
+
YMD_Hm: 'YYYYMMDD HHmm',
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PAGE_SIZE = 10;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export class PatternType {
|
|
2
|
+
// 整数
|
|
3
|
+
static readonly integerRegex = /^-?\d+$/;
|
|
4
|
+
// 正整数
|
|
5
|
+
static readonly positiveIntegerRegex = /^[1-9]\d*$/;
|
|
6
|
+
// 负整数
|
|
7
|
+
static readonly negativeIntegerRegex = /^-[1-9]\d*$/;
|
|
8
|
+
// 浮点数
|
|
9
|
+
static readonly floatRegex = /^-?\d+(\.\d+)?$/;
|
|
10
|
+
// 字母
|
|
11
|
+
static readonly letter = /^[a-zA-Z]+$/;
|
|
12
|
+
// 汉字
|
|
13
|
+
static readonly chinese = /^[\u4e00-\u9fa5]+$/;
|
|
14
|
+
// 数字
|
|
15
|
+
static readonly number = /^[0-9]*$/;
|
|
16
|
+
|
|
17
|
+
// 用户名 字母开头,允许字母数字下划线,长度4-16
|
|
18
|
+
static readonly username = /^[a-zA-Z]\w{3,15}$/;
|
|
19
|
+
// 强用户名 必须包含大小写字母和数字,6-20位
|
|
20
|
+
static readonly strongUsername = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,20}$/;
|
|
21
|
+
|
|
22
|
+
// 密码 至少8位,包含字母和数字
|
|
23
|
+
static readonly password = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
|
|
24
|
+
// 强密码 至少8位,包含大小写字母、数字和特殊字符
|
|
25
|
+
static readonly strongPassword =
|
|
26
|
+
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
|
|
27
|
+
|
|
28
|
+
// 中国大陆的手机号
|
|
29
|
+
static readonly phone = /^1[3-9]\d{9}$/;
|
|
30
|
+
// 带区号的手机号
|
|
31
|
+
static readonly phoneWithAreaCode = /^\+?\d{2,3}-?\d{8,11}$/;
|
|
32
|
+
// 邮箱
|
|
33
|
+
static readonly email = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
34
|
+
// 身份证
|
|
35
|
+
static readonly idCard =
|
|
36
|
+
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
|
|
37
|
+
// 银行卡
|
|
38
|
+
static readonly bankCard = /^[1-9]\d{3,30}$/;
|
|
39
|
+
// 邮政编码
|
|
40
|
+
static readonly zipCode = /^[1-9]\d{5}$/;
|
|
41
|
+
// IP
|
|
42
|
+
static readonly ip =
|
|
43
|
+
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
|
44
|
+
// URL
|
|
45
|
+
static readonly url = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/;
|
|
46
|
+
// 车牌
|
|
47
|
+
static readonly carNumber =
|
|
48
|
+
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/;
|
|
49
|
+
// 时间 hh:mm:ss
|
|
50
|
+
static readonly time = /^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;
|
|
51
|
+
// 日期 YYYY-MM-DD
|
|
52
|
+
static readonly date = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
53
|
+
}
|
package/src/index.tsx
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
class CMX {
|
|
2
|
+
/**
|
|
3
|
+
** 加
|
|
4
|
+
**/
|
|
5
|
+
add = function (arg1: number, arg2: number) {
|
|
6
|
+
let r1, r2, m, c;
|
|
7
|
+
try {
|
|
8
|
+
r1 = arg1.toString().split('.')[1].length;
|
|
9
|
+
} catch (e) {
|
|
10
|
+
r1 = 0;
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
r2 = arg2.toString().split('.')[1].length;
|
|
14
|
+
} catch (e) {
|
|
15
|
+
r2 = 0;
|
|
16
|
+
}
|
|
17
|
+
c = Math.abs(r1 - r2);
|
|
18
|
+
m = Math.pow(10, Math.max(r1, r2));
|
|
19
|
+
if (c > 0) {
|
|
20
|
+
let cm = Math.pow(10, c);
|
|
21
|
+
if (r1 > r2) {
|
|
22
|
+
arg1 = Number(arg1.toString().replace('.', ''));
|
|
23
|
+
arg2 = Number(arg2.toString().replace('.', '')) * cm;
|
|
24
|
+
} else {
|
|
25
|
+
arg1 = Number(arg1.toString().replace('.', '')) * cm;
|
|
26
|
+
arg2 = Number(arg2.toString().replace('.', ''));
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
arg1 = Number(arg1?.toString().replace('.', ''));
|
|
30
|
+
arg2 = Number(arg2?.toString().replace('.', ''));
|
|
31
|
+
}
|
|
32
|
+
return (arg1 + arg2) / m;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
** 减
|
|
36
|
+
**/
|
|
37
|
+
sub = function (arg1: number, arg2: number) {
|
|
38
|
+
let r1, r2, m, n;
|
|
39
|
+
try {
|
|
40
|
+
r1 = arg1.toString().split('.')[1].length;
|
|
41
|
+
} catch (e) {
|
|
42
|
+
r1 = 0;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
r2 = arg2.toString().split('.')[1].length;
|
|
46
|
+
} catch (e) {
|
|
47
|
+
r2 = 0;
|
|
48
|
+
}
|
|
49
|
+
m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度
|
|
50
|
+
n = r1 >= r2 ? r1 : r2;
|
|
51
|
+
return Number(((arg1 * m - arg2 * m) / m).toFixed(n));
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
** 乘
|
|
56
|
+
**/
|
|
57
|
+
mul = function (arg1: number, arg2: number) {
|
|
58
|
+
let m = 0,
|
|
59
|
+
s1 = arg1.toString(),
|
|
60
|
+
s2 = arg2.toString();
|
|
61
|
+
try {
|
|
62
|
+
m += s1.split('.')[1].length;
|
|
63
|
+
} catch (e) { }
|
|
64
|
+
try {
|
|
65
|
+
m += s2.split('.')[1].length;
|
|
66
|
+
} catch (e) { }
|
|
67
|
+
return (
|
|
68
|
+
(Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m)
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
** 除
|
|
74
|
+
**/
|
|
75
|
+
div = function (arg1: number, arg2: number) {
|
|
76
|
+
let t1 = 0,
|
|
77
|
+
t2 = 0,
|
|
78
|
+
r1,
|
|
79
|
+
r2;
|
|
80
|
+
try {
|
|
81
|
+
t1 = arg1.toString().split('.')[1].length;
|
|
82
|
+
} catch (e) { }
|
|
83
|
+
try {
|
|
84
|
+
t2 = arg2.toString().split('.')[1].length;
|
|
85
|
+
} catch (e) { }
|
|
86
|
+
r1 = Number(arg1.toString().replace('.', ''));
|
|
87
|
+
r2 = Number(arg2.toString().replace('.', ''));
|
|
88
|
+
return (r1 / r2) * Math.pow(10, t2 - t1);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export const cmx = new CMX();
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
type NextTickCallback = () => void;
|
|
2
|
+
type NextTickPromiseResolver = () => void;
|
|
3
|
+
|
|
4
|
+
class NextTick {
|
|
5
|
+
private callbacks: NextTickCallback[] = [];
|
|
6
|
+
private pending = false;
|
|
7
|
+
private timerFunc: () => void;
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
this.timerFunc = this.determineTimerFunc();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
private determineTimerFunc(): () => void {
|
|
14
|
+
if (typeof Promise !== 'undefined') {
|
|
15
|
+
const p = Promise.resolve();
|
|
16
|
+
return () => p.then(this.flushCallbacks.bind(this));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (typeof MutationObserver !== 'undefined' && typeof window !== 'undefined') {
|
|
20
|
+
let counter = 1;
|
|
21
|
+
const observer = new MutationObserver(this.flushCallbacks.bind(this));
|
|
22
|
+
const textNode = document.createTextNode(String(counter));
|
|
23
|
+
observer.observe(textNode, { characterData: true });
|
|
24
|
+
|
|
25
|
+
return () => {
|
|
26
|
+
counter = (counter + 1) % 2;
|
|
27
|
+
textNode.data = String(counter);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// // 仅在 Node.js 环境中使用 setImmediate
|
|
32
|
+
// if (typeof global !== 'undefined' && typeof setImmediate !== 'undefined') {
|
|
33
|
+
// return () => setImmediate(this.flushCallbacks.bind(this));
|
|
34
|
+
// }
|
|
35
|
+
|
|
36
|
+
return () => setTimeout(this.flushCallbacks.bind(this), 0);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private flushCallbacks(): void {
|
|
40
|
+
this.pending = false;
|
|
41
|
+
const copies = this.callbacks.slice(0);
|
|
42
|
+
this.callbacks.length = 0;
|
|
43
|
+
for (let i = 0; i < copies.length; i++) {
|
|
44
|
+
copies[i]();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void {
|
|
49
|
+
let _resolve: NextTickPromiseResolver | undefined;
|
|
50
|
+
|
|
51
|
+
this.callbacks.push(() => {
|
|
52
|
+
if (callback) {
|
|
53
|
+
try {
|
|
54
|
+
callback.call(ctx as T);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
console.error('Error in nextTick:', e);
|
|
57
|
+
}
|
|
58
|
+
} else if (_resolve) {
|
|
59
|
+
_resolve();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
if (!this.pending) {
|
|
64
|
+
this.pending = true;
|
|
65
|
+
this.timerFunc();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!callback && typeof Promise !== 'undefined') {
|
|
69
|
+
return new Promise(resolve => {
|
|
70
|
+
_resolve = resolve;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public static nextTick<T = void>(callback?: (this: T) => void, ctx?: T): Promise<void> | void {
|
|
76
|
+
return NextTick.instance.nextTick(callback, ctx);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private static _instance: NextTick;
|
|
80
|
+
public static get instance(): NextTick {
|
|
81
|
+
if (!this._instance) {
|
|
82
|
+
this._instance = new NextTick();
|
|
83
|
+
}
|
|
84
|
+
return this._instance;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const nextTick = NextTick.instance.nextTick.bind(NextTick.instance);
|
|
89
|
+
export { NextTick, nextTick };
|