本文整理汇总了TypeScript中@typewriter/editor.Editor.getSelectedRange方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Editor.getSelectedRange方法的具体用法?TypeScript Editor.getSelectedRange怎么用?TypeScript Editor.getSelectedRange使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类@typewriter/editor.Editor
的用法示例。
在下文中一共展示了Editor.getSelectedRange方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: onShiftEnter
function onShiftEnter(event: KeyboardEvent) {
if (event.defaultPrevented) return;
event.preventDefault();
if (!paper.embeds.get('br')) return;
const [ from, to ] = editor.getSelectedRange();
editor.insertEmbed(from, to, 'br', true, null, SOURCE_USER);
}
示例2: onEnter
function onEnter(event: KeyboardEvent) {
if (event.defaultPrevented) return;
event.preventDefault();
let [ from, to ] = editor.getSelectedRange();
const line = editor.contents.getLine(from);
let attributes = line.attributes;
const block = paper.blocks.findByAttributes(attributes, true);
const isDefault = block === paper.blocks.getDefault();
const length = line.end - line.start - 1;
const atEnd = to === line.end - 1;
if (atEnd && !isDefault && block.defaultFollows) {
attributes = {};
} else if (typeof block.getNextLineAttributes === 'function') {
attributes = block.getNextLineAttributes(attributes);
}
const activeFormats = editor.activeFormats;
if (!length && !isDefault && !block.defaultFollows && from === to) {
editor.formatLine(from, to, {}, SOURCE_USER);
} else {
const selection = from + 1;
// Insert the newline after the current newline, not before it
if (atEnd && from === to) from = to = from + 1;
editor.insertText(from, to, '\n', attributes, SOURCE_USER, selection);
}
editor.activeFormats = activeFormats;
}
示例3: onBackspace
function onBackspace(event: KeyboardEvent) {
if (event.defaultPrevented) return;
event.preventDefault();
function flattenBlock(line, force?: boolean) {
const block = paper.blocks.findByAttributes(line.attributes, true);
if (block.indentable && line.attributes.indent) {
onTab(new CustomEvent('shortcut', { detail: 'Shift+Tab' }));
return true;
}
if (block && (force || block !== paper.blocks.getDefault() && !block.defaultFollows)) {
editor.formatLine(from, {}, SOURCE_USER);
return true;
}
}
let [ from, to ] = editor.getSelectedRange();
if (from + to === 0) {
const line = editor.contents.getLine(from);
if (flattenBlock(line, true)) return true;
} else {
// The "from" block needs to stay the same. The "to" block gets merged into it
if (from === to) {
const line = editor.contents.getLine(from);
if (from === line.start && flattenBlock(line)) {
return;
}
from--;
}
editor.deleteText(from, to, SOURCE_USER);
}
}
示例4: onDelete
function onDelete(event: KeyboardEvent) {
if (event.defaultPrevented) return;
event.preventDefault();
let [ from, to ] = editor.getSelectedRange();
if (from === to && from === editor.length) return;
if (from === to) {
to++;
}
editor.deleteText(from, to, SOURCE_USER);
}
示例5: onTab
function onTab(event: CustomEvent) {
if (event.defaultPrevented) return;
event.preventDefault();
const shortcut = event.detail;
const direction = shortcut === 'Tab' || shortcut === 'Mod+]' ? 1 : -1;
const [ from, to ] = editor.getSelectedRange();
const lines = editor.contents.getLines(from, to);
editor.transaction(() => {
lines.forEach(line => {
const block = paper.blocks.findByAttributes(line.attributes, true);
if (block.indentable) {
const indent = (line.attributes.indent || 0) + direction;
if (indent < 0) {
editor.formatLine(line.start, {});
} else {
const attributes = { ...line.attributes, indent };
editor.formatLine(line.start, attributes);
}
}
});
}, SOURCE_USER);
}
示例6: getAllBounds
/**
* Get all positions and sizes of a range as it is displayed in the DOM relative to the top left of visible document.
* This is different from `getBounds` because instead of a single bounding box you may get multiple rects such as when
* the selection is split across lines. You can use `getAllBounds` to draw a highlight behind the text within this
* range.
*
* @param {Number} from The start of the range
* @param {Number} to The end of the range
* @returns {DOMRectList} A native DOMRect object with the bounds of the range
*/
getAllBounds(from: number, to: number): DOMRectList {
let range = this.editor._normalizeRange(from, to);
range = this.editor.getSelectedRange(range);
return getAllBounds(this.root, this.paper, range);
}