@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
|
@@ -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 };
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* 数组洗牌(Fisher-Yates 算法)
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import shuffle from '@
|
|
6
|
+
* import shuffle from '@tanwan/utils/shuffle'
|
|
7
7
|
* shuffle([1, 2, 3, 4, 5]) // [3, 1, 5, 2, 4](随机)
|
|
8
8
|
* ```
|
|
9
9
|
*/
|
|
10
10
|
declare function shuffle<T>(arr: T[]): T[];
|
|
11
|
-
export = shuffle;
|
|
12
|
-
//# sourceMappingURL=shuffle.d.cts.map
|
|
11
|
+
export = shuffle;
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 数组洗牌(Fisher-Yates 算法)
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import shuffle from '@
|
|
6
|
+
* import shuffle from '@tanwan/utils/shuffle'
|
|
7
7
|
* shuffle([1, 2, 3, 4, 5]) // [3, 1, 5, 2, 4](随机)
|
|
8
8
|
* ```
|
|
9
9
|
*/
|
|
10
10
|
declare function shuffle<T>(arr: T[]): T[];
|
|
11
11
|
//#endregion
|
|
12
|
-
export { shuffle as default };
|
|
13
|
-
//# sourceMappingURL=shuffle.d.ts.map
|
|
12
|
+
export { shuffle as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 数组洗牌(Fisher-Yates 算法)
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import shuffle from '@
|
|
6
|
+
* import shuffle from '@tanwan/utils/shuffle'
|
|
7
7
|
* shuffle([1, 2, 3, 4, 5]) // [3, 1, 5, 2, 4](随机)
|
|
8
8
|
* ```
|
|
9
9
|
*/
|
|
@@ -17,5 +17,3 @@ function shuffle(arr) {
|
|
|
17
17
|
}
|
|
18
18
|
//#endregion
|
|
19
19
|
export { shuffle as default };
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=shuffle.js.map
|
|
@@ -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,38 @@
|
|
|
1
|
+
//#region src/url/stringifyQueryString/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将对象序列化为 URL 查询字符串
|
|
4
|
+
*
|
|
5
|
+
* 支持嵌套对象用 `encodeURIComponent` 编码,数组值生成重复 key
|
|
6
|
+
*
|
|
7
|
+
* @param params - 要序列化的键值对对象
|
|
8
|
+
* @returns 查询字符串(不含前导 `?`),无参数时返回空字符串
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import stringifyQueryString from '@tanwan/utils/stringifyQueryString'
|
|
13
|
+
* stringifyQueryString({ name: 'John', age: 25 }) // 'name=John&age=25'
|
|
14
|
+
* stringifyQueryString({ ids: [1, 2, 3] }) // 'ids=1&ids=2&ids=3'
|
|
15
|
+
* stringifyQueryString({ q: 'hello world' }) // 'q=hello%20world'
|
|
16
|
+
* stringifyQueryString({ a: null, b: undefined }) // 'a='
|
|
17
|
+
* stringifyQueryString({}) // ''
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function stringifyQueryString(params) {
|
|
21
|
+
const parts = [];
|
|
22
|
+
for (const key of Object.keys(params)) {
|
|
23
|
+
const value = params[key];
|
|
24
|
+
if (value === void 0) continue;
|
|
25
|
+
if (value === null) {
|
|
26
|
+
parts.push(`${encodeURIComponent(key)}=`);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
for (const item of value) parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(item))}`);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
34
|
+
}
|
|
35
|
+
return parts.join("&");
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
module.exports = stringifyQueryString;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/url/stringifyQueryString/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将对象序列化为 URL 查询字符串
|
|
4
|
+
*
|
|
5
|
+
* 支持嵌套对象用 `encodeURIComponent` 编码,数组值生成重复 key
|
|
6
|
+
*
|
|
7
|
+
* @param params - 要序列化的键值对对象
|
|
8
|
+
* @returns 查询字符串(不含前导 `?`),无参数时返回空字符串
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import stringifyQueryString from '@tanwan/utils/stringifyQueryString'
|
|
13
|
+
* stringifyQueryString({ name: 'John', age: 25 }) // 'name=John&age=25'
|
|
14
|
+
* stringifyQueryString({ ids: [1, 2, 3] }) // 'ids=1&ids=2&ids=3'
|
|
15
|
+
* stringifyQueryString({ q: 'hello world' }) // 'q=hello%20world'
|
|
16
|
+
* stringifyQueryString({ a: null, b: undefined }) // 'a='
|
|
17
|
+
* stringifyQueryString({}) // ''
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function stringifyQueryString(params: Record<string, unknown>): string;
|
|
21
|
+
export = stringifyQueryString;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/url/stringifyQueryString/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将对象序列化为 URL 查询字符串
|
|
4
|
+
*
|
|
5
|
+
* 支持嵌套对象用 `encodeURIComponent` 编码,数组值生成重复 key
|
|
6
|
+
*
|
|
7
|
+
* @param params - 要序列化的键值对对象
|
|
8
|
+
* @returns 查询字符串(不含前导 `?`),无参数时返回空字符串
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import stringifyQueryString from '@tanwan/utils/stringifyQueryString'
|
|
13
|
+
* stringifyQueryString({ name: 'John', age: 25 }) // 'name=John&age=25'
|
|
14
|
+
* stringifyQueryString({ ids: [1, 2, 3] }) // 'ids=1&ids=2&ids=3'
|
|
15
|
+
* stringifyQueryString({ q: 'hello world' }) // 'q=hello%20world'
|
|
16
|
+
* stringifyQueryString({ a: null, b: undefined }) // 'a='
|
|
17
|
+
* stringifyQueryString({}) // ''
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare function stringifyQueryString(params: Record<string, unknown>): string;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { stringifyQueryString as default };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/url/stringifyQueryString/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 将对象序列化为 URL 查询字符串
|
|
4
|
+
*
|
|
5
|
+
* 支持嵌套对象用 `encodeURIComponent` 编码,数组值生成重复 key
|
|
6
|
+
*
|
|
7
|
+
* @param params - 要序列化的键值对对象
|
|
8
|
+
* @returns 查询字符串(不含前导 `?`),无参数时返回空字符串
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import stringifyQueryString from '@tanwan/utils/stringifyQueryString'
|
|
13
|
+
* stringifyQueryString({ name: 'John', age: 25 }) // 'name=John&age=25'
|
|
14
|
+
* stringifyQueryString({ ids: [1, 2, 3] }) // 'ids=1&ids=2&ids=3'
|
|
15
|
+
* stringifyQueryString({ q: 'hello world' }) // 'q=hello%20world'
|
|
16
|
+
* stringifyQueryString({ a: null, b: undefined }) // 'a='
|
|
17
|
+
* stringifyQueryString({}) // ''
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function stringifyQueryString(params) {
|
|
21
|
+
const parts = [];
|
|
22
|
+
for (const key of Object.keys(params)) {
|
|
23
|
+
const value = params[key];
|
|
24
|
+
if (value === void 0) continue;
|
|
25
|
+
if (value === null) {
|
|
26
|
+
parts.push(`${encodeURIComponent(key)}=`);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
for (const item of value) parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(item))}`);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
34
|
+
}
|
|
35
|
+
return parts.join("&");
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { stringifyQueryString as default };
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 节流函数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import throttle from '@
|
|
6
|
+
* import throttle from '@tanwan/utils/throttle'
|
|
7
7
|
* const onScroll = throttle(() => {
|
|
8
8
|
* console.log('滚动事件触发')
|
|
9
9
|
* }, 200)
|
|
10
10
|
* ```
|
|
11
11
|
*/
|
|
12
12
|
declare function throttle<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
|
|
13
|
-
export = throttle;
|
|
14
|
-
//# sourceMappingURL=throttle.d.cts.map
|
|
13
|
+
export = throttle;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 节流函数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import throttle from '@
|
|
6
|
+
* import throttle from '@tanwan/utils/throttle'
|
|
7
7
|
* const onScroll = throttle(() => {
|
|
8
8
|
* console.log('滚动事件触发')
|
|
9
9
|
* }, 200)
|
|
@@ -11,5 +11,4 @@
|
|
|
11
11
|
*/
|
|
12
12
|
declare function throttle<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
|
|
13
13
|
//#endregion
|
|
14
|
-
export { throttle as default };
|
|
15
|
-
//# sourceMappingURL=throttle.d.ts.map
|
|
14
|
+
export { throttle as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 节流函数
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import throttle from '@
|
|
6
|
+
* import throttle from '@tanwan/utils/throttle'
|
|
7
7
|
* const onScroll = throttle(() => {
|
|
8
8
|
* console.log('滚动事件触发')
|
|
9
9
|
* }, 200)
|
|
@@ -26,5 +26,3 @@ function throttle(func, wait) {
|
|
|
26
26
|
}
|
|
27
27
|
//#endregion
|
|
28
28
|
export { throttle as default };
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=throttle.js.map
|
|
@@ -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 };
|
|
@@ -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
|
+
export { toggleClass as default };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/tree/treeFind/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 在树结构中查找节点(深度优先)
|
|
4
|
+
*
|
|
5
|
+
* @param tree - 树结构数组
|
|
6
|
+
* @param predicate - 匹配函数
|
|
7
|
+
* @param options - 配置项
|
|
8
|
+
* @param options.children - 子节点属性名,默认 `'children'`
|
|
9
|
+
* @returns 第一个匹配的节点,未找到返回 `undefined`
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import treeFind from '@tanwan/utils/treeFind'
|
|
14
|
+
* const tree = [
|
|
15
|
+
* { id: 1, children: [{ id: 2 }] },
|
|
16
|
+
* { id: 3, children: [] },
|
|
17
|
+
* ]
|
|
18
|
+
* treeFind(tree, (node) => node.id === 2)
|
|
19
|
+
* // { id: 2 }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
function treeFind(tree, predicate, options = {}) {
|
|
23
|
+
const { children = "children" } = options;
|
|
24
|
+
for (const node of tree) {
|
|
25
|
+
if (predicate(node)) return node;
|
|
26
|
+
const childNodes = node[children];
|
|
27
|
+
if (Array.isArray(childNodes)) {
|
|
28
|
+
const found = treeFind(childNodes, predicate, options);
|
|
29
|
+
if (found) return found;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
module.exports = treeFind;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/tree/treeFind/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 在树结构中查找节点(深度优先)
|
|
4
|
+
*
|
|
5
|
+
* @param tree - 树结构数组
|
|
6
|
+
* @param predicate - 匹配函数
|
|
7
|
+
* @param options - 配置项
|
|
8
|
+
* @param options.children - 子节点属性名,默认 `'children'`
|
|
9
|
+
* @returns 第一个匹配的节点,未找到返回 `undefined`
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import treeFind from '@tanwan/utils/treeFind'
|
|
14
|
+
* const tree = [
|
|
15
|
+
* { id: 1, children: [{ id: 2 }] },
|
|
16
|
+
* { id: 3, children: [] },
|
|
17
|
+
* ]
|
|
18
|
+
* treeFind(tree, (node) => node.id === 2)
|
|
19
|
+
* // { id: 2 }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function treeFind<T extends Record<string, unknown>>(tree: T[], predicate: (node: T) => boolean, options?: {
|
|
23
|
+
children?: string;
|
|
24
|
+
}): T | undefined;
|
|
25
|
+
export = treeFind;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/tree/treeFind/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 在树结构中查找节点(深度优先)
|
|
4
|
+
*
|
|
5
|
+
* @param tree - 树结构数组
|
|
6
|
+
* @param predicate - 匹配函数
|
|
7
|
+
* @param options - 配置项
|
|
8
|
+
* @param options.children - 子节点属性名,默认 `'children'`
|
|
9
|
+
* @returns 第一个匹配的节点,未找到返回 `undefined`
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import treeFind from '@tanwan/utils/treeFind'
|
|
14
|
+
* const tree = [
|
|
15
|
+
* { id: 1, children: [{ id: 2 }] },
|
|
16
|
+
* { id: 3, children: [] },
|
|
17
|
+
* ]
|
|
18
|
+
* treeFind(tree, (node) => node.id === 2)
|
|
19
|
+
* // { id: 2 }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function treeFind<T extends Record<string, unknown>>(tree: T[], predicate: (node: T) => boolean, options?: {
|
|
23
|
+
children?: string;
|
|
24
|
+
}): T | undefined;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { treeFind as default };
|