fcr-core 3.7.9-alpha → 3.8.0-alpha

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.
Files changed (130) hide show
  1. package/lib/chat-connection/index.d.ts +1 -1
  2. package/lib/chat-connection/index.js +41 -26
  3. package/lib/engine/index.js +72 -78
  4. package/lib/imports.d.ts +7 -2
  5. package/lib/imports.js +26 -4
  6. package/lib/index.d.ts +2 -2
  7. package/lib/index.js +12 -0
  8. package/lib/media-control/desktop.js +22 -17
  9. package/lib/media-control/mobile.js +38 -33
  10. package/lib/media-control/type.d.ts +8 -0
  11. package/lib/monitor-control/index.js +10 -5
  12. package/lib/peer-session/index.js +48 -39
  13. package/lib/plugins/chatroom.js +237 -205
  14. package/lib/room-control/ability-control/index.js +14 -9
  15. package/lib/room-control/ability-control/type.d.ts +4 -1
  16. package/lib/room-control/ability-control/type.js +3 -0
  17. package/lib/room-control/group-control/index.js +21 -16
  18. package/lib/room-control/helpers/constants.d.ts +4 -0
  19. package/lib/room-control/helpers/constants.js +5 -1
  20. package/lib/room-control/helpers/validation-helper.js +1 -1
  21. package/lib/room-control/index.js +66 -38
  22. package/lib/room-control/interpreter-control/index.js +49 -38
  23. package/lib/room-control/interpreter-control/room.js +6 -4
  24. package/lib/room-control/join-before-host-waitingroom-control/index.js +6 -4
  25. package/lib/room-control/mainroom-control/index.js +90 -17
  26. package/lib/room-control/privilege-control/helper.js +8 -5
  27. package/lib/room-control/privilege-control/index.js +66 -19
  28. package/lib/room-control/privilege-control/type.d.ts +57 -10
  29. package/lib/room-control/privilege-control/type.js +17 -0
  30. package/lib/room-control/room-connector-control/index.js +28 -19
  31. package/lib/room-control/room-control-factory.js +3 -2
  32. package/lib/room-control/room-session/index.js +68 -49
  33. package/lib/room-control/room-session/type.d.ts +2 -2
  34. package/lib/room-control/shared-cache.js +36 -29
  35. package/lib/room-control/sharing-control/index.d.ts +5 -5
  36. package/lib/room-control/sharing-control/index.js +81 -43
  37. package/lib/room-control/sharing-control/type.d.ts +9 -5
  38. package/lib/room-control/sharing-control/type.js +6 -1
  39. package/lib/room-control/stream-control/index.d.ts +8 -1
  40. package/lib/room-control/stream-control/index.js +310 -199
  41. package/lib/room-control/stream-control/type.d.ts +6 -0
  42. package/lib/room-control/stt-control/de-compress-gzip.d.ts +1 -0
  43. package/lib/room-control/stt-control/de-compress-gzip.js +49 -0
  44. package/lib/room-control/stt-control/index.d.ts +1 -0
  45. package/lib/room-control/stt-control/index.js +353 -0
  46. package/lib/room-control/stt-control/type.d.ts +142 -0
  47. package/lib/room-control/stt-control/type.js +16 -0
  48. package/lib/room-control/type.d.ts +15 -0
  49. package/lib/room-control/type.js +13 -1
  50. package/lib/room-control/user-control/index.js +143 -136
  51. package/lib/room-control/waitingroom-control/index.js +14 -9
  52. package/lib/room-control/whiteboard-control/enum.d.ts +15 -0
  53. package/lib/room-control/whiteboard-control/{types.js → enum.js} +12 -1
  54. package/lib/room-control/whiteboard-control/type.d.ts +38 -0
  55. package/lib/room-control/whiteboard-control/type.js +15 -0
  56. package/lib/room-control/whiteboard-control/utils.d.ts +3 -0
  57. package/lib/room-control/whiteboard-control/utils.js +23 -0
  58. package/lib/room-control/whiteboard-control-v1/board-subwindow.d.ts +6 -0
  59. package/lib/room-control/whiteboard-control-v1/board-subwindow.js +26 -0
  60. package/lib/room-control/whiteboard-control-v1/board-window.d.ts +58 -0
  61. package/lib/room-control/whiteboard-control-v1/board-window.js +571 -0
  62. package/lib/room-control/{whiteboard-control/enums.d.ts → whiteboard-control-v1/enum.d.ts} +3 -17
  63. package/lib/room-control/{whiteboard-control/enums.js → whiteboard-control-v1/enum.js} +3 -20
  64. package/lib/room-control/whiteboard-control-v1/factory.d.ts +9 -0
  65. package/lib/room-control/whiteboard-control-v1/factory.js +22 -0
  66. package/lib/room-control/whiteboard-control-v1/index.d.ts +1 -0
  67. package/lib/room-control/whiteboard-control-v1/index.js +440 -0
  68. package/lib/room-control/whiteboard-control-v1/mount-manager.d.ts +4 -0
  69. package/lib/room-control/whiteboard-control-v1/mount-manager.js +15 -0
  70. package/lib/room-control/whiteboard-control-v1/type.d.ts +300 -0
  71. package/lib/room-control/whiteboard-control-v1/type.js +13 -0
  72. package/lib/room-control/whiteboard-control-v1/utils.d.ts +53 -0
  73. package/lib/room-control/whiteboard-control-v1/utils.js +290 -0
  74. package/lib/room-control/whiteboard-control-v2/annotation-control/control.d.ts +17 -31
  75. package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +42 -228
  76. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.d.ts +10 -0
  77. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +48 -0
  78. package/lib/room-control/whiteboard-control-v2/annotation-control/type.d.ts +11 -19
  79. package/lib/room-control/whiteboard-control-v2/annotation-control/type.js +1 -3
  80. package/lib/room-control/whiteboard-control-v2/base/index.d.ts +42 -0
  81. package/lib/room-control/whiteboard-control-v2/base/index.js +317 -0
  82. package/lib/room-control/whiteboard-control-v2/{main-window.d.ts → base/main-window.d.ts} +6 -4
  83. package/lib/room-control/whiteboard-control-v2/{main-window.js → base/main-window.js} +54 -36
  84. package/lib/room-control/whiteboard-control-v2/constant.d.ts +6 -0
  85. package/lib/room-control/whiteboard-control-v2/constant.js +15 -0
  86. package/lib/room-control/whiteboard-control-v2/enum.d.ts +26 -0
  87. package/lib/room-control/whiteboard-control-v2/enum.js +34 -0
  88. package/lib/room-control/{whiteboard-control/types.d.ts → whiteboard-control-v2/type.d.ts} +51 -165
  89. package/lib/room-control/whiteboard-control-v2/type.js +5 -0
  90. package/lib/room-control/whiteboard-control-v2/utils.d.ts +5 -4
  91. package/lib/room-control/whiteboard-control-v2/utils.js +29 -27
  92. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.d.ts +34 -33
  93. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +131 -187
  94. package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.d.ts +11 -0
  95. package/lib/room-control/whiteboard-control-v2/{annotation-control/index.js → whiteboard-control/factory.js} +40 -38
  96. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.d.ts +18 -30
  97. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.js +1 -9
  98. package/lib/room-router/index.js +56 -42
  99. package/lib/schema.d.ts +23 -9
  100. package/lib/schema.js +10 -4
  101. package/lib/service/api.d.ts +75 -19
  102. package/lib/service/api.js +401 -208
  103. package/lib/type.d.ts +15 -2
  104. package/lib/type.js +13 -0
  105. package/lib/utilities/collection.js +3 -2
  106. package/lib/utilities/error-helpers.d.ts +2 -1
  107. package/lib/utilities/error-helpers.js +35 -27
  108. package/lib/utilities/error.d.ts +1 -0
  109. package/lib/utilities/error.js +10 -8
  110. package/lib/utilities/join-helper.js +32 -25
  111. package/lib/utilities/logger.d.ts +2 -2
  112. package/lib/utilities/logger.js +6 -3
  113. package/lib/utilities/parameters.js +8 -4
  114. package/lib/utilities/retry-helpers.js +1 -0
  115. package/lib/utilities/shared-storage.d.ts +3 -1
  116. package/lib/utilities/shared-storage.js +10 -1
  117. package/lib/utilities/storage.js +1 -0
  118. package/lib/utilities/stream.js +16 -11
  119. package/lib/utilities/user.js +4 -3
  120. package/lib/utilities/validate-params.js +2 -1
  121. package/package.json +11 -5
  122. package/lib/room-control/whiteboard-control-v2/annotation-control/index.d.ts +0 -19
  123. package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.d.ts +0 -36
  124. package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.js +0 -252
  125. package/lib/room-control/whiteboard-control-v2/index.d.ts +0 -38
  126. package/lib/room-control/whiteboard-control-v2/index.js +0 -274
  127. package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.d.ts +0 -17
  128. package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.js +0 -30
  129. package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.d.ts +0 -36
  130. package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.js +0 -240
@@ -0,0 +1,317 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.array.push.js");
5
+ require("core-js/modules/esnext.function.metadata.js");
6
+ require("core-js/modules/esnext.map.delete-all.js");
7
+ require("core-js/modules/esnext.map.emplace.js");
8
+ require("core-js/modules/esnext.map.every.js");
9
+ require("core-js/modules/esnext.map.filter.js");
10
+ require("core-js/modules/esnext.map.find.js");
11
+ require("core-js/modules/esnext.map.find-key.js");
12
+ require("core-js/modules/esnext.map.includes.js");
13
+ require("core-js/modules/esnext.map.key-of.js");
14
+ require("core-js/modules/esnext.map.map-keys.js");
15
+ require("core-js/modules/esnext.map.map-values.js");
16
+ require("core-js/modules/esnext.map.merge.js");
17
+ require("core-js/modules/esnext.map.reduce.js");
18
+ require("core-js/modules/esnext.map.some.js");
19
+ require("core-js/modules/esnext.map.update.js");
20
+ require("core-js/modules/esnext.symbol.metadata.js");
21
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ exports.FcrBaseWhiteboardControlImpl = void 0;
26
+ require("core-js/modules/es.error.cause.js");
27
+ require("core-js/modules/es.json.stringify.js");
28
+ require("core-js/modules/es.regexp.exec.js");
29
+ require("core-js/modules/web.dom-collections.iterator.js");
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+ var _forgeRtm = require("@netless/forge-rtm");
32
+ var _imports = require("../../../imports");
33
+ var _constant = require("../constant");
34
+ var _forgeRoom = require("@netless/forge-room");
35
+ var _logger = require("../../../utilities/logger");
36
+ var _forgeWhiteboard = require("@netless/forge-whiteboard");
37
+ var _error = require("../../../utilities/error");
38
+ var _mainWindow = require("./main-window");
39
+ var _type = require("../../../type");
40
+ var _FcrBaseWhiteboardControlImpl;
41
+ let _initProto;
42
+ function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
43
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
44
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
45
+ function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
46
+ function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
47
+ class FcrBaseWhiteboardControlImpl {
48
+ constructor(rtmClient, config, hasOperationPrivilege, forgeInitConfigFetcher) {
49
+ (0, _defineProperty2.default)(this, "logger", (_initProto(this), (0, _logger.createLogger)({
50
+ prefix: 'FcrBaseWhiteboardControl'
51
+ })));
52
+ (0, _defineProperty2.default)(this, "observable", new _imports.AgoraObservable());
53
+ (0, _defineProperty2.default)(this, "boardView", null);
54
+ (0, _defineProperty2.default)(this, "boardRoom", null);
55
+ (0, _defineProperty2.default)(this, "whiteboard", null);
56
+ (0, _defineProperty2.default)(this, "connectState", _type.FcrConnectionState.DISCONNECTED);
57
+ (0, _defineProperty2.default)(this, "forgeInitConfig", null);
58
+ (0, _defineProperty2.default)(this, "hasOperationPrivilege", false);
59
+ (0, _defineProperty2.default)(this, "_waitPromise", null);
60
+ (0, _defineProperty2.default)(this, "_waitPromiseResolve", null);
61
+ (0, _defineProperty2.default)(this, "_waitPromiseReject", null);
62
+ (0, _defineProperty2.default)(this, "_openAbortController", null);
63
+ (0, _defineProperty2.default)(this, "_isOpen", false);
64
+ this.rtmClient = rtmClient;
65
+ this.config = config;
66
+ this.hasOperationPrivilege = hasOperationPrivilege;
67
+ this.forgeInitConfigTask = _imports.AgoraScheduler.shared.addPollingTask(async () => {
68
+ const forgeInitConfig = await forgeInitConfigFetcher();
69
+ this.forgeInitConfig = forgeInitConfig;
70
+ this.logger.info("fetch forge init config success, config: ".concat((0, _imports.jsonstring)(forgeInitConfig)));
71
+ this.forgeInitConfigTask.stop();
72
+ if (this._isOpen) {
73
+ this.connect();
74
+ }
75
+ }, _constant.INIT_CONFIG_FETCH_INTERVAL);
76
+ this.addLogObserver();
77
+ }
78
+ setOperationPrivilege(hasOperationPrivilege) {
79
+ if (this.hasOperationPrivilege !== hasOperationPrivilege) {
80
+ this.hasOperationPrivilege = hasOperationPrivilege;
81
+ const whiteboard = this.whiteboard;
82
+ const boardView = this.boardView;
83
+ if (whiteboard) {
84
+ if (hasOperationPrivilege) {
85
+ whiteboard.permissions.addPermission(_forgeWhiteboard.WhiteboardPermissionFlag.all);
86
+ if (boardView) {
87
+ // @ts-expect-error
88
+ boardView._observable.notifyObservers('onWritable', true);
89
+ }
90
+ } else {
91
+ whiteboard.permissions.removePermission(_forgeWhiteboard.WhiteboardPermissionFlag.all);
92
+ if (boardView) {
93
+ // @ts-expect-error
94
+ boardView._observable.notifyObservers('onWritable', false);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ async open() {
101
+ this._isOpen = true;
102
+ const isReadyToConnect = this._checkForConnect();
103
+ if (isReadyToConnect) {
104
+ return this.connect();
105
+ }
106
+ if (!this._waitPromise) {
107
+ this._waitPromise = new Promise((resolve, reject) => {
108
+ this._waitPromiseResolve = resolve;
109
+ this._waitPromiseReject = reject;
110
+ this.logger.info('waiting for forge config to be ready');
111
+ });
112
+ }
113
+ return this._waitPromise;
114
+ }
115
+ async close() {
116
+ this._isOpen = false;
117
+ if (!this.forgeInitConfigTask.isStopped) {
118
+ this.forgeInitConfigTask.stop();
119
+ }
120
+ if (this._waitPromiseReject) {
121
+ this._waitPromiseReject(new Error('closed before connection established'));
122
+ this._clearWaitPromise();
123
+ }
124
+ try {
125
+ if (this._openAbortController) {
126
+ this._openAbortController.abort();
127
+ this._openAbortController = null;
128
+ }
129
+ const boardRoom = this.boardRoom;
130
+ this.boardRoom = null;
131
+ this.boardView = null;
132
+ this.whiteboard = null;
133
+ if (boardRoom) {
134
+ boardRoom.applicationManager.removeAllListeners();
135
+ boardRoom.applicationManager.terminateApplication(this.getApplicationId());
136
+ await boardRoom.leaveRoom();
137
+ }
138
+ } catch (e) {
139
+ this.logger.error('leave board room failed', e);
140
+ } finally {
141
+ this.updateConnectionState(_type.FcrConnectionState.DISCONNECTED);
142
+ }
143
+ }
144
+ getConnectionState() {
145
+ return this.connectState;
146
+ }
147
+ getMainWindow() {
148
+ return this.boardView;
149
+ }
150
+ addObserver(observer) {
151
+ this.observable.addObserver(observer);
152
+ }
153
+ removeObserver(observer) {
154
+ this.observable.removeObserver(observer);
155
+ }
156
+ updateConnectionState(state) {
157
+ if (this.connectState === state) {
158
+ return;
159
+ }
160
+ const oldState = this.connectState;
161
+ this.connectState = state;
162
+ this.logger.info("Connection state updated: ".concat(_type.FcrConnectionState[oldState], " -> ").concat(_type.FcrConnectionState[state]));
163
+ this.observable.notifyObservers('onConnectionStateUpdated', state);
164
+ }
165
+ async connect() {
166
+ if (this.boardView) {
167
+ this.logger.info('board already connected, returning existing board view');
168
+ return this.boardView;
169
+ }
170
+ const abortController = new AbortController();
171
+ this._openAbortController = abortController;
172
+ return new Promise(async (resolve, reject) => {
173
+ // 监听中止信号
174
+ abortController.signal.addEventListener('abort', () => {
175
+ reject(new Error('join board aborted'));
176
+ });
177
+ const {
178
+ userId,
179
+ userName
180
+ } = this.config;
181
+ const {
182
+ boardAppId,
183
+ boardId,
184
+ boardRegion,
185
+ boardToken
186
+ } = this.forgeInitConfig || {};
187
+ if (!boardAppId) {
188
+ throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'boardAppId is required', new Error('boardAppId is required'));
189
+ }
190
+ if (!boardId) {
191
+ throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'boardId is required', new Error('boardId is required'));
192
+ }
193
+ if (!boardToken) {
194
+ throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'boardToken is required', new Error('boardToken is required'));
195
+ }
196
+ const whiteboardOption = this.getWhiteboardOption();
197
+ let width = whiteboardOption.width;
198
+ let height = whiteboardOption.height;
199
+ if (!width) {
200
+ this.logger.warn("board width is a invalid vlaue: ".concat(width, ", using default value 800"));
201
+ whiteboardOption.width = 800;
202
+ }
203
+ if (!height) {
204
+ this.logger.warn("board height is a invalid value: ".concat(height, ", using default value 600"));
205
+ whiteboardOption.height = 600;
206
+ }
207
+ this.logger.info("open board with boardId: ".concat(boardId, ", boardToken: ").concat(boardToken, ", region: ").concat(boardRegion, ", whiteboardOption: ").concat((0, _imports.jsonstring)(whiteboardOption)));
208
+ const rtmProvider = new _forgeRtm.RTMProvider_2_2(this.rtmClient);
209
+ const wbRoom = new _forgeRoom.Room(boardId, rtmProvider);
210
+ wbRoom.applicationManager.registerApplication(_forgeWhiteboard.WhiteboardApplication);
211
+ try {
212
+ this.updateConnectionState(_type.FcrConnectionState.CONNECTING);
213
+ let error = null;
214
+ let boardView = null;
215
+ let whiteboard = null;
216
+ let boardRoom = wbRoom;
217
+ const appId = this.getApplicationId();
218
+ [error] = await (0, _imports.to)((0, _imports.retryAttempt)(async () => {
219
+ const joinRoomParams = {
220
+ userId,
221
+ nickName: userName || userId,
222
+ roomToken: boardToken,
223
+ sdkConfig: {
224
+ region: boardRegion,
225
+ appIdentifier: boardAppId
226
+ }
227
+ // verboseLog: true,
228
+ };
229
+ this.logger.info("join params: ".concat((0, _imports.jsonstring)(joinRoomParams)));
230
+ await wbRoom.joinRoom(joinRoomParams);
231
+ boardRoom = wbRoom;
232
+ whiteboard = await wbRoom.applicationManager.launchApplication(_forgeWhiteboard.WhiteboardApplication, whiteboardOption, appId);
233
+ }, [], {
234
+ retriesMax: _constant.BOARD_RETRY_MAX
235
+ }).fail(async _ref => {
236
+ let {
237
+ error,
238
+ timeFn,
239
+ currentRetry
240
+ } = _ref;
241
+ if (abortController.signal.aborted) {
242
+ throw new Error('join board aborted');
243
+ }
244
+ this.logger.error("failed to join board, error: ".concat(error.message, ", current retry: ").concat(currentRetry), error);
245
+ await timeFn();
246
+ return true;
247
+ }).exec());
248
+ if (abortController.signal.aborted) {
249
+ throw new Error('join board aborted');
250
+ }
251
+ if (error) {
252
+ this.logger.error("join board failed, ".concat(error.message, "-").concat(JSON.stringify(error)));
253
+ throw error;
254
+ }
255
+ whiteboard.enableCameraByMouse = false;
256
+ whiteboard.enableCameraByTouch = false;
257
+ whiteboard.setViewModeToMain();
258
+ boardView = new _mainWindow.FcrBoardMainWindowImpl(whiteboard, wbRoom, appId);
259
+ boardView.setBackgroundColor(this.getBackgroundColor());
260
+ this.whiteboard = whiteboard;
261
+ this.boardView = boardView;
262
+ this.boardRoom = boardRoom;
263
+ if (this.hasOperationPrivilege) {
264
+ whiteboard.permissions.addPermission(_forgeWhiteboard.WhiteboardPermissionFlag.all);
265
+ } else {
266
+ whiteboard.permissions.removePermission(_forgeWhiteboard.WhiteboardPermissionFlag.all);
267
+ }
268
+ this.updateConnectionState(_type.FcrConnectionState.CONNECTED);
269
+ resolve(boardView);
270
+ if (this._waitPromiseResolve) {
271
+ this._waitPromiseResolve(boardView);
272
+ this._clearWaitPromise();
273
+ }
274
+ } catch (e) {
275
+ this.logger.error("join board failed");
276
+ this.updateConnectionState(_type.FcrConnectionState.DISCONNECTED);
277
+ reject(e);
278
+ if (this._waitPromiseReject) {
279
+ this._waitPromiseReject(e);
280
+ this._clearWaitPromise();
281
+ }
282
+ } finally {
283
+ this._openAbortController = null;
284
+ }
285
+ });
286
+ }
287
+ getApplicationId() {
288
+ return '';
289
+ }
290
+ getWhiteboardOption() {
291
+ return {
292
+ width: 800,
293
+ height: 600,
294
+ defaultToolbarStyle: {
295
+ tool: 'laser'
296
+ },
297
+ maxScaleRatio: 1
298
+ };
299
+ }
300
+ getBackgroundColor() {
301
+ return 'rgba(0, 0, 0, 0)';
302
+ }
303
+ addLogObserver() {
304
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onConnectionStateUpdated']));
305
+ }
306
+ _checkForConnect() {
307
+ return !!this.forgeInitConfig;
308
+ }
309
+ _clearWaitPromise() {
310
+ this._waitPromiseResolve = null;
311
+ this._waitPromiseReject = null;
312
+ this._waitPromise = null;
313
+ }
314
+ }
315
+ exports.FcrBaseWhiteboardControlImpl = FcrBaseWhiteboardControlImpl;
316
+ _FcrBaseWhiteboardControlImpl = FcrBaseWhiteboardControlImpl;
317
+ [_initProto] = _applyDecs(_FcrBaseWhiteboardControlImpl, [[_imports.trace, 2, "setOperationPrivilege"], [_imports.trace, 2, "open"], [_imports.trace, 2, "close"], [_imports.trace, 2, "getConnectionState"], [_imports.trace, 2, "getMainWindow"]], []).e;
@@ -1,8 +1,9 @@
1
- import { FcrBoardToolType } from '../whiteboard-control/enums';
2
- import { FcrColor, FcrBoardMainWindow, FcrBoardMainWindowObserver, FcrBoardPageInfo } from '../whiteboard-control/types';
1
+ import { FcrBoardToolType } from '../enum';
2
+ import { FcrBoardMainWindow, FcrBoardMainWindowObserver } from '../type';
3
3
  import { Whiteboard } from '@netless/forge-whiteboard';
4
4
  import { Room } from '@netless/forge-room';
5
- import { FcrSize } from '../stream-control/type';
5
+ import { FcrSize } from '../../stream-control/type';
6
+ import { FcrBoardPageInfo, FcrColor } from '../../whiteboard-control/type';
6
7
  export declare class FcrBoardMainWindowImpl implements FcrBoardMainWindow {
7
8
  protected logger: import("agora-foundation/lib/logger").Logger;
8
9
  private _whiteboard;
@@ -11,7 +12,7 @@ export declare class FcrBoardMainWindowImpl implements FcrBoardMainWindow {
11
12
  private _currentPage;
12
13
  private _background;
13
14
  private _isAutoCancelEnabled;
14
- constructor(whiteboard: Whiteboard, boardRoom: Room);
15
+ constructor(whiteboard: Whiteboard, boardRoom: Room, appId: string);
15
16
  addPage(): Promise<void>;
16
17
  removePage(): Promise<void>;
17
18
  undo(): Promise<void>;
@@ -33,6 +34,7 @@ export declare class FcrBoardMainWindowImpl implements FcrBoardMainWindow {
33
34
  setBoardTransparent(isTransparent: boolean): Promise<void>;
34
35
  updateWindowSize(size: FcrSize): void;
35
36
  setAutoCancelDraw(enable: boolean): void;
37
+ getWritable(): boolean;
36
38
  addObserver(observer: FcrBoardMainWindowObserver): void;
37
39
  removeObserver(observer: FcrBoardMainWindowObserver): void;
38
40
  private _addWindowManagerEventListeners;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.description.js");
3
4
  require("core-js/modules/es.array.push.js");
4
5
  require("core-js/modules/esnext.function.metadata.js");
5
6
  require("core-js/modules/esnext.map.delete-all.js");
@@ -22,36 +23,44 @@ Object.defineProperty(exports, "__esModule", {
22
23
  value: true
23
24
  });
24
25
  exports.FcrBoardMainWindowImpl = void 0;
26
+ require("core-js/modules/es.error.cause.js");
27
+ require("core-js/modules/esnext.iterator.constructor.js");
28
+ require("core-js/modules/esnext.iterator.some.js");
29
+ require("core-js/modules/web.dom-collections.iterator.js");
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+ var _forgeWhiteboard = require("@netless/forge-whiteboard");
25
32
  var _observable = require("agora-foundation/lib/utilities/observable");
26
- var _utils = require("./utils");
27
- var _logger = require("../../utilities/logger");
28
- var _imports = require("../../imports");
29
- var _validateParams = _interopRequireDefault(require("../../utilities/validate-params"));
30
- var _schema = require("../../schema");
31
- let _initProto, _setBackgroundColorDecs, _setToolTypeDecs, _setStrokeWidthDecs, _setStrokeColorDecs, _setTextColorDecs, _setTextSizeDecs, _insertImageDecs, _setContainerSizeRatioDecs, _updateWindowSizeDecs, _setAutoCancelDrawDecs;
33
+ var _utils = require("../utils");
34
+ var _logger = require("../../../utilities/logger");
35
+ var _log = require("agora-foundation/lib/decorator/log");
36
+ var _schema = require("agora-foundation/lib/utilities/schema");
37
+ var _validateParams = _interopRequireDefault(require("../../../utilities/validate-params"));
38
+ var _schema2 = require("../../../schema");
39
+ var _decorator = require("agora-foundation/lib/decorator");
40
+ var _FcrBoardMainWindowImpl;
41
+ let _initProto, _setBackgroundColorDecs, _setToolTypeDecs, _setStrokeWidthDecs, _setStrokeColorDecs, _setTextColorDecs, _setTextSizeDecs, _insertImageDecs, _setContainerSizeRatioDecs, _setBoardTransparentDecs, _updateWindowSizeDecs, _setAutoCancelDrawDecs, _ref;
32
42
  function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
33
43
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
34
44
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
35
45
  function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
36
46
  function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
47
+ _ref = (_setBackgroundColorDecs = [_log.trace, (0, _validateParams.default)(_schema.stringSchema)], _setToolTypeDecs = [_log.trace, (0, _validateParams.default)(_schema2.fcrBoardToolTypeSchema)], _setStrokeWidthDecs = [_log.trace, (0, _validateParams.default)(_schema2.numberSchema)], _setStrokeColorDecs = [_log.trace, (0, _validateParams.default)(_schema2.z.union([_schema2.colorSchema, _schema.stringSchema]))], _setTextColorDecs = [_log.trace, (0, _validateParams.default)(_schema2.colorSchema)], _setTextSizeDecs = [_log.trace, (0, _validateParams.default)(_schema2.numberSchema)], _insertImageDecs = [_log.trace, (0, _validateParams.default)(_schema.stringSchema, _schema2.numberSchema, _schema2.numberSchema, _schema2.numberSchema, _schema2.numberSchema)], _setContainerSizeRatioDecs = [_log.trace, (0, _validateParams.default)(_schema2.numberSchema)], _setBoardTransparentDecs = [_log.trace, (0, _validateParams.default)(_schema2.booleanSchema)], _updateWindowSizeDecs = [_log.trace, (0, _validateParams.default)(_schema2.fcrSizeSchema)], _setAutoCancelDrawDecs = [_log.trace, (0, _validateParams.default)(_schema2.booleanSchema)], "logger");
37
48
  class FcrBoardMainWindowImpl {
38
- static {
39
- [_initProto] = _applyDecs(this, [[[_imports.bound, _imports.trace], 2, "addPage"], [[_imports.bound, _imports.trace], 2, "removePage"], [[_imports.bound, _imports.trace], 2, "undo"], [[_imports.bound, _imports.trace], 2, "redo"], [[_imports.bound, _imports.trace], 2, "clean"], [[_imports.bound, _imports.trace], 2, "getSnapshotImage"], [_setBackgroundColorDecs, 2, "setBackgroundColor"], [[_imports.bound, _imports.trace], 2, "getPageInfo"], [[_imports.bound, _imports.trace], 2, "prevPage"], [[_imports.bound, _imports.trace], 2, "nextPage"], [_setToolTypeDecs, 2, "setToolType"], [_setStrokeWidthDecs, 2, "setStrokeWidth"], [_setStrokeColorDecs, 2, "setStrokeColor"], [_setTextColorDecs, 2, "setTextColor"], [_setTextSizeDecs, 2, "setTextSize"], [_insertImageDecs, 2, "insertImage"], [[_imports.bound, _imports.trace], 2, "getContentView"], [_setContainerSizeRatioDecs, 2, "setContainerSizeRatio"], [[_imports.bound, _imports.trace], 2, "setBoardTransparent"], [_updateWindowSizeDecs, 2, "updateWindowSize"], [_setAutoCancelDrawDecs, 2, "setAutoCancelDraw"], [[_imports.bound, _imports.trace], 2, "_handleApplicationLaunch"], [[_imports.bound, _imports.trace], 2, "_handleApplicationTerminal"], [_imports.trace, 2, "_enableAutoCancel"]], []).e;
40
- }
41
- [(_setBackgroundColorDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _setToolTypeDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.fcrBoardToolTypeSchema)], _setStrokeWidthDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.numberSchema)], _setStrokeColorDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.z.union([_schema.colorSchema, _schema.stringSchema]))], _setTextColorDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.colorSchema)], _setTextSizeDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.numberSchema)], _insertImageDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.stringSchema, _schema.numberSchema, _schema.numberSchema, _schema.numberSchema, _schema.numberSchema)], _setContainerSizeRatioDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.numberSchema)], _updateWindowSizeDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.fcrSizeSchema)], _setAutoCancelDrawDecs = [_imports.bound, _imports.trace, (0, _validateParams.default)(_schema.booleanSchema)], "logger")] = (_initProto(this), (0, _logger.createLogger)({
42
- prefix: 'FcrBoardMainWindowImpl'
43
- }));
44
- _observable = new _observable.AgoraObservable();
45
- _currentPage = 0;
46
- _background = 'rgba(0, 0, 0, 0)';
47
- _isAutoCancelEnabled = false;
48
- constructor(whiteboard, boardRoom) {
49
+ constructor(whiteboard, boardRoom, appId) {
50
+ (0, _defineProperty2.default)(this, _ref, (_initProto(this), (0, _logger.createLogger)({
51
+ prefix: 'FcrBoardMainWindowImpl'
52
+ })));
53
+ (0, _defineProperty2.default)(this, "_observable", new _observable.AgoraObservable());
54
+ (0, _defineProperty2.default)(this, "_currentPage", 0);
55
+ (0, _defineProperty2.default)(this, "_background", 'rgba(0, 0, 0, 0)');
56
+ (0, _defineProperty2.default)(this, "_isAutoCancelEnabled", false);
49
57
  this._addLogObserver();
50
58
  this._boardView = document.createElement('div');
51
59
  this._boardView.classList.add('fcr-whiteboard-window-view');
52
60
  this._boardView.appendChild(whiteboard.view);
53
- this._boardView.style.height = `100%`;
54
- this._boardView.style.width = `100%`;
61
+ this._boardView.style.height = "100%";
62
+ this._boardView.style.width = "100%";
63
+ this._boardView.setAttribute('data-app-id', appId);
55
64
  this._whiteboard = whiteboard;
56
65
  this._setBoardViewStyle(whiteboard.view);
57
66
  this._addWindowManagerEventListeners();
@@ -59,7 +68,7 @@ class FcrBoardMainWindowImpl {
59
68
  boardRoom.applicationManager.on('terminal', this._handleApplicationTerminal);
60
69
 
61
70
  // @ts-ignore
62
- this.logger.info(`initialized, room: ${boardRoom.roomId}`);
71
+ this.logger.info("initialized, room: ".concat(boardRoom.roomId));
63
72
  }
64
73
  async addPage() {
65
74
  this._whiteboard.addPage('next');
@@ -106,7 +115,7 @@ class FcrBoardMainWindowImpl {
106
115
  }
107
116
  async setBackgroundColor(color) {
108
117
  this._background = color;
109
- this.logger.info(`set canvas background color: ${this._background}`);
118
+ this.logger.info("set canvas background color: ".concat(this._background));
110
119
  this._whiteboard.setCanvasBackgroundColor(color);
111
120
  }
112
121
  getPageInfo() {
@@ -137,7 +146,7 @@ class FcrBoardMainWindowImpl {
137
146
  }
138
147
  }
139
148
  async setStrokeColor(color) {
140
- const c = typeof color === 'string' ? color : `rgb(${color.r},${color.g},${color.b})`;
149
+ const c = typeof color === 'string' ? color : "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")");
141
150
  if (this._whiteboard) {
142
151
  this._whiteboard.strokeColor = c;
143
152
  } else {
@@ -145,7 +154,7 @@ class FcrBoardMainWindowImpl {
145
154
  }
146
155
  }
147
156
  async setTextColor(color) {
148
- const c = typeof color === 'string' ? color : `rgb(${color.r},${color.g},${color.b})`;
157
+ const c = typeof color === 'string' ? color : "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")");
149
158
  if (this._whiteboard) {
150
159
  this._whiteboard.fillColor = c;
151
160
  } else {
@@ -159,9 +168,7 @@ class FcrBoardMainWindowImpl {
159
168
  throw new Error('Whiteboard is not initialized');
160
169
  }
161
170
  }
162
- async insertImage(resourceUrl, x, y, width, height) {
163
- // this._whiteboard.insertImage(resourceUrl);
164
- }
171
+ async insertImage(resourceUrl, x, y, width, height) {}
165
172
  getContentView() {
166
173
  return this._boardView;
167
174
  }
@@ -174,6 +181,11 @@ class FcrBoardMainWindowImpl {
174
181
  this._isAutoCancelEnabled = enable;
175
182
  this._enableAutoCancel(enable);
176
183
  }
184
+ getWritable() {
185
+ return this._whiteboard.permissions.getPermissionFlags().some(flag => {
186
+ return flag === _forgeWhiteboard.WhiteboardPermissionFlag.all;
187
+ });
188
+ }
177
189
  addObserver(observer) {
178
190
  this._observable.addObserver(observer);
179
191
  }
@@ -208,7 +220,7 @@ class FcrBoardMainWindowImpl {
208
220
  this._whiteboard = app;
209
221
  this._setBoardViewStyle(app.view);
210
222
  if (this._background) {
211
- this.logger.info(`set canvas background color: ${this._background}`);
223
+ this.logger.info("set canvas background color: ".concat(this._background));
212
224
  this._whiteboard.setCanvasBackgroundColor(this._background);
213
225
  }
214
226
  this._enableAutoCancel(this._isAutoCancelEnabled);
@@ -220,16 +232,20 @@ class FcrBoardMainWindowImpl {
220
232
  this._boardView.appendChild(app.view);
221
233
  }
222
234
  _handleApplicationTerminal(appId, app) {
223
- if (this._boardView.contains(app.view)) {
224
- this.logger.info(`remove application view: ${appId}`);
225
- this._boardView.removeChild(app.view);
226
- } else {
227
- this.logger.warn(`application view not found in board view: ${appId}`);
235
+ try {
236
+ if (this._boardView.contains(app.view)) {
237
+ this.logger.info("remove application view: ".concat(appId));
238
+ this._boardView.removeChild(app.view);
239
+ } else {
240
+ this.logger.warn("application view not found in board view: ".concat(appId));
241
+ }
242
+ } catch (e) {
243
+ this.logger.error("failed to handle terminal: ".concat(appId), e);
228
244
  }
229
245
  }
230
246
  _setBoardViewStyle(view) {
231
- view.style.height = `100%`;
232
- view.style.width = `100%`;
247
+ view.style.height = "100%";
248
+ view.style.width = "100%";
233
249
  view.style.backgroundColor = 'rgba(0, 0, 0, 0)';
234
250
  }
235
251
  _enableAutoCancel(enable) {
@@ -239,7 +255,9 @@ class FcrBoardMainWindowImpl {
239
255
  this._whiteboard.__delayTranslateOut = enable ? 4000 : -1;
240
256
  }
241
257
  _addLogObserver() {
242
- this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onPageInfoUpdated', 'onUndoStateUpdated', 'onRedoStateUpdated']));
258
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onWritable', 'onPageInfoUpdated', 'onUndoStateUpdated', 'onRedoStateUpdated']));
243
259
  }
244
260
  }
245
- exports.FcrBoardMainWindowImpl = FcrBoardMainWindowImpl;
261
+ exports.FcrBoardMainWindowImpl = FcrBoardMainWindowImpl;
262
+ _FcrBoardMainWindowImpl = FcrBoardMainWindowImpl;
263
+ [_initProto] = _applyDecs(_FcrBoardMainWindowImpl, [[_log.trace, 2, "addPage"], [_log.trace, 2, "removePage"], [_log.trace, 2, "undo"], [_log.trace, 2, "redo"], [_log.trace, 2, "clean"], [_log.trace, 2, "getSnapshotImage"], [_setBackgroundColorDecs, 2, "setBackgroundColor"], [_log.trace, 2, "getPageInfo"], [_log.trace, 2, "prevPage"], [_log.trace, 2, "nextPage"], [_setToolTypeDecs, 2, "setToolType"], [_setStrokeWidthDecs, 2, "setStrokeWidth"], [_setStrokeColorDecs, 2, "setStrokeColor"], [_setTextColorDecs, 2, "setTextColor"], [_setTextSizeDecs, 2, "setTextSize"], [_insertImageDecs, 2, "insertImage"], [_log.trace, 2, "getContentView"], [_setContainerSizeRatioDecs, 2, "setContainerSizeRatio"], [_setBoardTransparentDecs, 2, "setBoardTransparent"], [_updateWindowSizeDecs, 2, "updateWindowSize"], [_setAutoCancelDrawDecs, 2, "setAutoCancelDraw"], [_log.trace, 2, "getWritable"], [[_decorator.bound, _log.trace], 2, "_handleApplicationLaunch"], [[_decorator.bound, _log.trace], 2, "_handleApplicationTerminal"], [_log.trace, 2, "_enableAutoCancel"]], []).e;
@@ -0,0 +1,6 @@
1
+ export declare const BOARD_VIEW_WIDTH = 1920;
2
+ export declare const BOARD_VIEW_HEIGHT = 1220;
3
+ export declare const INIT_CONFIG_FETCH_INTERVAL = 3000;
4
+ export declare const BOARD_RETRY_MAX = 99999;
5
+ export declare const WHITEBOARD_APP_ID = "MainWhiteboard";
6
+ export declare const ANNOTATION_APP_ID = "Annotation";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WHITEBOARD_APP_ID = exports.INIT_CONFIG_FETCH_INTERVAL = exports.BOARD_VIEW_WIDTH = exports.BOARD_VIEW_HEIGHT = exports.BOARD_RETRY_MAX = exports.ANNOTATION_APP_ID = void 0;
7
+ // 此宽高为 HLD 中约定的白板尺寸
8
+ const BOARD_VIEW_WIDTH = exports.BOARD_VIEW_WIDTH = 1920;
9
+ const BOARD_VIEW_HEIGHT = exports.BOARD_VIEW_HEIGHT = 1220;
10
+ const INIT_CONFIG_FETCH_INTERVAL = exports.INIT_CONFIG_FETCH_INTERVAL = 3000;
11
+
12
+ // 永久重试
13
+ const BOARD_RETRY_MAX = exports.BOARD_RETRY_MAX = 99999;
14
+ const WHITEBOARD_APP_ID = exports.WHITEBOARD_APP_ID = 'MainWhiteboard';
15
+ const ANNOTATION_APP_ID = exports.ANNOTATION_APP_ID = 'Annotation';
@@ -0,0 +1,26 @@
1
+ export declare enum FcrBoardShape {
2
+ Curve = 1,
3
+ Straight = 2,
4
+ Arrow = 3,
5
+ Rectangle = 4,
6
+ Triangle = 5,
7
+ Rhombus = 6,
8
+ Pentagram = 7,
9
+ Ellipse = 8
10
+ }
11
+ export declare enum FcrBoardToolType {
12
+ NONE = 0,
13
+ SELECTOR = 1,
14
+ LASER_POINTER = 2,
15
+ ERASER = 3,
16
+ TEXT = 4,
17
+ HAND = 5,
18
+ CURVE = 6,
19
+ STRAIGHT = 7,
20
+ ARROW = 8,
21
+ RECTANGLE = 9,
22
+ TRIANGLE = 10,
23
+ RHOMBUS = 11,
24
+ PENTAGRAM = 12,
25
+ ELLIPSE = 13
26
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FcrBoardToolType = exports.FcrBoardShape = void 0;
7
+ let FcrBoardShape = exports.FcrBoardShape = /*#__PURE__*/function (FcrBoardShape) {
8
+ FcrBoardShape[FcrBoardShape["Curve"] = 1] = "Curve";
9
+ FcrBoardShape[FcrBoardShape["Straight"] = 2] = "Straight";
10
+ FcrBoardShape[FcrBoardShape["Arrow"] = 3] = "Arrow";
11
+ FcrBoardShape[FcrBoardShape["Rectangle"] = 4] = "Rectangle";
12
+ FcrBoardShape[FcrBoardShape["Triangle"] = 5] = "Triangle";
13
+ FcrBoardShape[FcrBoardShape["Rhombus"] = 6] = "Rhombus";
14
+ FcrBoardShape[FcrBoardShape["Pentagram"] = 7] = "Pentagram";
15
+ FcrBoardShape[FcrBoardShape["Ellipse"] = 8] = "Ellipse";
16
+ return FcrBoardShape;
17
+ }({});
18
+ let FcrBoardToolType = exports.FcrBoardToolType = /*#__PURE__*/function (FcrBoardToolType) {
19
+ FcrBoardToolType[FcrBoardToolType["NONE"] = 0] = "NONE";
20
+ FcrBoardToolType[FcrBoardToolType["SELECTOR"] = 1] = "SELECTOR";
21
+ FcrBoardToolType[FcrBoardToolType["LASER_POINTER"] = 2] = "LASER_POINTER";
22
+ FcrBoardToolType[FcrBoardToolType["ERASER"] = 3] = "ERASER";
23
+ FcrBoardToolType[FcrBoardToolType["TEXT"] = 4] = "TEXT";
24
+ FcrBoardToolType[FcrBoardToolType["HAND"] = 5] = "HAND";
25
+ FcrBoardToolType[FcrBoardToolType["CURVE"] = 6] = "CURVE";
26
+ FcrBoardToolType[FcrBoardToolType["STRAIGHT"] = 7] = "STRAIGHT";
27
+ FcrBoardToolType[FcrBoardToolType["ARROW"] = 8] = "ARROW";
28
+ FcrBoardToolType[FcrBoardToolType["RECTANGLE"] = 9] = "RECTANGLE";
29
+ FcrBoardToolType[FcrBoardToolType["TRIANGLE"] = 10] = "TRIANGLE";
30
+ FcrBoardToolType[FcrBoardToolType["RHOMBUS"] = 11] = "RHOMBUS";
31
+ FcrBoardToolType[FcrBoardToolType["PENTAGRAM"] = 12] = "PENTAGRAM";
32
+ FcrBoardToolType[FcrBoardToolType["ELLIPSE"] = 13] = "ELLIPSE";
33
+ return FcrBoardToolType;
34
+ }({});