react-plain-json-editor
Version:
Provide a simple JSON editor for React
44 lines • 1.85 kB
JavaScript
;
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