@tanwan/utils 1.1.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.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 -2
- package/dist/{string/capitalize.d.cts → capitalize.d.cts} +1 -2
- package/dist/{string/capitalize.d.ts → capitalize.d.ts} +1 -2
- package/dist/{string/capitalize.js → capitalize.js} +0 -2
- package/dist/{array/chunk.d.cts → chunk.d.cts} +1 -2
- package/dist/{array/chunk.d.ts → chunk.d.ts} +1 -2
- package/dist/{array/chunk.js → chunk.js} +0 -2
- package/dist/{number/clamp.d.cts → clamp.d.cts} +1 -2
- package/dist/{number/clamp.d.ts → clamp.d.ts} +1 -2
- package/dist/{number/clamp.js → clamp.js} +0 -2
- 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.d.cts → debounce.d.cts} +1 -2
- package/dist/{function/debounce.d.ts → debounce.d.ts} +1 -2
- package/dist/{function/debounce.js → debounce.js} +0 -2
- 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} +2 -2
- package/dist/{base/deepClone.d.cts → deepClone.d.cts} +1 -2
- package/dist/{base/deepClone.d.ts → deepClone.d.ts} +1 -2
- package/dist/{base/deepClone.js → deepClone.js} +0 -2
- 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/{function/delay.d.cts → delay.d.cts} +1 -2
- package/dist/{function/delay.d.ts → delay.d.ts} +1 -2
- package/dist/{function/delay.js → delay.js} +0 -2
- 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.d.cts → flatten.d.cts} +1 -2
- package/dist/{array/flatten.d.ts → flatten.d.ts} +1 -2
- package/dist/{array/flatten.js → flatten.js} +0 -2
- 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.d.cts → formatDate.d.cts} +1 -2
- package/dist/{date/formatDate.d.ts → formatDate.d.ts} +1 -2
- package/dist/{date/formatDate.js → formatDate.js} +0 -2
- 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.d.cts → formatThousands.d.cts} +1 -2
- package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +1 -2
- package/dist/{number/formatThousands.js → formatThousands.js} +0 -2
- 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.d.cts → getRelativeTime.d.cts} +1 -2
- package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +1 -2
- package/dist/{date/getRelativeTime.js → getRelativeTime.js} +0 -2
- 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/{array/groupBy.d.cts → groupBy.d.cts} +1 -2
- package/dist/{array/groupBy.d.ts → groupBy.d.ts} +1 -2
- package/dist/{array/groupBy.js → groupBy.js} +0 -2
- 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 -54
- package/dist/index.d.cts +91 -28
- package/dist/index.d.ts +91 -28
- package/dist/index.iife.js +1 -1
- package/dist/index.js +91 -28
- 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.d.cts → isArray.d.cts} +1 -2
- package/dist/{base/isArray.d.ts → isArray.d.ts} +1 -2
- package/dist/{base/isArray.js → isArray.js} +0 -2
- 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/{base/isEmpty.cjs → isEmpty.cjs} +2 -2
- package/dist/{base/isEmpty.d.cts → isEmpty.d.cts} +1 -2
- package/dist/{base/isEmpty.d.ts → isEmpty.d.ts} +1 -2
- package/dist/{base/isEmpty.js → isEmpty.js} +0 -2
- 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.d.cts → isObject.d.cts} +1 -2
- package/dist/{base/isObject.d.ts → isObject.d.ts} +1 -2
- package/dist/{base/isObject.js → isObject.js} +0 -2
- 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.d.cts → isString.d.cts} +1 -2
- package/dist/{base/isString.d.ts → isString.d.ts} +1 -2
- package/dist/{base/isString.js → isString.js} +0 -2
- 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/{object/omit.d.cts → omit.d.cts} +1 -2
- package/dist/{object/omit.d.ts → omit.d.ts} +1 -2
- package/dist/{object/omit.js → omit.js} +0 -2
- 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/{url/parseQueryString.d.cts → parseQueryString.d.cts} +1 -2
- package/dist/{url/parseQueryString.d.ts → parseQueryString.d.ts} +1 -2
- package/dist/{url/parseQueryString.js → parseQueryString.js} +0 -2
- 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/{object/pick.d.cts → pick.d.cts} +1 -2
- package/dist/{object/pick.d.ts → pick.d.ts} +1 -2
- package/dist/{object/pick.js → pick.js} +0 -2
- package/dist/{number/randomInt.d.cts → randomInt.d.cts} +1 -2
- package/dist/{number/randomInt.d.ts → randomInt.d.ts} +1 -2
- package/dist/{number/randomInt.js → randomInt.js} +0 -2
- package/dist/{array/range.d.cts → range.d.cts} +1 -2
- package/dist/{array/range.d.ts → range.d.ts} +1 -2
- package/dist/{array/range.js → range.js} +0 -2
- 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.d.cts → shuffle.d.cts} +1 -2
- package/dist/{array/shuffle.d.ts → shuffle.d.ts} +1 -2
- package/dist/{array/shuffle.js → shuffle.js} +0 -2
- 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/{url/stringifyQueryString.d.cts → stringifyQueryString.d.cts} +1 -2
- package/dist/{url/stringifyQueryString.d.ts → stringifyQueryString.d.ts} +1 -2
- package/dist/{url/stringifyQueryString.js → stringifyQueryString.js} +0 -2
- package/dist/{function/throttle.d.cts → throttle.d.cts} +1 -2
- package/dist/{function/throttle.d.ts → throttle.d.ts} +1 -2
- package/dist/{function/throttle.js → throttle.js} +0 -2
- 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.d.cts → unique.d.cts} +1 -2
- package/dist/{array/unique.d.ts → unique.d.ts} +1 -2
- package/dist/{array/unique.js → unique.js} +0 -2
- package/dist/{string/uuid.d.cts → uuid.d.cts} +1 -2
- package/dist/{string/uuid.d.ts → uuid.d.ts} +1 -2
- package/dist/{string/uuid.js → uuid.js} +0 -2
- 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 +340 -83
- 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/groupBy.d.cts.map +0 -1
- package/dist/array/groupBy.d.ts.map +0 -1
- package/dist/array/groupBy.js.map +0 -1
- package/dist/array/range.d.cts.map +0 -1
- package/dist/array/range.d.ts.map +0 -1
- package/dist/array/range.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/isEmpty.d.cts.map +0 -1
- package/dist/base/isEmpty.d.ts.map +0 -1
- package/dist/base/isEmpty.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/delay.d.cts.map +0 -1
- package/dist/function/delay.d.ts.map +0 -1
- package/dist/function/delay.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/object/omit.d.cts.map +0 -1
- package/dist/object/omit.d.ts.map +0 -1
- package/dist/object/omit.js.map +0 -1
- package/dist/object/pick.d.cts.map +0 -1
- package/dist/object/pick.d.ts.map +0 -1
- package/dist/object/pick.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/uuid.d.cts.map +0 -1
- package/dist/string/uuid.d.ts.map +0 -1
- package/dist/string/uuid.js.map +0 -1
- package/dist/url/parseQueryString.d.cts.map +0 -1
- package/dist/url/parseQueryString.d.ts.map +0 -1
- package/dist/url/parseQueryString.js.map +0 -1
- package/dist/url/stringifyQueryString.d.cts.map +0 -1
- package/dist/url/stringifyQueryString.d.ts.map +0 -1
- package/dist/url/stringifyQueryString.js.map +0 -1
- /package/dist/{string/camelCase.cjs → camelCase.cjs} +0 -0
- /package/dist/{string/capitalize.cjs → capitalize.cjs} +0 -0
- /package/dist/{array/chunk.cjs → chunk.cjs} +0 -0
- /package/dist/{number/clamp.cjs → clamp.cjs} +0 -0
- /package/dist/{function/debounce.cjs → debounce.cjs} +0 -0
- /package/dist/{function/delay.cjs → delay.cjs} +0 -0
- /package/dist/{array/flatten.cjs → flatten.cjs} +0 -0
- /package/dist/{date/formatDate.cjs → formatDate.cjs} +0 -0
- /package/dist/{number/formatThousands.cjs → formatThousands.cjs} +0 -0
- /package/dist/{date/getRelativeTime.cjs → getRelativeTime.cjs} +0 -0
- /package/dist/{array/groupBy.cjs → groupBy.cjs} +0 -0
- /package/dist/{base/isArray.cjs → isArray.cjs} +0 -0
- /package/dist/{base/isObject.cjs → isObject.cjs} +0 -0
- /package/dist/{base/isString.cjs → isString.cjs} +0 -0
- /package/dist/{string/kebabCase.cjs → kebabCase.cjs} +0 -0
- /package/dist/{object/omit.cjs → omit.cjs} +0 -0
- /package/dist/{url/parseQueryString.cjs → parseQueryString.cjs} +0 -0
- /package/dist/{object/pick.cjs → pick.cjs} +0 -0
- /package/dist/{number/randomInt.cjs → randomInt.cjs} +0 -0
- /package/dist/{array/range.cjs → range.cjs} +0 -0
- /package/dist/{array/shuffle.cjs → shuffle.cjs} +0 -0
- /package/dist/{url/stringifyQueryString.cjs → stringifyQueryString.cjs} +0 -0
- /package/dist/{function/throttle.cjs → throttle.cjs} +0 -0
- /package/dist/{array/unique.cjs → unique.cjs} +0 -0
- /package/dist/{string/uuid.cjs → uuid.cjs} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/dom/scrollToElement/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 平滑滚动到指定元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 目标 DOM 元素
|
|
6
|
+
* @param options - ScrollIntoView 选项,默认 `{ behavior: 'smooth', block: 'start' }`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import scrollToElement from '@tanwan/utils/scrollToElement'
|
|
11
|
+
* scrollToElement(document.getElementById('section2'))
|
|
12
|
+
* scrollToElement(el, { behavior: 'instant', block: 'center' })
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function scrollToElement(el, options) {
|
|
16
|
+
el.scrollIntoView({
|
|
17
|
+
behavior: "smooth",
|
|
18
|
+
block: "start",
|
|
19
|
+
...options
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
module.exports = scrollToElement;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/dom/scrollToElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 平滑滚动到指定元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 目标 DOM 元素
|
|
6
|
+
* @param options - ScrollIntoView 选项,默认 `{ behavior: 'smooth', block: 'start' }`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import scrollToElement from '@tanwan/utils/scrollToElement'
|
|
11
|
+
* scrollToElement(document.getElementById('section2'))
|
|
12
|
+
* scrollToElement(el, { behavior: 'instant', block: 'center' })
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function scrollToElement(el: Element, options?: ScrollIntoViewOptions): void;
|
|
16
|
+
export = scrollToElement;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/dom/scrollToElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 平滑滚动到指定元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 目标 DOM 元素
|
|
6
|
+
* @param options - ScrollIntoView 选项,默认 `{ behavior: 'smooth', block: 'start' }`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import scrollToElement from '@tanwan/utils/scrollToElement'
|
|
11
|
+
* scrollToElement(document.getElementById('section2'))
|
|
12
|
+
* scrollToElement(el, { behavior: 'instant', block: 'center' })
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function scrollToElement(el: Element, options?: ScrollIntoViewOptions): void;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { scrollToElement as default };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/dom/scrollToElement/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 平滑滚动到指定元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 目标 DOM 元素
|
|
6
|
+
* @param options - ScrollIntoView 选项,默认 `{ behavior: 'smooth', block: 'start' }`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import scrollToElement from '@tanwan/utils/scrollToElement'
|
|
11
|
+
* scrollToElement(document.getElementById('section2'))
|
|
12
|
+
* scrollToElement(el, { behavior: 'instant', block: 'center' })
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function scrollToElement(el, options) {
|
|
16
|
+
el.scrollIntoView({
|
|
17
|
+
behavior: "smooth",
|
|
18
|
+
block: "start",
|
|
19
|
+
...options
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { scrollToElement as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/setCssVar/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 设置 CSS 自定义属性(CSS 变量)
|
|
4
|
+
*
|
|
5
|
+
* @param name - CSS 变量名(可带 `--` 前缀或省略)
|
|
6
|
+
* @param value - CSS 变量值
|
|
7
|
+
* @param el - 指定元素,不传则设置到 `document.documentElement`(`:root`)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setCssVar from '@tanwan/utils/setCssVar'
|
|
12
|
+
* setCssVar('--color-primary', '#ff0000')
|
|
13
|
+
* setCssVar('color-primary', '#ff0000') // 自动补 -- 前缀
|
|
14
|
+
* setCssVar('--bg', 'dark', el)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function setCssVar(name, value, el = document.documentElement) {
|
|
18
|
+
const varName = name.startsWith("--") ? name : `--${name}`;
|
|
19
|
+
el.style.setProperty(varName, value);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
module.exports = setCssVar;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/dom/setCssVar/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 设置 CSS 自定义属性(CSS 变量)
|
|
4
|
+
*
|
|
5
|
+
* @param name - CSS 变量名(可带 `--` 前缀或省略)
|
|
6
|
+
* @param value - CSS 变量值
|
|
7
|
+
* @param el - 指定元素,不传则设置到 `document.documentElement`(`:root`)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setCssVar from '@tanwan/utils/setCssVar'
|
|
12
|
+
* setCssVar('--color-primary', '#ff0000')
|
|
13
|
+
* setCssVar('color-primary', '#ff0000') // 自动补 -- 前缀
|
|
14
|
+
* setCssVar('--bg', 'dark', el)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function setCssVar(name: string, value: string, el?: HTMLElement): void;
|
|
18
|
+
export = setCssVar;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/setCssVar/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 设置 CSS 自定义属性(CSS 变量)
|
|
4
|
+
*
|
|
5
|
+
* @param name - CSS 变量名(可带 `--` 前缀或省略)
|
|
6
|
+
* @param value - CSS 变量值
|
|
7
|
+
* @param el - 指定元素,不传则设置到 `document.documentElement`(`:root`)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setCssVar from '@tanwan/utils/setCssVar'
|
|
12
|
+
* setCssVar('--color-primary', '#ff0000')
|
|
13
|
+
* setCssVar('color-primary', '#ff0000') // 自动补 -- 前缀
|
|
14
|
+
* setCssVar('--bg', 'dark', el)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function setCssVar(name: string, value: string, el?: HTMLElement): void;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { setCssVar as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/setCssVar/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 设置 CSS 自定义属性(CSS 变量)
|
|
4
|
+
*
|
|
5
|
+
* @param name - CSS 变量名(可带 `--` 前缀或省略)
|
|
6
|
+
* @param value - CSS 变量值
|
|
7
|
+
* @param el - 指定元素,不传则设置到 `document.documentElement`(`:root`)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setCssVar from '@tanwan/utils/setCssVar'
|
|
12
|
+
* setCssVar('--color-primary', '#ff0000')
|
|
13
|
+
* setCssVar('color-primary', '#ff0000') // 自动补 -- 前缀
|
|
14
|
+
* setCssVar('--bg', 'dark', el)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function setCssVar(name, value, el = document.documentElement) {
|
|
18
|
+
const varName = name.startsWith("--") ? name : `--${name}`;
|
|
19
|
+
el.style.setProperty(varName, value);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { setCssVar as default };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/storage/setStorage/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地将值序列化为 JSON 并写入 localStorage
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
* @param value - 要存储的值
|
|
7
|
+
* @returns 是否写入成功
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setStorage from '@tanwan/utils/setStorage'
|
|
12
|
+
* setStorage('user', { name: 'Alice' })
|
|
13
|
+
* // localStorage.getItem('user') → '{"name":"Alice"}'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function setStorage(key, value) {
|
|
17
|
+
try {
|
|
18
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
module.exports = setStorage;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/storage/setStorage/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地将值序列化为 JSON 并写入 localStorage
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
* @param value - 要存储的值
|
|
7
|
+
* @returns 是否写入成功
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setStorage from '@tanwan/utils/setStorage'
|
|
12
|
+
* setStorage('user', { name: 'Alice' })
|
|
13
|
+
* // localStorage.getItem('user') → '{"name":"Alice"}'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function setStorage(key: string, value: unknown): boolean;
|
|
17
|
+
export = setStorage;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/storage/setStorage/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地将值序列化为 JSON 并写入 localStorage
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
* @param value - 要存储的值
|
|
7
|
+
* @returns 是否写入成功
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setStorage from '@tanwan/utils/setStorage'
|
|
12
|
+
* setStorage('user', { name: 'Alice' })
|
|
13
|
+
* // localStorage.getItem('user') → '{"name":"Alice"}'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function setStorage(key: string, value: unknown): boolean;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { setStorage as default };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/storage/setStorage/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地将值序列化为 JSON 并写入 localStorage
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
* @param value - 要存储的值
|
|
7
|
+
* @returns 是否写入成功
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import setStorage from '@tanwan/utils/setStorage'
|
|
12
|
+
* setStorage('user', { name: 'Alice' })
|
|
13
|
+
* // localStorage.getItem('user') → '{"name":"Alice"}'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function setStorage(key, value) {
|
|
17
|
+
try {
|
|
18
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { setStorage as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/setStyle/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 批量设置元素行内样式
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param styles - 样式对象,属性名为 camelCase
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import setStyle from '@tanwan/utils/setStyle'
|
|
11
|
+
* setStyle(el, {
|
|
12
|
+
* width: '100px',
|
|
13
|
+
* height: '200px',
|
|
14
|
+
* backgroundColor: 'red',
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function setStyle(el, styles) {
|
|
19
|
+
for (const key of Object.keys(styles)) el.style[key] = String(styles[key]);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
module.exports = setStyle;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/setStyle/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 批量设置元素行内样式
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param styles - 样式对象,属性名为 camelCase
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import setStyle from '@tanwan/utils/setStyle'
|
|
11
|
+
* setStyle(el, {
|
|
12
|
+
* width: '100px',
|
|
13
|
+
* height: '200px',
|
|
14
|
+
* backgroundColor: 'red',
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function setStyle(el: HTMLElement, styles: Record<string, string | number>): void;
|
|
19
|
+
export = setStyle;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/dom/setStyle/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 批量设置元素行内样式
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param styles - 样式对象,属性名为 camelCase
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import setStyle from '@tanwan/utils/setStyle'
|
|
11
|
+
* setStyle(el, {
|
|
12
|
+
* width: '100px',
|
|
13
|
+
* height: '200px',
|
|
14
|
+
* backgroundColor: 'red',
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function setStyle(el: HTMLElement, styles: Record<string, string | number>): void;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { setStyle as default };
|
package/dist/setStyle.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/setStyle/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 批量设置元素行内样式
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param styles - 样式对象,属性名为 camelCase
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import setStyle from '@tanwan/utils/setStyle'
|
|
11
|
+
* setStyle(el, {
|
|
12
|
+
* width: '100px',
|
|
13
|
+
* height: '200px',
|
|
14
|
+
* backgroundColor: 'red',
|
|
15
|
+
* })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function setStyle(el, styles) {
|
|
19
|
+
for (const key of Object.keys(styles)) el.style[key] = String(styles[key]);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { setStyle as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/string/snakeCase/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为蛇形命名(snake_case)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import snakeCase from '@tanwan/utils/snakeCase'
|
|
8
|
+
* snakeCase('fooBar') // 'foo_bar'
|
|
9
|
+
* snakeCase('FooBarBaz') // 'foo_bar_baz'
|
|
10
|
+
* snakeCase('foo-bar') // 'foo_bar'
|
|
11
|
+
* snakeCase('foo bar') // 'foo_bar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function snakeCase(str) {
|
|
15
|
+
return str.replace(/[A-Z]/g, (letter, index) => index === 0 ? letter : "_" + letter).replace(/[-_\s]+/g, "_").toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
module.exports = snakeCase;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/string/snakeCase/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为蛇形命名(snake_case)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import snakeCase from '@tanwan/utils/snakeCase'
|
|
8
|
+
* snakeCase('fooBar') // 'foo_bar'
|
|
9
|
+
* snakeCase('FooBarBaz') // 'foo_bar_baz'
|
|
10
|
+
* snakeCase('foo-bar') // 'foo_bar'
|
|
11
|
+
* snakeCase('foo bar') // 'foo_bar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function snakeCase(str: string): string;
|
|
15
|
+
export = snakeCase;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/string/snakeCase/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为蛇形命名(snake_case)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import snakeCase from '@tanwan/utils/snakeCase'
|
|
8
|
+
* snakeCase('fooBar') // 'foo_bar'
|
|
9
|
+
* snakeCase('FooBarBaz') // 'foo_bar_baz'
|
|
10
|
+
* snakeCase('foo-bar') // 'foo_bar'
|
|
11
|
+
* snakeCase('foo bar') // 'foo_bar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function snakeCase(str: string): string;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { snakeCase as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/string/snakeCase/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将字符串转换为蛇形命名(snake_case)
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import snakeCase from '@tanwan/utils/snakeCase'
|
|
8
|
+
* snakeCase('fooBar') // 'foo_bar'
|
|
9
|
+
* snakeCase('FooBarBaz') // 'foo_bar_baz'
|
|
10
|
+
* snakeCase('foo-bar') // 'foo_bar'
|
|
11
|
+
* snakeCase('foo bar') // 'foo_bar'
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function snakeCase(str) {
|
|
15
|
+
return str.replace(/[A-Z]/g, (letter, index) => index === 0 ? letter : "_" + letter).replace(/[-_\s]+/g, "_").toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { snakeCase as default };
|
package/dist/sortBy.cjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/array/sortBy/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 按指定属性或迭代函数对数组排序(升序)
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 待排序数组
|
|
6
|
+
* @param iteratee - 排序依据:属性名或返回排序值的函数
|
|
7
|
+
* @returns 排序后的新数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import sortBy from '@tanwan/utils/sortBy'
|
|
12
|
+
* sortBy([{ age: 30 }, { age: 20 }], 'age')
|
|
13
|
+
* // [{ age: 20 }, { age: 30 }]
|
|
14
|
+
*
|
|
15
|
+
* sortBy(['apple', 'banana', 'cherry'], (s) => s.length)
|
|
16
|
+
* // ['apple', 'cherry', 'banana']
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function sortBy(arr, iteratee) {
|
|
20
|
+
const getValue = typeof iteratee === "function" ? iteratee : (item) => item[iteratee];
|
|
21
|
+
return [...arr].sort((a, b) => {
|
|
22
|
+
const va = getValue(a);
|
|
23
|
+
const vb = getValue(b);
|
|
24
|
+
if (va < vb) return -1;
|
|
25
|
+
if (va > vb) return 1;
|
|
26
|
+
return 0;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
module.exports = sortBy;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/array/sortBy/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 按指定属性或迭代函数对数组排序(升序)
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 待排序数组
|
|
6
|
+
* @param iteratee - 排序依据:属性名或返回排序值的函数
|
|
7
|
+
* @returns 排序后的新数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import sortBy from '@tanwan/utils/sortBy'
|
|
12
|
+
* sortBy([{ age: 30 }, { age: 20 }], 'age')
|
|
13
|
+
* // [{ age: 20 }, { age: 30 }]
|
|
14
|
+
*
|
|
15
|
+
* sortBy(['apple', 'banana', 'cherry'], (s) => s.length)
|
|
16
|
+
* // ['apple', 'cherry', 'banana']
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function sortBy<T>(arr: T[], iteratee: keyof T | ((item: T) => number | string)): T[];
|
|
20
|
+
export = sortBy;
|
package/dist/sortBy.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/array/sortBy/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 按指定属性或迭代函数对数组排序(升序)
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 待排序数组
|
|
6
|
+
* @param iteratee - 排序依据:属性名或返回排序值的函数
|
|
7
|
+
* @returns 排序后的新数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import sortBy from '@tanwan/utils/sortBy'
|
|
12
|
+
* sortBy([{ age: 30 }, { age: 20 }], 'age')
|
|
13
|
+
* // [{ age: 20 }, { age: 30 }]
|
|
14
|
+
*
|
|
15
|
+
* sortBy(['apple', 'banana', 'cherry'], (s) => s.length)
|
|
16
|
+
* // ['apple', 'cherry', 'banana']
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function sortBy<T>(arr: T[], iteratee: keyof T | ((item: T) => number | string)): T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { sortBy as default };
|
package/dist/sortBy.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/array/sortBy/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 按指定属性或迭代函数对数组排序(升序)
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 待排序数组
|
|
6
|
+
* @param iteratee - 排序依据:属性名或返回排序值的函数
|
|
7
|
+
* @returns 排序后的新数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import sortBy from '@tanwan/utils/sortBy'
|
|
12
|
+
* sortBy([{ age: 30 }, { age: 20 }], 'age')
|
|
13
|
+
* // [{ age: 20 }, { age: 30 }]
|
|
14
|
+
*
|
|
15
|
+
* sortBy(['apple', 'banana', 'cherry'], (s) => s.length)
|
|
16
|
+
* // ['apple', 'cherry', 'banana']
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function sortBy(arr, iteratee) {
|
|
20
|
+
const getValue = typeof iteratee === "function" ? iteratee : (item) => item[iteratee];
|
|
21
|
+
return [...arr].sort((a, b) => {
|
|
22
|
+
const va = getValue(a);
|
|
23
|
+
const vb = getValue(b);
|
|
24
|
+
if (va < vb) return -1;
|
|
25
|
+
if (va > vb) return 1;
|
|
26
|
+
return 0;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { sortBy as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/dom/toggleClass/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 切换元素的 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要切换的 class
|
|
7
|
+
* @param force - 可选,强制添加(true)或移除(false)
|
|
8
|
+
* @returns 切换后 class 是否存在
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import toggleClass from '@tanwan/utils/toggleClass'
|
|
13
|
+
* toggleClass(el, 'active')
|
|
14
|
+
* toggleClass(el, 'active', true) // 强制添加
|
|
15
|
+
* toggleClass(el, 'active', false) // 强制移除
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function toggleClass(el, className, force) {
|
|
19
|
+
return el.classList.toggle(className, force);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
module.exports = toggleClass;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/dom/toggleClass/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 切换元素的 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要切换的 class
|
|
7
|
+
* @param force - 可选,强制添加(true)或移除(false)
|
|
8
|
+
* @returns 切换后 class 是否存在
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import toggleClass from '@tanwan/utils/toggleClass'
|
|
13
|
+
* toggleClass(el, 'active')
|
|
14
|
+
* toggleClass(el, 'active', true) // 强制添加
|
|
15
|
+
* toggleClass(el, 'active', false) // 强制移除
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function toggleClass(el: Element, className: string, force?: boolean): boolean;
|
|
19
|
+
export = toggleClass;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/dom/toggleClass/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 切换元素的 CSS class
|
|
4
|
+
*
|
|
5
|
+
* @param el - DOM 元素
|
|
6
|
+
* @param className - 要切换的 class
|
|
7
|
+
* @param force - 可选,强制添加(true)或移除(false)
|
|
8
|
+
* @returns 切换后 class 是否存在
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import toggleClass from '@tanwan/utils/toggleClass'
|
|
13
|
+
* toggleClass(el, 'active')
|
|
14
|
+
* toggleClass(el, 'active', true) // 强制添加
|
|
15
|
+
* toggleClass(el, 'active', false) // 强制移除
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function toggleClass(el: Element, className: string, force?: boolean): boolean;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { toggleClass as default };
|