react-hook-mask
Version:
React masked input component and hooks
47 lines • 2.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRefMask = void 0;
var react_1 = __importDefault(require("react"));
var use_mask_1 = require("./use-mask");
var useCombinedRefs = function (innerRef, fwdRef) {
react_1.default.useEffect(function () {
[innerRef, fwdRef].forEach(function (ref) {
if (ref) {
if (typeof ref === 'function') {
ref(innerRef.current || null);
}
else {
ref.current = innerRef.current || null;
}
}
});
}, [innerRef, fwdRef]);
return innerRef;
};
var useRefMask = function (_a) {
var maskGenerator = _a.maskGenerator, outerValue = _a.value, onChange = _a.onChange, keepMask = _a.keepMask, ref = _a.ref, getCursorPositionOuter = _a.getCursorPosition, setCursorPositionOuter = _a.setCursorPosition;
var innerRef = react_1.default.useRef(null);
var combinedRefs = useCombinedRefs(innerRef, ref);
var getCursorPosition = react_1.default.useCallback(function () {
var el = combinedRefs === null || combinedRefs === void 0 ? void 0 : combinedRefs.current;
return getCursorPositionOuter(el !== null && el !== void 0 ? el : undefined);
}, [combinedRefs, getCursorPositionOuter]);
var setCursorPosition = react_1.default.useCallback(function (cursorPosition) {
var el = combinedRefs === null || combinedRefs === void 0 ? void 0 : combinedRefs.current;
setCursorPositionOuter(cursorPosition, el !== null && el !== void 0 ? el : undefined);
}, [combinedRefs, setCursorPositionOuter]);
var _b = (0, use_mask_1.useMask)({
outerValue: outerValue,
maskGenerator: maskGenerator,
getCursorPosition: getCursorPosition,
setCursorPosition: setCursorPosition,
onChange: onChange,
keepMask: keepMask,
}), displayValue = _b.displayValue, setDisplayValue = _b.setDisplayValue;
return { displayValue: displayValue, setDisplayValue: setDisplayValue, ref: combinedRefs };
};
exports.useRefMask = useRefMask;
//# sourceMappingURL=use-ref-mask.js.map