UNPKG

react-plain-json-editor

Version:
44 lines 1.85 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useJsonEditor = void 0; var react_1 = require("react"); var react_hotkeys_hook_1 = require("react-hotkeys-hook"); exports.useJsonEditor = function (_a) { var _b = _a.onSubmit, onSubmit = _b === void 0 ? function (_) { } : _b, _c = _a.onError, onError = _c === void 0 ? function (_) { } : _c, _d = _a.submitKeys, submitKeys = _d === void 0 ? ['command+enter', 'ctrl+enter'] : _d, _e = _a.serializer, serializer = _e === void 0 ? JSON.parse : _e; var handleSubmit = react_1.useCallback(function (e) { var value = e.target.value; try { var serialized = serializer(value); onSubmit(serialized); } catch (e) { onError(e); } }, [serializer, onSubmit, onError]); var ref = react_hotkeys_hook_1.useHotkeys(__spreadArrays(["tab"], submitKeys).join(','), function (e, handler) { e.preventDefault(); var target = ref.current; if (!target) return; if (submitKeys.some(function (key) { return key === handler.key; })) { handleSubmit(e); } else { switch (handler.key) { case "tab": target.setRangeText("\t"); target.selectionStart += 1; break; } } }, { enableOnTags: ['TEXTAREA'] }, [handleSubmit, submitKeys]); return ref; }; //# sourceMappingURL=useJsonEditor.js.map