UNPKG

@float-toolkit/react

Version:

A React hook wrapper for Float Toolkit

205 lines (200 loc) 5.09 kB
/** * Float Toolkit for React * NPM package by LuisFerLCC * @float-toolkit/react * * https://github.com/float-toolkit/react/blob/master/LICENSE */ // src/index.ts import FloatToolkit from "@float-toolkit/core"; import { useCallback, useDebugValue, useEffect, useMemo, useState } from "react"; // package.json var package_default = { name: "@float-toolkit/react", version: "2.0.4", description: "A React hook wrapper for Float Toolkit", main: "./dist/index.js", module: "./dist/index.mjs", types: "./typings/index.d.ts", exports: { ".": { require: "./dist/index.js", import: "./dist/index.mjs", types: "./typings/index.d.ts" } }, scripts: { build: "rm -rf dist typings && npm test && node scripts/esbuild.mjs", test: "vitest run", "test:watch": "npm run pretest && vitest --coverage=false", pretest: "rm -rf coverage && npm run format && tsc --noEmit", format: "prettier --write . && eslint --ext .js,.ts,.tsx --fix ." }, repository: { type: "git", url: "git://github.com/float-toolkit/react.git" }, keywords: [ "float", "floating-point", "number", "round", "math", "react" ], author: "LuisFerLCC", license: "Apache-2.0", bugs: { url: "https://github.com/float-toolkit/react/issues" }, homepage: "https://github.com/float-toolkit/react#readme", peerDependencies: { react: "^18.2.0" }, devDependencies: { "@testing-library/react": "^13.4.0", "@types/eslint": "^8.4.10", "@types/react": "^18.0.26", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "@vitejs/plugin-react": "^3.0.1", "@vitest/coverage-c8": "^0.25.8", "@vitest/ui": "^0.25.8", c8: "^7.12.0", esbuild: "^0.14.54", "esbuild-plugin-d-ts-path-alias": "^2.0.0", eslint: "^8.31.0", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", jsdom: "^20.0.3", prettier: "^2.8.1", tslib: "^2.4.1", typescript: "<4.8", vitest: "^0.25.8" }, dependencies: { "@float-toolkit/core": "^2.1.0" } }; // src/versionNumbers.ts var versionNumbers = package_default.version.split("."); var versionNumbers_default = versionNumbers; // src/index.ts var ReactFT; ((ReactFT2) => { ReactFT2.CORE_VERSION = FloatToolkit.VERSION; ReactFT2.VERSION = { get full() { return versionNumbers_default.join("."); }, get major() { return versionNumbers_default[0]; }, get minor() { return versionNumbers_default[1]; }, get patch() { return versionNumbers_default[2]; } }; })(ReactFT || (ReactFT = {})); function useFloatToolkit(defaultPrecision, options) { const [output, setOutput] = useState(0); useDebugValue(output); const ft = useMemo(() => new FloatToolkit(), []); useEffect(() => { ft.defaultPrecision = defaultPrecision != null ? defaultPrecision : ft.defaultPrecision; }, [ft, defaultPrecision]); useEffect(() => { ft.resetOptions(options != null ? options : {}); }, [ft, options]); const add = useCallback( (numbers, precision) => { const result = ft.add(numbers, precision); setOutput(result); return result; }, [ft] ); const divide = useCallback( (numbers, precision) => { const result = ft.divide(numbers, precision); setOutput(result); return result; }, [ft] ); const multiply = useCallback( (numbers, precision) => { const result = ft.multiply(numbers, precision); setOutput(result); return result; }, [ft] ); const _methodResetOutput = useCallback(() => { setOutput(0); }, []); const resetOptions = useCallback( (options2, resetOutput) => { if (resetOutput) _methodResetOutput(); return ft.resetOptions(options2); }, [ft, _methodResetOutput] ); const round = useCallback( (n, precision) => { const result = ft.round(n, precision); setOutput(result); return result; }, [ft] ); const setOptions = useCallback( (options2, resetOutput) => { if (resetOutput) _methodResetOutput(); return ft.resetOptions(options2); }, [ft, _methodResetOutput] ); const subtract = useCallback( (numbers, precision) => { const result = ft.subtract(numbers, precision); setOutput(result); return result; }, [ft] ); return { get defaultPrecision() { return ft.defaultPrecision; }, set defaultPrecision(newPrecision) { ft.defaultPrecision = newPrecision; }, get options() { return ft.options; }, add, divide, multiply, resetOptions, round, setOptions, subtract, output, resetOutput: _methodResetOutput }; } var src_default = useFloatToolkit; export { ReactFT, src_default as default }; //# sourceMappingURL=index.mjs.map