@textbus/collaborate 5.3.1 → 5.3.3
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/base/collaborate.d.ts +5 -1
- package/dist/index.esm.js +56 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +55 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -735,11 +735,10 @@ exports.Collaborate = /*#__PURE__*/ function() {
|
|
|
735
735
|
key: "createSharedArrayByLocalArray",
|
|
736
736
|
value: function createSharedArrayByLocalArray(localArray) {
|
|
737
737
|
var sharedArray = new yjs.Array();
|
|
738
|
-
var
|
|
739
|
-
|
|
740
|
-
if (i in raw) {
|
|
738
|
+
for(var i = 0; i < localArray.length; i++){
|
|
739
|
+
if (i in localArray) {
|
|
741
740
|
sharedArray.push([
|
|
742
|
-
this.sharedModelForArraySlot(
|
|
741
|
+
this.sharedModelForArraySlot(localArray[i])
|
|
743
742
|
]);
|
|
744
743
|
} else {
|
|
745
744
|
sharedArray.push([
|
|
@@ -1074,9 +1073,60 @@ exports.Collaborate = /*#__PURE__*/ function() {
|
|
|
1074
1073
|
key: "insertSparseHole",
|
|
1075
1074
|
value: /**
|
|
1076
1075
|
* 在可观察数组中插入稀疏空洞(与 YArray 中 XmlElement 占位对齐)。
|
|
1077
|
-
*
|
|
1076
|
+
* 仅在远端同步路径调用;先改 raw,再用与 {@link ArrayProxyHandler} `length` 增长一致的原子命令
|
|
1077
|
+
* `retain` + `insert`(`undefined` 槽)记录,`unApply` 为 `retain` + `delete`。
|
|
1078
|
+
* `runLocalUpdate` 在 `updateFromRemote` 为 true 时会跳过,不会把洞再写回 Y。
|
|
1078
1079
|
*/ function insertSparseHole(localArray, atIndex) {
|
|
1079
1080
|
var raw = core.toRaw(localArray);
|
|
1081
|
+
var oldLen = raw.length;
|
|
1082
|
+
this.applySparseHoleToRaw(raw, atIndex);
|
|
1083
|
+
var holeCount = atIndex >= oldLen ? atIndex + 1 - oldLen : 1;
|
|
1084
|
+
var newTail = [];
|
|
1085
|
+
if (atIndex >= oldLen) {
|
|
1086
|
+
for(var i = oldLen; i < oldLen + holeCount; i++){
|
|
1087
|
+
newTail.push(raw[i]);
|
|
1088
|
+
}
|
|
1089
|
+
} else {
|
|
1090
|
+
newTail.push(undefined);
|
|
1091
|
+
}
|
|
1092
|
+
var changeMarker = localArray.__changeMarker__;
|
|
1093
|
+
changeMarker.beforeChange();
|
|
1094
|
+
var parentModel = core.getObserver(raw);
|
|
1095
|
+
var subModels = newTail.map(function(item) {
|
|
1096
|
+
var m = core.observe(item);
|
|
1097
|
+
core.attachModel(parentModel, m);
|
|
1098
|
+
return m;
|
|
1099
|
+
});
|
|
1100
|
+
var retainOffset = atIndex >= oldLen ? oldLen : atIndex;
|
|
1101
|
+
changeMarker.markAsDirtied({
|
|
1102
|
+
paths: [],
|
|
1103
|
+
apply: [
|
|
1104
|
+
{
|
|
1105
|
+
type: 'retain',
|
|
1106
|
+
offset: retainOffset
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
type: 'insert',
|
|
1110
|
+
data: core.valueToJSON(newTail),
|
|
1111
|
+
ref: subModels
|
|
1112
|
+
}
|
|
1113
|
+
],
|
|
1114
|
+
unApply: [
|
|
1115
|
+
{
|
|
1116
|
+
type: 'retain',
|
|
1117
|
+
offset: retainOffset
|
|
1118
|
+
},
|
|
1119
|
+
{
|
|
1120
|
+
type: 'delete',
|
|
1121
|
+
count: holeCount
|
|
1122
|
+
}
|
|
1123
|
+
]
|
|
1124
|
+
});
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
{
|
|
1128
|
+
key: "applySparseHoleToRaw",
|
|
1129
|
+
value: /** 与 Y 洞位对齐的稀疏洞写入,仅操作 raw */ function applySparseHoleToRaw(raw, atIndex) {
|
|
1080
1130
|
var len = raw.length;
|
|
1081
1131
|
if (atIndex >= len) {
|
|
1082
1132
|
raw.length = atIndex + 1;
|