@netless/forge-whiteboard 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +6 -1
- package/dist/Camera.d.ts.map +1 -1
- package/dist/IndexedNavigation.d.ts +1 -0
- package/dist/IndexedNavigation.d.ts.map +1 -1
- package/dist/WhitePermissions.d.ts +3 -43
- package/dist/WhitePermissions.d.ts.map +1 -1
- package/dist/Whiteboard.d.ts +14 -2
- package/dist/Whiteboard.d.ts.map +1 -1
- package/dist/WhiteboardApplication.d.ts +1 -0
- package/dist/WhiteboardApplication.d.ts.map +1 -1
- package/dist/model/PageModel.d.ts.map +1 -1
- package/dist/model/RenderableModel.d.ts +4 -2
- package/dist/model/RenderableModel.d.ts.map +1 -1
- package/dist/model/SelectElementsModel.d.ts +1 -1
- package/dist/model/SelectElementsModel.d.ts.map +1 -1
- package/dist/model/ToolbarModel.d.ts.map +1 -1
- package/dist/model/TrashedElementsModel.d.ts +1 -1
- package/dist/model/TrashedElementsModel.d.ts.map +1 -1
- package/dist/model/renderable/CurveModel.d.ts +3 -1
- package/dist/model/renderable/CurveModel.d.ts.map +1 -1
- package/dist/model/renderable/CurveModel_old.d.ts +28 -0
- package/dist/model/renderable/CurveModel_old.d.ts.map +1 -0
- package/dist/model/renderable/ElementModel.d.ts.map +1 -1
- package/dist/model/renderable/ImageModel.d.ts +20 -0
- package/dist/model/renderable/ImageModel.d.ts.map +1 -0
- package/dist/model/renderable/PointTextModel.d.ts.map +1 -1
- package/dist/tool/CurveTool.d.ts.map +1 -1
- package/dist/utils/FPS.d.ts +15 -0
- package/dist/utils/FPS.d.ts.map +1 -0
- package/dist/whiteboard.esm.js +270 -218
- package/dist/whiteboard.esm.js.map +4 -4
- package/dist/whiteboard.js +271 -219
- package/dist/whiteboard.js.map +4 -4
- package/package.json +2 -2
package/dist/whiteboard.esm.js
CHANGED
|
@@ -25362,13 +25362,14 @@ var require_lodash = __commonJS({
|
|
|
25362
25362
|
|
|
25363
25363
|
// src/WhiteboardApplication.ts
|
|
25364
25364
|
var import_paper = __toESM(require_paper_full(), 1);
|
|
25365
|
-
import { AbstractApplication, log as
|
|
25365
|
+
import { AbstractApplication, log as log4 } from "@netless/forge-room";
|
|
25366
25366
|
import * as Y15 from "yjs";
|
|
25367
25367
|
|
|
25368
25368
|
// src/model/RenderableModel.ts
|
|
25369
25369
|
import * as Y12 from "yjs";
|
|
25370
|
-
import
|
|
25370
|
+
import EventEmitter from "eventemitter3";
|
|
25371
25371
|
import { v4 as uuidv4 } from "uuid";
|
|
25372
|
+
import { log, removeObserver as removeObserver2 } from "@netless/forge-room";
|
|
25372
25373
|
|
|
25373
25374
|
// src/model/renderable/CurveModel.ts
|
|
25374
25375
|
import * as Y2 from "yjs";
|
|
@@ -25526,6 +25527,7 @@ var import_lodash = __toESM(require_lodash(), 1);
|
|
|
25526
25527
|
|
|
25527
25528
|
// src/model/renderable/ElementModel.ts
|
|
25528
25529
|
import * as Y from "yjs";
|
|
25530
|
+
import { removeDeepObserver } from "@netless/forge-room";
|
|
25529
25531
|
function _defineProperty(e, r, t) {
|
|
25530
25532
|
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
25531
25533
|
}
|
|
@@ -25710,7 +25712,7 @@ var ElementModel = class _ElementModel {
|
|
|
25710
25712
|
}
|
|
25711
25713
|
dispose() {
|
|
25712
25714
|
this.subDispose();
|
|
25713
|
-
this.root
|
|
25715
|
+
removeDeepObserver(this.root, this.handlePropChange);
|
|
25714
25716
|
}
|
|
25715
25717
|
};
|
|
25716
25718
|
_defineProperty(ElementModel, "KEYS", {
|
|
@@ -25785,12 +25787,15 @@ var CurveModel = class extends ElementModel {
|
|
|
25785
25787
|
constructor(root, scope) {
|
|
25786
25788
|
super(root, scope);
|
|
25787
25789
|
_defineProperty3(this, "item", null);
|
|
25790
|
+
_defineProperty3(this, "debugPath", void 0);
|
|
25791
|
+
_defineProperty3(this, "debug", false);
|
|
25788
25792
|
if (!this.root.has("type")) {
|
|
25789
25793
|
this.root.set("type", "curve");
|
|
25790
25794
|
}
|
|
25791
25795
|
if (!this.root.has("points")) {
|
|
25792
25796
|
this.root.set("points", new Y2.Array());
|
|
25793
25797
|
}
|
|
25798
|
+
this.debugPath = new scope.Path();
|
|
25794
25799
|
}
|
|
25795
25800
|
average(a2, b2) {
|
|
25796
25801
|
return (a2 + b2) / 2;
|
|
@@ -25799,23 +25804,23 @@ var CurveModel = class extends ElementModel {
|
|
|
25799
25804
|
const groupPoints = (0, import_lodash.chunk)(points, 2);
|
|
25800
25805
|
return ae(groupPoints, {
|
|
25801
25806
|
size: this.strokeWidth,
|
|
25802
|
-
smoothing: 0,
|
|
25803
|
-
thinning: 0.5,
|
|
25807
|
+
smoothing: 0.5,
|
|
25808
|
+
thinning: -0.5,
|
|
25804
25809
|
streamline: 0.5,
|
|
25805
25810
|
simulatePressure: true,
|
|
25806
25811
|
start: {
|
|
25807
|
-
taper: 10,
|
|
25812
|
+
taper: this.strokeWidth * 10,
|
|
25808
25813
|
cap: true
|
|
25809
25814
|
},
|
|
25810
25815
|
end: {
|
|
25811
|
-
taper:
|
|
25816
|
+
taper: this.strokeWidth * 20,
|
|
25812
25817
|
cap: true
|
|
25813
25818
|
}
|
|
25814
25819
|
});
|
|
25815
25820
|
}
|
|
25816
25821
|
matrixedPoints() {
|
|
25817
|
-
const
|
|
25818
|
-
return
|
|
25822
|
+
const currentPoints = (0, import_lodash.chunk)(this.points, 2);
|
|
25823
|
+
return currentPoints.map((_ref) => {
|
|
25819
25824
|
let [x, y] = _ref;
|
|
25820
25825
|
return new this.scope.Point(x, y);
|
|
25821
25826
|
}).map((p) => p.transform(new this.scope.Matrix(this.pointsMatrix))).reduce((result, next) => {
|
|
@@ -25849,27 +25854,41 @@ var CurveModel = class extends ElementModel {
|
|
|
25849
25854
|
}
|
|
25850
25855
|
return path;
|
|
25851
25856
|
}
|
|
25852
|
-
|
|
25853
|
-
|
|
25854
|
-
const
|
|
25855
|
-
|
|
25857
|
+
updateDebugPath() {
|
|
25858
|
+
this.debugPath = new this.scope.Path();
|
|
25859
|
+
const points = (0, import_lodash.chunk)(this.points, 2);
|
|
25860
|
+
for (let i = 0, len = points.length; i < len; i++) {
|
|
25861
|
+
const point = new this.scope.Point(points[i][0], points[i][1]);
|
|
25862
|
+
if (i === 0) {
|
|
25863
|
+
this.debugPath.moveTo(point);
|
|
25864
|
+
} else {
|
|
25865
|
+
this.debugPath.lineTo(point);
|
|
25866
|
+
}
|
|
25867
|
+
this.debugPath.strokeWidth = 1;
|
|
25868
|
+
this.debugPath.strokeColor = new this.scope.Color(1, 0, 0, 1);
|
|
25869
|
+
}
|
|
25856
25870
|
}
|
|
25857
25871
|
onVectorUpdate() {
|
|
25858
25872
|
if (!this.item) {
|
|
25859
25873
|
return;
|
|
25860
25874
|
}
|
|
25875
|
+
if (this.debug) {
|
|
25876
|
+
this.debugPath.remove();
|
|
25877
|
+
this.updateDebugPath();
|
|
25878
|
+
}
|
|
25879
|
+
const points = this.parsePoints(this.matrixedPoints());
|
|
25880
|
+
const path = this.createPath(points);
|
|
25861
25881
|
this.item.removeSegments();
|
|
25862
|
-
this.item.addSegments(
|
|
25863
|
-
this.
|
|
25882
|
+
this.item.addSegments(path.segments);
|
|
25883
|
+
if (this.debug) {
|
|
25884
|
+
this.item.addChild(this.debugPath);
|
|
25885
|
+
}
|
|
25864
25886
|
}
|
|
25865
25887
|
createPaperItem() {
|
|
25866
25888
|
this.item = new this.scope.Path();
|
|
25867
|
-
this.item.strokeCap = "round";
|
|
25868
|
-
this.item.strokeJoin = "round";
|
|
25869
|
-
this.item.strokeScaling = false;
|
|
25870
25889
|
this.item.strokeColor = new this.scope.Color(this.strokeColor);
|
|
25871
25890
|
this.item.fillColor = new this.scope.Color(this.strokeColor);
|
|
25872
|
-
this.
|
|
25891
|
+
this.onVectorUpdate();
|
|
25873
25892
|
}
|
|
25874
25893
|
editorConfig() {
|
|
25875
25894
|
return new EditorConfig();
|
|
@@ -25879,8 +25898,8 @@ var CurveModel = class extends ElementModel {
|
|
|
25879
25898
|
}
|
|
25880
25899
|
styleKeys() {
|
|
25881
25900
|
return {
|
|
25882
|
-
include: ["strokeColor"],
|
|
25883
|
-
exclude: ["
|
|
25901
|
+
include: ["strokeColor", "strokeWidth"],
|
|
25902
|
+
exclude: ["dashArray", "fillColor"]
|
|
25884
25903
|
};
|
|
25885
25904
|
}
|
|
25886
25905
|
onStyleKeyUpdate(key) {
|
|
@@ -25890,6 +25909,8 @@ var CurveModel = class extends ElementModel {
|
|
|
25890
25909
|
if (key === "strokeColor") {
|
|
25891
25910
|
this.item.strokeColor = new this.scope.Color(this.strokeColor);
|
|
25892
25911
|
this.item.fillColor = new this.scope.Color(this.strokeColor);
|
|
25912
|
+
} else if (key === "strokeWidth") {
|
|
25913
|
+
this.onVectorUpdate();
|
|
25893
25914
|
}
|
|
25894
25915
|
}
|
|
25895
25916
|
subDispose() {
|
|
@@ -26419,6 +26440,7 @@ var LineControlPoint = class {
|
|
|
26419
26440
|
|
|
26420
26441
|
// src/model/renderable/PointTextModel.ts
|
|
26421
26442
|
import * as Y6 from "yjs";
|
|
26443
|
+
import { removeObserver } from "@netless/forge-room";
|
|
26422
26444
|
function _defineProperty10(e, r, t) {
|
|
26423
26445
|
return (r = _toPropertyKey10(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
26424
26446
|
}
|
|
@@ -26488,7 +26510,7 @@ var PointTextModel = class extends ElementModel {
|
|
|
26488
26510
|
}
|
|
26489
26511
|
}
|
|
26490
26512
|
subDispose() {
|
|
26491
|
-
this.root
|
|
26513
|
+
removeObserver(this.root, this.handleTextPropChange);
|
|
26492
26514
|
}
|
|
26493
26515
|
getInternalMeasurement() {
|
|
26494
26516
|
if (!this.item) {
|
|
@@ -27135,24 +27157,7 @@ var LaserPointerModel = class extends ElementModel {
|
|
|
27135
27157
|
};
|
|
27136
27158
|
|
|
27137
27159
|
// src/WhitePermissions.ts
|
|
27138
|
-
import
|
|
27139
|
-
function _defineProperty15(e, r, t) {
|
|
27140
|
-
return (r = _toPropertyKey15(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
27141
|
-
}
|
|
27142
|
-
function _toPropertyKey15(t) {
|
|
27143
|
-
var i = _toPrimitive15(t, "string");
|
|
27144
|
-
return "symbol" == typeof i ? i : i + "";
|
|
27145
|
-
}
|
|
27146
|
-
function _toPrimitive15(t, r) {
|
|
27147
|
-
if ("object" != typeof t || !t) return t;
|
|
27148
|
-
var e = t[Symbol.toPrimitive];
|
|
27149
|
-
if (void 0 !== e) {
|
|
27150
|
-
var i = e.call(t, r || "default");
|
|
27151
|
-
if ("object" != typeof i) return i;
|
|
27152
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
27153
|
-
}
|
|
27154
|
-
return ("string" === r ? String : Number)(t);
|
|
27155
|
-
}
|
|
27160
|
+
import { AbstractApplicationPermissions } from "@netless/forge-room";
|
|
27156
27161
|
var WhiteboardPermissionFlag = function(WhiteboardPermissionFlag2) {
|
|
27157
27162
|
WhiteboardPermissionFlag2[WhiteboardPermissionFlag2["none"] = 0] = "none";
|
|
27158
27163
|
WhiteboardPermissionFlag2[WhiteboardPermissionFlag2["draw"] = 1] = "draw";
|
|
@@ -27165,59 +27170,7 @@ var WhiteboardPermissionFlag = function(WhiteboardPermissionFlag2) {
|
|
|
27165
27170
|
WhiteboardPermissionFlag2[WhiteboardPermissionFlag2["all"] = WhiteboardPermissionFlag2.draw | WhiteboardPermissionFlag2.editSelf | WhiteboardPermissionFlag2.editOthers | WhiteboardPermissionFlag2.deleteSelf | WhiteboardPermissionFlag2.deleteOthers | WhiteboardPermissionFlag2.mainView | WhiteboardPermissionFlag2.setOthersView] = "all";
|
|
27166
27171
|
return WhiteboardPermissionFlag2;
|
|
27167
27172
|
}({});
|
|
27168
|
-
var WhiteboardPermissions = class extends
|
|
27169
|
-
constructor(userManager, requestUserMap) {
|
|
27170
|
-
super();
|
|
27171
|
-
_defineProperty15(this, "requestUserMap", void 0);
|
|
27172
|
-
_defineProperty15(this, "userManager", void 0);
|
|
27173
|
-
_defineProperty15(this, "observers", /* @__PURE__ */ new Map());
|
|
27174
|
-
_defineProperty15(this, "handleUserLeave", (user) => {
|
|
27175
|
-
const cb = this.observers.get(user.id);
|
|
27176
|
-
if (cb) {
|
|
27177
|
-
this.requestUserMap(user.id).unobserve(cb);
|
|
27178
|
-
}
|
|
27179
|
-
});
|
|
27180
|
-
_defineProperty15(this, "handleUserJoin", (user) => {
|
|
27181
|
-
this.addObserve(user.id);
|
|
27182
|
-
});
|
|
27183
|
-
this.userManager = userManager;
|
|
27184
|
-
this.requestUserMap = requestUserMap;
|
|
27185
|
-
this.createModel(this.userManager.selfId);
|
|
27186
|
-
this.userManager.userIdList().forEach((userId) => {
|
|
27187
|
-
this.addObserve(userId);
|
|
27188
|
-
});
|
|
27189
|
-
this.userManager.on("join", this.handleUserJoin);
|
|
27190
|
-
this.userManager.on("leave", this.handleUserLeave);
|
|
27191
|
-
}
|
|
27192
|
-
addObserve(userId) {
|
|
27193
|
-
if (this.observers.has(userId)) {
|
|
27194
|
-
return;
|
|
27195
|
-
}
|
|
27196
|
-
const observer = (evt) => {
|
|
27197
|
-
this.handleUserPermissionChange(userId, evt);
|
|
27198
|
-
};
|
|
27199
|
-
if (this.observers.has(userId)) {
|
|
27200
|
-
this.requestUserMap(userId).unobserve(this.observers.get(userId));
|
|
27201
|
-
}
|
|
27202
|
-
this.observers.set(userId, observer);
|
|
27203
|
-
this.requestUserMap(userId).observe(observer);
|
|
27204
|
-
}
|
|
27205
|
-
createModel(userId) {
|
|
27206
|
-
const userMap = this.requestUserMap(userId);
|
|
27207
|
-
if (!userMap.has("permission")) {
|
|
27208
|
-
userMap.set("permission", 0);
|
|
27209
|
-
}
|
|
27210
|
-
}
|
|
27211
|
-
handleUserPermissionChange(userId, evt) {
|
|
27212
|
-
for (const [key, value] of evt.changes.keys.entries()) {
|
|
27213
|
-
if (key === "permission") {
|
|
27214
|
-
if (value.action === "add" || value.action === "update") {
|
|
27215
|
-
const newValue = this.requestUserMap(userId).get("permission");
|
|
27216
|
-
this.emit("change", userId, this.resolveFlags(newValue), newValue);
|
|
27217
|
-
}
|
|
27218
|
-
}
|
|
27219
|
-
}
|
|
27220
|
-
}
|
|
27173
|
+
var WhiteboardPermissions = class extends AbstractApplicationPermissions {
|
|
27221
27174
|
/**
|
|
27222
27175
|
* 解析权限列表组合
|
|
27223
27176
|
* @param {number} value - 权限数字值
|
|
@@ -27226,70 +27179,19 @@ var WhiteboardPermissions = class extends EventEmitter {
|
|
|
27226
27179
|
resolveFlags(value) {
|
|
27227
27180
|
return [WhiteboardPermissionFlag.draw, WhiteboardPermissionFlag.editSelf, WhiteboardPermissionFlag.editOthers, WhiteboardPermissionFlag.deleteSelf, WhiteboardPermissionFlag.deleteOthers, WhiteboardPermissionFlag.mainView, WhiteboardPermissionFlag.setOthersView].filter((v) => (v & value) !== 0);
|
|
27228
27181
|
}
|
|
27229
|
-
/**
|
|
27230
|
-
* 获取权限列表组合对应的数值
|
|
27231
|
-
* @param { string } userId 不传表示获取自己
|
|
27232
|
-
*/
|
|
27233
|
-
getPermissionValue(userId) {
|
|
27234
|
-
return this.requestUserMap(userId ?? this.userManager.selfId).get("permission") ?? 0;
|
|
27235
|
-
}
|
|
27236
|
-
/**
|
|
27237
|
-
* 获取权限列表
|
|
27238
|
-
* @param {string=} userId 可选, 不传表示获取自己
|
|
27239
|
-
*/
|
|
27240
|
-
getPermissionFlags(userId) {
|
|
27241
|
-
const value = this.requestUserMap(userId ?? this.userManager.selfId).get("permission") ?? 0;
|
|
27242
|
-
return this.resolveFlags(value);
|
|
27243
|
-
}
|
|
27244
|
-
/**
|
|
27245
|
-
* 返回对应 userId 是否有相应权限
|
|
27246
|
-
* @param {string=} userId 可选, 不传表示返回自己是否有相应权限
|
|
27247
|
-
* @param {WhiteboardPermissionFlag} flag
|
|
27248
|
-
*/
|
|
27249
|
-
hasPermission(flag, userId) {
|
|
27250
|
-
return ((this.requestUserMap(userId ?? this.userManager.selfId).get("permission") ?? 0) & flag) !== 0;
|
|
27251
|
-
}
|
|
27252
|
-
/**
|
|
27253
|
-
* 添加权限
|
|
27254
|
-
* @param {WhiteboardPermissionFlag} flag 权限标记
|
|
27255
|
-
* @param {string=} userId 可选, 为 userId 添加权限, 不传表示为自己添加权限
|
|
27256
|
-
*/
|
|
27257
|
-
addPermission(flag, userId) {
|
|
27258
|
-
const userMap = this.requestUserMap(userId ?? this.userManager.selfId);
|
|
27259
|
-
const oldValue = userMap.get("permission") ?? 0;
|
|
27260
|
-
this.requestUserMap(userId ?? this.userManager.selfId).set("permission", oldValue | flag);
|
|
27261
|
-
}
|
|
27262
|
-
/**
|
|
27263
|
-
* 移除权限
|
|
27264
|
-
* @param {WhiteboardPermissionFlag} flag 权限标记
|
|
27265
|
-
* @param {string=} userId 可选, 为 userId 移除权限, 不传表示为自己移除权限
|
|
27266
|
-
*/
|
|
27267
|
-
removePermission(flag, userId) {
|
|
27268
|
-
const userMap = this.requestUserMap(userId ?? this.userManager.selfId);
|
|
27269
|
-
const oldValue = userMap.get("permission") ?? 0;
|
|
27270
|
-
this.requestUserMap(userId ?? this.userManager.selfId).set("permission", oldValue & ~flag);
|
|
27271
|
-
}
|
|
27272
|
-
dispose() {
|
|
27273
|
-
this.userManager.off("join", this.handleUserJoin);
|
|
27274
|
-
this.userManager.off("leave", this.handleUserLeave);
|
|
27275
|
-
this.observers.forEach((cb, userId) => {
|
|
27276
|
-
this.requestUserMap(userId).unobserve(cb);
|
|
27277
|
-
});
|
|
27278
|
-
this.observers.clear();
|
|
27279
|
-
}
|
|
27280
27182
|
};
|
|
27281
27183
|
|
|
27282
27184
|
// src/model/renderable/StraightLineModel.ts
|
|
27283
27185
|
var import_lodash7 = __toESM(require_lodash(), 1);
|
|
27284
27186
|
import * as Y11 from "yjs";
|
|
27285
|
-
function
|
|
27286
|
-
return (r =
|
|
27187
|
+
function _defineProperty15(e, r, t) {
|
|
27188
|
+
return (r = _toPropertyKey15(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
27287
27189
|
}
|
|
27288
|
-
function
|
|
27289
|
-
var i =
|
|
27190
|
+
function _toPropertyKey15(t) {
|
|
27191
|
+
var i = _toPrimitive15(t, "string");
|
|
27290
27192
|
return "symbol" == typeof i ? i : i + "";
|
|
27291
27193
|
}
|
|
27292
|
-
function
|
|
27194
|
+
function _toPrimitive15(t, r) {
|
|
27293
27195
|
if ("object" != typeof t || !t) return t;
|
|
27294
27196
|
var e = t[Symbol.toPrimitive];
|
|
27295
27197
|
if (void 0 !== e) {
|
|
@@ -27302,7 +27204,7 @@ function _toPrimitive16(t, r) {
|
|
|
27302
27204
|
var StraightLineModel = class extends ElementModel {
|
|
27303
27205
|
constructor(root, scope) {
|
|
27304
27206
|
super(root, scope);
|
|
27305
|
-
|
|
27207
|
+
_defineProperty15(this, "item", null);
|
|
27306
27208
|
if (!this.root.has("type")) {
|
|
27307
27209
|
this.root.set("type", "line");
|
|
27308
27210
|
}
|
|
@@ -27395,6 +27297,83 @@ var StraightLineModel = class extends ElementModel {
|
|
|
27395
27297
|
}
|
|
27396
27298
|
};
|
|
27397
27299
|
|
|
27300
|
+
// src/model/renderable/ImageModel.ts
|
|
27301
|
+
function _defineProperty16(e, r, t) {
|
|
27302
|
+
return (r = _toPropertyKey16(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
27303
|
+
}
|
|
27304
|
+
function _toPropertyKey16(t) {
|
|
27305
|
+
var i = _toPrimitive16(t, "string");
|
|
27306
|
+
return "symbol" == typeof i ? i : i + "";
|
|
27307
|
+
}
|
|
27308
|
+
function _toPrimitive16(t, r) {
|
|
27309
|
+
if ("object" != typeof t || !t) return t;
|
|
27310
|
+
var e = t[Symbol.toPrimitive];
|
|
27311
|
+
if (void 0 !== e) {
|
|
27312
|
+
var i = e.call(t, r || "default");
|
|
27313
|
+
if ("object" != typeof i) return i;
|
|
27314
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
27315
|
+
}
|
|
27316
|
+
return ("string" === r ? String : Number)(t);
|
|
27317
|
+
}
|
|
27318
|
+
var ImageModel = class extends ElementModel {
|
|
27319
|
+
get src() {
|
|
27320
|
+
return this.root.get("src");
|
|
27321
|
+
}
|
|
27322
|
+
constructor(root, scope, imageSets) {
|
|
27323
|
+
super(root, scope);
|
|
27324
|
+
_defineProperty16(this, "item", null);
|
|
27325
|
+
_defineProperty16(this, "imageSets", void 0);
|
|
27326
|
+
this.imageSets = imageSets;
|
|
27327
|
+
if (!this.root.has("type")) {
|
|
27328
|
+
this.root.set("type", "image");
|
|
27329
|
+
}
|
|
27330
|
+
this.root.set(ElementModel.KEYS.shadow, "");
|
|
27331
|
+
}
|
|
27332
|
+
subDispose() {
|
|
27333
|
+
const img = this.imageSets.querySelector(`[id='${this.uuid}']`);
|
|
27334
|
+
if (img) {
|
|
27335
|
+
img.remove();
|
|
27336
|
+
}
|
|
27337
|
+
}
|
|
27338
|
+
createPaperItem() {
|
|
27339
|
+
if (this.item) {
|
|
27340
|
+
return;
|
|
27341
|
+
}
|
|
27342
|
+
if (!this.imageSets.querySelector(`[id='${this.uuid}']`)) {
|
|
27343
|
+
const img = document.createElement("img");
|
|
27344
|
+
img.src = this.src;
|
|
27345
|
+
img.id = this.uuid;
|
|
27346
|
+
this.imageSets.appendChild(img);
|
|
27347
|
+
}
|
|
27348
|
+
this.item = new this.scope.Raster(this.uuid);
|
|
27349
|
+
const matrix = new this.scope.Matrix(this.pointsMatrix);
|
|
27350
|
+
this.item.matrix = matrix;
|
|
27351
|
+
}
|
|
27352
|
+
onVectorUpdate() {
|
|
27353
|
+
const matrix = new this.scope.Matrix(this.pointsMatrix);
|
|
27354
|
+
if (this.item) {
|
|
27355
|
+
this.item.matrix = matrix;
|
|
27356
|
+
}
|
|
27357
|
+
}
|
|
27358
|
+
vectorKeys() {
|
|
27359
|
+
return [];
|
|
27360
|
+
}
|
|
27361
|
+
styleKeys() {
|
|
27362
|
+
return {
|
|
27363
|
+
include: [],
|
|
27364
|
+
exclude: ["dashArray", "strokeColor", "fillColor", "strokeWidth"]
|
|
27365
|
+
};
|
|
27366
|
+
}
|
|
27367
|
+
onStyleKeyUpdate(_key) {
|
|
27368
|
+
}
|
|
27369
|
+
editorConfig() {
|
|
27370
|
+
const cfg = new EditorConfig();
|
|
27371
|
+
cfg.resizeModel = () => "four-corner";
|
|
27372
|
+
cfg.uniformScale = () => true;
|
|
27373
|
+
return cfg;
|
|
27374
|
+
}
|
|
27375
|
+
};
|
|
27376
|
+
|
|
27398
27377
|
// src/model/RenderableModel.ts
|
|
27399
27378
|
function _defineProperty17(e, r, t) {
|
|
27400
27379
|
return (r = _toPropertyKey17(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
@@ -27413,11 +27392,11 @@ function _toPrimitive17(t, r) {
|
|
|
27413
27392
|
}
|
|
27414
27393
|
return ("string" === r ? String : Number)(t);
|
|
27415
27394
|
}
|
|
27416
|
-
var RenderableModel = class extends
|
|
27395
|
+
var RenderableModel = class extends EventEmitter {
|
|
27417
27396
|
get uuid() {
|
|
27418
|
-
return uuidv4();
|
|
27397
|
+
return uuidv4().replace(/-/g, "");
|
|
27419
27398
|
}
|
|
27420
|
-
constructor(layerId, shadowEmitter, elements, scope, toolbarModel, userManager, hasPermission) {
|
|
27399
|
+
constructor(layerId, shadowEmitter, elements, scope, toolbarModel, userManager, imageSets, hasPermission) {
|
|
27421
27400
|
super();
|
|
27422
27401
|
_defineProperty17(this, "scope", void 0);
|
|
27423
27402
|
_defineProperty17(this, "toolbarModel", void 0);
|
|
@@ -27428,6 +27407,7 @@ var RenderableModel = class extends EventEmitter2 {
|
|
|
27428
27407
|
_defineProperty17(this, "maxIndex", -1);
|
|
27429
27408
|
_defineProperty17(this, "hasPermission", void 0);
|
|
27430
27409
|
_defineProperty17(this, "shadowEmitter", void 0);
|
|
27410
|
+
_defineProperty17(this, "imageSets", void 0);
|
|
27431
27411
|
_defineProperty17(this, "onElementsChange", (event) => {
|
|
27432
27412
|
for (const [key, value] of event.changes.keys.entries()) {
|
|
27433
27413
|
if (value.action === "add") {
|
|
@@ -27443,6 +27423,7 @@ var RenderableModel = class extends EventEmitter2 {
|
|
|
27443
27423
|
}
|
|
27444
27424
|
}
|
|
27445
27425
|
});
|
|
27426
|
+
this.imageSets = imageSets;
|
|
27446
27427
|
this.hasPermission = hasPermission;
|
|
27447
27428
|
this.shadowEmitter = shadowEmitter;
|
|
27448
27429
|
this.layerId = layerId;
|
|
@@ -27502,6 +27483,8 @@ var RenderableModel = class extends EventEmitter2 {
|
|
|
27502
27483
|
model = new LaserPointerModel(this.userManager.selfId, yMap, this.scope, (uuid) => {
|
|
27503
27484
|
this.removeElementItem(uuid);
|
|
27504
27485
|
});
|
|
27486
|
+
} else if (type === "image") {
|
|
27487
|
+
model = new ImageModel(yMap, this.scope, this.imageSets);
|
|
27505
27488
|
}
|
|
27506
27489
|
if (model) {
|
|
27507
27490
|
model.shadowEmitter = this.shadowEmitter;
|
|
@@ -27534,10 +27517,26 @@ var RenderableModel = class extends EventEmitter2 {
|
|
|
27534
27517
|
confirmPermission() {
|
|
27535
27518
|
const hasPermission = this.hasPermission(WhiteboardPermissionFlag.draw);
|
|
27536
27519
|
if (!hasPermission) {
|
|
27537
|
-
|
|
27520
|
+
log("[@netless/forge-whiteboard] no permission to draw", {}, "warning");
|
|
27538
27521
|
}
|
|
27539
27522
|
return hasPermission;
|
|
27540
27523
|
}
|
|
27524
|
+
createImage(src) {
|
|
27525
|
+
if (!this.confirmPermission()) {
|
|
27526
|
+
return;
|
|
27527
|
+
}
|
|
27528
|
+
const model = new ImageModel(new Y12.Map(), this.scope, this.imageSets);
|
|
27529
|
+
model.root.set("src", src);
|
|
27530
|
+
const initMatrix = new this.scope.Matrix();
|
|
27531
|
+
const center = this.scope.project.view.center;
|
|
27532
|
+
initMatrix.translate({
|
|
27533
|
+
x: center.x,
|
|
27534
|
+
y: center.y
|
|
27535
|
+
});
|
|
27536
|
+
model.appendPointsMatrix(initMatrix);
|
|
27537
|
+
model.ownerId = this.userManager.selfId;
|
|
27538
|
+
this.addElementToDoc(model.root);
|
|
27539
|
+
}
|
|
27541
27540
|
createCurve() {
|
|
27542
27541
|
let shadow = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
|
27543
27542
|
if (!this.confirmPermission()) {
|
|
@@ -27664,7 +27663,7 @@ var RenderableModel = class extends EventEmitter2 {
|
|
|
27664
27663
|
});
|
|
27665
27664
|
}
|
|
27666
27665
|
dispose() {
|
|
27667
|
-
this.elements
|
|
27666
|
+
removeObserver2(this.elements, this.onElementsChange);
|
|
27668
27667
|
this.elements.clear();
|
|
27669
27668
|
Array.from(this.elementModels.values()).forEach((model) => {
|
|
27670
27669
|
model.dispose();
|
|
@@ -27977,9 +27976,24 @@ var CurveTool = class extends WhiteboardTool {
|
|
|
27977
27976
|
if (this.pointCount > 1024) {
|
|
27978
27977
|
return;
|
|
27979
27978
|
}
|
|
27979
|
+
const MIN_DISTANCE = 4;
|
|
27980
27980
|
if (this.elementModel) {
|
|
27981
|
-
this.
|
|
27982
|
-
|
|
27981
|
+
const len = this.elementModel.points.length;
|
|
27982
|
+
let last = {
|
|
27983
|
+
x: 0,
|
|
27984
|
+
y: 0
|
|
27985
|
+
};
|
|
27986
|
+
if (len >= 2) {
|
|
27987
|
+
last = {
|
|
27988
|
+
x: this.elementModel.points[len - 2],
|
|
27989
|
+
y: this.elementModel.points[len - 1]
|
|
27990
|
+
};
|
|
27991
|
+
}
|
|
27992
|
+
const dist = Math.max(Math.abs(last.x - event.point.x), Math.abs(last.y - event.point.y));
|
|
27993
|
+
if (dist >= MIN_DISTANCE) {
|
|
27994
|
+
this.pointCount += 1;
|
|
27995
|
+
this.elementModel.appendPoints([Math.round(event.point.x), Math.round(event.point.y)]);
|
|
27996
|
+
}
|
|
27983
27997
|
}
|
|
27984
27998
|
}
|
|
27985
27999
|
onMouseUp(event) {
|
|
@@ -28065,7 +28079,8 @@ var RectangleTool = class extends WhiteboardTool {
|
|
|
28065
28079
|
};
|
|
28066
28080
|
|
|
28067
28081
|
// src/model/ToolbarModel.ts
|
|
28068
|
-
import
|
|
28082
|
+
import EventEmitter2 from "eventemitter3";
|
|
28083
|
+
import { removeObserver as removeObserver3 } from "@netless/forge-room";
|
|
28069
28084
|
function _defineProperty21(e, r, t) {
|
|
28070
28085
|
return (r = _toPropertyKey21(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
28071
28086
|
}
|
|
@@ -28092,7 +28107,7 @@ var TOOLBAR_KEYS = {
|
|
|
28092
28107
|
strokeWidth: "strokeWidth",
|
|
28093
28108
|
dashArray: "dashArray"
|
|
28094
28109
|
};
|
|
28095
|
-
var ToolbarModel = class extends
|
|
28110
|
+
var ToolbarModel = class extends EventEmitter2 {
|
|
28096
28111
|
get currentTool() {
|
|
28097
28112
|
return this.root.get(TOOLBAR_KEYS.tool);
|
|
28098
28113
|
}
|
|
@@ -28162,7 +28177,7 @@ var ToolbarModel = class extends EventEmitter3 {
|
|
|
28162
28177
|
});
|
|
28163
28178
|
}
|
|
28164
28179
|
dispose() {
|
|
28165
|
-
this.root
|
|
28180
|
+
removeObserver3(this.root, this.handleRootUpdate);
|
|
28166
28181
|
this.removeAllListeners();
|
|
28167
28182
|
}
|
|
28168
28183
|
};
|
|
@@ -28250,7 +28265,8 @@ var SelectorTool = class extends WhiteboardTool {
|
|
|
28250
28265
|
|
|
28251
28266
|
// src/model/SelectElementsModel.ts
|
|
28252
28267
|
import * as Y13 from "yjs";
|
|
28253
|
-
import
|
|
28268
|
+
import EventEmitter3 from "eventemitter3";
|
|
28269
|
+
import { removeDeepObserver as removeDeepObserver2 } from "@netless/forge-room";
|
|
28254
28270
|
|
|
28255
28271
|
// src/WhiteboardKeys.ts
|
|
28256
28272
|
var WhiteboardKeys = {
|
|
@@ -28281,7 +28297,7 @@ function _toPrimitive23(t, r) {
|
|
|
28281
28297
|
}
|
|
28282
28298
|
return ("string" === r ? String : Number)(t);
|
|
28283
28299
|
}
|
|
28284
|
-
var SelectElementsModel = class extends
|
|
28300
|
+
var SelectElementsModel = class extends EventEmitter3 {
|
|
28285
28301
|
get hasEditSelfPermission() {
|
|
28286
28302
|
return this.hasPermission(WhiteboardPermissionFlag.editSelf);
|
|
28287
28303
|
}
|
|
@@ -28297,7 +28313,7 @@ var SelectElementsModel = class extends EventEmitter4 {
|
|
|
28297
28313
|
_defineProperty23(this, "handleUserLeave", (user) => {
|
|
28298
28314
|
const cb = this.observers.get(user.id);
|
|
28299
28315
|
if (cb) {
|
|
28300
|
-
this.requestUserMap(user.id)
|
|
28316
|
+
removeDeepObserver2(this.requestUserMap(user.id), cb);
|
|
28301
28317
|
this.observers.delete(user.id);
|
|
28302
28318
|
}
|
|
28303
28319
|
});
|
|
@@ -28306,7 +28322,7 @@ var SelectElementsModel = class extends EventEmitter4 {
|
|
|
28306
28322
|
this.handleUserSelectElementsChange(user.id, evts);
|
|
28307
28323
|
};
|
|
28308
28324
|
if (this.observers.has(user.id)) {
|
|
28309
|
-
this.requestUserMap(user.id)
|
|
28325
|
+
removeDeepObserver2(this.requestUserMap(user.id), this.observers.get(user.id));
|
|
28310
28326
|
}
|
|
28311
28327
|
this.requestUserMap(user.id).observeDeep(observer);
|
|
28312
28328
|
this.observers.set(user.id, observer);
|
|
@@ -28328,7 +28344,7 @@ var SelectElementsModel = class extends EventEmitter4 {
|
|
|
28328
28344
|
this.handleUserSelectElementsChange(userId, evts);
|
|
28329
28345
|
};
|
|
28330
28346
|
if (this.observers.has(userId)) {
|
|
28331
|
-
this.requestUserMap(userId)
|
|
28347
|
+
removeDeepObserver2(this.requestUserMap(userId), this.observers.get(userId));
|
|
28332
28348
|
}
|
|
28333
28349
|
this.requestUserMap(userId).observeDeep(observer);
|
|
28334
28350
|
this.observers.set(userId, observer);
|
|
@@ -28385,7 +28401,7 @@ var SelectElementsModel = class extends EventEmitter4 {
|
|
|
28385
28401
|
}
|
|
28386
28402
|
dispose() {
|
|
28387
28403
|
for (const [key, value] of this.observers.entries()) {
|
|
28388
|
-
this.requestUserMap(key)
|
|
28404
|
+
removeDeepObserver2(this.requestUserMap(key), value);
|
|
28389
28405
|
}
|
|
28390
28406
|
this.observers.clear();
|
|
28391
28407
|
this.userManager.off("leave", this.handleUserLeave);
|
|
@@ -28394,10 +28410,10 @@ var SelectElementsModel = class extends EventEmitter4 {
|
|
|
28394
28410
|
};
|
|
28395
28411
|
|
|
28396
28412
|
// src/edit/Editor.ts
|
|
28397
|
-
import
|
|
28413
|
+
import EventEmitter5 from "eventemitter3";
|
|
28398
28414
|
|
|
28399
28415
|
// src/edit/TextEditor.ts
|
|
28400
|
-
import { EventEmitter as
|
|
28416
|
+
import { EventEmitter as EventEmitter4 } from "eventemitter3";
|
|
28401
28417
|
function _defineProperty24(e, r, t) {
|
|
28402
28418
|
return (r = _toPropertyKey24(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
28403
28419
|
}
|
|
@@ -28415,7 +28431,7 @@ function _toPrimitive24(t, r) {
|
|
|
28415
28431
|
}
|
|
28416
28432
|
return ("string" === r ? String : Number)(t);
|
|
28417
28433
|
}
|
|
28418
|
-
var TextEditor = class extends
|
|
28434
|
+
var TextEditor = class extends EventEmitter4 {
|
|
28419
28435
|
constructor(camera) {
|
|
28420
28436
|
super();
|
|
28421
28437
|
_defineProperty24(this, "rootView", void 0);
|
|
@@ -28558,7 +28574,7 @@ var ANCHOR_STYLE = {
|
|
|
28558
28574
|
b: "cursor:s-resize;bottom:-3px;left:50%;translate:-50%;",
|
|
28559
28575
|
br: "cursor:se-resize;bottom:-3px;right:-3px"
|
|
28560
28576
|
};
|
|
28561
|
-
var Bounds = class extends
|
|
28577
|
+
var Bounds = class extends EventEmitter5 {
|
|
28562
28578
|
get width() {
|
|
28563
28579
|
return this.maxX - this.minX;
|
|
28564
28580
|
}
|
|
@@ -28697,7 +28713,7 @@ var Bounds = class extends EventEmitter6 {
|
|
|
28697
28713
|
this.maxY = maxY;
|
|
28698
28714
|
}
|
|
28699
28715
|
};
|
|
28700
|
-
var Editor = class extends
|
|
28716
|
+
var Editor = class extends EventEmitter5 {
|
|
28701
28717
|
constructor(scope, shadowScope, shadowEmitter, canvasElement, camera, initConfig) {
|
|
28702
28718
|
super();
|
|
28703
28719
|
_defineProperty25(this, "rootView", void 0);
|
|
@@ -28900,7 +28916,7 @@ var Editor = class extends EventEmitter6 {
|
|
|
28900
28916
|
this.ctrlId = initConfig.ctrlId;
|
|
28901
28917
|
this.ctrlNickName = initConfig.ctrlNickName;
|
|
28902
28918
|
this.rootView = document.createElement("div");
|
|
28903
|
-
this.rootView.style.cssText = "position:absolute;display:none;width:100%;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);";
|
|
28919
|
+
this.rootView.style.cssText = "overflow:hidden;position:absolute;display:none;width:100%;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);";
|
|
28904
28920
|
this.frame = document.createElement("div");
|
|
28905
28921
|
this.frame.style.position = "absolute";
|
|
28906
28922
|
this.frame.style.padding = "8px";
|
|
@@ -29209,10 +29225,10 @@ var TextTool = class extends WhiteboardTool {
|
|
|
29209
29225
|
};
|
|
29210
29226
|
|
|
29211
29227
|
// src/Camera.ts
|
|
29212
|
-
import
|
|
29228
|
+
import EventEmitter7 from "eventemitter3";
|
|
29213
29229
|
|
|
29214
29230
|
// src/Gesture.ts
|
|
29215
|
-
import
|
|
29231
|
+
import EventEmitter6 from "eventemitter3";
|
|
29216
29232
|
function _defineProperty27(e, r, t) {
|
|
29217
29233
|
return (r = _toPropertyKey27(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
29218
29234
|
}
|
|
@@ -29230,7 +29246,7 @@ function _toPrimitive27(t, r) {
|
|
|
29230
29246
|
}
|
|
29231
29247
|
return ("string" === r ? String : Number)(t);
|
|
29232
29248
|
}
|
|
29233
|
-
var Gesture = class extends
|
|
29249
|
+
var Gesture = class extends EventEmitter6 {
|
|
29234
29250
|
constructor(element, scope) {
|
|
29235
29251
|
super();
|
|
29236
29252
|
_defineProperty27(this, "element", void 0);
|
|
@@ -29294,6 +29310,7 @@ var Gesture = class extends EventEmitter7 {
|
|
|
29294
29310
|
};
|
|
29295
29311
|
|
|
29296
29312
|
// src/Camera.ts
|
|
29313
|
+
import { removeObserver as removeObserver4 } from "@netless/forge-room";
|
|
29297
29314
|
function _defineProperty28(e, r, t) {
|
|
29298
29315
|
return (r = _toPropertyKey28(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
29299
29316
|
}
|
|
@@ -29311,7 +29328,7 @@ function _toPrimitive28(t, r) {
|
|
|
29311
29328
|
}
|
|
29312
29329
|
return ("string" === r ? String : Number)(t);
|
|
29313
29330
|
}
|
|
29314
|
-
var Camera = class extends
|
|
29331
|
+
var Camera = class extends EventEmitter7 {
|
|
29315
29332
|
get inherentMatrix() {
|
|
29316
29333
|
const inherentMatrix = new this.scope.Matrix();
|
|
29317
29334
|
inherentMatrix.scale(this.inherentScale, [0, 0]);
|
|
@@ -29367,7 +29384,7 @@ var Camera = class extends EventEmitter8 {
|
|
|
29367
29384
|
_defineProperty28(this, "handleUserLeave", (user) => {
|
|
29368
29385
|
const cb = this.observers.get(user.id);
|
|
29369
29386
|
if (cb) {
|
|
29370
|
-
this.requestUserMap(user.id)
|
|
29387
|
+
removeObserver4(this.requestUserMap(user.id), cb);
|
|
29371
29388
|
}
|
|
29372
29389
|
});
|
|
29373
29390
|
_defineProperty28(this, "handleUserJoin", (user) => {
|
|
@@ -29375,7 +29392,7 @@ var Camera = class extends EventEmitter8 {
|
|
|
29375
29392
|
this.handleViewMatrixUpdate(user.id, evt);
|
|
29376
29393
|
};
|
|
29377
29394
|
if (this.observers.has(user.id)) {
|
|
29378
|
-
this.requestUserMap(user.id)
|
|
29395
|
+
removeObserver4(this.requestUserMap(user.id), observer);
|
|
29379
29396
|
}
|
|
29380
29397
|
this.requestUserMap(user.id).observe(observer);
|
|
29381
29398
|
this.observers.set(user.id, observer);
|
|
@@ -29482,7 +29499,7 @@ var Camera = class extends EventEmitter8 {
|
|
|
29482
29499
|
this.handleViewMatrixUpdate(userId, evt);
|
|
29483
29500
|
};
|
|
29484
29501
|
if (this.observers.has(userId)) {
|
|
29485
|
-
this.requestUserMap(userId)
|
|
29502
|
+
removeObserver4(this.requestUserMap(userId), observer);
|
|
29486
29503
|
}
|
|
29487
29504
|
this.requestUserMap(userId).observe(observer);
|
|
29488
29505
|
this.observers.set(userId, observer);
|
|
@@ -29679,10 +29696,10 @@ var Camera = class extends EventEmitter8 {
|
|
|
29679
29696
|
Array.from(this.observers.keys()).forEach((userId) => {
|
|
29680
29697
|
const cb = this.observers.get(userId);
|
|
29681
29698
|
if (cb) {
|
|
29682
|
-
this.requestUserMap(userId)
|
|
29699
|
+
removeObserver4(this.requestUserMap(userId), cb);
|
|
29683
29700
|
}
|
|
29684
29701
|
});
|
|
29685
|
-
this.whiteboardAttrsMap
|
|
29702
|
+
removeObserver4(this.whiteboardAttrsMap, this.handleMainCameraChange);
|
|
29686
29703
|
this.userManager.off("join", this.handleUserJoin);
|
|
29687
29704
|
this.userManager.off("leave", this.handleUserLeave);
|
|
29688
29705
|
this.gesture.removeAllListeners();
|
|
@@ -29795,7 +29812,7 @@ var TriangleTool = class extends WhiteboardTool {
|
|
|
29795
29812
|
};
|
|
29796
29813
|
|
|
29797
29814
|
// src/Whiteboard.ts
|
|
29798
|
-
import
|
|
29815
|
+
import EventEmitter8 from "eventemitter3";
|
|
29799
29816
|
function _defineProperty31(e, r, t) {
|
|
29800
29817
|
return (r = _toPropertyKey31(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
29801
29818
|
}
|
|
@@ -29813,8 +29830,7 @@ function _toPrimitive31(t, r) {
|
|
|
29813
29830
|
}
|
|
29814
29831
|
return ("string" === r ? String : Number)(t);
|
|
29815
29832
|
}
|
|
29816
|
-
var Whiteboard = class extends
|
|
29817
|
-
// public insertImage!: (src: string) => void;
|
|
29833
|
+
var Whiteboard = class extends EventEmitter8 {
|
|
29818
29834
|
constructor(view) {
|
|
29819
29835
|
super();
|
|
29820
29836
|
_defineProperty31(this, "view", void 0);
|
|
@@ -29833,6 +29849,7 @@ var Whiteboard = class extends EventEmitter9 {
|
|
|
29833
29849
|
_defineProperty31(this, "enableCameraBoundaryHighlight", void 0);
|
|
29834
29850
|
_defineProperty31(this, "getElementAttribute", void 0);
|
|
29835
29851
|
_defineProperty31(this, "setElementAttribute", void 0);
|
|
29852
|
+
_defineProperty31(this, "removeElement", void 0);
|
|
29836
29853
|
_defineProperty31(this, "getCurrentTool", void 0);
|
|
29837
29854
|
_defineProperty31(this, "setCurrentTool", void 0);
|
|
29838
29855
|
_defineProperty31(this, "setCanvasBackgroundColor", void 0);
|
|
@@ -29859,6 +29876,7 @@ var Whiteboard = class extends EventEmitter9 {
|
|
|
29859
29876
|
_defineProperty31(this, "rasterizeElementsBounds", void 0);
|
|
29860
29877
|
_defineProperty31(this, "rasterizeMaxBounds", void 0);
|
|
29861
29878
|
_defineProperty31(this, "setInputType", void 0);
|
|
29879
|
+
_defineProperty31(this, "insertImage", void 0);
|
|
29862
29880
|
this.view = view;
|
|
29863
29881
|
}
|
|
29864
29882
|
};
|
|
@@ -29926,7 +29944,8 @@ var EraserTool = class extends WhiteboardTool {
|
|
|
29926
29944
|
|
|
29927
29945
|
// src/model/TrashedElementsModel.ts
|
|
29928
29946
|
import * as Y14 from "yjs";
|
|
29929
|
-
import
|
|
29947
|
+
import EventEmitter9 from "eventemitter3";
|
|
29948
|
+
import { removeDeepObserver as removeDeepObserver3 } from "@netless/forge-room";
|
|
29930
29949
|
function _defineProperty33(e, r, t) {
|
|
29931
29950
|
return (r = _toPropertyKey33(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
29932
29951
|
}
|
|
@@ -29944,7 +29963,7 @@ function _toPrimitive33(t, r) {
|
|
|
29944
29963
|
}
|
|
29945
29964
|
return ("string" === r ? String : Number)(t);
|
|
29946
29965
|
}
|
|
29947
|
-
var TrashedElementsModel = class extends
|
|
29966
|
+
var TrashedElementsModel = class extends EventEmitter9 {
|
|
29948
29967
|
get hasDeleteSelfPermission() {
|
|
29949
29968
|
return this.hasPermission(WhiteboardPermissionFlag.deleteSelf);
|
|
29950
29969
|
}
|
|
@@ -29960,7 +29979,7 @@ var TrashedElementsModel = class extends EventEmitter10 {
|
|
|
29960
29979
|
_defineProperty33(this, "handleUserLeave", (user) => {
|
|
29961
29980
|
const cb = this.observers.get(user.id);
|
|
29962
29981
|
if (cb) {
|
|
29963
|
-
this.requestUserMap(user.id)
|
|
29982
|
+
removeDeepObserver3(this.requestUserMap(user.id), cb);
|
|
29964
29983
|
}
|
|
29965
29984
|
});
|
|
29966
29985
|
_defineProperty33(this, "handleUserJoin", (user) => {
|
|
@@ -29968,7 +29987,7 @@ var TrashedElementsModel = class extends EventEmitter10 {
|
|
|
29968
29987
|
this.handleUserTrashElementsChange(user.id, evts);
|
|
29969
29988
|
};
|
|
29970
29989
|
if (this.observers.has(user.id)) {
|
|
29971
|
-
this.requestUserMap(user.id)
|
|
29990
|
+
removeDeepObserver3(this.requestUserMap(user.id), this.observers.get(user.id));
|
|
29972
29991
|
}
|
|
29973
29992
|
this.requestUserMap(user.id).observeDeep(observer);
|
|
29974
29993
|
this.observers.set(user.id, observer);
|
|
@@ -29982,7 +30001,7 @@ var TrashedElementsModel = class extends EventEmitter10 {
|
|
|
29982
30001
|
this.handleUserTrashElementsChange(userId, evts);
|
|
29983
30002
|
};
|
|
29984
30003
|
if (this.observers.has(userId)) {
|
|
29985
|
-
this.requestUserMap(userId)
|
|
30004
|
+
removeDeepObserver3(this.requestUserMap(userId), userId);
|
|
29986
30005
|
}
|
|
29987
30006
|
this.requestUserMap(userId).observeDeep(observer);
|
|
29988
30007
|
this.observers.set(userId, observer);
|
|
@@ -30039,7 +30058,7 @@ var TrashedElementsModel = class extends EventEmitter10 {
|
|
|
30039
30058
|
}
|
|
30040
30059
|
dispose() {
|
|
30041
30060
|
for (const [key, value] of this.observers.entries()) {
|
|
30042
|
-
this.requestUserMap(key)
|
|
30061
|
+
removeDeepObserver3(this.requestUserMap(key), value);
|
|
30043
30062
|
}
|
|
30044
30063
|
this.observers.clear();
|
|
30045
30064
|
this.userManager.off("leave", this.handleUserLeave);
|
|
@@ -30096,8 +30115,8 @@ var LaserPointerTool = class extends WhiteboardTool {
|
|
|
30096
30115
|
};
|
|
30097
30116
|
|
|
30098
30117
|
// src/model/PageModel.ts
|
|
30099
|
-
import
|
|
30100
|
-
import { log } from "@netless/forge-room";
|
|
30118
|
+
import EventEmitter10 from "eventemitter3";
|
|
30119
|
+
import { log as log2, removeObserver as removeObserver5 } from "@netless/forge-room";
|
|
30101
30120
|
function _defineProperty35(e, r, t) {
|
|
30102
30121
|
return (r = _toPropertyKey35(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
30103
30122
|
}
|
|
@@ -30115,7 +30134,7 @@ function _toPrimitive35(t, r) {
|
|
|
30115
30134
|
}
|
|
30116
30135
|
return ("string" === r ? String : Number)(t);
|
|
30117
30136
|
}
|
|
30118
|
-
var PageModel = class extends
|
|
30137
|
+
var PageModel = class extends EventEmitter10 {
|
|
30119
30138
|
constructor(whiteboardAttrsMap, userManager, requestUserMap, pageMap, hasPermission) {
|
|
30120
30139
|
super();
|
|
30121
30140
|
_defineProperty35(this, "whiteboardAttrsMap", void 0);
|
|
@@ -30127,7 +30146,7 @@ var PageModel = class extends EventEmitter11 {
|
|
|
30127
30146
|
_defineProperty35(this, "handleUserLeave", (user) => {
|
|
30128
30147
|
const cb = this.observers.get(user.id);
|
|
30129
30148
|
if (cb) {
|
|
30130
|
-
this.requestUserMap(user.id)
|
|
30149
|
+
removeObserver5(this.requestUserMap(user.id), cb);
|
|
30131
30150
|
}
|
|
30132
30151
|
});
|
|
30133
30152
|
_defineProperty35(this, "handleUserJoin", (user) => {
|
|
@@ -30141,7 +30160,7 @@ var PageModel = class extends EventEmitter11 {
|
|
|
30141
30160
|
if (cameraMode === "main") {
|
|
30142
30161
|
const targetPage = this.whiteboardAttrsMap.get(WhiteboardKeys.currentPage);
|
|
30143
30162
|
if (!this.pageMap.has(targetPage) && targetPage !== "_i_") {
|
|
30144
|
-
|
|
30163
|
+
log2(`main page {${targetPage}} not found.`, {}, "error");
|
|
30145
30164
|
return;
|
|
30146
30165
|
}
|
|
30147
30166
|
this.requestUserMap(this.userManager.selfId).set(WhiteboardKeys.currentPage, targetPage);
|
|
@@ -30269,12 +30288,12 @@ var PageModel = class extends EventEmitter11 {
|
|
|
30269
30288
|
dispose() {
|
|
30270
30289
|
for (const entry of this.observers.entries()) {
|
|
30271
30290
|
const [userId, observer] = entry;
|
|
30272
|
-
this.requestUserMap(userId)
|
|
30291
|
+
removeObserver5(this.requestUserMap(userId), observer);
|
|
30273
30292
|
}
|
|
30274
30293
|
this.userManager.off("join", this.handleUserJoin);
|
|
30275
30294
|
this.userManager.off("leave", this.handleUserLeave);
|
|
30276
|
-
this.whiteboardAttrsMap
|
|
30277
|
-
this.pageMap
|
|
30295
|
+
removeObserver5(this.whiteboardAttrsMap, this.handleMainPageChange);
|
|
30296
|
+
removeObserver5(this.pageMap, this.handlePageMapChange);
|
|
30278
30297
|
}
|
|
30279
30298
|
};
|
|
30280
30299
|
|
|
@@ -30288,8 +30307,9 @@ async function waitUntil(fn, timeout) {
|
|
|
30288
30307
|
}
|
|
30289
30308
|
|
|
30290
30309
|
// src/IndexedNavigation.ts
|
|
30291
|
-
import
|
|
30292
|
-
import { log as
|
|
30310
|
+
import EventEmitter11 from "eventemitter3";
|
|
30311
|
+
import { log as log3 } from "@netless/forge-room";
|
|
30312
|
+
import { removeObserver as removeObserver6 } from "@netless/forge-room";
|
|
30293
30313
|
function _defineProperty36(e, r, t) {
|
|
30294
30314
|
return (r = _toPropertyKey36(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
30295
30315
|
}
|
|
@@ -30307,7 +30327,7 @@ function _toPrimitive36(t, r) {
|
|
|
30307
30327
|
}
|
|
30308
30328
|
return ("string" === r ? String : Number)(t);
|
|
30309
30329
|
}
|
|
30310
|
-
var IndexedNavigation = class extends
|
|
30330
|
+
var IndexedNavigation = class extends EventEmitter11 {
|
|
30311
30331
|
get idList() {
|
|
30312
30332
|
return this.pageModel.pageList().filter((id) => /^_i_/.test(id));
|
|
30313
30333
|
}
|
|
@@ -30316,7 +30336,7 @@ var IndexedNavigation = class extends EventEmitter12 {
|
|
|
30316
30336
|
return this.list[key] && this.list[key].prev === "";
|
|
30317
30337
|
});
|
|
30318
30338
|
if (!headId) {
|
|
30319
|
-
|
|
30339
|
+
log3("indexed navigation confusion", {
|
|
30320
30340
|
list: JSON.stringify(this.list)
|
|
30321
30341
|
}, "error");
|
|
30322
30342
|
throw new Error("indexed navigation confusion");
|
|
@@ -30418,6 +30438,9 @@ var IndexedNavigation = class extends EventEmitter12 {
|
|
|
30418
30438
|
const userPageId = this.userMap.get(WhiteboardKeys.currentPage);
|
|
30419
30439
|
return this.getPageIndex(userPageId);
|
|
30420
30440
|
}
|
|
30441
|
+
get currentPageId() {
|
|
30442
|
+
return this.userMap.get(WhiteboardKeys.currentPage);
|
|
30443
|
+
}
|
|
30421
30444
|
getPageIndex(pageId) {
|
|
30422
30445
|
let i = 0;
|
|
30423
30446
|
let currentId = this.head;
|
|
@@ -30588,9 +30611,7 @@ var IndexedNavigation = class extends EventEmitter12 {
|
|
|
30588
30611
|
if (this.pageCount <= 1) {
|
|
30589
30612
|
return this.pageCount;
|
|
30590
30613
|
}
|
|
30591
|
-
|
|
30592
|
-
if (cameraMode !== "main") {
|
|
30593
|
-
console.warn("cannot modify pages in non-main view mode.");
|
|
30614
|
+
if (!this.modifyDetect()) {
|
|
30594
30615
|
return this.pageCount;
|
|
30595
30616
|
}
|
|
30596
30617
|
const targetId = this.getPageId(index);
|
|
@@ -30631,14 +30652,14 @@ var IndexedNavigation = class extends EventEmitter12 {
|
|
|
30631
30652
|
}
|
|
30632
30653
|
}
|
|
30633
30654
|
dispose() {
|
|
30634
|
-
this.indexedPageMap
|
|
30655
|
+
removeObserver6(this.indexedPageMap, this.handleIndexedPageMapUpdate);
|
|
30635
30656
|
this.pageModel.off("switchPage");
|
|
30636
30657
|
this.pageModel.off("pagesChange");
|
|
30637
30658
|
}
|
|
30638
30659
|
};
|
|
30639
30660
|
|
|
30640
30661
|
// src/utils/ShadowEmitter.ts
|
|
30641
|
-
import
|
|
30662
|
+
import EventEmitter12 from "eventemitter3";
|
|
30642
30663
|
function _defineProperty37(e, r, t) {
|
|
30643
30664
|
return (r = _toPropertyKey37(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
30644
30665
|
}
|
|
@@ -30656,7 +30677,7 @@ function _toPrimitive37(t, r) {
|
|
|
30656
30677
|
}
|
|
30657
30678
|
return ("string" === r ? String : Number)(t);
|
|
30658
30679
|
}
|
|
30659
|
-
var ShadowEmitter = class extends
|
|
30680
|
+
var ShadowEmitter = class extends EventEmitter12 {
|
|
30660
30681
|
constructor(userMap) {
|
|
30661
30682
|
super();
|
|
30662
30683
|
_defineProperty37(this, "userMap", void 0);
|
|
@@ -30823,6 +30844,7 @@ var SequenceExecutor = class {
|
|
|
30823
30844
|
};
|
|
30824
30845
|
|
|
30825
30846
|
// src/WhiteboardApplication.ts
|
|
30847
|
+
import { removeObserver as removeObserver7 } from "@netless/forge-room";
|
|
30826
30848
|
function _defineProperty41(e, r, t) {
|
|
30827
30849
|
return (r = _toPropertyKey41(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
30828
30850
|
}
|
|
@@ -30861,6 +30883,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
30861
30883
|
_defineProperty41(this, "pageModel", void 0);
|
|
30862
30884
|
_defineProperty41(this, "layers", /* @__PURE__ */ new Map());
|
|
30863
30885
|
_defineProperty41(this, "undoManagers", /* @__PURE__ */ new Map());
|
|
30886
|
+
_defineProperty41(this, "imageSets", document.createElement("div"));
|
|
30864
30887
|
_defineProperty41(this, "rootElement", document.createElement("div"));
|
|
30865
30888
|
_defineProperty41(this, "paperScope", new import_paper.default.PaperScope());
|
|
30866
30889
|
_defineProperty41(this, "canvasElement", document.createElement("canvas"));
|
|
@@ -30915,7 +30938,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
30915
30938
|
}
|
|
30916
30939
|
} else {
|
|
30917
30940
|
console.warn(`[@netless/forge-whiteboard] page ${pageId} not found`);
|
|
30918
|
-
|
|
30941
|
+
log4(`[@netless/forge-whiteboard] page ${pageId} not found`, {}, "warning");
|
|
30919
30942
|
}
|
|
30920
30943
|
await waitUntil(() => this.undoManagers.has(pageId), 1e3);
|
|
30921
30944
|
if (this.undoManagers.has(pageId)) {
|
|
@@ -30927,7 +30950,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
30927
30950
|
this.undoManagers.get(pageId).on("stack-item-popped", this.handleStackItemPopped);
|
|
30928
30951
|
} else {
|
|
30929
30952
|
console.warn(`[@netless/forge-whiteboard] undo manager for page ${pageId} not found`);
|
|
30930
|
-
|
|
30953
|
+
log4(`[@netless/forge-whiteboard] undo manager for page ${pageId} not found`, {}, "warning");
|
|
30931
30954
|
}
|
|
30932
30955
|
this.emitter.emit("redoStackLength", this.undoManager?.redoStack.length ?? 0);
|
|
30933
30956
|
this.emitter.emit("undoStackLength", this.undoManager?.undoStack.length ?? 0);
|
|
@@ -30950,7 +30973,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
30950
30973
|
const id = ids[i];
|
|
30951
30974
|
if (!this.layers.has(id)) {
|
|
30952
30975
|
const elementsMap = this.getMap(`layer/${id}/elements`);
|
|
30953
|
-
const renderableModel = new RenderableModel(id, this.shadowEmitter, elementsMap, this.paperScope, this.toolbarModel, this.userManager, this.hasPermission);
|
|
30976
|
+
const renderableModel = new RenderableModel(id, this.shadowEmitter, elementsMap, this.paperScope, this.toolbarModel, this.userManager, this.imageSets, this.hasPermission);
|
|
30954
30977
|
this.layers.set(id, renderableModel);
|
|
30955
30978
|
}
|
|
30956
30979
|
if (!this.undoManagers.has(id)) {
|
|
@@ -31103,10 +31126,14 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31103
31126
|
this.camera.triggerZoom();
|
|
31104
31127
|
}
|
|
31105
31128
|
});
|
|
31129
|
+
window.__wb = this;
|
|
31106
31130
|
requestAnimationFrameHook(this.paperScope);
|
|
31107
31131
|
requestAnimationFrameHook(this.shadowScope);
|
|
31108
31132
|
const that = this;
|
|
31109
31133
|
this.rootElement.setAttribute("data-forge-app", "whiteboard");
|
|
31134
|
+
this.imageSets.style.display = "none";
|
|
31135
|
+
this.imageSets.setAttribute("data-image-sets", "");
|
|
31136
|
+
this.rootElement.appendChild(this.imageSets);
|
|
31110
31137
|
document.body.addEventListener("pointerdown", (evt) => {
|
|
31111
31138
|
this.isPenEvent = evt.pointerType === "pen";
|
|
31112
31139
|
if (evt.pointerType === "pen" && this.hasPenInput === null) {
|
|
@@ -31168,7 +31195,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31168
31195
|
this.emitter.setViewModeToFree = (userId) => {
|
|
31169
31196
|
if (that.disableViewModelUpdate) {
|
|
31170
31197
|
console.warn("Operation failed. Perspective mode switching is disabled in the current environment.");
|
|
31171
|
-
|
|
31198
|
+
log4("Operation failed. Perspective mode switching is disabled in the current environment.", {}, "warning");
|
|
31172
31199
|
return;
|
|
31173
31200
|
}
|
|
31174
31201
|
const targetId = userId ? this.hasPermission(WhiteboardPermissionFlag.setOthersView) ? userId : null : this.userId;
|
|
@@ -31179,7 +31206,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31179
31206
|
this.emitter.setViewModeToFlow = (flowId, userId) => {
|
|
31180
31207
|
if (that.disableViewModelUpdate) {
|
|
31181
31208
|
console.warn("Operation failed. Perspective mode switching is disabled in the current environment.");
|
|
31182
|
-
|
|
31209
|
+
log4("Operation failed. Perspective mode switching is disabled in the current environment.", {}, "warning");
|
|
31183
31210
|
return;
|
|
31184
31211
|
}
|
|
31185
31212
|
const targetId = userId ? this.hasPermission(WhiteboardPermissionFlag.setOthersView) ? userId : null : this.userId;
|
|
@@ -31194,7 +31221,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31194
31221
|
this.emitter.setViewModeToMain = (userId) => {
|
|
31195
31222
|
if (that.disableViewModelUpdate) {
|
|
31196
31223
|
console.warn("Operation failed. Perspective mode switching is disabled in the current environment.");
|
|
31197
|
-
|
|
31224
|
+
log4("Operation failed. Perspective mode switching is disabled in the current environment.", {}, "warning");
|
|
31198
31225
|
return;
|
|
31199
31226
|
}
|
|
31200
31227
|
const targetId = userId ? this.hasPermission(WhiteboardPermissionFlag.setOthersView) ? userId : null : this.userId;
|
|
@@ -31206,6 +31233,30 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31206
31233
|
this.camera.resetViewMatrixToMain();
|
|
31207
31234
|
}
|
|
31208
31235
|
};
|
|
31236
|
+
this.emitter.insertImage = (src, pageId) => {
|
|
31237
|
+
if (!/https/.test(src)) {
|
|
31238
|
+
log4("[@netless/forge-whiteboard] invalid image url, src needs to be in the HTTPS protocol.", {
|
|
31239
|
+
src
|
|
31240
|
+
}, "warning");
|
|
31241
|
+
return;
|
|
31242
|
+
}
|
|
31243
|
+
let targetPageId = pageId;
|
|
31244
|
+
if (!targetPageId) {
|
|
31245
|
+
targetPageId = this.pageModel.getCurrentPage(this.userManager.selfId);
|
|
31246
|
+
}
|
|
31247
|
+
if (!targetPageId) {
|
|
31248
|
+
log4("[@netless/forge-whiteboard] page not found", {}, "warning");
|
|
31249
|
+
return;
|
|
31250
|
+
}
|
|
31251
|
+
this.layers.get(targetPageId)?.createImage(src);
|
|
31252
|
+
};
|
|
31253
|
+
this.emitter.removeElement = (pageId, elementId) => {
|
|
31254
|
+
if (!this.layers.has(pageId)) {
|
|
31255
|
+
log4("[@netless/forge-whiteboard] page not found", {}, "warning");
|
|
31256
|
+
return;
|
|
31257
|
+
}
|
|
31258
|
+
this.layers.get(pageId)?.removeElementItem(elementId);
|
|
31259
|
+
};
|
|
31209
31260
|
this.emitter.getViewModel = (userId) => {
|
|
31210
31261
|
const targetId = userId ? userId : this.userId;
|
|
31211
31262
|
return this.userMap(targetId).get(WhiteboardKeys.cameraMode);
|
|
@@ -31221,7 +31272,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31221
31272
|
const source = this.getMap(`layer/${sourceId}/elements`);
|
|
31222
31273
|
const target = this.getMap(`layer/${targetId}/elements`);
|
|
31223
31274
|
if (!this.layers.has(targetId)) {
|
|
31224
|
-
this.layers.set(targetId, new RenderableModel(targetId, this.shadowEmitter, target, this.paperScope, this.toolbarModel, this.userManager, this.hasPermission));
|
|
31275
|
+
this.layers.set(targetId, new RenderableModel(targetId, this.shadowEmitter, target, this.paperScope, this.toolbarModel, this.userManager, this.imageSets, this.hasPermission));
|
|
31225
31276
|
}
|
|
31226
31277
|
if (!this.undoManagers.has(targetId)) {
|
|
31227
31278
|
const undoManager = new Y15.UndoManager(target, {
|
|
@@ -31272,7 +31323,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31272
31323
|
this.camera.reset();
|
|
31273
31324
|
};
|
|
31274
31325
|
this.emitter.on("error", (errorCode, errorMessage) => {
|
|
31275
|
-
|
|
31326
|
+
log4("WhiteboardApplicationError", {
|
|
31276
31327
|
errorCode,
|
|
31277
31328
|
errorMessage
|
|
31278
31329
|
});
|
|
@@ -31373,6 +31424,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31373
31424
|
this.permissions = new WhiteboardPermissions(this.userManager, (userId) => {
|
|
31374
31425
|
return this.userMap(userId);
|
|
31375
31426
|
});
|
|
31427
|
+
this.permissions.setPermission(WhiteboardPermissionFlag.all);
|
|
31376
31428
|
this.emitter["permissions"] = this.permissions;
|
|
31377
31429
|
this.emitter["selfUserId"] = this.userId;
|
|
31378
31430
|
this.option = option;
|
|
@@ -31455,7 +31507,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31455
31507
|
this.paperScope.tool = this.tools[this.toolbarModel.currentTool].tool;
|
|
31456
31508
|
} else {
|
|
31457
31509
|
this.paperScope.tool = this.tools["curve"].tool;
|
|
31458
|
-
|
|
31510
|
+
log4(`${this.toolbarModel.currentTool} not supported, backup to curve`);
|
|
31459
31511
|
}
|
|
31460
31512
|
this.selectElementsModel.on("elementsChange", this.handleElementsSelect);
|
|
31461
31513
|
this.trashedElementsModel.on("elementsChange", this.handleElementsTrash);
|
|
@@ -31700,7 +31752,7 @@ var WhiteboardApplication = class extends AbstractApplication {
|
|
|
31700
31752
|
}
|
|
31701
31753
|
unlink() {
|
|
31702
31754
|
if (this.linkTarget) {
|
|
31703
|
-
this.linkTarget
|
|
31755
|
+
removeObserver7(this.linkTarget, this.handleLinkedMapChange);
|
|
31704
31756
|
}
|
|
31705
31757
|
}
|
|
31706
31758
|
setViewSize(width, height) {
|