react-simple-wysiwyg
Version:
Simple and lightweight React WYSIWYG editor
40 lines • 1.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");
var Editor_1 = require("../Editor");
exports.BtnStyles = createDropdown('Styles', [
['Normal', 'formatBlock', 'DIV'],
['𝗛𝗲𝗮𝗱𝗲𝗿 𝟭', 'formatBlock', 'H1'],
['Header 2', 'formatBlock', 'H2'],
['𝙲𝚘𝚍𝚎', 'formatBlock', 'PRE'],
]);
function createDropdown(title, items) {
DropdownFactory.displayName = title;
return Editor_1.withEditorContext(DropdownFactory);
function DropdownFactory(props) {
var selection = props.selection, ddProps = tslib_1.__rest(props, ["selection"]);
return (React.createElement(Dropdown, tslib_1.__assign({}, ddProps, { onChange: onChange, title: title, items: items })));
function onChange(e) {
var selected = parseInt(e.target.value, 10);
var _a = items[selected], command = _a[1], commandArgument = _a[2];
e.preventDefault();
e.target.selectedIndex = 0;
if (typeof command === 'function') {
command(selection);
}
else {
document.execCommand(command, false, commandArgument);
}
}
}
}
function Dropdown(props) {
var el = props.el, items = props.items, selected = props.selected, selection = props.selection, styles = props.styles, inputProps = tslib_1.__rest(props, ["el", "items", "selected", "selection", "styles"]);
var style = tslib_1.__assign({}, styles.dropdown, props.style);
return (React.createElement("select", tslib_1.__assign({}, inputProps, { value: selected, style: style }),
React.createElement("option", { hidden: true }, props.title),
items.map(function (item, index) { return (React.createElement("option", { key: index, value: index }, item[0])); })));
}
exports.Dropdown = Dropdown;
//# sourceMappingURL=dropdowns.js.map
;