@opentiny/fluent-editor
Version:
A rich text editor based on Quill 2.0, which extends rich modules and formats on the basis of Quill. It's powerful and out-of-the-box.
114 lines (113 loc) • 3.75 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
class WebsocketProviderWrapper {
constructor({
awareness,
doc,
options,
onConnect,
onDisconnect,
onError,
onSyncChange,
deps
}) {
__publicField(this, "provider");
__publicField(this, "_isConnected", false);
__publicField(this, "_isSynced", false);
__publicField(this, "onConnect");
__publicField(this, "onDisconnect");
__publicField(this, "onError");
__publicField(this, "onSyncChange");
__publicField(this, "document");
__publicField(this, "awareness");
__publicField(this, "type");
__publicField(this, "connect", () => {
try {
this.provider.connect();
} catch (error) {
console.warn("[yjs] Error connecting WebSocket provider:", error);
}
});
__publicField(this, "destroy", () => {
try {
this.provider.destroy();
} catch (error) {
console.warn("[yjs] Error destroying WebSocket provider:", error);
}
});
__publicField(this, "disconnect", () => {
var _a;
try {
this.provider.disconnect();
const wasSynced = this._isSynced;
this._isConnected = false;
this._isSynced = false;
if (wasSynced) {
(_a = this.onSyncChange) == null ? void 0 : _a.call(this, false);
}
} catch (error) {
console.warn("[yjs] Error disconnecting WebSocket provider:", error);
}
});
this.onConnect = onConnect;
this.onDisconnect = onDisconnect;
this.onError = onError;
this.onSyncChange = onSyncChange;
const { Y, Awareness, WebsocketProvider } = deps || window;
if (!WebsocketProvider) {
throw new Error("WebsocketProvider dependency not provided");
}
this.document = doc || new Y.Doc();
this.awareness = awareness ?? new Awareness(this.document);
try {
this.provider = new WebsocketProvider(
options.serverUrl,
options.roomName,
this.document,
{
awareness: this.awareness,
...options
}
);
this.provider.on("status", (event) => {
var _a, _b, _c, _d;
const wasConnected = this._isConnected;
this._isConnected = event.status === "connected";
if (event.status === "connected") {
if (!wasConnected) {
(_a = this.onConnect) == null ? void 0 : _a.call(this);
}
if (!this._isSynced) {
this._isSynced = true;
(_b = this.onSyncChange) == null ? void 0 : _b.call(this, true);
}
} else if (event.status === "disconnected") {
if (wasConnected) {
(_c = this.onDisconnect) == null ? void 0 : _c.call(this);
if (this._isSynced) {
this._isSynced = false;
(_d = this.onSyncChange) == null ? void 0 : _d.call(this, false);
}
}
}
});
} catch (error) {
console.warn("[yjs] Error creating WebSocket provider:", error);
onError == null ? void 0 : onError(error instanceof Error ? error : new Error(String(error)));
}
}
get isConnected() {
return this._isConnected;
}
get isSynced() {
return this._isSynced;
}
getProvider() {
return this.provider;
}
}
exports.WebsocketProviderWrapper = WebsocketProviderWrapper;
//# sourceMappingURL=websocket.cjs.js.map