@float-toolkit/react
Version:
A React hook wrapper for Float Toolkit
205 lines (200 loc) • 5.09 kB
JavaScript
/**
* 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