microboard-temp 0.13.43 → 0.13.45
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/dist/cjs/browser.js +421 -315
- package/dist/cjs/index.js +421 -315
- package/dist/cjs/node.js +421 -315
- package/dist/esm/browser.js +424 -318
- package/dist/esm/index.js +424 -318
- package/dist/esm/node.js +424 -318
- package/dist/types/Events/Log/EventsLog.d.ts +6 -1
- package/dist/types/Events/Log/createEventsList.d.ts +1 -0
- package/dist/types/Events/Log/getUnpublishedEventFromList.d.ts +4 -1
- package/dist/types/Items/RichText/CanvasText/index.d.ts +2 -0
- package/dist/types/Items/RichText/EditorContainer.d.ts +3 -2
- package/dist/types/Items/RichText/editorHelpers/selectionOps/setSelectionFontColor.d.ts +2 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -4133,277 +4133,6 @@ var init_Color = __esm(() => {
|
|
|
4133
4133
|
init_resolveColor();
|
|
4134
4134
|
});
|
|
4135
4135
|
|
|
4136
|
-
// src/Events/SyncLog.ts
|
|
4137
|
-
function createSyncLog() {
|
|
4138
|
-
const log = [];
|
|
4139
|
-
const subject = new Subject;
|
|
4140
|
-
log.push = function(...msgs) {
|
|
4141
|
-
let newLength = log.length;
|
|
4142
|
-
for (const msg of msgs) {
|
|
4143
|
-
const lastItem = log[log.length - 1];
|
|
4144
|
-
if (lastItem && lastItem.msg === msg.msg) {
|
|
4145
|
-
lastItem.records = lastItem.records.concat(msg.records);
|
|
4146
|
-
} else {
|
|
4147
|
-
newLength = Array.prototype.push.call(log, msg);
|
|
4148
|
-
}
|
|
4149
|
-
}
|
|
4150
|
-
subject.publish(log);
|
|
4151
|
-
return newLength;
|
|
4152
|
-
};
|
|
4153
|
-
return {
|
|
4154
|
-
log,
|
|
4155
|
-
subject
|
|
4156
|
-
};
|
|
4157
|
-
}
|
|
4158
|
-
var init_SyncLog = () => {};
|
|
4159
|
-
|
|
4160
|
-
// src/Events/Log/createEventsList.ts
|
|
4161
|
-
function createEventsList(commandFactory) {
|
|
4162
|
-
const confirmedRecords = [];
|
|
4163
|
-
const recordsToSend = [];
|
|
4164
|
-
const newRecords = [];
|
|
4165
|
-
const justConfirmed = [];
|
|
4166
|
-
const { log: syncLog, subject: syncLogSubject } = createSyncLog();
|
|
4167
|
-
let snapshotLastIndex = 0;
|
|
4168
|
-
function revert(records) {
|
|
4169
|
-
for (let i = records.length - 1;i >= 0; i--) {
|
|
4170
|
-
records[i].command.revert();
|
|
4171
|
-
}
|
|
4172
|
-
}
|
|
4173
|
-
function getOpItems(op) {
|
|
4174
|
-
if ("item" in op) {
|
|
4175
|
-
const item = op.item;
|
|
4176
|
-
if (Array.isArray(item))
|
|
4177
|
-
return item;
|
|
4178
|
-
if (typeof item === "string")
|
|
4179
|
-
return [item];
|
|
4180
|
-
if (item && typeof item === "object")
|
|
4181
|
-
return Object.keys(item);
|
|
4182
|
-
}
|
|
4183
|
-
if ("itemsMap" in op && op.itemsMap)
|
|
4184
|
-
return Object.keys(op.itemsMap);
|
|
4185
|
-
if ("items" in op) {
|
|
4186
|
-
const items = op.items;
|
|
4187
|
-
if (Array.isArray(items)) {
|
|
4188
|
-
return items.map((i) => typeof i === "string" ? i : i.id).filter(Boolean);
|
|
4189
|
-
}
|
|
4190
|
-
if (items && typeof items === "object" && items !== null)
|
|
4191
|
-
return Object.keys(items);
|
|
4192
|
-
}
|
|
4193
|
-
if ("itemsOps" in op) {
|
|
4194
|
-
const itemsOps = op.itemsOps;
|
|
4195
|
-
return itemsOps.map((io) => io.item);
|
|
4196
|
-
}
|
|
4197
|
-
return [];
|
|
4198
|
-
}
|
|
4199
|
-
return {
|
|
4200
|
-
commandFactory,
|
|
4201
|
-
addConfirmedRecords(records) {
|
|
4202
|
-
confirmedRecords.push(...records);
|
|
4203
|
-
syncLog.push({ msg: "confirmed", records });
|
|
4204
|
-
},
|
|
4205
|
-
addNewRecords(records) {
|
|
4206
|
-
newRecords.push(...records);
|
|
4207
|
-
syncLog.push({ msg: "addedNew", records });
|
|
4208
|
-
},
|
|
4209
|
-
confirmSentRecords(events) {
|
|
4210
|
-
for (const event of events) {
|
|
4211
|
-
const index = recordsToSend.findIndex((r) => r.event.body.eventId === event.body.eventId);
|
|
4212
|
-
if (index !== -1) {
|
|
4213
|
-
const [record] = recordsToSend.splice(index, 1);
|
|
4214
|
-
confirmedRecords.push(record);
|
|
4215
|
-
syncLog.push({ msg: "confirmed", records: [record] });
|
|
4216
|
-
}
|
|
4217
|
-
}
|
|
4218
|
-
},
|
|
4219
|
-
getConfirmedRecords() {
|
|
4220
|
-
return confirmedRecords;
|
|
4221
|
-
},
|
|
4222
|
-
getRecordsToSend() {
|
|
4223
|
-
return recordsToSend;
|
|
4224
|
-
},
|
|
4225
|
-
getNewRecords() {
|
|
4226
|
-
return newRecords;
|
|
4227
|
-
},
|
|
4228
|
-
getAllRecords() {
|
|
4229
|
-
return [...confirmedRecords, ...recordsToSend, ...newRecords];
|
|
4230
|
-
},
|
|
4231
|
-
prepareRecordsToSend() {
|
|
4232
|
-
const records = [...newRecords];
|
|
4233
|
-
recordsToSend.push(...records);
|
|
4234
|
-
newRecords.length = 0;
|
|
4235
|
-
syncLog.push({ msg: "toSend", records });
|
|
4236
|
-
return records;
|
|
4237
|
-
},
|
|
4238
|
-
forwardIterable() {
|
|
4239
|
-
return function* () {
|
|
4240
|
-
yield* confirmedRecords;
|
|
4241
|
-
yield* recordsToSend;
|
|
4242
|
-
yield* newRecords;
|
|
4243
|
-
}();
|
|
4244
|
-
},
|
|
4245
|
-
backwardIterable() {
|
|
4246
|
-
return function* () {
|
|
4247
|
-
for (let i = newRecords.length - 1;i >= 0; i--)
|
|
4248
|
-
yield newRecords[i];
|
|
4249
|
-
for (let i = recordsToSend.length - 1;i >= 0; i--)
|
|
4250
|
-
yield recordsToSend[i];
|
|
4251
|
-
for (let i = confirmedRecords.length - 1;i >= 0; i--)
|
|
4252
|
-
yield confirmedRecords[i];
|
|
4253
|
-
}();
|
|
4254
|
-
},
|
|
4255
|
-
revertUnconfirmed(predicate) {
|
|
4256
|
-
const toRevert = [...recordsToSend, ...newRecords].filter(predicate || (() => true));
|
|
4257
|
-
revert(toRevert);
|
|
4258
|
-
syncLog.push({ msg: "revertUnconfirmed", records: toRevert });
|
|
4259
|
-
},
|
|
4260
|
-
applyUnconfirmed(predicate) {
|
|
4261
|
-
const unconfirmed = [...recordsToSend, ...newRecords].filter(predicate || (() => true));
|
|
4262
|
-
for (const record of unconfirmed) {
|
|
4263
|
-
record.command.apply();
|
|
4264
|
-
}
|
|
4265
|
-
syncLog.push({ msg: "applyUnconfirmed", records: unconfirmed });
|
|
4266
|
-
},
|
|
4267
|
-
justConfirmed,
|
|
4268
|
-
getSyncLog() {
|
|
4269
|
-
return syncLog;
|
|
4270
|
-
},
|
|
4271
|
-
syncLogSubject,
|
|
4272
|
-
clear() {
|
|
4273
|
-
confirmedRecords.length = 0;
|
|
4274
|
-
recordsToSend.length = 0;
|
|
4275
|
-
newRecords.length = 0;
|
|
4276
|
-
syncLog.length = 0;
|
|
4277
|
-
syncLogSubject.publish(syncLog);
|
|
4278
|
-
},
|
|
4279
|
-
clearConfirmedRecords() {
|
|
4280
|
-
confirmedRecords.length = 0;
|
|
4281
|
-
syncLog.length = 0;
|
|
4282
|
-
syncLogSubject.publish(syncLog);
|
|
4283
|
-
},
|
|
4284
|
-
removeUnconfirmedEventsByItems(itemIds) {
|
|
4285
|
-
const itemIdSet = new Set(itemIds);
|
|
4286
|
-
const filter = (record) => {
|
|
4287
|
-
const opItems = getOpItems(record.event.body.operation);
|
|
4288
|
-
return !opItems.some((id) => itemIdSet.has(id));
|
|
4289
|
-
};
|
|
4290
|
-
const filteredNewRecords = newRecords.filter(filter);
|
|
4291
|
-
newRecords.length = 0;
|
|
4292
|
-
newRecords.push(...filteredNewRecords);
|
|
4293
|
-
const filteredRecordsToSend = recordsToSend.filter(filter);
|
|
4294
|
-
recordsToSend.length = 0;
|
|
4295
|
-
recordsToSend.push(...filteredRecordsToSend);
|
|
4296
|
-
syncLog.length = 0;
|
|
4297
|
-
syncLog.push({ msg: "confirmed", records: confirmedRecords });
|
|
4298
|
-
syncLog.push({ msg: "toSend", records: recordsToSend });
|
|
4299
|
-
syncLog.push({ msg: "addedNew", records: newRecords });
|
|
4300
|
-
syncLogSubject.publish(syncLog);
|
|
4301
|
-
},
|
|
4302
|
-
isAllEventsConfirmed() {
|
|
4303
|
-
return recordsToSend.length === 0 && newRecords.length === 0;
|
|
4304
|
-
},
|
|
4305
|
-
setSnapshotLastIndex(index) {
|
|
4306
|
-
snapshotLastIndex = index;
|
|
4307
|
-
},
|
|
4308
|
-
getSnapshotLastIndex() {
|
|
4309
|
-
return snapshotLastIndex;
|
|
4310
|
-
}
|
|
4311
|
-
};
|
|
4312
|
-
}
|
|
4313
|
-
var init_createEventsList = __esm(() => {
|
|
4314
|
-
init_SyncLog();
|
|
4315
|
-
});
|
|
4316
|
-
|
|
4317
|
-
// src/Events/Log/getRecordByIdFromList.ts
|
|
4318
|
-
function getRecordByIdFromList(id, list) {
|
|
4319
|
-
for (const record of list.forwardIterable()) {
|
|
4320
|
-
if (record.event.body.eventId === id) {
|
|
4321
|
-
return record;
|
|
4322
|
-
}
|
|
4323
|
-
}
|
|
4324
|
-
return;
|
|
4325
|
-
}
|
|
4326
|
-
|
|
4327
|
-
// src/Events/Log/shouldSkipEvent.ts
|
|
4328
|
-
function shouldSkipEvent(record, userId) {
|
|
4329
|
-
const { operation } = record.event.body;
|
|
4330
|
-
return record.event.body.userId !== userId || operation.method === "updateVideoData" || operation.class === "Audio" && operation.method === "setUrl";
|
|
4331
|
-
}
|
|
4332
|
-
|
|
4333
|
-
// src/Events/Log/getRedoRecordFromList.ts
|
|
4334
|
-
function getRedoRecordFromList(userId, list) {
|
|
4335
|
-
let counter = 0;
|
|
4336
|
-
for (const record of list.backwardIterable()) {
|
|
4337
|
-
if (shouldSkipEvent(record, userId)) {
|
|
4338
|
-
continue;
|
|
4339
|
-
}
|
|
4340
|
-
if (record.event.body.operation.method !== "undo" && record.event.body.operation.method !== "redo") {
|
|
4341
|
-
return null;
|
|
4342
|
-
}
|
|
4343
|
-
const { method } = record.event.body.operation;
|
|
4344
|
-
if (method === "redo") {
|
|
4345
|
-
counter++;
|
|
4346
|
-
} else if (method === "undo") {
|
|
4347
|
-
if (counter > 0) {
|
|
4348
|
-
counter--;
|
|
4349
|
-
} else if (counter === 0) {
|
|
4350
|
-
return record;
|
|
4351
|
-
}
|
|
4352
|
-
}
|
|
4353
|
-
}
|
|
4354
|
-
return null;
|
|
4355
|
-
}
|
|
4356
|
-
var init_getRedoRecordFromList = () => {};
|
|
4357
|
-
|
|
4358
|
-
// src/Events/Log/getUndoRecordFromList.ts
|
|
4359
|
-
function getUndoRecordFromList(userId, list) {
|
|
4360
|
-
let counter = 0;
|
|
4361
|
-
const isAllEventsConfirmed = list.isAllEventsConfirmed();
|
|
4362
|
-
if (!isAllEventsConfirmed) {
|
|
4363
|
-
return null;
|
|
4364
|
-
}
|
|
4365
|
-
for (const record of list.getConfirmedRecords().slice().reverse()) {
|
|
4366
|
-
if (shouldSkipEvent(record, userId)) {
|
|
4367
|
-
continue;
|
|
4368
|
-
}
|
|
4369
|
-
if (record.event.body.operation.method === "undo") {
|
|
4370
|
-
counter++;
|
|
4371
|
-
} else if (counter === 0) {
|
|
4372
|
-
return record;
|
|
4373
|
-
} else {
|
|
4374
|
-
counter--;
|
|
4375
|
-
}
|
|
4376
|
-
}
|
|
4377
|
-
return null;
|
|
4378
|
-
}
|
|
4379
|
-
var init_getUndoRecordFromList = () => {};
|
|
4380
|
-
|
|
4381
|
-
// src/Events/Log/getUnpublishedEventFromList.ts
|
|
4382
|
-
function getUnpublishedEventFromList(list) {
|
|
4383
|
-
const recordsToSend = list.prepareRecordsToSend();
|
|
4384
|
-
if (recordsToSend.length === 0) {
|
|
4385
|
-
return null;
|
|
4386
|
-
}
|
|
4387
|
-
const operations = getOperationsFromEventRecords(recordsToSend);
|
|
4388
|
-
return combineOperationsIntoPack(recordsToSend[0].event, operations);
|
|
4389
|
-
}
|
|
4390
|
-
function getOperationsFromEventRecords(records) {
|
|
4391
|
-
return records.map((record) => ({
|
|
4392
|
-
...record.event.body.operation,
|
|
4393
|
-
actualId: record.event.body.eventId
|
|
4394
|
-
}));
|
|
4395
|
-
}
|
|
4396
|
-
function combineOperationsIntoPack(baseEvent, operations) {
|
|
4397
|
-
const { operation, ...bodyWithoutOperation } = baseEvent.body;
|
|
4398
|
-
return {
|
|
4399
|
-
...baseEvent,
|
|
4400
|
-
body: {
|
|
4401
|
-
...bodyWithoutOperation,
|
|
4402
|
-
operations
|
|
4403
|
-
}
|
|
4404
|
-
};
|
|
4405
|
-
}
|
|
4406
|
-
|
|
4407
4136
|
// src/Events/EventsOperations.ts
|
|
4408
4137
|
function isTransformation(op) {
|
|
4409
4138
|
return op.class === "Transformation";
|
|
@@ -4730,41 +4459,69 @@ function mergeBoardOperations(opA, opB) {
|
|
|
4730
4459
|
}
|
|
4731
4460
|
var init_Merge = () => {};
|
|
4732
4461
|
|
|
4733
|
-
// src/Events/
|
|
4734
|
-
function
|
|
4735
|
-
if (
|
|
4736
|
-
return
|
|
4462
|
+
// src/Events/mergeRecords.ts
|
|
4463
|
+
function mergeRecords(records) {
|
|
4464
|
+
if (records.length < 2) {
|
|
4465
|
+
return records;
|
|
4737
4466
|
}
|
|
4738
|
-
const
|
|
4467
|
+
const mergedRecords = [];
|
|
4739
4468
|
let previous = null;
|
|
4740
|
-
for (const
|
|
4469
|
+
for (const record of records) {
|
|
4741
4470
|
if (!previous) {
|
|
4742
|
-
previous =
|
|
4471
|
+
previous = record;
|
|
4743
4472
|
continue;
|
|
4744
4473
|
}
|
|
4745
|
-
const
|
|
4746
|
-
if (!
|
|
4747
|
-
|
|
4748
|
-
previous =
|
|
4474
|
+
const mergedEventOperation = mergeOperations(previous.event.body.operation, record.event.body.operation);
|
|
4475
|
+
if (!mergedEventOperation) {
|
|
4476
|
+
mergedRecords.push(previous);
|
|
4477
|
+
previous = record;
|
|
4749
4478
|
} else {
|
|
4479
|
+
const mergedCommand = record.command.merge ? previous.command.merge(mergedEventOperation) : previous.command;
|
|
4750
4480
|
previous = {
|
|
4751
|
-
|
|
4752
|
-
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4481
|
+
event: {
|
|
4482
|
+
...record.event,
|
|
4483
|
+
body: {
|
|
4484
|
+
...record.event.body,
|
|
4485
|
+
operation: mergedEventOperation
|
|
4486
|
+
}
|
|
4487
|
+
},
|
|
4488
|
+
command: mergedCommand
|
|
4756
4489
|
};
|
|
4757
4490
|
}
|
|
4758
4491
|
}
|
|
4759
4492
|
if (previous) {
|
|
4760
|
-
|
|
4493
|
+
mergedRecords.push(previous);
|
|
4761
4494
|
}
|
|
4762
|
-
return
|
|
4495
|
+
return mergedRecords;
|
|
4763
4496
|
}
|
|
4764
|
-
var
|
|
4497
|
+
var init_mergeRecords = __esm(() => {
|
|
4765
4498
|
init_Merge();
|
|
4766
4499
|
});
|
|
4767
4500
|
|
|
4501
|
+
// src/Events/SyncLog.ts
|
|
4502
|
+
function createSyncLog() {
|
|
4503
|
+
const log = [];
|
|
4504
|
+
const subject = new Subject;
|
|
4505
|
+
log.push = function(...msgs) {
|
|
4506
|
+
let newLength = log.length;
|
|
4507
|
+
for (const msg of msgs) {
|
|
4508
|
+
const lastItem = log[log.length - 1];
|
|
4509
|
+
if (lastItem && lastItem.msg === msg.msg) {
|
|
4510
|
+
lastItem.records = lastItem.records.concat(msg.records);
|
|
4511
|
+
} else {
|
|
4512
|
+
newLength = Array.prototype.push.call(log, msg);
|
|
4513
|
+
}
|
|
4514
|
+
}
|
|
4515
|
+
subject.publish(log);
|
|
4516
|
+
return newLength;
|
|
4517
|
+
};
|
|
4518
|
+
return {
|
|
4519
|
+
log,
|
|
4520
|
+
subject
|
|
4521
|
+
};
|
|
4522
|
+
}
|
|
4523
|
+
var init_SyncLog = () => {};
|
|
4524
|
+
|
|
4768
4525
|
// src/Events/Transform/removeText_removeText.ts
|
|
4769
4526
|
import { Path as Path2 } from "slate";
|
|
4770
4527
|
function removeText_removeText(confirmed, toTransform) {
|
|
@@ -5848,6 +5605,346 @@ var init_transformEvents = __esm(() => {
|
|
|
5848
5605
|
init_Transform2();
|
|
5849
5606
|
});
|
|
5850
5607
|
|
|
5608
|
+
// src/Events/Log/createEventsList.ts
|
|
5609
|
+
function createEventsList(commandFactory) {
|
|
5610
|
+
const confirmedRecords = [];
|
|
5611
|
+
const recordsToSend = [];
|
|
5612
|
+
const newRecords = [];
|
|
5613
|
+
const justConfirmed = [];
|
|
5614
|
+
const { log: syncLog, subject: syncLogSubject } = createSyncLog();
|
|
5615
|
+
let snapshotLastIndex = 0;
|
|
5616
|
+
function revert(records) {
|
|
5617
|
+
for (let i = records.length - 1;i >= 0; i--) {
|
|
5618
|
+
records[i].command.revert();
|
|
5619
|
+
}
|
|
5620
|
+
}
|
|
5621
|
+
function apply(records) {
|
|
5622
|
+
for (const record of records) {
|
|
5623
|
+
record.command = commandFactory(record.event.body.operation);
|
|
5624
|
+
record.command.apply();
|
|
5625
|
+
}
|
|
5626
|
+
}
|
|
5627
|
+
function mergeAndPushConfirmedRecords(records) {
|
|
5628
|
+
const lastConfirmedRecord = confirmedRecords.pop();
|
|
5629
|
+
const recordsToMerge = lastConfirmedRecord ? [lastConfirmedRecord, ...records] : records;
|
|
5630
|
+
const mergedRecords = mergeRecords(recordsToMerge);
|
|
5631
|
+
confirmedRecords.push(...mergedRecords);
|
|
5632
|
+
}
|
|
5633
|
+
return {
|
|
5634
|
+
commandFactory,
|
|
5635
|
+
addConfirmedRecords(records) {
|
|
5636
|
+
syncLog.push({ msg: "confirmed", records });
|
|
5637
|
+
mergeAndPushConfirmedRecords(records);
|
|
5638
|
+
},
|
|
5639
|
+
addNewRecords(records) {
|
|
5640
|
+
for (const record of records) {
|
|
5641
|
+
if (newRecords.length > 0) {
|
|
5642
|
+
const lastRecord = newRecords[newRecords.length - 1];
|
|
5643
|
+
const mergedOperation = mergeOperations(lastRecord.event.body.operation, record.event.body.operation);
|
|
5644
|
+
if (mergedOperation) {
|
|
5645
|
+
lastRecord.event = {
|
|
5646
|
+
...lastRecord.event,
|
|
5647
|
+
body: {
|
|
5648
|
+
...lastRecord.event.body,
|
|
5649
|
+
operation: mergedOperation
|
|
5650
|
+
}
|
|
5651
|
+
};
|
|
5652
|
+
lastRecord.command = commandFactory(mergedOperation);
|
|
5653
|
+
continue;
|
|
5654
|
+
}
|
|
5655
|
+
}
|
|
5656
|
+
newRecords.push(record);
|
|
5657
|
+
syncLog.push({ msg: "addedNew", records: [record] });
|
|
5658
|
+
}
|
|
5659
|
+
},
|
|
5660
|
+
confirmSentRecords(events) {
|
|
5661
|
+
const records = recordsToSend;
|
|
5662
|
+
if (records.length !== events.length) {
|
|
5663
|
+
console.error("Mismatch between records and events length");
|
|
5664
|
+
return;
|
|
5665
|
+
}
|
|
5666
|
+
for (let i = 0;i < records.length; i++) {
|
|
5667
|
+
records[i].event.order = events[i].order;
|
|
5668
|
+
}
|
|
5669
|
+
syncLog.push({ msg: "confirmed", records: [...records] });
|
|
5670
|
+
mergeAndPushConfirmedRecords(records);
|
|
5671
|
+
recordsToSend.splice(0, records.length);
|
|
5672
|
+
},
|
|
5673
|
+
confirmSentRecordIds(eventIds, order) {
|
|
5674
|
+
const confirmedRecordsById = [];
|
|
5675
|
+
for (const eventId of eventIds) {
|
|
5676
|
+
const index = recordsToSend.findIndex((record2) => record2.event.body.eventId === eventId);
|
|
5677
|
+
if (index === -1) {
|
|
5678
|
+
continue;
|
|
5679
|
+
}
|
|
5680
|
+
const [record] = recordsToSend.splice(index, 1);
|
|
5681
|
+
record.event.order = order;
|
|
5682
|
+
confirmedRecordsById.push(record);
|
|
5683
|
+
}
|
|
5684
|
+
if (confirmedRecordsById.length === 0) {
|
|
5685
|
+
return;
|
|
5686
|
+
}
|
|
5687
|
+
syncLog.push({ msg: "confirmed", records: confirmedRecordsById });
|
|
5688
|
+
mergeAndPushConfirmedRecords(confirmedRecordsById);
|
|
5689
|
+
},
|
|
5690
|
+
getConfirmedRecords() {
|
|
5691
|
+
return confirmedRecords;
|
|
5692
|
+
},
|
|
5693
|
+
getRecordsToSend() {
|
|
5694
|
+
return recordsToSend;
|
|
5695
|
+
},
|
|
5696
|
+
getNewRecords() {
|
|
5697
|
+
return newRecords;
|
|
5698
|
+
},
|
|
5699
|
+
getAllRecords() {
|
|
5700
|
+
return [...confirmedRecords, ...recordsToSend, ...newRecords];
|
|
5701
|
+
},
|
|
5702
|
+
prepareRecordsToSend() {
|
|
5703
|
+
if (recordsToSend.length === 0 && newRecords.length > 0) {
|
|
5704
|
+
const records = [...newRecords];
|
|
5705
|
+
recordsToSend.push(...records);
|
|
5706
|
+
newRecords.length = 0;
|
|
5707
|
+
syncLog.push({ msg: "toSend", records });
|
|
5708
|
+
}
|
|
5709
|
+
return recordsToSend;
|
|
5710
|
+
},
|
|
5711
|
+
forwardIterable() {
|
|
5712
|
+
return function* () {
|
|
5713
|
+
yield* confirmedRecords;
|
|
5714
|
+
yield* recordsToSend;
|
|
5715
|
+
yield* newRecords;
|
|
5716
|
+
}();
|
|
5717
|
+
},
|
|
5718
|
+
backwardIterable() {
|
|
5719
|
+
return function* () {
|
|
5720
|
+
for (let i = newRecords.length - 1;i >= 0; i--)
|
|
5721
|
+
yield newRecords[i];
|
|
5722
|
+
for (let i = recordsToSend.length - 1;i >= 0; i--)
|
|
5723
|
+
yield recordsToSend[i];
|
|
5724
|
+
for (let i = confirmedRecords.length - 1;i >= 0; i--)
|
|
5725
|
+
yield confirmedRecords[i];
|
|
5726
|
+
}();
|
|
5727
|
+
},
|
|
5728
|
+
revertUnconfirmed(predicate) {
|
|
5729
|
+
const toRevert = [...recordsToSend, ...newRecords].filter(predicate || (() => true));
|
|
5730
|
+
revert(toRevert);
|
|
5731
|
+
syncLog.push({ msg: "revertUnconfirmed", records: toRevert });
|
|
5732
|
+
},
|
|
5733
|
+
applyUnconfirmed(predicate) {
|
|
5734
|
+
const filter = predicate || (() => true);
|
|
5735
|
+
if (justConfirmed.length > 0) {
|
|
5736
|
+
const confirmedEvents = justConfirmed.map((record) => record.event);
|
|
5737
|
+
const transformedSend = transformEvents(confirmedEvents, recordsToSend.map((record) => record.event));
|
|
5738
|
+
const transformedNew = transformEvents(confirmedEvents, newRecords.map((record) => record.event));
|
|
5739
|
+
const updatedRecordsToSend = transformedSend.map((event) => ({
|
|
5740
|
+
event,
|
|
5741
|
+
command: commandFactory(event.body.operation)
|
|
5742
|
+
}));
|
|
5743
|
+
const updatedNewRecords = transformedNew.map((event) => ({
|
|
5744
|
+
event,
|
|
5745
|
+
command: commandFactory(event.body.operation)
|
|
5746
|
+
}));
|
|
5747
|
+
recordsToSend.length = 0;
|
|
5748
|
+
recordsToSend.push(...updatedRecordsToSend);
|
|
5749
|
+
newRecords.length = 0;
|
|
5750
|
+
newRecords.push(...updatedNewRecords);
|
|
5751
|
+
justConfirmed.length = 0;
|
|
5752
|
+
}
|
|
5753
|
+
const unconfirmed = [...recordsToSend, ...newRecords].filter(filter);
|
|
5754
|
+
apply(unconfirmed);
|
|
5755
|
+
syncLog.push({ msg: "applyUnconfirmed", records: unconfirmed });
|
|
5756
|
+
},
|
|
5757
|
+
justConfirmed,
|
|
5758
|
+
getSyncLog() {
|
|
5759
|
+
return syncLog;
|
|
5760
|
+
},
|
|
5761
|
+
syncLogSubject,
|
|
5762
|
+
clear() {
|
|
5763
|
+
confirmedRecords.length = 0;
|
|
5764
|
+
recordsToSend.length = 0;
|
|
5765
|
+
newRecords.length = 0;
|
|
5766
|
+
syncLog.length = 0;
|
|
5767
|
+
syncLogSubject.publish(syncLog);
|
|
5768
|
+
},
|
|
5769
|
+
clearConfirmedRecords() {
|
|
5770
|
+
confirmedRecords.length = 0;
|
|
5771
|
+
syncLog.length = 0;
|
|
5772
|
+
syncLogSubject.publish(syncLog);
|
|
5773
|
+
},
|
|
5774
|
+
removeUnconfirmedEventsByItems(itemIds) {
|
|
5775
|
+
function shouldRemoveEvent(operation, ids) {
|
|
5776
|
+
if (operation.method === "add" && operation.class === "Board") {
|
|
5777
|
+
if (Array.isArray(operation.item)) {
|
|
5778
|
+
return operation.item.some((id) => ids.includes(id));
|
|
5779
|
+
}
|
|
5780
|
+
return ids.includes(operation.item);
|
|
5781
|
+
}
|
|
5782
|
+
if (operation.method === "remove" && operation.class === "Board") {
|
|
5783
|
+
return operation.item.some((id) => ids.includes(id));
|
|
5784
|
+
}
|
|
5785
|
+
return false;
|
|
5786
|
+
}
|
|
5787
|
+
const nextRecordsToSend = recordsToSend.filter((record) => !shouldRemoveEvent(record.event.body.operation, itemIds));
|
|
5788
|
+
if (nextRecordsToSend.length !== recordsToSend.length) {
|
|
5789
|
+
recordsToSend.length = 0;
|
|
5790
|
+
recordsToSend.push(...nextRecordsToSend);
|
|
5791
|
+
}
|
|
5792
|
+
const nextNewRecords = newRecords.filter((record) => !shouldRemoveEvent(record.event.body.operation, itemIds));
|
|
5793
|
+
if (nextNewRecords.length !== newRecords.length) {
|
|
5794
|
+
newRecords.length = 0;
|
|
5795
|
+
newRecords.push(...nextNewRecords);
|
|
5796
|
+
}
|
|
5797
|
+
},
|
|
5798
|
+
isAllEventsConfirmed() {
|
|
5799
|
+
return recordsToSend.length === 0 && newRecords.length === 0;
|
|
5800
|
+
},
|
|
5801
|
+
setSnapshotLastIndex(index) {
|
|
5802
|
+
snapshotLastIndex = index;
|
|
5803
|
+
},
|
|
5804
|
+
getSnapshotLastIndex() {
|
|
5805
|
+
return snapshotLastIndex;
|
|
5806
|
+
}
|
|
5807
|
+
};
|
|
5808
|
+
}
|
|
5809
|
+
var init_createEventsList = __esm(() => {
|
|
5810
|
+
init_Merge();
|
|
5811
|
+
init_mergeRecords();
|
|
5812
|
+
init_SyncLog();
|
|
5813
|
+
init_transformEvents();
|
|
5814
|
+
});
|
|
5815
|
+
|
|
5816
|
+
// src/Events/Log/getRecordByIdFromList.ts
|
|
5817
|
+
function getRecordByIdFromList(id, list) {
|
|
5818
|
+
for (const record of list.forwardIterable()) {
|
|
5819
|
+
if (record.event.body.eventId === id) {
|
|
5820
|
+
return record;
|
|
5821
|
+
}
|
|
5822
|
+
}
|
|
5823
|
+
return;
|
|
5824
|
+
}
|
|
5825
|
+
|
|
5826
|
+
// src/Events/Log/shouldSkipEvent.ts
|
|
5827
|
+
function shouldSkipEvent(record, userId) {
|
|
5828
|
+
const { operation } = record.event.body;
|
|
5829
|
+
return record.event.body.userId !== userId || operation.method === "updateVideoData" || operation.class === "Audio" && operation.method === "setUrl";
|
|
5830
|
+
}
|
|
5831
|
+
|
|
5832
|
+
// src/Events/Log/getRedoRecordFromList.ts
|
|
5833
|
+
function getRedoRecordFromList(userId, list) {
|
|
5834
|
+
let counter = 0;
|
|
5835
|
+
for (const record of list.backwardIterable()) {
|
|
5836
|
+
if (shouldSkipEvent(record, userId)) {
|
|
5837
|
+
continue;
|
|
5838
|
+
}
|
|
5839
|
+
if (record.event.body.operation.method !== "undo" && record.event.body.operation.method !== "redo") {
|
|
5840
|
+
return null;
|
|
5841
|
+
}
|
|
5842
|
+
const { method } = record.event.body.operation;
|
|
5843
|
+
if (method === "redo") {
|
|
5844
|
+
counter++;
|
|
5845
|
+
} else if (method === "undo") {
|
|
5846
|
+
if (counter > 0) {
|
|
5847
|
+
counter--;
|
|
5848
|
+
} else if (counter === 0) {
|
|
5849
|
+
return record;
|
|
5850
|
+
}
|
|
5851
|
+
}
|
|
5852
|
+
}
|
|
5853
|
+
return null;
|
|
5854
|
+
}
|
|
5855
|
+
var init_getRedoRecordFromList = () => {};
|
|
5856
|
+
|
|
5857
|
+
// src/Events/Log/getUndoRecordFromList.ts
|
|
5858
|
+
function getUndoRecordFromList(userId, list) {
|
|
5859
|
+
let counter = 0;
|
|
5860
|
+
const isAllEventsConfirmed = list.isAllEventsConfirmed();
|
|
5861
|
+
if (!isAllEventsConfirmed) {
|
|
5862
|
+
return null;
|
|
5863
|
+
}
|
|
5864
|
+
for (const record of list.getConfirmedRecords().slice().reverse()) {
|
|
5865
|
+
if (shouldSkipEvent(record, userId)) {
|
|
5866
|
+
continue;
|
|
5867
|
+
}
|
|
5868
|
+
if (record.event.body.operation.method === "undo") {
|
|
5869
|
+
counter++;
|
|
5870
|
+
} else if (counter === 0) {
|
|
5871
|
+
return record;
|
|
5872
|
+
} else {
|
|
5873
|
+
counter--;
|
|
5874
|
+
}
|
|
5875
|
+
}
|
|
5876
|
+
return null;
|
|
5877
|
+
}
|
|
5878
|
+
var init_getUndoRecordFromList = () => {};
|
|
5879
|
+
|
|
5880
|
+
// src/Events/Log/getUnpublishedEventFromList.ts
|
|
5881
|
+
function getUnpublishedEventFromList(list) {
|
|
5882
|
+
const recordsToSend = list.prepareRecordsToSend();
|
|
5883
|
+
if (recordsToSend.length === 0) {
|
|
5884
|
+
return null;
|
|
5885
|
+
}
|
|
5886
|
+
const mergedRecords = mergeRecords(recordsToSend);
|
|
5887
|
+
const operations = getOperationsFromEventRecords(mergedRecords);
|
|
5888
|
+
return {
|
|
5889
|
+
event: combineOperationsIntoPack(recordsToSend[0].event, operations),
|
|
5890
|
+
sentEventIds: recordsToSend.map((record) => record.event.body.eventId)
|
|
5891
|
+
};
|
|
5892
|
+
}
|
|
5893
|
+
function getOperationsFromEventRecords(records) {
|
|
5894
|
+
return records.map((record) => ({
|
|
5895
|
+
...record.event.body.operation,
|
|
5896
|
+
actualId: record.event.body.eventId
|
|
5897
|
+
}));
|
|
5898
|
+
}
|
|
5899
|
+
function combineOperationsIntoPack(baseEvent, operations) {
|
|
5900
|
+
const { operation, ...bodyWithoutOperation } = baseEvent.body;
|
|
5901
|
+
return {
|
|
5902
|
+
...baseEvent,
|
|
5903
|
+
body: {
|
|
5904
|
+
...bodyWithoutOperation,
|
|
5905
|
+
operations
|
|
5906
|
+
}
|
|
5907
|
+
};
|
|
5908
|
+
}
|
|
5909
|
+
var init_getUnpublishedEventFromList = __esm(() => {
|
|
5910
|
+
init_mergeRecords();
|
|
5911
|
+
});
|
|
5912
|
+
|
|
5913
|
+
// src/Events/mergeEvents.ts
|
|
5914
|
+
function mergeEvents(events) {
|
|
5915
|
+
if (events.length < 2) {
|
|
5916
|
+
return events;
|
|
5917
|
+
}
|
|
5918
|
+
const mergedEvents = [];
|
|
5919
|
+
let previous = null;
|
|
5920
|
+
for (const event of events) {
|
|
5921
|
+
if (!previous) {
|
|
5922
|
+
previous = event;
|
|
5923
|
+
continue;
|
|
5924
|
+
}
|
|
5925
|
+
const mergedOperation = mergeOperations(previous.body.operation, event.body.operation);
|
|
5926
|
+
if (!mergedOperation) {
|
|
5927
|
+
mergedEvents.push(previous);
|
|
5928
|
+
previous = event;
|
|
5929
|
+
} else {
|
|
5930
|
+
previous = {
|
|
5931
|
+
...event,
|
|
5932
|
+
body: {
|
|
5933
|
+
...event.body,
|
|
5934
|
+
operation: mergedOperation
|
|
5935
|
+
}
|
|
5936
|
+
};
|
|
5937
|
+
}
|
|
5938
|
+
}
|
|
5939
|
+
if (previous) {
|
|
5940
|
+
mergedEvents.push(previous);
|
|
5941
|
+
}
|
|
5942
|
+
return mergedEvents;
|
|
5943
|
+
}
|
|
5944
|
+
var init_mergeEvents = __esm(() => {
|
|
5945
|
+
init_Merge();
|
|
5946
|
+
});
|
|
5947
|
+
|
|
5851
5948
|
// src/Events/Log/expandEvents.ts
|
|
5852
5949
|
function expandEvents(events) {
|
|
5853
5950
|
return events.flatMap((event) => {
|
|
@@ -6061,6 +6158,9 @@ class EventsLog {
|
|
|
6061
6158
|
const events = expandEvents([event]);
|
|
6062
6159
|
this.list.confirmSentRecords(events);
|
|
6063
6160
|
}
|
|
6161
|
+
confirmSentLocalEventIds(eventIds, order) {
|
|
6162
|
+
this.list.confirmSentRecordIds(eventIds, order);
|
|
6163
|
+
}
|
|
6064
6164
|
getUnorderedRecords() {
|
|
6065
6165
|
return this.list.getRecordsToSend().concat(this.list.getNewRecords());
|
|
6066
6166
|
}
|
|
@@ -6103,6 +6203,7 @@ var init_EventsLog = __esm(() => {
|
|
|
6103
6203
|
init_createEventsList();
|
|
6104
6204
|
init_getRedoRecordFromList();
|
|
6105
6205
|
init_getUndoRecordFromList();
|
|
6206
|
+
init_getUnpublishedEventFromList();
|
|
6106
6207
|
init_insertEventsFromOtherConnectionsIntoList();
|
|
6107
6208
|
});
|
|
6108
6209
|
|
|
@@ -12030,6 +12131,9 @@ class SpatialIndex {
|
|
|
12030
12131
|
this.Mbr = new Mbr;
|
|
12031
12132
|
}
|
|
12032
12133
|
insert(item) {
|
|
12134
|
+
if (this.itemsArray.includes(item) || this.getById(item.getId())) {
|
|
12135
|
+
return;
|
|
12136
|
+
}
|
|
12033
12137
|
this.itemsArray.push(item);
|
|
12034
12138
|
this.itemsIndex.insert(item);
|
|
12035
12139
|
if (conf.isNode()) {
|
|
@@ -12627,6 +12731,9 @@ class SimpleSpatialIndex {
|
|
|
12627
12731
|
this.Mbr = new Mbr;
|
|
12628
12732
|
}
|
|
12629
12733
|
insert(item) {
|
|
12734
|
+
if (this.itemsArray.includes(item) || this.getById(item.getId())) {
|
|
12735
|
+
return;
|
|
12736
|
+
}
|
|
12630
12737
|
this.itemsArray.push(item);
|
|
12631
12738
|
if (this.Mbr.getWidth() === 0 && this.Mbr.getHeight() === 0) {
|
|
12632
12739
|
this.Mbr = item.getMbr().copy();
|
|
@@ -13053,7 +13160,10 @@ var init_BaseItem = __esm(() => {
|
|
|
13053
13160
|
if (this.parent !== childId && this.getId() !== childId && !this.hasAncestor(childId)) {
|
|
13054
13161
|
if (!this.index?.getById(childId) && foundItem) {
|
|
13055
13162
|
const localMatrix = foundItem.transformation.toMatrix().toLocalOf(containerNestingMatrix);
|
|
13056
|
-
|
|
13163
|
+
const currentParentId = foundItem.parent;
|
|
13164
|
+
const currentParent = currentParentId !== "Board" ? this.board.items.getById(currentParentId) : undefined;
|
|
13165
|
+
const sourceIndex = currentParent?.index || this.board.items.index;
|
|
13166
|
+
sourceIndex.remove(foundItem, true);
|
|
13057
13167
|
foundItem.parent = this.getId();
|
|
13058
13168
|
foundItem.onParentChanged(this.getId());
|
|
13059
13169
|
foundItem.transformation.setLocalMatrix(localMatrix);
|
|
@@ -16652,7 +16762,7 @@ var init_getListTypeAtSelectionStart = __esm(() => {
|
|
|
16652
16762
|
});
|
|
16653
16763
|
|
|
16654
16764
|
// src/Items/RichText/editorHelpers/links/setLink.ts
|
|
16655
|
-
import { Editor as Editor12, Transforms as Transforms11 } from "slate";
|
|
16765
|
+
import { Editor as Editor12, Transforms as Transforms11, Text as Text6 } from "slate";
|
|
16656
16766
|
var setLink = (editor, link, selection) => {
|
|
16657
16767
|
if (!selection) {
|
|
16658
16768
|
selectWholeText(editor);
|
|
@@ -16664,15 +16774,15 @@ var setLink = (editor, link, selection) => {
|
|
|
16664
16774
|
}
|
|
16665
16775
|
const format = link ? "rgba(71, 120, 245, 1)" : "rgb(20, 21, 26)";
|
|
16666
16776
|
Transforms11.setNodes(editor, { fontColor: format }, {
|
|
16667
|
-
match: (n) =>
|
|
16777
|
+
match: (n) => Text6.isText(n),
|
|
16668
16778
|
split: true
|
|
16669
16779
|
});
|
|
16670
|
-
for (const [
|
|
16671
|
-
match: (n) =>
|
|
16780
|
+
for (const [, path2] of Editor12.nodes(editor, {
|
|
16781
|
+
match: (n) => Text6.isText(n)
|
|
16672
16782
|
})) {
|
|
16673
16783
|
const nodeRange = Editor12.range(editor, path2);
|
|
16674
16784
|
Transforms11.select(editor, nodeRange);
|
|
16675
|
-
Transforms11.setNodes(editor, { link }, { split: false, match: (n) =>
|
|
16785
|
+
Transforms11.setNodes(editor, { link }, { split: false, match: (n) => Text6.isText(n) });
|
|
16676
16786
|
}
|
|
16677
16787
|
};
|
|
16678
16788
|
var init_setLink = __esm(() => {
|
|
@@ -25032,7 +25142,7 @@ var init_setEditorFocus = () => {};
|
|
|
25032
25142
|
import {
|
|
25033
25143
|
Editor as Editor31,
|
|
25034
25144
|
Element as Element9,
|
|
25035
|
-
Text as
|
|
25145
|
+
Text as Text7,
|
|
25036
25146
|
Transforms as Transforms21
|
|
25037
25147
|
} from "slate";
|
|
25038
25148
|
var isEditInProcessValue = false, counter = 0, RichText;
|
|
@@ -25600,7 +25710,7 @@ var init_RichText = __esm(() => {
|
|
|
25600
25710
|
}
|
|
25601
25711
|
getMinFontSize() {
|
|
25602
25712
|
const textNodes = Editor31.nodes(this.editor.editor, {
|
|
25603
|
-
match: (n) =>
|
|
25713
|
+
match: (n) => Text7.isText(n),
|
|
25604
25714
|
at: []
|
|
25605
25715
|
});
|
|
25606
25716
|
const fontSizes = [];
|
|
@@ -55373,25 +55483,16 @@ function handleBoardEventMessage(message, board) {
|
|
|
55373
55483
|
if (event.order <= log.getLastIndex()) {
|
|
55374
55484
|
return;
|
|
55375
55485
|
}
|
|
55376
|
-
const
|
|
55377
|
-
const
|
|
55378
|
-
const isEventFromCurrentUser =
|
|
55486
|
+
const eventConnectionId = Number(event.body.eventId.split(":")[0]);
|
|
55487
|
+
const currentConnectionId = board.events.connection?.connectionId;
|
|
55488
|
+
const isEventFromCurrentUser = currentConnectionId !== undefined && eventConnectionId === currentConnectionId;
|
|
55379
55489
|
if (isEventFromCurrentUser) {
|
|
55380
55490
|
return;
|
|
55381
55491
|
}
|
|
55382
55492
|
if ("operations" in event.body) {
|
|
55383
|
-
log.insertEventsFromOtherConnections(
|
|
55384
|
-
...event,
|
|
55385
|
-
body: {
|
|
55386
|
-
...event.body,
|
|
55387
|
-
userId: Number(message.userId)
|
|
55388
|
-
}
|
|
55389
|
-
});
|
|
55493
|
+
log.insertEventsFromOtherConnections(event);
|
|
55390
55494
|
} else {
|
|
55391
|
-
log.insertEventsFromOtherConnections(
|
|
55392
|
-
...event,
|
|
55393
|
-
userId: Number(message.userId)
|
|
55394
|
-
});
|
|
55495
|
+
log.insertEventsFromOtherConnections(event);
|
|
55395
55496
|
}
|
|
55396
55497
|
const last = log.getLastConfirmed();
|
|
55397
55498
|
if (last) {
|
|
@@ -55443,11 +55544,11 @@ function tryPublishEvent(board) {
|
|
|
55443
55544
|
if (log.pendingEvent) {
|
|
55444
55545
|
return;
|
|
55445
55546
|
}
|
|
55446
|
-
const
|
|
55447
|
-
if (!
|
|
55547
|
+
const unpublishedBatch = log.getUnpublishedEvent();
|
|
55548
|
+
if (!unpublishedBatch) {
|
|
55448
55549
|
return;
|
|
55449
55550
|
}
|
|
55450
|
-
sendBoardEvent(board,
|
|
55551
|
+
sendBoardEvent(board, unpublishedBatch, log.currentSequenceNumber);
|
|
55451
55552
|
}
|
|
55452
55553
|
function tryResendEvent(board) {
|
|
55453
55554
|
const { log } = board.events;
|
|
@@ -55464,7 +55565,10 @@ function tryResendEvent(board) {
|
|
|
55464
55565
|
board.presence.clear();
|
|
55465
55566
|
conf.connection?.notifyAboutLostConnection();
|
|
55466
55567
|
}
|
|
55467
|
-
sendBoardEvent(board,
|
|
55568
|
+
sendBoardEvent(board, {
|
|
55569
|
+
event: log.pendingEvent.event,
|
|
55570
|
+
sentEventIds: log.pendingEvent.sentEventIds
|
|
55571
|
+
}, log.currentSequenceNumber);
|
|
55468
55572
|
}
|
|
55469
55573
|
function handleSnapshotApplication(snapshot, board) {
|
|
55470
55574
|
const { log } = board.events;
|
|
@@ -55489,8 +55593,9 @@ function handleBoardEventListApplication(events, board) {
|
|
|
55489
55593
|
board.events.subject.publish(newEvents[0]);
|
|
55490
55594
|
}
|
|
55491
55595
|
}
|
|
55492
|
-
function sendBoardEvent(board,
|
|
55596
|
+
function sendBoardEvent(board, batch, sequenceNumber) {
|
|
55493
55597
|
const { log } = board.events;
|
|
55598
|
+
const { event, sentEventIds } = batch;
|
|
55494
55599
|
const toSend = {
|
|
55495
55600
|
...event,
|
|
55496
55601
|
body: {
|
|
@@ -55508,6 +55613,7 @@ function sendBoardEvent(board, event, sequenceNumber) {
|
|
|
55508
55613
|
const date = Date.now();
|
|
55509
55614
|
log.pendingEvent = {
|
|
55510
55615
|
event: toSend,
|
|
55616
|
+
sentEventIds,
|
|
55511
55617
|
sequenceNumber,
|
|
55512
55618
|
lastSentTime: date
|
|
55513
55619
|
};
|
|
@@ -55555,7 +55661,7 @@ function handleConfirmation(msg, board) {
|
|
|
55555
55661
|
conf.connection?.dismissNotificationAboutLostConnection();
|
|
55556
55662
|
log.currentSequenceNumber++;
|
|
55557
55663
|
log.pendingEvent.event.order = msg.order;
|
|
55558
|
-
log.
|
|
55664
|
+
log.confirmSentLocalEventIds(log.pendingEvent.sentEventIds, msg.order);
|
|
55559
55665
|
board.subject.publish();
|
|
55560
55666
|
log.pendingEvent = null;
|
|
55561
55667
|
log.firstSentTime = null;
|