@tanwan/utils 1.0.0 → 1.2.0
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/CHANGELOG.md +19 -0
- package/dist/addClass.cjs +19 -0
- package/dist/addClass.d.cts +16 -0
- package/dist/addClass.d.ts +17 -0
- package/dist/addClass.js +19 -0
- package/dist/{string/camelCase.cjs → camelCase.cjs} +0 -1
- package/dist/{string/camelCase.d.cts → camelCase.d.cts} +1 -2
- package/dist/{string/camelCase.d.ts → camelCase.d.ts} +1 -2
- package/dist/{string/camelCase.js → camelCase.js} +0 -3
- package/dist/{string/capitalize.cjs → capitalize.cjs} +1 -1
- package/dist/{string/capitalize.d.cts → capitalize.d.cts} +2 -3
- package/dist/{string/capitalize.d.ts → capitalize.d.ts} +2 -3
- package/dist/{string/capitalize.js → capitalize.js} +1 -3
- package/dist/{array/chunk.cjs → chunk.cjs} +1 -1
- package/dist/{array/chunk.d.cts → chunk.d.cts} +2 -3
- package/dist/{array/chunk.d.ts → chunk.d.ts} +2 -3
- package/dist/{array/chunk.js → chunk.js} +1 -3
- package/dist/{number/clamp.cjs → clamp.cjs} +1 -1
- package/dist/{number/clamp.d.cts → clamp.d.cts} +2 -3
- package/dist/{number/clamp.d.ts → clamp.d.ts} +2 -3
- package/dist/{number/clamp.js → clamp.js} +1 -3
- package/dist/convertCurrencyToChinese.cjs +56 -0
- package/dist/convertCurrencyToChinese.d.cts +18 -0
- package/dist/convertCurrencyToChinese.d.ts +19 -0
- package/dist/convertCurrencyToChinese.js +56 -0
- package/dist/copyToClipboard.cjs +38 -0
- package/dist/copyToClipboard.d.cts +17 -0
- package/dist/copyToClipboard.d.ts +18 -0
- package/dist/copyToClipboard.js +38 -0
- package/dist/createElement.cjs +27 -0
- package/dist/createElement.d.cts +21 -0
- package/dist/createElement.d.ts +22 -0
- package/dist/createElement.js +27 -0
- package/dist/{function/debounce.cjs → debounce.cjs} +1 -1
- package/dist/{function/debounce.d.cts → debounce.d.cts} +2 -3
- package/dist/{function/debounce.d.ts → debounce.d.ts} +2 -3
- package/dist/{function/debounce.js → debounce.js} +1 -3
- package/dist/debounceSubmit.cjs +34 -0
- package/dist/debounceSubmit.d.cts +22 -0
- package/dist/debounceSubmit.d.ts +23 -0
- package/dist/debounceSubmit.js +34 -0
- package/dist/decodeBase64.cjs +19 -0
- package/dist/decodeBase64.d.cts +16 -0
- package/dist/decodeBase64.d.ts +17 -0
- package/dist/decodeBase64.js +19 -0
- package/dist/{base/deepClone.cjs → deepClone.cjs} +3 -3
- package/dist/{base/deepClone.d.cts → deepClone.d.cts} +2 -3
- package/dist/{base/deepClone.d.ts → deepClone.d.ts} +2 -3
- package/dist/{base/deepClone.js → deepClone.js} +1 -3
- package/dist/deepMerge.cjs +39 -0
- package/dist/deepMerge.d.cts +25 -0
- package/dist/deepMerge.d.ts +26 -0
- package/dist/deepMerge.js +39 -0
- package/dist/delay.cjs +8 -0
- package/dist/delay.d.cts +18 -0
- package/dist/delay.d.ts +19 -0
- package/dist/delay.js +8 -0
- package/dist/difference.cjs +24 -0
- package/dist/difference.d.cts +20 -0
- package/dist/difference.d.ts +21 -0
- package/dist/difference.js +24 -0
- package/dist/downloadFile.cjs +31 -0
- package/dist/downloadFile.d.cts +20 -0
- package/dist/downloadFile.d.ts +21 -0
- package/dist/downloadFile.js +31 -0
- package/dist/encodeBase64.cjs +20 -0
- package/dist/encodeBase64.d.cts +17 -0
- package/dist/encodeBase64.d.ts +18 -0
- package/dist/encodeBase64.js +20 -0
- package/dist/{array/flatten.cjs → flatten.cjs} +1 -1
- package/dist/{array/flatten.d.cts → flatten.d.cts} +2 -3
- package/dist/{array/flatten.d.ts → flatten.d.ts} +2 -3
- package/dist/{array/flatten.js → flatten.js} +1 -3
- package/dist/formatBankCard.cjs +19 -0
- package/dist/formatBankCard.d.cts +16 -0
- package/dist/formatBankCard.d.ts +17 -0
- package/dist/formatBankCard.js +19 -0
- package/dist/formatCurrency.cjs +7 -0
- package/dist/formatCurrency.d.cts +27 -0
- package/dist/formatCurrency.d.ts +28 -0
- package/dist/formatCurrency.js +7 -0
- package/dist/{date/formatDate.cjs → formatDate.cjs} +1 -1
- package/dist/{date/formatDate.d.cts → formatDate.d.cts} +2 -3
- package/dist/{date/formatDate.d.ts → formatDate.d.ts} +2 -3
- package/dist/{date/formatDate.js → formatDate.js} +1 -3
- package/dist/formatFileSize.cjs +33 -0
- package/dist/formatFileSize.d.cts +19 -0
- package/dist/formatFileSize.d.ts +20 -0
- package/dist/formatFileSize.js +33 -0
- package/dist/formatIdCard.cjs +21 -0
- package/dist/formatIdCard.d.cts +17 -0
- package/dist/formatIdCard.d.ts +18 -0
- package/dist/formatIdCard.js +21 -0
- package/dist/formatPhone.cjs +21 -0
- package/dist/formatPhone.d.cts +17 -0
- package/dist/formatPhone.d.ts +18 -0
- package/dist/formatPhone.js +21 -0
- package/dist/{number/formatThousands.cjs → formatThousands.cjs} +1 -1
- package/dist/{number/formatThousands.d.cts → formatThousands.d.cts} +2 -3
- package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +2 -3
- package/dist/{number/formatThousands.js → formatThousands.js} +1 -3
- package/dist/generateCode.cjs +29 -0
- package/dist/generateCode.d.cts +19 -0
- package/dist/generateCode.d.ts +20 -0
- package/dist/generateCode.js +29 -0
- package/dist/getAge.cjs +30 -0
- package/dist/getAge.d.cts +18 -0
- package/dist/getAge.d.ts +19 -0
- package/dist/getAge.js +30 -0
- package/dist/getByPath.cjs +29 -0
- package/dist/getByPath.d.cts +20 -0
- package/dist/getByPath.d.ts +21 -0
- package/dist/getByPath.js +29 -0
- package/dist/getCssVar.cjs +22 -0
- package/dist/getCssVar.d.cts +18 -0
- package/dist/getCssVar.d.ts +19 -0
- package/dist/getCssVar.js +22 -0
- package/dist/{date/getRelativeTime.cjs → getRelativeTime.cjs} +1 -1
- package/dist/{date/getRelativeTime.d.cts → getRelativeTime.d.cts} +2 -3
- package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +2 -3
- package/dist/{date/getRelativeTime.js → getRelativeTime.js} +1 -3
- package/dist/getScrollTop.cjs +28 -0
- package/dist/getScrollTop.d.cts +18 -0
- package/dist/getScrollTop.d.ts +19 -0
- package/dist/getScrollTop.js +28 -0
- package/dist/getStorage.cjs +27 -0
- package/dist/getStorage.d.cts +18 -0
- package/dist/getStorage.d.ts +19 -0
- package/dist/getStorage.js +27 -0
- package/dist/getStyle.cjs +20 -0
- package/dist/getStyle.d.cts +17 -0
- package/dist/getStyle.d.ts +18 -0
- package/dist/getStyle.js +20 -0
- package/dist/getTextWidth.cjs +26 -0
- package/dist/getTextWidth.d.cts +16 -0
- package/dist/getTextWidth.d.ts +17 -0
- package/dist/getTextWidth.js +26 -0
- package/dist/groupBy.cjs +36 -0
- package/dist/groupBy.d.cts +26 -0
- package/dist/groupBy.d.ts +27 -0
- package/dist/groupBy.js +36 -0
- package/dist/hasClass.cjs +19 -0
- package/dist/hasClass.d.cts +16 -0
- package/dist/hasClass.d.ts +17 -0
- package/dist/hasClass.js +19 -0
- package/dist/index.cjs +180 -36
- package/dist/index.d.cts +91 -19
- package/dist/index.d.ts +91 -19
- package/dist/index.iife.js +1 -1
- package/dist/index.js +91 -19
- package/dist/insertAfter.cjs +19 -0
- package/dist/insertAfter.d.cts +15 -0
- package/dist/insertAfter.d.ts +16 -0
- package/dist/insertAfter.js +19 -0
- package/dist/intersection.cjs +24 -0
- package/dist/intersection.d.cts +20 -0
- package/dist/intersection.d.ts +21 -0
- package/dist/intersection.js +24 -0
- package/dist/invert.cjs +21 -0
- package/dist/invert.d.cts +16 -0
- package/dist/invert.d.ts +17 -0
- package/dist/invert.js +21 -0
- package/dist/{base/isArray.cjs → isArray.cjs} +1 -1
- package/dist/{base/isArray.d.cts → isArray.d.cts} +2 -3
- package/dist/{base/isArray.d.ts → isArray.d.ts} +2 -3
- package/dist/{base/isArray.js → isArray.js} +1 -3
- package/dist/isBrowser.cjs +17 -0
- package/dist/isBrowser.d.cts +14 -0
- package/dist/isBrowser.d.ts +15 -0
- package/dist/isBrowser.js +17 -0
- package/dist/isDate.cjs +18 -0
- package/dist/isDate.d.cts +15 -0
- package/dist/isDate.d.ts +16 -0
- package/dist/isDate.js +18 -0
- package/dist/isEmpty.cjs +42 -0
- package/dist/isEmpty.d.cts +33 -0
- package/dist/isEmpty.d.ts +34 -0
- package/dist/isEmpty.js +42 -0
- package/dist/isFunction.cjs +19 -0
- package/dist/isFunction.d.cts +16 -0
- package/dist/isFunction.d.ts +17 -0
- package/dist/isFunction.js +19 -0
- package/dist/isInViewport.cjs +22 -0
- package/dist/isInViewport.d.cts +17 -0
- package/dist/isInViewport.d.ts +18 -0
- package/dist/isInViewport.js +22 -0
- package/dist/isNil.cjs +19 -0
- package/dist/isNil.d.cts +16 -0
- package/dist/isNil.d.ts +17 -0
- package/dist/isNil.js +19 -0
- package/dist/isNumber.cjs +19 -0
- package/dist/isNumber.d.cts +16 -0
- package/dist/isNumber.d.ts +17 -0
- package/dist/isNumber.js +19 -0
- package/dist/{base/isObject.cjs → isObject.cjs} +1 -1
- package/dist/{base/isObject.d.cts → isObject.d.cts} +2 -3
- package/dist/{base/isObject.d.ts → isObject.d.ts} +2 -3
- package/dist/{base/isObject.js → isObject.js} +1 -3
- package/dist/isPrimitive.cjs +21 -0
- package/dist/isPrimitive.d.cts +18 -0
- package/dist/isPrimitive.d.ts +19 -0
- package/dist/isPrimitive.js +21 -0
- package/dist/isPromise.cjs +18 -0
- package/dist/isPromise.d.cts +15 -0
- package/dist/isPromise.d.ts +16 -0
- package/dist/isPromise.js +18 -0
- package/dist/{base/isString.cjs → isString.cjs} +1 -1
- package/dist/{base/isString.d.cts → isString.d.cts} +2 -3
- package/dist/{base/isString.d.ts → isString.d.ts} +2 -3
- package/dist/{base/isString.js → isString.js} +1 -3
- package/dist/joinUrl.cjs +25 -0
- package/dist/joinUrl.d.cts +19 -0
- package/dist/joinUrl.d.ts +20 -0
- package/dist/joinUrl.js +25 -0
- package/dist/{string/kebabCase.d.cts → kebabCase.d.cts} +1 -2
- package/dist/{string/kebabCase.d.ts → kebabCase.d.ts} +1 -2
- package/dist/{string/kebabCase.js → kebabCase.js} +0 -2
- package/dist/lazyLoadImages.cjs +36 -0
- package/dist/lazyLoadImages.d.cts +19 -0
- package/dist/lazyLoadImages.d.ts +20 -0
- package/dist/lazyLoadImages.js +36 -0
- package/dist/listToTree.cjs +25 -0
- package/dist/listToTree.d.cts +32 -0
- package/dist/listToTree.d.ts +33 -0
- package/dist/listToTree.js +25 -0
- package/dist/mapValues.cjs +25 -0
- package/dist/mapValues.d.cts +20 -0
- package/dist/mapValues.d.ts +21 -0
- package/dist/mapValues.js +25 -0
- package/dist/maskString.cjs +28 -0
- package/dist/maskString.d.cts +24 -0
- package/dist/maskString.d.ts +25 -0
- package/dist/maskString.js +28 -0
- package/dist/memoize.cjs +32 -0
- package/dist/memoize.d.cts +22 -0
- package/dist/memoize.d.ts +23 -0
- package/dist/memoize.js +32 -0
- package/dist/off.cjs +22 -0
- package/dist/off.d.cts +19 -0
- package/dist/off.d.ts +20 -0
- package/dist/off.js +22 -0
- package/dist/omit.cjs +23 -0
- package/dist/omit.d.cts +17 -0
- package/dist/omit.d.ts +18 -0
- package/dist/omit.js +23 -0
- package/dist/on.cjs +21 -0
- package/dist/on.d.cts +18 -0
- package/dist/on.d.ts +19 -0
- package/dist/on.js +21 -0
- package/dist/once.cjs +31 -0
- package/dist/once.d.cts +20 -0
- package/dist/once.d.ts +21 -0
- package/dist/once.js +31 -0
- package/dist/parseQueryString.cjs +48 -0
- package/dist/parseQueryString.d.cts +21 -0
- package/dist/parseQueryString.d.ts +22 -0
- package/dist/parseQueryString.js +48 -0
- package/dist/pascalCase.cjs +18 -0
- package/dist/pascalCase.d.cts +15 -0
- package/dist/pascalCase.d.ts +16 -0
- package/dist/pascalCase.js +18 -0
- package/dist/pick.cjs +22 -0
- package/dist/pick.d.cts +17 -0
- package/dist/pick.d.ts +18 -0
- package/dist/pick.js +22 -0
- package/dist/{number/randomInt.cjs → randomInt.cjs} +1 -1
- package/dist/{number/randomInt.d.cts → randomInt.d.cts} +2 -3
- package/dist/{number/randomInt.d.ts → randomInt.d.ts} +2 -3
- package/dist/{number/randomInt.js → randomInt.js} +1 -3
- package/dist/range.cjs +27 -0
- package/dist/range.d.cts +20 -0
- package/dist/range.d.ts +21 -0
- package/dist/range.js +27 -0
- package/dist/removeClass.cjs +19 -0
- package/dist/removeClass.d.cts +16 -0
- package/dist/removeClass.d.ts +17 -0
- package/dist/removeClass.js +19 -0
- package/dist/removeElement.cjs +17 -0
- package/dist/removeElement.d.cts +14 -0
- package/dist/removeElement.d.ts +15 -0
- package/dist/removeElement.js +17 -0
- package/dist/removeStorage.cjs +19 -0
- package/dist/removeStorage.d.cts +14 -0
- package/dist/removeStorage.d.ts +15 -0
- package/dist/removeStorage.js +19 -0
- package/dist/retry.cjs +27 -0
- package/dist/retry.d.cts +17 -0
- package/dist/retry.d.ts +18 -0
- package/dist/retry.js +27 -0
- package/dist/sample.cjs +20 -0
- package/dist/sample.d.cts +16 -0
- package/dist/sample.d.ts +17 -0
- package/dist/sample.js +20 -0
- package/dist/scrollToElement.cjs +23 -0
- package/dist/scrollToElement.d.cts +16 -0
- package/dist/scrollToElement.d.ts +17 -0
- package/dist/scrollToElement.js +23 -0
- package/dist/setCssVar.cjs +22 -0
- package/dist/setCssVar.d.cts +18 -0
- package/dist/setCssVar.d.ts +19 -0
- package/dist/setCssVar.js +22 -0
- package/dist/setStorage.cjs +25 -0
- package/dist/setStorage.d.cts +17 -0
- package/dist/setStorage.d.ts +18 -0
- package/dist/setStorage.js +25 -0
- package/dist/setStyle.cjs +22 -0
- package/dist/setStyle.d.cts +19 -0
- package/dist/setStyle.d.ts +20 -0
- package/dist/setStyle.js +22 -0
- package/dist/{array/shuffle.cjs → shuffle.cjs} +1 -1
- package/dist/{array/shuffle.d.cts → shuffle.d.cts} +2 -3
- package/dist/{array/shuffle.d.ts → shuffle.d.ts} +2 -3
- package/dist/{array/shuffle.js → shuffle.js} +1 -3
- package/dist/snakeCase.cjs +18 -0
- package/dist/snakeCase.d.cts +15 -0
- package/dist/snakeCase.d.ts +16 -0
- package/dist/snakeCase.js +18 -0
- package/dist/sortBy.cjs +30 -0
- package/dist/sortBy.d.cts +20 -0
- package/dist/sortBy.d.ts +21 -0
- package/dist/sortBy.js +30 -0
- package/dist/stringifyQueryString.cjs +38 -0
- package/dist/stringifyQueryString.d.cts +21 -0
- package/dist/stringifyQueryString.d.ts +22 -0
- package/dist/stringifyQueryString.js +38 -0
- package/dist/{function/throttle.cjs → throttle.cjs} +1 -1
- package/dist/{function/throttle.d.cts → throttle.d.cts} +2 -3
- package/dist/{function/throttle.d.ts → throttle.d.ts} +2 -3
- package/dist/{function/throttle.js → throttle.js} +1 -3
- package/dist/toggleClass.cjs +22 -0
- package/dist/toggleClass.d.cts +19 -0
- package/dist/toggleClass.d.ts +20 -0
- package/dist/toggleClass.js +22 -0
- package/dist/treeFind.cjs +34 -0
- package/dist/treeFind.d.cts +25 -0
- package/dist/treeFind.d.ts +26 -0
- package/dist/treeFind.js +34 -0
- package/dist/treeToList.cjs +33 -0
- package/dist/treeToList.d.cts +24 -0
- package/dist/treeToList.d.ts +25 -0
- package/dist/treeToList.js +33 -0
- package/dist/truncate.cjs +23 -0
- package/dist/truncate.d.cts +19 -0
- package/dist/truncate.d.ts +20 -0
- package/dist/truncate.js +23 -0
- package/dist/uniqBy.cjs +30 -0
- package/dist/uniqBy.d.cts +20 -0
- package/dist/uniqBy.d.ts +21 -0
- package/dist/uniqBy.js +30 -0
- package/dist/{array/unique.cjs → unique.cjs} +1 -1
- package/dist/{array/unique.d.cts → unique.d.cts} +2 -3
- package/dist/{array/unique.d.ts → unique.d.ts} +2 -3
- package/dist/{array/unique.js → unique.js} +1 -3
- package/dist/uuid.cjs +23 -0
- package/dist/uuid.d.cts +16 -0
- package/dist/uuid.d.ts +17 -0
- package/dist/uuid.js +23 -0
- package/dist/validateEmail.cjs +19 -0
- package/dist/validateEmail.d.cts +16 -0
- package/dist/validateEmail.d.ts +17 -0
- package/dist/validateEmail.js +19 -0
- package/dist/validateIdCard.cjs +62 -0
- package/dist/validateIdCard.d.cts +15 -0
- package/dist/validateIdCard.d.ts +16 -0
- package/dist/validateIdCard.js +62 -0
- package/dist/validatePhone.cjs +19 -0
- package/dist/validatePhone.d.cts +16 -0
- package/dist/validatePhone.d.ts +17 -0
- package/dist/validatePhone.js +19 -0
- package/package.json +351 -58
- package/dist/array/chunk.d.cts.map +0 -1
- package/dist/array/chunk.d.ts.map +0 -1
- package/dist/array/chunk.js.map +0 -1
- package/dist/array/flatten.d.cts.map +0 -1
- package/dist/array/flatten.d.ts.map +0 -1
- package/dist/array/flatten.js.map +0 -1
- package/dist/array/shuffle.d.cts.map +0 -1
- package/dist/array/shuffle.d.ts.map +0 -1
- package/dist/array/shuffle.js.map +0 -1
- package/dist/array/unique.d.cts.map +0 -1
- package/dist/array/unique.d.ts.map +0 -1
- package/dist/array/unique.js.map +0 -1
- package/dist/base/deepClone.d.cts.map +0 -1
- package/dist/base/deepClone.d.ts.map +0 -1
- package/dist/base/deepClone.js.map +0 -1
- package/dist/base/isArray.d.cts.map +0 -1
- package/dist/base/isArray.d.ts.map +0 -1
- package/dist/base/isArray.js.map +0 -1
- package/dist/base/isObject.d.cts.map +0 -1
- package/dist/base/isObject.d.ts.map +0 -1
- package/dist/base/isObject.js.map +0 -1
- package/dist/base/isString.d.cts.map +0 -1
- package/dist/base/isString.d.ts.map +0 -1
- package/dist/base/isString.js.map +0 -1
- package/dist/date/formatDate.d.cts.map +0 -1
- package/dist/date/formatDate.d.ts.map +0 -1
- package/dist/date/formatDate.js.map +0 -1
- package/dist/date/getRelativeTime.d.cts.map +0 -1
- package/dist/date/getRelativeTime.d.ts.map +0 -1
- package/dist/date/getRelativeTime.js.map +0 -1
- package/dist/function/debounce.d.cts.map +0 -1
- package/dist/function/debounce.d.ts.map +0 -1
- package/dist/function/debounce.js.map +0 -1
- package/dist/function/throttle.d.cts.map +0 -1
- package/dist/function/throttle.d.ts.map +0 -1
- package/dist/function/throttle.js.map +0 -1
- package/dist/number/clamp.d.cts.map +0 -1
- package/dist/number/clamp.d.ts.map +0 -1
- package/dist/number/clamp.js.map +0 -1
- package/dist/number/formatThousands.d.cts.map +0 -1
- package/dist/number/formatThousands.d.ts.map +0 -1
- package/dist/number/formatThousands.js.map +0 -1
- package/dist/number/randomInt.d.cts.map +0 -1
- package/dist/number/randomInt.d.ts.map +0 -1
- package/dist/number/randomInt.js.map +0 -1
- package/dist/string/camelCase.d.cts.map +0 -1
- package/dist/string/camelCase.d.ts.map +0 -1
- package/dist/string/camelCase.js.map +0 -1
- package/dist/string/capitalize.d.cts.map +0 -1
- package/dist/string/capitalize.d.ts.map +0 -1
- package/dist/string/capitalize.js.map +0 -1
- package/dist/string/kebabCase.d.cts.map +0 -1
- package/dist/string/kebabCase.d.ts.map +0 -1
- package/dist/string/kebabCase.js.map +0 -1
- /package/dist/{string/kebabCase.cjs → kebabCase.cjs} +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @tanwan/utils
|
|
2
|
+
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 扁平化导出路径:简化 import 路径从 `@tanwan/utils/array/chunk` 到 `@tanwan/utils/chunk`。
|
|
8
|
+
|
|
9
|
+
## 1.1.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 新增 9 个实用工具函数:isEmpty (base), pick/omit (object), range/groupBy (array), uuid (string), delay (function), parseQueryString/stringifyQueryString (url)
|
|
14
|
+
|
|
15
|
+
## 1.0.0
|
|
16
|
+
|
|
17
|
+
### Major Changes
|
|
18
|
+
|
|
19
|
+
- 初始化第一波版本
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/addClass/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素添加 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要添加的 class(支持空格分隔多个)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import addClass from '@tanwan/utils/addClass'
|
|
11
|
+
* addClass(el, 'active')
|
|
12
|
+
* addClass(el, 'foo bar')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function addClass(el, className) {
|
|
16
|
+
el.classList.add(...className.split(/\s+/).filter(Boolean));
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
module.exports = addClass;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/dom/addClass/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素添加 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要添加的 class(支持空格分隔多个)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import addClass from '@tanwan/utils/addClass'
|
|
11
|
+
* addClass(el, 'active')
|
|
12
|
+
* addClass(el, 'foo bar')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function addClass(el: Element, className: string): void;
|
|
16
|
+
export = addClass;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/dom/addClass/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素添加 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要添加的 class(支持空格分隔多个)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import addClass from '@tanwan/utils/addClass'
|
|
11
|
+
* addClass(el, 'active')
|
|
12
|
+
* addClass(el, 'foo bar')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function addClass(el: Element, className: string): void;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { addClass as default };
|
package/dist/addClass.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/addClass/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素添加 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要添加的 class(支持空格分隔多个)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import addClass from '@tanwan/utils/addClass'
|
|
11
|
+
* addClass(el, 'active')
|
|
12
|
+
* addClass(el, 'foo bar')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function addClass(el, className) {
|
|
16
|
+
el.classList.add(...className.split(/\s+/).filter(Boolean));
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { addClass as default };
|
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
function camelCase(str, capital = false) {
|
|
6
6
|
let result = str.replace(/[-_.\s]+(\w|$)/g, (_, c) => c.toUpperCase());
|
|
7
7
|
if (capital && result.length > 0) result = result[0].toUpperCase() + result.slice(1);
|
|
8
|
-
console.log(result);
|
|
9
8
|
return result;
|
|
10
9
|
}
|
|
11
10
|
//#endregion
|
|
12
11
|
export { camelCase as default };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=camelCase.js.map
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 首字母大写
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import capitalize from '@
|
|
6
|
+
* import capitalize from '@tanwan/utils/capitalize'
|
|
7
7
|
* capitalize('hello') // 'Hello'
|
|
8
8
|
* capitalize('hello world') // 'Hello world'
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function capitalize(str: string): string;
|
|
12
|
-
export = capitalize;
|
|
13
|
-
//# sourceMappingURL=capitalize.d.cts.map
|
|
12
|
+
export = capitalize;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 首字母大写
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import capitalize from '@
|
|
6
|
+
* import capitalize from '@tanwan/utils/capitalize'
|
|
7
7
|
* capitalize('hello') // 'Hello'
|
|
8
8
|
* capitalize('hello world') // 'Hello world'
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function capitalize(str: string): string;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { capitalize as default };
|
|
14
|
-
//# sourceMappingURL=capitalize.d.ts.map
|
|
13
|
+
export { capitalize as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 首字母大写
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import capitalize from '@
|
|
6
|
+
* import capitalize from '@tanwan/utils/capitalize'
|
|
7
7
|
* capitalize('hello') // 'Hello'
|
|
8
8
|
* capitalize('hello world') // 'Hello world'
|
|
9
9
|
* ```
|
|
@@ -14,5 +14,3 @@ function capitalize(str) {
|
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
16
|
export { capitalize as default };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=capitalize.js.map
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 数组分块
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import chunk from '@
|
|
6
|
+
* import chunk from '@tanwan/utils/chunk'
|
|
7
7
|
* chunk([1, 2, 3, 4, 5], 2) // [[1, 2], [3, 4], [5]]
|
|
8
8
|
* chunk(['a', 'b', 'c'], 1) // [['a'], ['b'], ['c']]
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function chunk<T>(arr: T[], size: number): T[][];
|
|
12
|
-
export = chunk;
|
|
13
|
-
//# sourceMappingURL=chunk.d.cts.map
|
|
12
|
+
export = chunk;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 数组分块
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import chunk from '@
|
|
6
|
+
* import chunk from '@tanwan/utils/chunk'
|
|
7
7
|
* chunk([1, 2, 3, 4, 5], 2) // [[1, 2], [3, 4], [5]]
|
|
8
8
|
* chunk(['a', 'b', 'c'], 1) // [['a'], ['b'], ['c']]
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function chunk<T>(arr: T[], size: number): T[][];
|
|
12
12
|
//#endregion
|
|
13
|
-
export { chunk as default };
|
|
14
|
-
//# sourceMappingURL=chunk.d.ts.map
|
|
13
|
+
export { chunk as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 数组分块
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import chunk from '@
|
|
6
|
+
* import chunk from '@tanwan/utils/chunk'
|
|
7
7
|
* chunk([1, 2, 3, 4, 5], 2) // [[1, 2], [3, 4], [5]]
|
|
8
8
|
* chunk(['a', 'b', 'c'], 1) // [['a'], ['b'], ['c']]
|
|
9
9
|
* ```
|
|
@@ -15,5 +15,3 @@ function chunk(arr, size) {
|
|
|
15
15
|
}
|
|
16
16
|
//#endregion
|
|
17
17
|
export { chunk as default };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=chunk.js.map
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 将数值限制在指定范围内
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import clamp from '@
|
|
6
|
+
* import clamp from '@tanwan/utils/clamp'
|
|
7
7
|
* clamp(10, 0, 5) // 5
|
|
8
8
|
* clamp(-1, 0, 5) // 0
|
|
9
9
|
* clamp(3, 0, 5) // 3
|
|
10
10
|
* ```
|
|
11
11
|
*/
|
|
12
12
|
declare function clamp(value: number, min: number, max: number): number;
|
|
13
|
-
export = clamp;
|
|
14
|
-
//# sourceMappingURL=clamp.d.cts.map
|
|
13
|
+
export = clamp;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 将数值限制在指定范围内
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import clamp from '@
|
|
6
|
+
* import clamp from '@tanwan/utils/clamp'
|
|
7
7
|
* clamp(10, 0, 5) // 5
|
|
8
8
|
* clamp(-1, 0, 5) // 0
|
|
9
9
|
* clamp(3, 0, 5) // 3
|
|
@@ -11,5 +11,4 @@
|
|
|
11
11
|
*/
|
|
12
12
|
declare function clamp(value: number, min: number, max: number): number;
|
|
13
13
|
//#endregion
|
|
14
|
-
export { clamp as default };
|
|
15
|
-
//# sourceMappingURL=clamp.d.ts.map
|
|
14
|
+
export { clamp as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 将数值限制在指定范围内
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import clamp from '@
|
|
6
|
+
* import clamp from '@tanwan/utils/clamp'
|
|
7
7
|
* clamp(10, 0, 5) // 5
|
|
8
8
|
* clamp(-1, 0, 5) // 0
|
|
9
9
|
* clamp(3, 0, 5) // 3
|
|
@@ -14,5 +14,3 @@ function clamp(value, min, max) {
|
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
16
|
export { clamp as default };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=clamp.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/business/convertCurrencyToChinese/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额转为中文大写
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额数值
|
|
6
|
+
* @returns 中文大写金额字符串
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import convertCurrencyToChinese from '@tanwan/utils/convertCurrencyToChinese'
|
|
11
|
+
* convertCurrencyToChinese(1234.56)
|
|
12
|
+
* // '壹仟贰佰叁拾肆元伍角陆分'
|
|
13
|
+
* convertCurrencyToChinese(0)
|
|
14
|
+
* // '零元整'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function convertCurrencyToChinese(amount) {
|
|
18
|
+
if (amount === 0) return "零元整";
|
|
19
|
+
const digits = "零壹贰叁肆伍陆柒捌玖";
|
|
20
|
+
const units = [
|
|
21
|
+
"",
|
|
22
|
+
"拾",
|
|
23
|
+
"佰",
|
|
24
|
+
"仟"
|
|
25
|
+
];
|
|
26
|
+
const bigUnits = [
|
|
27
|
+
"",
|
|
28
|
+
"万",
|
|
29
|
+
"亿"
|
|
30
|
+
];
|
|
31
|
+
const [intPart, decimalPart] = amount.toFixed(2).split(".");
|
|
32
|
+
const intLen = intPart.length;
|
|
33
|
+
let result = "";
|
|
34
|
+
for (let i = 0; i < intLen; i++) {
|
|
35
|
+
const digit = Number.parseInt(intPart[i]);
|
|
36
|
+
const pos = intLen - 1 - i;
|
|
37
|
+
const unitIdx = pos % 4;
|
|
38
|
+
const bigIdx = Math.floor(pos / 4);
|
|
39
|
+
if (digit !== 0) result += digits[digit] + units[unitIdx];
|
|
40
|
+
else if (i < intLen - 1 && intPart[i + 1] !== "0") result += digits[0];
|
|
41
|
+
if (unitIdx === 0 && bigIdx > 0) {
|
|
42
|
+
if (intPart.substring(i + 1).replace(/0+$/, "").length > 0) result += bigUnits[bigIdx];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
result += "元";
|
|
46
|
+
const jiao = Number.parseInt(decimalPart[0]);
|
|
47
|
+
const fen = Number.parseInt(decimalPart[1]);
|
|
48
|
+
if (jiao === 0 && fen === 0) result += "整";
|
|
49
|
+
else {
|
|
50
|
+
if (jiao > 0) result += digits[jiao] + "角";
|
|
51
|
+
if (fen > 0) result += digits[fen] + "分";
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
module.exports = convertCurrencyToChinese;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/convertCurrencyToChinese/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额转为中文大写
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额数值
|
|
6
|
+
* @returns 中文大写金额字符串
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import convertCurrencyToChinese from '@tanwan/utils/convertCurrencyToChinese'
|
|
11
|
+
* convertCurrencyToChinese(1234.56)
|
|
12
|
+
* // '壹仟贰佰叁拾肆元伍角陆分'
|
|
13
|
+
* convertCurrencyToChinese(0)
|
|
14
|
+
* // '零元整'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function convertCurrencyToChinese(amount: number): string;
|
|
18
|
+
export = convertCurrencyToChinese;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/business/convertCurrencyToChinese/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额转为中文大写
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额数值
|
|
6
|
+
* @returns 中文大写金额字符串
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import convertCurrencyToChinese from '@tanwan/utils/convertCurrencyToChinese'
|
|
11
|
+
* convertCurrencyToChinese(1234.56)
|
|
12
|
+
* // '壹仟贰佰叁拾肆元伍角陆分'
|
|
13
|
+
* convertCurrencyToChinese(0)
|
|
14
|
+
* // '零元整'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function convertCurrencyToChinese(amount: number): string;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { convertCurrencyToChinese as default };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/business/convertCurrencyToChinese/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额转为中文大写
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额数值
|
|
6
|
+
* @returns 中文大写金额字符串
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import convertCurrencyToChinese from '@tanwan/utils/convertCurrencyToChinese'
|
|
11
|
+
* convertCurrencyToChinese(1234.56)
|
|
12
|
+
* // '壹仟贰佰叁拾肆元伍角陆分'
|
|
13
|
+
* convertCurrencyToChinese(0)
|
|
14
|
+
* // '零元整'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function convertCurrencyToChinese(amount) {
|
|
18
|
+
if (amount === 0) return "零元整";
|
|
19
|
+
const digits = "零壹贰叁肆伍陆柒捌玖";
|
|
20
|
+
const units = [
|
|
21
|
+
"",
|
|
22
|
+
"拾",
|
|
23
|
+
"佰",
|
|
24
|
+
"仟"
|
|
25
|
+
];
|
|
26
|
+
const bigUnits = [
|
|
27
|
+
"",
|
|
28
|
+
"万",
|
|
29
|
+
"亿"
|
|
30
|
+
];
|
|
31
|
+
const [intPart, decimalPart] = amount.toFixed(2).split(".");
|
|
32
|
+
const intLen = intPart.length;
|
|
33
|
+
let result = "";
|
|
34
|
+
for (let i = 0; i < intLen; i++) {
|
|
35
|
+
const digit = Number.parseInt(intPart[i]);
|
|
36
|
+
const pos = intLen - 1 - i;
|
|
37
|
+
const unitIdx = pos % 4;
|
|
38
|
+
const bigIdx = Math.floor(pos / 4);
|
|
39
|
+
if (digit !== 0) result += digits[digit] + units[unitIdx];
|
|
40
|
+
else if (i < intLen - 1 && intPart[i + 1] !== "0") result += digits[0];
|
|
41
|
+
if (unitIdx === 0 && bigIdx > 0) {
|
|
42
|
+
if (intPart.substring(i + 1).replace(/0+$/, "").length > 0) result += bigUnits[bigIdx];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
result += "元";
|
|
46
|
+
const jiao = Number.parseInt(decimalPart[0]);
|
|
47
|
+
const fen = Number.parseInt(decimalPart[1]);
|
|
48
|
+
if (jiao === 0 && fen === 0) result += "整";
|
|
49
|
+
else {
|
|
50
|
+
if (jiao > 0) result += digits[jiao] + "角";
|
|
51
|
+
if (fen > 0) result += digits[fen] + "分";
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { convertCurrencyToChinese as default };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/business/copyToClipboard/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 复制文本到剪贴板
|
|
4
|
+
*
|
|
5
|
+
* 优先使用 `navigator.clipboard.writeText`,不支持时降级为 `document.execCommand`
|
|
6
|
+
*
|
|
7
|
+
* @param text - 要复制的文本
|
|
8
|
+
* @returns 是否复制成功
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import copyToClipboard from '@tanwan/utils/copyToClipboard'
|
|
13
|
+
* await copyToClipboard('Hello World')
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
async function copyToClipboard(text) {
|
|
17
|
+
try {
|
|
18
|
+
if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
|
|
19
|
+
await navigator.clipboard.writeText(text);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
} catch {}
|
|
23
|
+
const textarea = document.createElement("textarea");
|
|
24
|
+
textarea.value = text;
|
|
25
|
+
textarea.style.position = "fixed";
|
|
26
|
+
textarea.style.opacity = "0";
|
|
27
|
+
document.body.appendChild(textarea);
|
|
28
|
+
textarea.select();
|
|
29
|
+
try {
|
|
30
|
+
return document.execCommand("copy");
|
|
31
|
+
} catch {
|
|
32
|
+
return false;
|
|
33
|
+
} finally {
|
|
34
|
+
document.body.removeChild(textarea);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
module.exports = copyToClipboard;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/copyToClipboard/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 复制文本到剪贴板
|
|
4
|
+
*
|
|
5
|
+
* 优先使用 `navigator.clipboard.writeText`,不支持时降级为 `document.execCommand`
|
|
6
|
+
*
|
|
7
|
+
* @param text - 要复制的文本
|
|
8
|
+
* @returns 是否复制成功
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import copyToClipboard from '@tanwan/utils/copyToClipboard'
|
|
13
|
+
* await copyToClipboard('Hello World')
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function copyToClipboard(text: string): Promise<boolean>;
|
|
17
|
+
export = copyToClipboard;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/copyToClipboard/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 复制文本到剪贴板
|
|
4
|
+
*
|
|
5
|
+
* 优先使用 `navigator.clipboard.writeText`,不支持时降级为 `document.execCommand`
|
|
6
|
+
*
|
|
7
|
+
* @param text - 要复制的文本
|
|
8
|
+
* @returns 是否复制成功
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import copyToClipboard from '@tanwan/utils/copyToClipboard'
|
|
13
|
+
* await copyToClipboard('Hello World')
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function copyToClipboard(text: string): Promise<boolean>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { copyToClipboard as default };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/business/copyToClipboard/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 复制文本到剪贴板
|
|
4
|
+
*
|
|
5
|
+
* 优先使用 `navigator.clipboard.writeText`,不支持时降级为 `document.execCommand`
|
|
6
|
+
*
|
|
7
|
+
* @param text - 要复制的文本
|
|
8
|
+
* @returns 是否复制成功
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import copyToClipboard from '@tanwan/utils/copyToClipboard'
|
|
13
|
+
* await copyToClipboard('Hello World')
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
async function copyToClipboard(text) {
|
|
17
|
+
try {
|
|
18
|
+
if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
|
|
19
|
+
await navigator.clipboard.writeText(text);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
} catch {}
|
|
23
|
+
const textarea = document.createElement("textarea");
|
|
24
|
+
textarea.value = text;
|
|
25
|
+
textarea.style.position = "fixed";
|
|
26
|
+
textarea.style.opacity = "0";
|
|
27
|
+
document.body.appendChild(textarea);
|
|
28
|
+
textarea.select();
|
|
29
|
+
try {
|
|
30
|
+
return document.execCommand("copy");
|
|
31
|
+
} catch {
|
|
32
|
+
return false;
|
|
33
|
+
} finally {
|
|
34
|
+
document.body.removeChild(textarea);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { copyToClipboard as default };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/dom/createElement/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 快捷创建元素并设置属性
|
|
4
|
+
*
|
|
5
|
+
* @param tag - HTML 标签名
|
|
6
|
+
* @param attrs - 属性对象,如 `{ id: 'box', class: 'card' }`
|
|
7
|
+
* @param children - 子节点(文本、元素或元素数组)
|
|
8
|
+
* @returns 创建的 DOM 元素
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import createElement from '@tanwan/utils/createElement'
|
|
13
|
+
* createElement('div', { class: 'card' }, 'Hello')
|
|
14
|
+
* createElement('ul', { id: 'list' },
|
|
15
|
+
* createElement('li', {}, 'Item 1'),
|
|
16
|
+
* createElement('li', {}, 'Item 2'),
|
|
17
|
+
* )
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function createElement(tag, attrs = {}, ...children) {
|
|
21
|
+
const el = document.createElement(tag);
|
|
22
|
+
for (const key of Object.keys(attrs)) el.setAttribute(key, attrs[key]);
|
|
23
|
+
for (const child of children) el.appendChild(typeof child === "string" ? document.createTextNode(child) : child);
|
|
24
|
+
return el;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
module.exports = createElement;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/dom/createElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 快捷创建元素并设置属性
|
|
4
|
+
*
|
|
5
|
+
* @param tag - HTML 标签名
|
|
6
|
+
* @param attrs - 属性对象,如 `{ id: 'box', class: 'card' }`
|
|
7
|
+
* @param children - 子节点(文本、元素或元素数组)
|
|
8
|
+
* @returns 创建的 DOM 元素
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import createElement from '@tanwan/utils/createElement'
|
|
13
|
+
* createElement('div', { class: 'card' }, 'Hello')
|
|
14
|
+
* createElement('ul', { id: 'list' },
|
|
15
|
+
* createElement('li', {}, 'Item 1'),
|
|
16
|
+
* createElement('li', {}, 'Item 2'),
|
|
17
|
+
* )
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attrs?: Record<string, string>, ...children: (string | Node)[]): HTMLElementTagNameMap[K];
|
|
21
|
+
export = createElement;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/createElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 快捷创建元素并设置属性
|
|
4
|
+
*
|
|
5
|
+
* @param tag - HTML 标签名
|
|
6
|
+
* @param attrs - 属性对象,如 `{ id: 'box', class: 'card' }`
|
|
7
|
+
* @param children - 子节点(文本、元素或元素数组)
|
|
8
|
+
* @returns 创建的 DOM 元素
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import createElement from '@tanwan/utils/createElement'
|
|
13
|
+
* createElement('div', { class: 'card' }, 'Hello')
|
|
14
|
+
* createElement('ul', { id: 'list' },
|
|
15
|
+
* createElement('li', {}, 'Item 1'),
|
|
16
|
+
* createElement('li', {}, 'Item 2'),
|
|
17
|
+
* )
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attrs?: Record<string, string>, ...children: (string | Node)[]): HTMLElementTagNameMap[K];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { createElement as default };
|