clickable-json
Version:
Interactive JSON and JSON CRDT viewer and editor
29 lines • 1.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.InputProvider = exports.useInput = exports.context = void 0;
const React = require("react");
exports.context = React.createContext(null);
const useInput = () => React.useContext(exports.context);
exports.useInput = useInput;
const InputProvider = ({ children }) => {
const parentContext = (0, exports.useInput)();
const [focused, setFocused] = React.useState(false);
React.useEffect(() => {
if (parentContext)
return;
const onFocusIn = () => {
setFocused(!!document.activeElement && document.activeElement.tagName === 'INPUT');
};
document.addEventListener('focus', onFocusIn, true);
document.addEventListener('blur', onFocusIn, true);
return () => {
document.removeEventListener('focus', onFocusIn);
document.removeEventListener('blur', onFocusIn);
};
}, []);
if (parentContext)
return children;
return React.createElement(exports.context.Provider, { value: { focused } }, children);
};
exports.InputProvider = InputProvider;
//# sourceMappingURL=input.js.map
;