Xnote adalah editor teks kaya yang tidak berkinerja tinggi, berkinerja tinggi, yang mendukung kolaborasi online multi-orang. Menyediakan fungsi pengeditan dokumen modern yang kaya.
Xnote yang mendasari bergantung pada kerangka kerja teks kaya sumber terbuka TextBus dan viewfly tampilan front-end. Karena itu, Anda dapat terus memperluas kemampuan Anda berdasarkan ini.
Demo online
npm install @textbus/xnote katex
import 'katex/dist/katex.min.css'
import { Editor } from '@textbus/xnote'
const editor = new Editor ( )
editor . mount ( document . getElementById ( 'editor' ) ) . then ( ( ) => {
console . log ( '编辑器准备完成。' )
} ) Untuk mengimplementasikan unggahan file, Anda perlu mengimplementasikan antarmuka fileuploader
import { FileUploader } from '@textbus/xnote'
class YourUploader extends FileUploader {
uploadFile ( type : string ) : string | Promise < string > {
if ( type === 'image' ) {
return 'imageUrl'
}
if ( type === 'video' ) {
return 'videoUrl'
}
}
}
const editor = new Editor ( {
providers : [ {
provide : FileUploader ,
useFactory ( ) {
return new YourFileUplader ( )
}
} ]
} ) import { Commander } from '@textbus/core'
import { Injectable } from '@viewfly/core'
import { ImageComponent } from '@textbus/xnote'
@ Injectable ( )
class YourCommander extends Commander {
paste ( slot : Slot , text : string ) {
slot . sliceContent ( ) . forEach ( content => {
if ( content instanceof ImageComponent ) {
const base64 = content . state . url
// base64 转 url,请自行实现
content . state . url = 'https://xxx.com/xxx.jpg'
}
} )
// 待图片转换完成后,可调用超类的 paste 方法
super . paste ( slot , text )
return true
}
}
const editor = new Editor ( {
providers : [ {
provide : Commander ,
useClass : YourCommander
} ]
} ) const html = editor . getHTML ( ) const editor = new Editor ( {
content : '<div>HTML 内容</div>'
} ) editor . setContent ( '<p>你好!</p>' ) Dalam dokumen, fungsi @ manusia perlu mengimplementasikan antarmuka berikut untuk terhubung ke informasi pengguna
export abstract class Organization {
abstract getMembers ( name ?: string ) : Promise < Member [ ] >
abstract atMember ( member : Member ) : void
}Kemudian lulus implementasi Anda saat editor diinisialisasi
const editor = new Editor ( {
providers : [ {
provide : Organization ,
useValue : new YourOrganization ( )
} ]
} ) TextBus secara alami mendukung kolaborasi. Anda hanya perlu menambahkan informasi konfigurasi kolaborasi ke item konfigurasi editor. Untuk konfigurasi tertentu, Anda dapat merujuk ke https://textbus.io/guide/collab/
const editor = new Editor ( {
collaborateConfig : {
userinfo : user , // 用户信息
createConnector ( yDoc ) : SyncConnector {
// 返回连接器
return new YWebsocketConnector ( 'wss://example.com' , 'docName' , yDoc )
}
}
} )