@lubycon/react
Advanced tools
+9
-80
@@ -5,9 +5,9 @@ { | ||
| "sideEffects": false, | ||
| "version": "1.2.0", | ||
| "version": "1.6.4", | ||
| "keywords": [ | ||
| "react" | ||
| ], | ||
| "main": "dist/index.js", | ||
| "module": "dist", | ||
| "typings": "dist/types/index.d.ts", | ||
| "main": "./dist/index.js", | ||
| "module": "./dist", | ||
| "typings": "./dist/types/index.d.ts", | ||
| "publishConfig": { | ||
@@ -17,13 +17,4 @@ "access": "public" | ||
| "files": [ | ||
| "dist" | ||
| "./dist" | ||
| ], | ||
| "author": "Lubycon <lubycon@gmail.com>", | ||
| "repository": { | ||
| "type": "git", | ||
| "url": "https://github.com/Lubycon/lubycon-react" | ||
| }, | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": ">=10.15" | ||
| }, | ||
| "scripts": { | ||
@@ -34,57 +25,6 @@ "lint": "tslint --project tsconfig.json -t codeFrame 'src/**/*.ts' 'test/**/*.ts'", | ||
| "start": "rollup -c rollup.config.ts -w", | ||
| "test": "jest --coverage", | ||
| "test:watch": "jest --coverage --watch", | ||
| "test:prod": "npm run lint && npm run test -- --no-cache", | ||
| "report-coverage": "cat ./coverage/lcov.info | coveralls", | ||
| "commit": "git-cz", | ||
| "precommit": "lint-staged", | ||
| "copy-version": "ncp dist/package.json package.json", | ||
| "typecheck": "tsc --noEmit" | ||
| }, | ||
| "lint-staged": { | ||
| "{src,test}/**/*.ts": [ | ||
| "prettier --write", | ||
| "git add" | ||
| ] | ||
| }, | ||
| "config": { | ||
| "commitizen": { | ||
| "path": "node_modules/cz-conventional-changelog" | ||
| } | ||
| }, | ||
| "jest": { | ||
| "transform": { | ||
| ".(ts|tsx)": "ts-jest" | ||
| }, | ||
| "testEnvironment": "node", | ||
| "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$", | ||
| "moduleFileExtensions": [ | ||
| "ts", | ||
| "tsx", | ||
| "js" | ||
| ], | ||
| "coveragePathIgnorePatterns": [ | ||
| "/node_modules/", | ||
| "/test/" | ||
| ], | ||
| "coverageThreshold": { | ||
| "global": { | ||
| "branches": 90, | ||
| "functions": 95, | ||
| "lines": 95, | ||
| "statements": 95 | ||
| } | ||
| }, | ||
| "collectCoverageFrom": [ | ||
| "src/*.{js,ts}" | ||
| ] | ||
| }, | ||
| "commitlint": { | ||
| "extends": [ | ||
| "@commitlint/config-conventional" | ||
| ] | ||
| }, | ||
| "devDependencies": { | ||
| "@commitlint/cli": "^7.1.2", | ||
| "@commitlint/config-conventional": "^7.1.2", | ||
| "@semantic-release/commit-analyzer": "^8.0.1", | ||
@@ -95,3 +35,2 @@ "@semantic-release/git": "^9.0.0", | ||
| "@semantic-release/release-notes-generator": "^9.0.2", | ||
| "@types/jest": "^23.3.2", | ||
| "@types/node": "^10.11.0", | ||
@@ -101,17 +40,8 @@ "@types/react": "^17.0.13", | ||
| "@typescript-eslint/parser": "^4.25.0", | ||
| "@yarnpkg/pnpify": "^3.0.0-rc.10", | ||
| "colors": "^1.3.2", | ||
| "commitizen": "^3.0.0", | ||
| "coveralls": "^3.0.2", | ||
| "cross-env": "^5.2.0", | ||
| "cz-conventional-changelog": "^2.1.0", | ||
| "eslint": "^7.27.0", | ||
| "eslint-config-prettier": "^8.3.0", | ||
| "eslint-plugin-prettier": "^3.4.0", | ||
| "husky": "^1.0.1", | ||
| "jest": "^23.6.0", | ||
| "jest-config": "^23.6.0", | ||
| "lint-staged": "^8.0.0", | ||
| "ncp": "^2.0.0", | ||
| "prettier": "^2.1.2", | ||
| "prettier": "^2.3.2", | ||
| "prompt": "^1.0.0", | ||
@@ -128,9 +58,8 @@ "replace-in-file": "^3.4.2", | ||
| "shelljs": "^0.8.3", | ||
| "ts-jest": "^23.10.2", | ||
| "ts-node": "^7.0.1", | ||
| "typescript": "^3.0.3" | ||
| "typescript": "^4.3.5" | ||
| }, | ||
| "peerDependencies": { | ||
| "react": "^17.0.2" | ||
| } | ||
| }, | ||
| "gitHead": "d51fd8fa1925fcf0fd33172ece35908e4b8b5bfa" | ||
| } |
| 'use strict'; | ||
| Object.defineProperty(exports, '__esModule', { value: true }); | ||
| var react = require('react'); | ||
| /** | ||
| * setState(true)와 같은 동작을 추상화하여 setTrue, setFalse를 사용합니다. | ||
| */ | ||
| function useBooleanState(defaultValue) { | ||
| if (defaultValue === void 0) { defaultValue = false; } | ||
| var _a = react.useState(defaultValue), state = _a[0], setState = _a[1]; | ||
| var setTrue = react.useCallback(function () { return setState(true); }, []); | ||
| var setFalse = react.useCallback(function () { return setState(false); }, []); | ||
| return [state, setTrue, setFalse]; | ||
| } | ||
| /** | ||
| * 한 단계 이전 렌더 타이밍의 값을 반환합니다. 이전 값과 현재 값을 비교하는 상황 등에 사용할 수 있습니다. | ||
| */ | ||
| function usePreviousState(value) { | ||
| var ref = react.useRef(value); | ||
| react.useEffect(function () { | ||
| ref.current = value; | ||
| }, [value]); | ||
| return ref.current; | ||
| } | ||
| function useThrottle(callback, delay) { | ||
| var timer = react.useRef(null); | ||
| return function throttledCallback() { | ||
| var args = []; | ||
| for (var _i = 0; _i < arguments.length; _i++) { | ||
| args[_i] = arguments[_i]; | ||
| } | ||
| if (!timer.current) { | ||
| timer.current = setTimeout(function () { | ||
| callback.apply(void 0, args); | ||
| timer.current = null; | ||
| }, delay); | ||
| } | ||
| }; | ||
| } | ||
| function useDebounce(callback, delay) { | ||
| var argsRef = react.useRef(); | ||
| var timer = react.useRef(null); | ||
| var cleanup = react.useCallback(function () { | ||
| if (timer.current) | ||
| clearTimeout(timer.current); | ||
| }, []); | ||
| var debouncedCallback = react.useCallback(function () { | ||
| var args = []; | ||
| for (var _i = 0; _i < arguments.length; _i++) { | ||
| args[_i] = arguments[_i]; | ||
| } | ||
| argsRef.current = args; | ||
| cleanup(); | ||
| timer.current = setTimeout(function () { | ||
| if (argsRef.current) { | ||
| callback.apply(void 0, argsRef.current); | ||
| timer.current = null; | ||
| } | ||
| }, delay); | ||
| }, []); | ||
| return debouncedCallback; | ||
| } | ||
| exports.useBooleanState = useBooleanState; | ||
| exports.useDebounce = useDebounce; | ||
| exports.usePreviousState = usePreviousState; | ||
| exports.useThrottle = useThrottle; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sources":["../src/hooks/useBooleanState.ts","../src/hooks/usePreviousState.ts","../src/hooks/useThrottle.ts","../src/hooks/useDebounce.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\n/**\n * setState(true)와 같은 동작을 추상화하여 setTrue, setFalse를 사용합니다.\n */\nfunction useBooleanState(defaultValue = false): [boolean, () => void, () => void] {\n const [state, setState] = useState(defaultValue);\n\n const setTrue = useCallback(() => setState(true), []);\n const setFalse = useCallback(() => setState(false), []);\n\n return [state, setTrue, setFalse];\n}\n\nexport default useBooleanState;\n","import { useRef, useEffect } from 'react';\n\n/**\n * 한 단계 이전 렌더 타이밍의 값을 반환합니다. 이전 값과 현재 값을 비교하는 상황 등에 사용할 수 있습니다.\n */\nexport default function usePreviousState<T>(value: T): T {\n const ref = useRef<T>(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import { useRef } from 'react';\n\nexport default function useThrottle<A extends unknown[]>(\n callback: (...args: A) => void,\n delay: number\n) {\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n return function throttledCallback(...args: A) {\n if (!timer.current) {\n timer.current = setTimeout(() => {\n callback(...args);\n timer.current = null;\n }, delay);\n }\n };\n}\n","import { useRef, useCallback } from 'react';\n\nexport default function useDebounce<A extends unknown[]>(\n callback: (...args: A) => void,\n delay: number\n) {\n const argsRef = useRef<A>();\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cleanup = useCallback(() => {\n if (timer.current) clearTimeout(timer.current);\n }, []);\n\n const debouncedCallback = useCallback((...args: A) => {\n argsRef.current = args;\n cleanup();\n timer.current = setTimeout(() => {\n if (argsRef.current) {\n callback(...argsRef.current);\n timer.current = null;\n }\n }, delay);\n }, []);\n\n return debouncedCallback;\n}\n"],"names":["useState","useCallback","useRef","useEffect"],"mappings":";;;;;;AAEA;;;AAGA,SAAS,eAAe,CAAC,YAAoB;IAApB,6BAAA,EAAA,oBAAoB;IACrC,IAAA,KAAoBA,cAAQ,CAAC,YAAY,CAAC,EAAzC,KAAK,QAAA,EAAE,QAAQ,QAA0B,CAAC;IAEjD,IAAM,OAAO,GAAGC,iBAAW,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;IACtD,IAAM,QAAQ,GAAGA,iBAAW,CAAC,cAAM,OAAA,QAAQ,CAAC,KAAK,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;IAExD,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpC;;ACVA;;;SAGwB,gBAAgB,CAAI,KAAQ;IAClD,IAAM,GAAG,GAAGC,YAAM,CAAI,KAAK,CAAC,CAAC;IAE7BC,eAAS,CAAC;QACR,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;KACrB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB;;SCXwB,WAAW,CACjC,QAA8B,EAC9B,KAAa;IAEb,IAAM,KAAK,GAAGD,YAAM,CAAuC,IAAI,CAAC,CAAC;IAEjE,OAAO,SAAS,iBAAiB;QAAC,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,yBAAU;;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;gBACzB,QAAQ,eAAI,IAAI,EAAE;gBAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;aACtB,EAAE,KAAK,CAAC,CAAC;SACX;KACF,CAAC;AACJ;;SCdwB,WAAW,CACjC,QAA8B,EAC9B,KAAa;IAEb,IAAM,OAAO,GAAGA,YAAM,EAAK,CAAC;IAC5B,IAAM,KAAK,GAAGA,YAAM,CAAuC,IAAI,CAAC,CAAC;IAEjE,IAAM,OAAO,GAAGD,iBAAW,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO;YAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAChD,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,iBAAiB,GAAGA,iBAAW,CAAC;QAAC,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,yBAAU;;QAC/C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;YACzB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,QAAQ,eAAI,OAAO,CAAC,OAAO,EAAE;gBAC7B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;aACtB;SACF,EAAE,KAAK,CAAC,CAAC;KACX,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,iBAAiB,CAAC;AAC3B;;;;;;;"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| /** | ||
| * useEffect로 async function을 넘기면 타입이 깨지기 때문에 사용하는 헬퍼입니다. | ||
| * | ||
| * 동작은 useEffect와 똑같지만, 이펙트가 반환하는 타입이 Promise<void>이기 때문에 클린업은 불가능합니다. | ||
| */ | ||
| function useAsyncEffect(asyncEffect, deps) { | ||
| react_1.useEffect(function () { | ||
| asyncEffect(); | ||
| }, deps); | ||
| } | ||
| exports.default = useAsyncEffect; | ||
| //# sourceMappingURL=useAsyncEffect.js.map |
| {"version":3,"file":"useAsyncEffect.js","sourceRoot":"","sources":["../../../src/hooks/useAsyncEffect.ts"],"names":[],"mappings":";;AAAA,+BAAkD;AAElD;;;;GAIG;AACH,SAAwB,cAAc,CAAC,WAAgC,EAAE,IAAoB;IAC3F,iBAAS,CAAC;QACR,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAJD,iCAIC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| var useBindInput = function (_a) { | ||
| var initialValue = _a.initialValue, validator = _a.validator; | ||
| var _b = react_1.useState(initialValue !== null && initialValue !== void 0 ? initialValue : ''), value = _b[0], setValue = _b[1]; | ||
| var onChange = function (e) { | ||
| var text = e.target.value; | ||
| if (validator) { | ||
| var willUpdate = validator(text); | ||
| if (willUpdate) { | ||
| setValue(text); | ||
| } | ||
| } | ||
| else { | ||
| setValue(text); | ||
| } | ||
| }; | ||
| var clearValue = function () { | ||
| setValue(''); | ||
| }; | ||
| return { | ||
| bind: { | ||
| value: value, | ||
| onChange: onChange, | ||
| }, | ||
| setValue: setValue, | ||
| clearValue: clearValue, | ||
| }; | ||
| }; | ||
| exports.default = useBindInput; | ||
| //# sourceMappingURL=useBindInput.js.map |
| {"version":3,"file":"useBindInput.js","sourceRoot":"","sources":["../../../src/hooks/useBindInput.tsx"],"names":[],"mappings":";;AAAA,+BAAiC;AAOjC,IAAM,YAAY,GAAG,UAAC,EAMrB;QALC,YAAY,kBAAA,EACZ,SAAS,eAAA;IAKH,IAAA,KAAoB,gBAAQ,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,EAA/C,KAAK,QAAA,EAAE,QAAQ,QAAgC,CAAC;IAEvD,IAAM,QAAQ,GAAG,UAAC,CAAsC;QAE1C,IAAO,IAAI,GACnB,CAAC,aADkB,CACjB;QAEN,IAAI,SAAS,EAAE;YACb,IAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,UAAU,EAAE;gBACd,QAAQ,CAAC,IAAI,CAAC,CAAC;aAChB;SACF;aAAM;YACL,QAAQ,CAAC,IAAI,CAAC,CAAC;SAChB;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG;QACjB,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE;YACJ,KAAK,OAAA;YACL,QAAQ,UAAA;SACT;QACD,QAAQ,UAAA;QACR,UAAU,YAAA;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| /** | ||
| * setState(true)와 같은 동작을 추상화하여 setTrue, setFalse를 사용합니다. | ||
| */ | ||
| function useBooleanState(defaultValue) { | ||
| if (defaultValue === void 0) { defaultValue = false; } | ||
| var _a = react_1.useState(defaultValue), state = _a[0], setState = _a[1]; | ||
| var setTrue = react_1.useCallback(function () { return setState(true); }, []); | ||
| var setFalse = react_1.useCallback(function () { return setState(false); }, []); | ||
| return [state, setTrue, setFalse]; | ||
| } | ||
| exports.default = useBooleanState; | ||
| //# sourceMappingURL=useBooleanState.js.map |
| {"version":3,"file":"useBooleanState.js","sourceRoot":"","sources":["../../../src/hooks/useBooleanState.ts"],"names":[],"mappings":";;AAAA,+BAA8C;AAE9C;;GAEG;AACH,SAAS,eAAe,CAAC,YAAoB;IAApB,6BAAA,EAAA,oBAAoB;IACrC,IAAA,KAAoB,gBAAQ,CAAC,YAAY,CAAC,EAAzC,KAAK,QAAA,EAAE,QAAQ,QAA0B,CAAC;IAEjD,IAAM,OAAO,GAAG,mBAAW,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,EAAd,CAAc,EAAE,EAAE,CAAC,CAAC;IACtD,IAAM,QAAQ,GAAG,mBAAW,CAAC,cAAM,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe,EAAE,EAAE,CAAC,CAAC;IAExD,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,kBAAe,eAAe,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| function useDebounce(callback, delay) { | ||
| var argsRef = react_1.useRef(); | ||
| var timer = react_1.useRef(null); | ||
| var cleanup = react_1.useCallback(function () { | ||
| if (timer.current) | ||
| clearTimeout(timer.current); | ||
| }, []); | ||
| var debouncedCallback = react_1.useCallback(function () { | ||
| var args = []; | ||
| for (var _i = 0; _i < arguments.length; _i++) { | ||
| args[_i] = arguments[_i]; | ||
| } | ||
| argsRef.current = args; | ||
| cleanup(); | ||
| timer.current = setTimeout(function () { | ||
| if (argsRef.current) { | ||
| callback.apply(void 0, argsRef.current); | ||
| timer.current = null; | ||
| } | ||
| }, delay); | ||
| }, []); | ||
| return debouncedCallback; | ||
| } | ||
| exports.default = useDebounce; | ||
| //# sourceMappingURL=useDebounce.js.map |
| {"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../../src/hooks/useDebounce.ts"],"names":[],"mappings":";;AAAA,+BAA4C;AAE5C,SAAwB,WAAW,CACjC,QAA8B,EAC9B,KAAa;IAEb,IAAM,OAAO,GAAG,cAAM,EAAK,CAAC;IAC5B,IAAM,KAAK,GAAG,cAAM,CAAuC,IAAI,CAAC,CAAC;IAEjE,IAAM,OAAO,GAAG,mBAAW,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO;YAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,iBAAiB,GAAG,mBAAW,CAAC;QAAC,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,yBAAU;;QAC/C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;YACzB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,QAAQ,eAAI,OAAO,CAAC,OAAO,EAAE;gBAC7B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;aACtB;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAvBD,8BAuBC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| /** | ||
| * 한 단계 이전 렌더 타이밍의 값을 반환합니다. 이전 값과 현재 값을 비교하는 상황 등에 사용할 수 있습니다. | ||
| */ | ||
| function usePreviousState(value) { | ||
| var ref = react_1.useRef(value); | ||
| react_1.useEffect(function () { | ||
| ref.current = value; | ||
| }, [value]); | ||
| return ref.current; | ||
| } | ||
| exports.default = usePreviousState; | ||
| //# sourceMappingURL=usePreviousState.js.map |
| {"version":3,"file":"usePreviousState.js","sourceRoot":"","sources":["../../../src/hooks/usePreviousState.ts"],"names":[],"mappings":";;AAAA,+BAA0C;AAE1C;;GAEG;AACH,SAAwB,gBAAgB,CAAI,KAAQ;IAClD,IAAM,GAAG,GAAG,cAAM,CAAI,KAAK,CAAC,CAAC;IAE7B,iBAAS,CAAC;QACR,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AARD,mCAQC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var react_1 = require("react"); | ||
| function useThrottle(callback, delay) { | ||
| var timer = react_1.useRef(null); | ||
| return function throttledCallback() { | ||
| var args = []; | ||
| for (var _i = 0; _i < arguments.length; _i++) { | ||
| args[_i] = arguments[_i]; | ||
| } | ||
| if (!timer.current) { | ||
| timer.current = setTimeout(function () { | ||
| callback.apply(void 0, args); | ||
| timer.current = null; | ||
| }, delay); | ||
| } | ||
| }; | ||
| } | ||
| exports.default = useThrottle; | ||
| //# sourceMappingURL=useThrottle.js.map |
| {"version":3,"file":"useThrottle.js","sourceRoot":"","sources":["../../../src/hooks/useThrottle.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAE/B,SAAwB,WAAW,CACjC,QAA8B,EAC9B,KAAa;IAEb,IAAM,KAAK,GAAG,cAAM,CAAuC,IAAI,CAAC,CAAC;IAEjE,OAAO,SAAS,iBAAiB;QAAC,cAAU;aAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;YAAV,yBAAU;;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;gBACzB,QAAQ,eAAI,IAAI,EAAE;gBAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,CAAC,EAAE,KAAK,CAAC,CAAC;SACX;IACH,CAAC,CAAC;AACJ,CAAC;AAdD,8BAcC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var useBooleanState_1 = require("./hooks/useBooleanState"); | ||
| Object.defineProperty(exports, "useBooleanState", { enumerable: true, get: function () { return useBooleanState_1.default; } }); | ||
| var usePreviousState_1 = require("./hooks/usePreviousState"); | ||
| Object.defineProperty(exports, "usePreviousState", { enumerable: true, get: function () { return usePreviousState_1.default; } }); | ||
| var useThrottle_1 = require("./hooks/useThrottle"); | ||
| Object.defineProperty(exports, "useThrottle", { enumerable: true, get: function () { return useThrottle_1.default; } }); | ||
| var useDebounce_1 = require("./hooks/useDebounce"); | ||
| Object.defineProperty(exports, "useDebounce", { enumerable: true, get: function () { return useDebounce_1.default; } }); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,2DAAqE;AAA5D,kHAAA,OAAO,OAAmB;AACnC,6DAAuE;AAA9D,oHAAA,OAAO,OAAoB;AACpC,mDAA6D;AAApD,0GAAA,OAAO,OAAe;AAC/B,mDAA6D;AAApD,0GAAA,OAAO,OAAe"} |
| import { DependencyList } from 'react'; | ||
| /** | ||
| * useEffect로 async function을 넘기면 타입이 깨지기 때문에 사용하는 헬퍼입니다. | ||
| * | ||
| * 동작은 useEffect와 똑같지만, 이펙트가 반환하는 타입이 Promise<void>이기 때문에 클린업은 불가능합니다. | ||
| */ | ||
| export default function useAsyncEffect(asyncEffect: () => Promise<void>, deps: DependencyList): void; |
| export interface BindInput { | ||
| value: string; | ||
| onChange: (e: React.ChangeEvent<HTMLInputElement>) => void; | ||
| } | ||
| declare const useBindInput: ({ initialValue, validator, }: { | ||
| initialValue?: string | undefined; | ||
| validator?: ((text: string) => boolean) | undefined; | ||
| }) => { | ||
| bind: { | ||
| value: string; | ||
| onChange: (e: React.ChangeEvent<HTMLInputElement>) => void; | ||
| }; | ||
| setValue: import("react").Dispatch<import("react").SetStateAction<string>>; | ||
| clearValue: () => void; | ||
| }; | ||
| export default useBindInput; |
| /** | ||
| * setState(true)와 같은 동작을 추상화하여 setTrue, setFalse를 사용합니다. | ||
| */ | ||
| declare function useBooleanState(defaultValue?: boolean): [boolean, () => void, () => void]; | ||
| export default useBooleanState; |
| export default function useDebounce<A extends unknown[]>(callback: (...args: A) => void, delay: number): (...args: A) => void; |
| /** | ||
| * 한 단계 이전 렌더 타이밍의 값을 반환합니다. 이전 값과 현재 값을 비교하는 상황 등에 사용할 수 있습니다. | ||
| */ | ||
| export default function usePreviousState<T>(value: T): T; |
| export default function useThrottle<A extends unknown[]>(callback: (...args: A) => void, delay: number): (...args: A) => void; |
| export { default as useBooleanState } from './hooks/useBooleanState'; | ||
| export { default as usePreviousState } from './hooks/usePreviousState'; | ||
| export { default as useThrottle } from './hooks/useThrottle'; | ||
| export { default as useDebounce } from './hooks/useDebounce'; |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
No License Found
LicenseLicense information could not be found.
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
27
-34.15%3083
-85.61%2
-92%1
Infinity%0
-100%2
100%2
100%1
Infinity%2
Infinity%