@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/dist/on.cjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/dom/on/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素绑定事件
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param event - 事件名
|
|
7
|
+
* @param handler - 事件处理函数
|
|
8
|
+
* @param options - addEventListener 选项
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import on from '@tanwan/utils/on'
|
|
13
|
+
* on(el, 'click', () => console.log('clicked'))
|
|
14
|
+
* on(el, 'scroll', handler, { passive: true })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function on(el, event, handler, options) {
|
|
18
|
+
el.addEventListener(event, handler, options);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
module.exports = on;
|
package/dist/on.d.cts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/dom/on/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素绑定事件
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param event - 事件名
|
|
7
|
+
* @param handler - 事件处理函数
|
|
8
|
+
* @param options - addEventListener 选项
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import on from '@tanwan/utils/on'
|
|
13
|
+
* on(el, 'click', () => console.log('clicked'))
|
|
14
|
+
* on(el, 'scroll', handler, { passive: true })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function on(el: EventTarget, event: string, handler: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void;
|
|
18
|
+
export = on;
|
package/dist/on.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/on/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素绑定事件
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param event - 事件名
|
|
7
|
+
* @param handler - 事件处理函数
|
|
8
|
+
* @param options - addEventListener 选项
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import on from '@tanwan/utils/on'
|
|
13
|
+
* on(el, 'click', () => console.log('clicked'))
|
|
14
|
+
* on(el, 'scroll', handler, { passive: true })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function on(el: EventTarget, event: string, handler: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { on as default };
|
package/dist/on.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/dom/on/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 给元素绑定事件
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param event - 事件名
|
|
7
|
+
* @param handler - 事件处理函数
|
|
8
|
+
* @param options - addEventListener 选项
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import on from '@tanwan/utils/on'
|
|
13
|
+
* on(el, 'click', () => console.log('clicked'))
|
|
14
|
+
* on(el, 'scroll', handler, { passive: true })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function on(el, event, handler, options) {
|
|
18
|
+
el.addEventListener(event, handler, options);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { on as default };
|
package/dist/once.cjs
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/function/once/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 包装函数,确保它只执行一次,后续调用返回第一次的结果
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 需要只执行一次的函数
|
|
6
|
+
* @returns 包装后的函数
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import once from '@tanwan/utils/once'
|
|
11
|
+
* const initialize = once(() => {
|
|
12
|
+
* console.log('只执行一次')
|
|
13
|
+
* return 'done'
|
|
14
|
+
* })
|
|
15
|
+
* initialize() // 'done'(输出日志)
|
|
16
|
+
* initialize() // 'done'(不输出日志)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function once(fn) {
|
|
20
|
+
let called = false;
|
|
21
|
+
let result;
|
|
22
|
+
return ((...args) => {
|
|
23
|
+
if (!called) {
|
|
24
|
+
called = true;
|
|
25
|
+
result = fn(...args);
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
module.exports = once;
|
package/dist/once.d.cts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/function/once/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 包装函数,确保它只执行一次,后续调用返回第一次的结果
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 需要只执行一次的函数
|
|
6
|
+
* @returns 包装后的函数
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import once from '@tanwan/utils/once'
|
|
11
|
+
* const initialize = once(() => {
|
|
12
|
+
* console.log('只执行一次')
|
|
13
|
+
* return 'done'
|
|
14
|
+
* })
|
|
15
|
+
* initialize() // 'done'(输出日志)
|
|
16
|
+
* initialize() // 'done'(不输出日志)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
|
|
20
|
+
export = once;
|
package/dist/once.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/function/once/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 包装函数,确保它只执行一次,后续调用返回第一次的结果
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 需要只执行一次的函数
|
|
6
|
+
* @returns 包装后的函数
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import once from '@tanwan/utils/once'
|
|
11
|
+
* const initialize = once(() => {
|
|
12
|
+
* console.log('只执行一次')
|
|
13
|
+
* return 'done'
|
|
14
|
+
* })
|
|
15
|
+
* initialize() // 'done'(输出日志)
|
|
16
|
+
* initialize() // 'done'(不输出日志)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { once as default };
|
package/dist/once.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/function/once/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 包装函数,确保它只执行一次,后续调用返回第一次的结果
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 需要只执行一次的函数
|
|
6
|
+
* @returns 包装后的函数
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import once from '@tanwan/utils/once'
|
|
11
|
+
* const initialize = once(() => {
|
|
12
|
+
* console.log('只执行一次')
|
|
13
|
+
* return 'done'
|
|
14
|
+
* })
|
|
15
|
+
* initialize() // 'done'(输出日志)
|
|
16
|
+
* initialize() // 'done'(不输出日志)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function once(fn) {
|
|
20
|
+
let called = false;
|
|
21
|
+
let result;
|
|
22
|
+
return ((...args) => {
|
|
23
|
+
if (!called) {
|
|
24
|
+
called = true;
|
|
25
|
+
result = fn(...args);
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { once as default };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/url/parseQueryString/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 解析 URL 查询字符串为对象
|
|
4
|
+
*
|
|
5
|
+
* 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
|
|
6
|
+
*
|
|
7
|
+
* @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
|
|
8
|
+
* @returns 解析后的键值对对象
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import parseQueryString from '@tanwan/utils/parseQueryString'
|
|
13
|
+
* parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
|
|
14
|
+
* parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
|
|
15
|
+
* parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
|
|
16
|
+
* parseQueryString('?active=true&count=0') // { active: true, count: 0 }
|
|
17
|
+
* parseQueryString('') // {}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function parseQueryString(query) {
|
|
21
|
+
const qs = query ?? (typeof location !== "undefined" ? location.search : "");
|
|
22
|
+
if (!qs) return {};
|
|
23
|
+
const str = qs.startsWith("?") ? qs.slice(1) : qs;
|
|
24
|
+
if (!str) return {};
|
|
25
|
+
const result = {};
|
|
26
|
+
for (const part of str.split("&")) {
|
|
27
|
+
if (!part) continue;
|
|
28
|
+
const [rawKey, rawValue = ""] = part.split("=");
|
|
29
|
+
const key = decodeURIComponent(rawKey);
|
|
30
|
+
const parsed = parseValue(decodeURIComponent(rawValue));
|
|
31
|
+
if (key in result) {
|
|
32
|
+
const existing = result[key];
|
|
33
|
+
if (Array.isArray(existing)) existing.push(parsed);
|
|
34
|
+
else result[key] = [existing, parsed];
|
|
35
|
+
} else result[key] = parsed;
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
function parseValue(value) {
|
|
40
|
+
if (value === "true") return true;
|
|
41
|
+
if (value === "false") return false;
|
|
42
|
+
if (value === "") return "";
|
|
43
|
+
const num = Number(value);
|
|
44
|
+
if (!Number.isNaN(num) && String(num) === value) return num;
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
module.exports = parseQueryString;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/url/parseQueryString/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 解析 URL 查询字符串为对象
|
|
4
|
+
*
|
|
5
|
+
* 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
|
|
6
|
+
*
|
|
7
|
+
* @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
|
|
8
|
+
* @returns 解析后的键值对对象
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import parseQueryString from '@tanwan/utils/parseQueryString'
|
|
13
|
+
* parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
|
|
14
|
+
* parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
|
|
15
|
+
* parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
|
|
16
|
+
* parseQueryString('?active=true&count=0') // { active: true, count: 0 }
|
|
17
|
+
* parseQueryString('') // {}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function parseQueryString(query?: string): Record<string, string | number | boolean | (string | number | boolean)[]>;
|
|
21
|
+
export = parseQueryString;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/url/parseQueryString/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 解析 URL 查询字符串为对象
|
|
4
|
+
*
|
|
5
|
+
* 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
|
|
6
|
+
*
|
|
7
|
+
* @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
|
|
8
|
+
* @returns 解析后的键值对对象
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import parseQueryString from '@tanwan/utils/parseQueryString'
|
|
13
|
+
* parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
|
|
14
|
+
* parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
|
|
15
|
+
* parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
|
|
16
|
+
* parseQueryString('?active=true&count=0') // { active: true, count: 0 }
|
|
17
|
+
* parseQueryString('') // {}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function parseQueryString(query?: string): Record<string, string | number | boolean | (string | number | boolean)[]>;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { parseQueryString as default };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/url/parseQueryString/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 解析 URL 查询字符串为对象
|
|
4
|
+
*
|
|
5
|
+
* 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
|
|
6
|
+
*
|
|
7
|
+
* @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
|
|
8
|
+
* @returns 解析后的键值对对象
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import parseQueryString from '@tanwan/utils/parseQueryString'
|
|
13
|
+
* parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
|
|
14
|
+
* parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
|
|
15
|
+
* parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
|
|
16
|
+
* parseQueryString('?active=true&count=0') // { active: true, count: 0 }
|
|
17
|
+
* parseQueryString('') // {}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function parseQueryString(query) {
|
|
21
|
+
const qs = query ?? (typeof location !== "undefined" ? location.search : "");
|
|
22
|
+
if (!qs) return {};
|
|
23
|
+
const str = qs.startsWith("?") ? qs.slice(1) : qs;
|
|
24
|
+
if (!str) return {};
|
|
25
|
+
const result = {};
|
|
26
|
+
for (const part of str.split("&")) {
|
|
27
|
+
if (!part) continue;
|
|
28
|
+
const [rawKey, rawValue = ""] = part.split("=");
|
|
29
|
+
const key = decodeURIComponent(rawKey);
|
|
30
|
+
const parsed = parseValue(decodeURIComponent(rawValue));
|
|
31
|
+
if (key in result) {
|
|
32
|
+
const existing = result[key];
|
|
33
|
+
if (Array.isArray(existing)) existing.push(parsed);
|
|
34
|
+
else result[key] = [existing, parsed];
|
|
35
|
+
} else result[key] = parsed;
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
function parseValue(value) {
|
|
40
|
+
if (value === "true") return true;
|
|
41
|
+
if (value === "false") return false;
|
|
42
|
+
if (value === "") return "";
|
|
43
|
+
const num = Number(value);
|
|
44
|
+
if (!Number.isNaN(num) && String(num) === value) return num;
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { parseQueryString as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/string/pascalCase/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为帕斯卡命名(PascalCase)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import pascalCase from '@tanwan/utils/pascalCase'
|
|
8
|
+
* pascalCase('foo-bar') // 'FooBar'
|
|
9
|
+
* pascalCase('foo_bar') // 'FooBar'
|
|
10
|
+
* pascalCase('foo bar') // 'FooBar'
|
|
11
|
+
* pascalCase('fooBar') // 'FooBar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function pascalCase(str) {
|
|
15
|
+
return str.replace(/[-_.\s]+(\w|$)/g, (_, c) => c.toUpperCase()).replace(/^[a-z]/, (c) => c.toUpperCase());
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
module.exports = pascalCase;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/string/pascalCase/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为帕斯卡命名(PascalCase)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import pascalCase from '@tanwan/utils/pascalCase'
|
|
8
|
+
* pascalCase('foo-bar') // 'FooBar'
|
|
9
|
+
* pascalCase('foo_bar') // 'FooBar'
|
|
10
|
+
* pascalCase('foo bar') // 'FooBar'
|
|
11
|
+
* pascalCase('fooBar') // 'FooBar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function pascalCase(str: string): string;
|
|
15
|
+
export = pascalCase;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/string/pascalCase/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为帕斯卡命名(PascalCase)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import pascalCase from '@tanwan/utils/pascalCase'
|
|
8
|
+
* pascalCase('foo-bar') // 'FooBar'
|
|
9
|
+
* pascalCase('foo_bar') // 'FooBar'
|
|
10
|
+
* pascalCase('foo bar') // 'FooBar'
|
|
11
|
+
* pascalCase('fooBar') // 'FooBar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function pascalCase(str: string): string;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { pascalCase as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/string/pascalCase/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为帕斯卡命名(PascalCase)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import pascalCase from '@tanwan/utils/pascalCase'
|
|
8
|
+
* pascalCase('foo-bar') // 'FooBar'
|
|
9
|
+
* pascalCase('foo_bar') // 'FooBar'
|
|
10
|
+
* pascalCase('foo bar') // 'FooBar'
|
|
11
|
+
* pascalCase('fooBar') // 'FooBar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function pascalCase(str) {
|
|
15
|
+
return str.replace(/[-_.\s]+(\w|$)/g, (_, c) => c.toUpperCase()).replace(/^[a-z]/, (c) => c.toUpperCase());
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { pascalCase as default };
|
package/dist/pick.cjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/object/pick/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中选取指定 key,返回新对象
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 源对象
|
|
6
|
+
* @param keys - 要选取的 key 数组
|
|
7
|
+
* @returns 包含指定 key 的新对象
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import pick from '@tanwan/utils/pick'
|
|
12
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
|
|
13
|
+
* pick({ x: 'foo' }, ['y']) // {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function pick(obj, keys) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const key of keys) if (key in obj) result[key] = obj[key];
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
module.exports = pick;
|
package/dist/pick.d.cts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/object/pick/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中选取指定 key,返回新对象
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 源对象
|
|
6
|
+
* @param keys - 要选取的 key 数组
|
|
7
|
+
* @returns 包含指定 key 的新对象
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import pick from '@tanwan/utils/pick'
|
|
12
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
|
|
13
|
+
* pick({ x: 'foo' }, ['y']) // {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
17
|
+
export = pick;
|
package/dist/pick.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/object/pick/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中选取指定 key,返回新对象
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 源对象
|
|
6
|
+
* @param keys - 要选取的 key 数组
|
|
7
|
+
* @returns 包含指定 key 的新对象
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import pick from '@tanwan/utils/pick'
|
|
12
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
|
|
13
|
+
* pick({ x: 'foo' }, ['y']) // {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { pick as default };
|
package/dist/pick.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/object/pick/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中选取指定 key,返回新对象
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 源对象
|
|
6
|
+
* @param keys - 要选取的 key 数组
|
|
7
|
+
* @returns 包含指定 key 的新对象
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import pick from '@tanwan/utils/pick'
|
|
12
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
|
|
13
|
+
* pick({ x: 'foo' }, ['y']) // {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function pick(obj, keys) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const key of keys) if (key in obj) result[key] = obj[key];
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { pick as default };
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 生成指定范围内的随机整数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import randomInt from '@
|
|
6
|
+
* import randomInt from '@tanwan/utils/randomInt'
|
|
7
7
|
* randomInt(1, 10) // 3(介于 1-10 之间)
|
|
8
8
|
* randomInt(0, 1) // 0 或 1
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function randomInt(min: number, max: number): number;
|
|
12
|
-
export = randomInt;
|
|
13
|
-
//# sourceMappingURL=randomInt.d.cts.map
|
|
12
|
+
export = randomInt;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 生成指定范围内的随机整数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import randomInt from '@
|
|
6
|
+
* import randomInt from '@tanwan/utils/randomInt'
|
|
7
7
|
* randomInt(1, 10) // 3(介于 1-10 之间)
|
|
8
8
|
* randomInt(0, 1) // 0 或 1
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function randomInt(min: number, max: number): number;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { randomInt as default };
|
|
14
|
-
//# sourceMappingURL=randomInt.d.ts.map
|
|
13
|
+
export { randomInt as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 生成指定范围内的随机整数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import randomInt from '@
|
|
6
|
+
* import randomInt from '@tanwan/utils/randomInt'
|
|
7
7
|
* randomInt(1, 10) // 3(介于 1-10 之间)
|
|
8
8
|
* randomInt(0, 1) // 0 或 1
|
|
9
9
|
* ```
|
|
@@ -13,5 +13,3 @@ function randomInt(min, max) {
|
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
15
|
export { randomInt as default };
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=randomInt.js.map
|
package/dist/range.cjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/array/range/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成数字序列数组
|
|
4
|
+
*
|
|
5
|
+
* @param start - 起始值(包含)
|
|
6
|
+
* @param end - 结束值(不包含)
|
|
7
|
+
* @param step - 步长,默认为 1
|
|
8
|
+
* @returns 数字序列数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import range from '@tanwan/utils/range'
|
|
13
|
+
* range(1, 5) // [1, 2, 3, 4]
|
|
14
|
+
* range(0, 10, 2) // [0, 2, 4, 6, 8]
|
|
15
|
+
* range(5, 0, -1) // [5, 4, 3, 2, 1]
|
|
16
|
+
* range(0, 0) // []
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function range(start, end, step = 1) {
|
|
20
|
+
if (step === 0) throw new Error("step 不能为 0");
|
|
21
|
+
const result = [];
|
|
22
|
+
if (step > 0) for (let i = start; i < end; i += step) result.push(i);
|
|
23
|
+
else for (let i = start; i > end; i += step) result.push(i);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
module.exports = range;
|
package/dist/range.d.cts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/array/range/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成数字序列数组
|
|
4
|
+
*
|
|
5
|
+
* @param start - 起始值(包含)
|
|
6
|
+
* @param end - 结束值(不包含)
|
|
7
|
+
* @param step - 步长,默认为 1
|
|
8
|
+
* @returns 数字序列数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import range from '@tanwan/utils/range'
|
|
13
|
+
* range(1, 5) // [1, 2, 3, 4]
|
|
14
|
+
* range(0, 10, 2) // [0, 2, 4, 6, 8]
|
|
15
|
+
* range(5, 0, -1) // [5, 4, 3, 2, 1]
|
|
16
|
+
* range(0, 0) // []
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function range(start: number, end: number, step?: number): number[];
|
|
20
|
+
export = range;
|
package/dist/range.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/array/range/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成数字序列数组
|
|
4
|
+
*
|
|
5
|
+
* @param start - 起始值(包含)
|
|
6
|
+
* @param end - 结束值(不包含)
|
|
7
|
+
* @param step - 步长,默认为 1
|
|
8
|
+
* @returns 数字序列数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import range from '@tanwan/utils/range'
|
|
13
|
+
* range(1, 5) // [1, 2, 3, 4]
|
|
14
|
+
* range(0, 10, 2) // [0, 2, 4, 6, 8]
|
|
15
|
+
* range(5, 0, -1) // [5, 4, 3, 2, 1]
|
|
16
|
+
* range(0, 0) // []
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function range(start: number, end: number, step?: number): number[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { range as default };
|
package/dist/range.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/array/range/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成数字序列数组
|
|
4
|
+
*
|
|
5
|
+
* @param start - 起始值(包含)
|
|
6
|
+
* @param end - 结束值(不包含)
|
|
7
|
+
* @param step - 步长,默认为 1
|
|
8
|
+
* @returns 数字序列数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import range from '@tanwan/utils/range'
|
|
13
|
+
* range(1, 5) // [1, 2, 3, 4]
|
|
14
|
+
* range(0, 10, 2) // [0, 2, 4, 6, 8]
|
|
15
|
+
* range(5, 0, -1) // [5, 4, 3, 2, 1]
|
|
16
|
+
* range(0, 0) // []
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function range(start, end, step = 1) {
|
|
20
|
+
if (step === 0) throw new Error("step 不能为 0");
|
|
21
|
+
const result = [];
|
|
22
|
+
if (step > 0) for (let i = start; i < end; i += step) result.push(i);
|
|
23
|
+
else for (let i = start; i > end; i += step) result.push(i);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { range as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/removeClass/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 移除元素的 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要移除的 class(支持空格分隔多个)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import removeClass from '@tanwan/utils/removeClass'
|
|
11
|
+
* removeClass(el, 'active')
|
|
12
|
+
* removeClass(el, 'foo bar')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function removeClass(el, className) {
|
|
16
|
+
el.classList.remove(...className.split(/\s+/).filter(Boolean));
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
module.exports = removeClass;
|