@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,16 @@
|
|
|
1
|
+
//#region src/dom/removeClass/index.d.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
|
+
declare function removeClass(el: Element, className: string): void;
|
|
16
|
+
export = removeClass;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/dom/removeClass/index.d.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
|
+
declare function removeClass(el: Element, className: string): void;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { removeClass 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
|
+
export { removeClass as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/dom/removeElement/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地移除元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 要移除的 DOM 元素
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeElement from '@tanwan/utils/removeElement'
|
|
10
|
+
* removeElement(document.getElementById('banner'))
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function removeElement(el) {
|
|
14
|
+
el.remove();
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
module.exports = removeElement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/dom/removeElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地移除元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 要移除的 DOM 元素
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeElement from '@tanwan/utils/removeElement'
|
|
10
|
+
* removeElement(document.getElementById('banner'))
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function removeElement(el: Element): void;
|
|
14
|
+
export = removeElement;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/dom/removeElement/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地移除元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 要移除的 DOM 元素
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeElement from '@tanwan/utils/removeElement'
|
|
10
|
+
* removeElement(document.getElementById('banner'))
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function removeElement(el: Element): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { removeElement as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/dom/removeElement/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地移除元素
|
|
4
|
+
*
|
|
5
|
+
* @param el - 要移除的 DOM 元素
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeElement from '@tanwan/utils/removeElement'
|
|
10
|
+
* removeElement(document.getElementById('banner'))
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function removeElement(el) {
|
|
14
|
+
el.remove();
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { removeElement as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/storage/removeStorage/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地从 localStorage 删除指定键
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeStorage from '@tanwan/utils/removeStorage'
|
|
10
|
+
* removeStorage('user')
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function removeStorage(key) {
|
|
14
|
+
try {
|
|
15
|
+
localStorage.removeItem(key);
|
|
16
|
+
} catch {}
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
module.exports = removeStorage;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/storage/removeStorage/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地从 localStorage 删除指定键
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeStorage from '@tanwan/utils/removeStorage'
|
|
10
|
+
* removeStorage('user')
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function removeStorage(key: string): void;
|
|
14
|
+
export = removeStorage;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/storage/removeStorage/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地从 localStorage 删除指定键
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeStorage from '@tanwan/utils/removeStorage'
|
|
10
|
+
* removeStorage('user')
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function removeStorage(key: string): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { removeStorage as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/storage/removeStorage/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 安全地从 localStorage 删除指定键
|
|
4
|
+
*
|
|
5
|
+
* @param key - 存储键名
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import removeStorage from '@tanwan/utils/removeStorage'
|
|
10
|
+
* removeStorage('user')
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function removeStorage(key) {
|
|
14
|
+
try {
|
|
15
|
+
localStorage.removeItem(key);
|
|
16
|
+
} catch {}
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { removeStorage as default };
|
package/dist/retry.cjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/business/retry/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 异步函数失败自动重试
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 返回 Promise 的函数
|
|
6
|
+
* @param maxRetries - 最大重试次数,默认 3
|
|
7
|
+
* @param delayMs - 每次重试间隔(ms),默认 1000
|
|
8
|
+
* @returns 执行结果
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import retry from '@tanwan/utils/retry'
|
|
13
|
+
* const data = await retry(() => fetch('/api/data').then(r => r.json()), 3, 1000)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
async function retry(fn, maxRetries = 3, delayMs = 1e3) {
|
|
17
|
+
let lastError;
|
|
18
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) try {
|
|
19
|
+
return await fn();
|
|
20
|
+
} catch (error) {
|
|
21
|
+
lastError = error;
|
|
22
|
+
if (attempt < maxRetries) await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
23
|
+
}
|
|
24
|
+
throw lastError;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
module.exports = retry;
|
package/dist/retry.d.cts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/retry/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 异步函数失败自动重试
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 返回 Promise 的函数
|
|
6
|
+
* @param maxRetries - 最大重试次数,默认 3
|
|
7
|
+
* @param delayMs - 每次重试间隔(ms),默认 1000
|
|
8
|
+
* @returns 执行结果
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import retry from '@tanwan/utils/retry'
|
|
13
|
+
* const data = await retry(() => fetch('/api/data').then(r => r.json()), 3, 1000)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function retry<T>(fn: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
17
|
+
export = retry;
|
package/dist/retry.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/retry/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 异步函数失败自动重试
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 返回 Promise 的函数
|
|
6
|
+
* @param maxRetries - 最大重试次数,默认 3
|
|
7
|
+
* @param delayMs - 每次重试间隔(ms),默认 1000
|
|
8
|
+
* @returns 执行结果
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import retry from '@tanwan/utils/retry'
|
|
13
|
+
* const data = await retry(() => fetch('/api/data').then(r => r.json()), 3, 1000)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function retry<T>(fn: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { retry as default };
|
package/dist/retry.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/business/retry/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 异步函数失败自动重试
|
|
4
|
+
*
|
|
5
|
+
* @param fn - 返回 Promise 的函数
|
|
6
|
+
* @param maxRetries - 最大重试次数,默认 3
|
|
7
|
+
* @param delayMs - 每次重试间隔(ms),默认 1000
|
|
8
|
+
* @returns 执行结果
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import retry from '@tanwan/utils/retry'
|
|
13
|
+
* const data = await retry(() => fetch('/api/data').then(r => r.json()), 3, 1000)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
async function retry(fn, maxRetries = 3, delayMs = 1e3) {
|
|
17
|
+
let lastError;
|
|
18
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) try {
|
|
19
|
+
return await fn();
|
|
20
|
+
} catch (error) {
|
|
21
|
+
lastError = error;
|
|
22
|
+
if (attempt < maxRetries) await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
23
|
+
}
|
|
24
|
+
throw lastError;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { retry as default };
|
package/dist/sample.cjs
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/array/sample/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从数组中随机取一个元素
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 源数组
|
|
6
|
+
* @returns 随机元素,数组为空时返回 `undefined`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import sample from '@tanwan/utils/sample'
|
|
11
|
+
* sample([1, 2, 3, 4]) // 可能返回 2
|
|
12
|
+
* sample([]) // undefined
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function sample(arr) {
|
|
16
|
+
if (arr.length === 0) return void 0;
|
|
17
|
+
return arr[Math.floor(Math.random() * arr.length)];
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
module.exports = sample;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/array/sample/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从数组中随机取一个元素
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 源数组
|
|
6
|
+
* @returns 随机元素,数组为空时返回 `undefined`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import sample from '@tanwan/utils/sample'
|
|
11
|
+
* sample([1, 2, 3, 4]) // 可能返回 2
|
|
12
|
+
* sample([]) // undefined
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function sample<T>(arr: T[]): T | undefined;
|
|
16
|
+
export = sample;
|
package/dist/sample.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/array/sample/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从数组中随机取一个元素
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 源数组
|
|
6
|
+
* @returns 随机元素,数组为空时返回 `undefined`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import sample from '@tanwan/utils/sample'
|
|
11
|
+
* sample([1, 2, 3, 4]) // 可能返回 2
|
|
12
|
+
* sample([]) // undefined
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function sample<T>(arr: T[]): T | undefined;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { sample as default };
|
package/dist/sample.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/array/sample/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 从数组中随机取一个元素
|
|
4
|
+
*
|
|
5
|
+
* @param arr - 源数组
|
|
6
|
+
* @returns 随机元素,数组为空时返回 `undefined`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import sample from '@tanwan/utils/sample'
|
|
11
|
+
* sample([1, 2, 3, 4]) // 可能返回 2
|
|
12
|
+
* sample([]) // undefined
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function sample(arr) {
|
|
16
|
+
if (arr.length === 0) return void 0;
|
|
17
|
+
return arr[Math.floor(Math.random() * arr.length)];
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { sample 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
|
+
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;
|