@eccenca/gui-elements
Version:
GUI elements based on other libraries, usable in React application, written in Typescript.
27 lines • 2.12 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExtendedCodeEditor = void 0;
const react_1 = __importDefault(require("react"));
const core_1 = require("@blueprintjs/core");
const state_1 = require("@codemirror/state");
const view_1 = require("@codemirror/view");
const constants_1 = require("../../configuration/constants");
const CodeMirror_1 = require("../../extensions/codemirror/CodeMirror");
/** Supports single-line and multiline editing. */
const ExtendedCodeEditor = ({ multiline = false, initialValue = "", onKeyDown, enableTab = false, mode, setCM, onFocusChange, onMouseDown, onChange, placeholder, onCursorChange, onSelection, codeEditorProps, height, readOnly }) => {
const initialContent = react_1.default.useRef(multiline ? initialValue : initialValue.replace(/[\r\n]/g, " "));
const multilineExtensions = multiline
? [(0, view_1.lineNumbers)(), view_1.EditorView.lineWrapping]
: [
state_1.EditorState === null || state_1.EditorState === void 0 ? void 0 : state_1.EditorState.transactionFilter.of((tr) => (tr.newDoc.lines > 1 ? [] : tr)),
];
return (react_1.default.createElement(CodeMirror_1.CodeEditor, Object.assign({ defaultValue: initialContent.current, setEditorView: setCM, onSelection: onSelection, onMouseDown: onMouseDown, onChange: onChange, placeholder: placeholder, onCursorChange: onCursorChange, onFocusChange: onFocusChange, onKeyDown: onKeyDown, shouldHaveMinimalSetup: false, preventLineNumbers: !multiline, mode: mode, height: height, readOnly: readOnly, name: "", enableTab: enableTab, additionalExtensions: [...multilineExtensions], outerDivAttributes: {
className: `${constants_1.CLASSPREFIX}-${multiline ? "codeeditor" : `singlelinecodeeditor ${core_1.Classes.INPUT}`}`,
} }, codeEditorProps)));
};
exports.ExtendedCodeEditor = ExtendedCodeEditor;
exports.default = exports.ExtendedCodeEditor;
//# sourceMappingURL=ExtendedCodeEditor.js.map