@mml-io/mml-web-client 0.0.0-experimental-b3c5d2f-20250916 → 0.0.0-experimental-d5193f3-20250916
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/build/index.js +85 -15
- package/build/index.js.map +3 -3
- package/package.json +5 -5
package/build/index.js
CHANGED
|
@@ -78,13 +78,44 @@
|
|
|
78
78
|
}
|
|
79
79
|
return node;
|
|
80
80
|
}
|
|
81
|
-
function
|
|
81
|
+
function getNetworkedDOMProtocolSubProtocol_v0_2Subversion(protocol) {
|
|
82
|
+
return protocolSubVersionMap[protocol] ?? null;
|
|
83
|
+
}
|
|
84
|
+
function getNetworkedDOMProtocolSubProtocol_v0_2SubversionOrThrow(protocol) {
|
|
85
|
+
const subversion = getNetworkedDOMProtocolSubProtocol_v0_2Subversion(protocol);
|
|
86
|
+
if (subversion === null) {
|
|
87
|
+
throw new Error(`Unrecognized networked-dom-v0.2 protocol subversion: ${protocol}`);
|
|
88
|
+
}
|
|
89
|
+
return subversion;
|
|
90
|
+
}
|
|
91
|
+
function isNetworkedDOMProtocolSubProtocol_v0_2(protocol) {
|
|
92
|
+
return networkedDOMProtocolSubProtocol_v0_2_SubVersionsList.includes(protocol);
|
|
93
|
+
}
|
|
94
|
+
function protocolSubversionHasConnectionTokens(protocolSubversion) {
|
|
95
|
+
return protocolSubversion >= 1;
|
|
96
|
+
}
|
|
97
|
+
function encodeConnectUsers(connectUsersMessage, writer, protocolSubversion) {
|
|
82
98
|
const connectionIdsLength = connectUsersMessage.connectionIds.length;
|
|
83
99
|
writer.writeUint8(ConnectUsersMessageType);
|
|
84
100
|
writer.writeUVarint(connectionIdsLength);
|
|
85
101
|
for (let i = 0; i < connectionIdsLength; i++) {
|
|
86
102
|
writer.writeUVarint(connectUsersMessage.connectionIds[i]);
|
|
87
103
|
}
|
|
104
|
+
if (protocolSubversionHasConnectionTokens(protocolSubversion)) {
|
|
105
|
+
if (connectUsersMessage.connectionTokens.length !== connectionIdsLength) {
|
|
106
|
+
throw new Error(
|
|
107
|
+
`connectionTokens length (${connectUsersMessage.connectionTokens.length}) does not match connectionIds length (${connectionIdsLength})`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
for (let i = 0; i < connectionIdsLength; i++) {
|
|
111
|
+
const token = connectUsersMessage.connectionTokens[i];
|
|
112
|
+
if (token === null || token === void 0) {
|
|
113
|
+
writer.writeUVarint(0);
|
|
114
|
+
} else {
|
|
115
|
+
writer.writeLengthPrefixedString(token);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
88
119
|
}
|
|
89
120
|
function encodeDisconnectUsers(disconnectUsersMessage, writer) {
|
|
90
121
|
const connectionIdsLength = disconnectUsersMessage.connectionIds.length;
|
|
@@ -276,11 +307,11 @@
|
|
|
276
307
|
}
|
|
277
308
|
return messages;
|
|
278
309
|
}
|
|
279
|
-
function encodeClientMessage(message, writer) {
|
|
310
|
+
function encodeClientMessage(message, writer, protocolSubversion) {
|
|
280
311
|
const type2 = message.type;
|
|
281
312
|
switch (type2) {
|
|
282
313
|
case "connectUsers":
|
|
283
|
-
return encodeConnectUsers(message, writer);
|
|
314
|
+
return encodeConnectUsers(message, writer, protocolSubversion);
|
|
284
315
|
case "disconnectUsers":
|
|
285
316
|
return encodeDisconnectUsers(message, writer);
|
|
286
317
|
case "event":
|
|
@@ -291,7 +322,7 @@
|
|
|
291
322
|
throw new Error(`Unknown message type: ${type2}`);
|
|
292
323
|
}
|
|
293
324
|
}
|
|
294
|
-
var networkedDOMProtocolSubProtocol_v0_1, textDecoder, BufferReader, textEncoder, BufferWriter, networkedDOMProtocolSubProtocol_v0_2, SnapshotMessageType, BatchStartMessageType, DocumentTimeMessageType, ChildrenAddedMessageType, ChildrenRemovedMessageType, AttributesChangedMessageType, ChangeVisibleToMessageType, ChangeHiddenFromMessageType, TextChangedMessageType, BatchEndMessageType, PingMessageType, WarningMessageType, ErrorMessageType, ConnectUsersMessageType, DisconnectUsersMessageType, EventMessageType, PongMessageType, batchEndMessage, batchStartMessage;
|
|
325
|
+
var networkedDOMProtocolSubProtocol_v0_1, textDecoder, BufferReader, textEncoder, BufferWriter, networkedDOMProtocolSubProtocol_v0_2, networkedDOMProtocolSubProtocol_v0_2_1, networkedDOMProtocolSubProtocol_v0_2_SubVersionsList, protocolSubVersionMap, SnapshotMessageType, BatchStartMessageType, DocumentTimeMessageType, ChildrenAddedMessageType, ChildrenRemovedMessageType, AttributesChangedMessageType, ChangeVisibleToMessageType, ChangeHiddenFromMessageType, TextChangedMessageType, BatchEndMessageType, PingMessageType, WarningMessageType, ErrorMessageType, ConnectUsersMessageType, DisconnectUsersMessageType, EventMessageType, PongMessageType, batchEndMessage, batchStartMessage;
|
|
295
326
|
var init_build = __esm({
|
|
296
327
|
"../networked-dom-protocol/build/index.js"() {
|
|
297
328
|
networkedDOMProtocolSubProtocol_v0_1 = "networked-dom-v0.1";
|
|
@@ -519,6 +550,15 @@
|
|
|
519
550
|
}
|
|
520
551
|
};
|
|
521
552
|
networkedDOMProtocolSubProtocol_v0_2 = "networked-dom-v0.2";
|
|
553
|
+
networkedDOMProtocolSubProtocol_v0_2_1 = "networked-dom-v0.2.1";
|
|
554
|
+
networkedDOMProtocolSubProtocol_v0_2_SubVersionsList = [
|
|
555
|
+
networkedDOMProtocolSubProtocol_v0_2_1,
|
|
556
|
+
networkedDOMProtocolSubProtocol_v0_2
|
|
557
|
+
];
|
|
558
|
+
protocolSubVersionMap = {
|
|
559
|
+
[networkedDOMProtocolSubProtocol_v0_2]: 0,
|
|
560
|
+
[networkedDOMProtocolSubProtocol_v0_2_1]: 1
|
|
561
|
+
};
|
|
522
562
|
SnapshotMessageType = 1;
|
|
523
563
|
BatchStartMessageType = 2;
|
|
524
564
|
DocumentTimeMessageType = 3;
|
|
@@ -1120,7 +1160,14 @@
|
|
|
1120
1160
|
this.batchMode = false;
|
|
1121
1161
|
this.batchMessages = [];
|
|
1122
1162
|
this.websocket.binaryType = "arraybuffer";
|
|
1123
|
-
this.
|
|
1163
|
+
this.protocolSubversion = getNetworkedDOMProtocolSubProtocol_v0_2SubversionOrThrow(
|
|
1164
|
+
websocket.protocol
|
|
1165
|
+
);
|
|
1166
|
+
this.send({
|
|
1167
|
+
type: "connectUsers",
|
|
1168
|
+
connectionIds: [connectionId],
|
|
1169
|
+
connectionTokens: [this.options.connectionToken ?? null]
|
|
1170
|
+
});
|
|
1124
1171
|
}
|
|
1125
1172
|
handleEvent(element, event) {
|
|
1126
1173
|
const nodeId = this.elementToId.get(element);
|
|
@@ -1144,7 +1191,7 @@
|
|
|
1144
1191
|
}
|
|
1145
1192
|
send(message) {
|
|
1146
1193
|
const writer = new BufferWriter(256);
|
|
1147
|
-
encodeClientMessage(message, writer);
|
|
1194
|
+
encodeClientMessage(message, writer, this.protocolSubversion);
|
|
1148
1195
|
this.websocket.send(writer.getBuffer());
|
|
1149
1196
|
}
|
|
1150
1197
|
clearContents() {
|
|
@@ -1513,7 +1560,7 @@
|
|
|
1513
1560
|
}
|
|
1514
1561
|
static createWebSocket(url) {
|
|
1515
1562
|
return new WebSocket(url, [
|
|
1516
|
-
|
|
1563
|
+
...networkedDOMProtocolSubProtocol_v0_2_SubVersionsList,
|
|
1517
1564
|
networkedDOMProtocolSubProtocol_v0_1
|
|
1518
1565
|
]);
|
|
1519
1566
|
}
|
|
@@ -1536,7 +1583,7 @@
|
|
|
1536
1583
|
websocket.addEventListener("open", () => {
|
|
1537
1584
|
clearTimeout(timeoutId);
|
|
1538
1585
|
this.websocket = websocket;
|
|
1539
|
-
const isV02 = websocket.protocol
|
|
1586
|
+
const isV02 = isNetworkedDOMProtocolSubProtocol_v0_2(websocket.protocol);
|
|
1540
1587
|
let websocketAdapter;
|
|
1541
1588
|
if (isV02) {
|
|
1542
1589
|
websocketAdapter = new NetworkedDOMWebsocketV02Adapter(
|
|
@@ -2121,6 +2168,12 @@
|
|
|
2121
2168
|
scene22.removeChatProbe(chatProbe);
|
|
2122
2169
|
}
|
|
2123
2170
|
},
|
|
2171
|
+
getOverlayElement() {
|
|
2172
|
+
if (scene22.getOverlayElement) {
|
|
2173
|
+
return scene22.getOverlayElement();
|
|
2174
|
+
}
|
|
2175
|
+
return null;
|
|
2176
|
+
},
|
|
2124
2177
|
hasGraphicsAdapter() {
|
|
2125
2178
|
return scene22.hasGraphicsAdapter();
|
|
2126
2179
|
},
|
|
@@ -8010,7 +8063,7 @@
|
|
|
8010
8063
|
}
|
|
8011
8064
|
}
|
|
8012
8065
|
};
|
|
8013
|
-
RemoteDocument = class extends
|
|
8066
|
+
RemoteDocument = class extends TransformableElement {
|
|
8014
8067
|
constructor() {
|
|
8015
8068
|
super();
|
|
8016
8069
|
this.scene = null;
|
|
@@ -9314,17 +9367,22 @@
|
|
|
9314
9367
|
}
|
|
9315
9368
|
overriddenHandler(element, event);
|
|
9316
9369
|
};
|
|
9370
|
+
const loadingProgressManager = new LoadingProgressManager();
|
|
9371
|
+
const wrappedScene = createWrappedScene(this.options.mmlScene, loadingProgressManager);
|
|
9317
9372
|
const src = this.options.url;
|
|
9318
9373
|
this.remoteDocumentWrapper = new RemoteDocumentWrapper(
|
|
9319
9374
|
src,
|
|
9320
9375
|
this.options.windowTarget,
|
|
9321
|
-
|
|
9376
|
+
wrappedScene,
|
|
9322
9377
|
eventHandler
|
|
9323
9378
|
);
|
|
9324
9379
|
this.options.targetForWrappers.append(this.remoteDocumentWrapper.remoteDocument);
|
|
9325
|
-
let
|
|
9380
|
+
let sceneLoadingProgressManager = null;
|
|
9326
9381
|
if (this.options.mmlScene.getLoadingProgressManager) {
|
|
9327
|
-
|
|
9382
|
+
sceneLoadingProgressManager = this.options.mmlScene.getLoadingProgressManager();
|
|
9383
|
+
loadingProgressManager.addProgressCallback(() => {
|
|
9384
|
+
sceneLoadingProgressManager == null ? void 0 : sceneLoadingProgressManager.updateDocumentProgress(this);
|
|
9385
|
+
});
|
|
9328
9386
|
}
|
|
9329
9387
|
const isWebsocket = src.startsWith("ws://") || src.startsWith("wss://");
|
|
9330
9388
|
if (isWebsocket) {
|
|
@@ -9336,15 +9394,22 @@
|
|
|
9336
9394
|
this.remoteDocumentWrapper.setDocumentTime(time2);
|
|
9337
9395
|
},
|
|
9338
9396
|
(status) => {
|
|
9339
|
-
if (status === NetworkedDOMWebsocketStatus.
|
|
9340
|
-
|
|
9397
|
+
if (status === NetworkedDOMWebsocketStatus.Reconnecting) {
|
|
9398
|
+
this.remoteDocumentWrapper.remoteDocument.showError(true);
|
|
9399
|
+
loadingProgressManager.setInitialLoad(new Error("Failed to connect"));
|
|
9400
|
+
} else if (status === NetworkedDOMWebsocketStatus.Connected) {
|
|
9401
|
+
this.remoteDocumentWrapper.remoteDocument.showError(false);
|
|
9402
|
+
loadingProgressManager.setInitialLoad(true);
|
|
9403
|
+
} else {
|
|
9404
|
+
this.remoteDocumentWrapper.remoteDocument.showError(false);
|
|
9341
9405
|
}
|
|
9342
9406
|
this.options.statusUpdated(status);
|
|
9343
9407
|
},
|
|
9344
9408
|
{
|
|
9345
9409
|
tagPrefix: "m-",
|
|
9346
9410
|
// If overlays are allowed, allow SVG elements to populate them
|
|
9347
|
-
allowSVGElements: this.options.allowOverlay
|
|
9411
|
+
allowSVGElements: this.options.allowOverlay,
|
|
9412
|
+
connectionToken: this.options.connectionToken ?? null
|
|
9348
9413
|
}
|
|
9349
9414
|
);
|
|
9350
9415
|
this.websocket = websocket;
|
|
@@ -9361,12 +9426,15 @@
|
|
|
9361
9426
|
overriddenHandler = () => {
|
|
9362
9427
|
};
|
|
9363
9428
|
}
|
|
9429
|
+
sceneLoadingProgressManager == null ? void 0 : sceneLoadingProgressManager.addLoadingDocument(this, this.options.url, loadingProgressManager);
|
|
9364
9430
|
}
|
|
9365
9431
|
dispose() {
|
|
9432
|
+
var _a2, _b2, _c;
|
|
9366
9433
|
if (this.websocket) {
|
|
9367
9434
|
this.websocket.stop();
|
|
9368
9435
|
this.websocket = null;
|
|
9369
9436
|
}
|
|
9437
|
+
(_c = (_b2 = (_a2 = this.options.mmlScene).getLoadingProgressManager) == null ? void 0 : _b2.call(_a2)) == null ? void 0 : _c.removeLoadingDocument(this);
|
|
9370
9438
|
this.remoteDocumentWrapper.remoteDocument.remove();
|
|
9371
9439
|
}
|
|
9372
9440
|
};
|
|
@@ -114235,6 +114303,7 @@ void main() {
|
|
|
114235
114303
|
const urlSearchParams = new URLSearchParams(window.location.search);
|
|
114236
114304
|
const useIframe = scriptUrl.searchParams.get("iframe") === "true" || urlSearchParams.get("iframe") === "true";
|
|
114237
114305
|
const allowOverlay = scriptUrl.searchParams.get("allowOverlay") === "true" || urlSearchParams.get("allowOverlay") === "true";
|
|
114306
|
+
const connectionToken = urlSearchParams.get("token") ?? null;
|
|
114238
114307
|
const fullScreenMMLSceneOptions = {
|
|
114239
114308
|
allowOverlay
|
|
114240
114309
|
};
|
|
@@ -114262,6 +114331,7 @@ void main() {
|
|
|
114262
114331
|
const statusUI = new StatusUI();
|
|
114263
114332
|
const mmlNetworkSource = MMLNetworkSource.create({
|
|
114264
114333
|
url,
|
|
114334
|
+
connectionToken,
|
|
114265
114335
|
mmlScene: fullScreenMMLScene,
|
|
114266
114336
|
statusUpdated: (status) => {
|
|
114267
114337
|
if (status === NetworkedDOMWebsocketStatus.Connected) {
|