当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Editor.getSelectedRange方法代码示例

本文整理汇总了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);
 }
开发者ID:jacwright,项目名称:typewriter,代码行数:7,代码来源:input.ts

示例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;
    }
开发者ID:jacwright,项目名称:typewriter,代码行数:27,代码来源:input.ts

示例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);
      }
    }
开发者ID:jacwright,项目名称:typewriter,代码行数:33,代码来源:input.ts

示例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);
    }
开发者ID:jacwright,项目名称:typewriter,代码行数:12,代码来源:input.ts

示例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);
    }
开发者ID:jacwright,项目名称:typewriter,代码行数:24,代码来源:input.ts

示例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);
 }
开发者ID:jacwright,项目名称:typewriter,代码行数:15,代码来源:view.ts


注:本文中的@typewriter/editor.Editor.getSelectedRange方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。