@convergencelabs/ace-collab-ext

中文文档
0.6.0发布于 2021/07/11MITTypeScriptESM + CJS近 30 天下载 2568

Collaborative Extensions for the Ace Editor

原始使用文档
文档目录8 节
  1. Ace Collaborative Extensions
  2. Installation
  3. Demo
  4. Usage
  5. CSS
  6. Multi Cursor Manager
  7. Multi Selection Manager
  8. Radar View

Ace Collaborative Extensions

example workflow

Enhances the Ace Editor by adding the ability to render cues about what remote users are doing in the system.

Installation

Install package with NPM and add it to your development dependencies:

For versions >= 0.5.0 (current): npm install --save-dev @convergencelabs/ace-collab-ext

For versions <= 0.4.0 (previous): npm install --save-dev @convergence/ace-collab-ext

Demo

Go here to see a live demo of multiple cursors, multiple selections, and remote scrollbars (Visit on multiple browsers, or even better, point a friend to it too). This uses Convergence to handle the synchronization of data and user actions.

Usage

CSS

Be sure to include one of CSS files located in the css directory of the node modules:

  • css/ace-collab-ext.css
  • css/ace-collab-ext.min.css

How to do this will depend on how you are packaging and distributing your application. For example if you are bundling your css / sass / less you might be able to use an @import statement or you might require it. If you are hotlinking, you might need to at a <link> tag to your document.

If you forget to include the styles, its likely that the remote cursors / selections will either not show up, or they will not properly move.

Multi Cursor Manager

The multi cursor manager allows you to easily render the cursors of other users working in the same document. The cursor position can be represented as either a single linear index or as a 2-dimensional position in the form of {row: 0, column: 10}.

const editor = ace.edit("editor");
const curMgr = new AceCollabExt.AceMultiCursorManager(editor.getSession());

// Add a new remote cursor with an id of "uid1", and a color of orange.
curMgr.addCursor("uid1", "User 1", "orange", {row: 0, column: 10});

// Set cursor for "uid1" to index 10.
curMgr.setCursor("uid1", 10);

// Clear the remote cursor for "uid1" without removing it.
curMgr.clearCursor("uid1");

// Remove the remote cursor for "uid1".
curMgr.removeCursor("uid1");

Multi Selection Manager

The multi selection manager allows you to easily render the selection of other users working in the same document. Selection is represented by an array of AceRanges. A single range is common for normal selection, but multiple ranges are needed to support block selection.

const AceRange = ace.require("ace/range");

const editor = ace.edit("editor");
const selMgr = new AceCollabExt.AceMultiSelectionManager(editor.getSession());

// A two-line block selection
const initialRanges = [
  new AceRange(0, 0, 0, 10),
  new AceRange(1, 0, 1, 10),
];

// Add a new remote view indicator with an id of "uid1", and a color of orange.
selMgr.addSelection("uid1", "User 1", "orange", initialRanges);

// Set the selection to a new range.
selMgr.setSelection("uid1", new AceRange(10, 0, 11, 10));

// Nullify the selection without removing the marker.
selMgr.clearSelection("uid1");

// Remove the remote view indicator for "uid1".
selMgr.removeSelection("uid1");

Radar View

A radar view indicates where in a document another user is looking and allows you to easily go to the location in the document.

const editor = ace.edit("editor");
const radarView = new AceCollabExt.RadarView("radarView", editor);

// Add a new remote view indicator with an id of "uid1", and a color of orange.
radarView.addView("uid1", "user1", "orange", 0, 20, 0);

// Set the viewport range of the indicator to span rows 10 through 40.
radarView.setViewRows("uid1", 10, 40);

// Set the row location of the cursor to line 10.
radarView.setCursorRow("uid1", 10);

// Remove the remote view indicator for "uid1".
radarView.removeView("uid1");

版本与发布记录

@convergencelabs/ace-collab-ext 共发布 2 个版本,首次发布于 2020/03/15;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.6.0latest2021/07/115 年前
0.5.02020/03/156 年前

关于 @convergencelabs/ace-collab-ext 的常见问题

@convergencelabs/ace-collab-ext 是什么?

Collaborative Extensions for the Ace Editor

如何安装 @convergencelabs/ace-collab-ext?

在项目目录运行 npm install @convergencelabs/ace-collab-ext,或使用 pnpm add / yarn add / bun add。

@convergencelabs/ace-collab-ext 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@convergencelabs/ace-collab-ext 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@convergencelabs/ace-collab-ext 可以商用吗?

@convergencelabs/ace-collab-ext 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@convergencelabs/ace-collab-ext 的下载量有多少?

根据 npm 官方下载统计,@convergencelabs/ace-collab-ext 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,568 次,日均约 86 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@convergencelabs/ace-collab-ext 还在维护吗?

最新版本 0.6.0 发布于 2021/07/11(5 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/03/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。