@univerjs/drawing 0.4.2 → 0.5.0-beta.0

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/lib/es/index.js CHANGED
@@ -1,123 +1,115 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
- var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
- import { sortRules, sortRulesByDesc, createIdentifier, Tools, Inject, Injector, Plugin, mergeOverrideWithDependencies, IConfigService } from "@univerjs/core";
6
- import { Subject } from "rxjs";
7
- const DRAWING_IMAGE_WIDTH_LIMIT = 500, DRAWING_IMAGE_HEIGHT_LIMIT = 500, DRAWING_IMAGE_COUNT_LIMIT = 10, DRAWING_IMAGE_ALLOW_SIZE = 5 * 1024 * 1024, DRAWING_IMAGE_ALLOW_IMAGE_LIST = ["image/png", "image/jpeg", "image/jpg", "image/gif", "image/bmp"];
8
- var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, dist$1 = {}, json1_release = {}, deepEqual$1 = {};
9
- Object.defineProperty(deepEqual$1, "__esModule", { value: !0 });
10
- function eqObj(a, b) {
11
- if (Array.isArray(b))
1
+ var Ut = Object.defineProperty;
2
+ var Mt = (n, e, t) => e in n ? Ut(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
+ var V = (n, e, t) => Mt(n, typeof e != "symbol" ? e + "" : e, t);
4
+ import { sortRules as Nt, sortRulesByDesc as Rt, createIdentifier as Ct, Tools as kt, Inject as St, Injector as jt, Plugin as Tt, mergeOverrideWithDependencies as $t, IConfigService as Wt } from "@univerjs/core";
5
+ import { Subject as we } from "rxjs";
6
+ const an = 500, cn = 500, un = 10, Gt = 5 * 1024 * 1024, Bt = ["image/png", "image/jpeg", "image/jpg", "image/gif", "image/bmp"];
7
+ var Ce = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, F = {}, Et = {}, ct = {};
8
+ Object.defineProperty(ct, "__esModule", { value: !0 });
9
+ function xt(n, e) {
10
+ if (Array.isArray(e))
12
11
  return !1;
13
- for (let k in a)
14
- if (!deepEqual(a[k], b[k]))
12
+ for (let t in n)
13
+ if (!ut(n[t], e[t]))
15
14
  return !1;
16
- for (let k in b)
17
- if (a[k] === void 0)
15
+ for (let t in e)
16
+ if (n[t] === void 0)
18
17
  return !1;
19
18
  return !0;
20
19
  }
21
- __name(eqObj, "eqObj");
22
- function eqArr(a, b) {
23
- if (!Array.isArray(b) || a.length !== b.length)
20
+ function Lt(n, e) {
21
+ if (!Array.isArray(e) || n.length !== e.length)
24
22
  return !1;
25
- for (let i = 0; i < a.length; i++)
26
- if (!deepEqual(a[i], b[i]))
23
+ for (let t = 0; t < n.length; t++)
24
+ if (!ut(n[t], e[t]))
27
25
  return !1;
28
26
  return !0;
29
27
  }
30
- __name(eqArr, "eqArr");
31
- function deepEqual(a, b) {
32
- return a === b ? !0 : a === null || b === null || typeof a != "object" || typeof b != "object" ? !1 : Array.isArray(a) ? eqArr(a, b) : eqObj(a, b);
28
+ function ut(n, e) {
29
+ return n === e ? !0 : n === null || e === null || typeof n != "object" || typeof e != "object" ? !1 : Array.isArray(n) ? Lt(n, e) : xt(n, e);
33
30
  }
34
- __name(deepEqual, "deepEqual");
35
- deepEqual$1.default = deepEqual;
36
- var deepClone$1 = {};
37
- Object.defineProperty(deepClone$1, "__esModule", { value: !0 });
38
- function deepClone(old) {
39
- if (old === null)
31
+ ct.default = ut;
32
+ var dt = {};
33
+ Object.defineProperty(dt, "__esModule", { value: !0 });
34
+ function lt(n) {
35
+ if (n === null)
40
36
  return null;
41
- if (Array.isArray(old))
42
- return old.map(deepClone);
43
- if (typeof old == "object") {
44
- const o = {};
45
- for (let k in old)
46
- o[k] = deepClone(old[k]);
47
- return o;
37
+ if (Array.isArray(n))
38
+ return n.map(lt);
39
+ if (typeof n == "object") {
40
+ const e = {};
41
+ for (let t in n)
42
+ e[t] = lt(n[t]);
43
+ return e;
48
44
  } else
49
- return old;
45
+ return n;
50
46
  }
51
- __name(deepClone, "deepClone");
52
- deepClone$1.default = deepClone;
53
- var cursor = {};
54
- (function(exports) {
55
- Object.defineProperty(exports, "__esModule", { value: !0 }), exports.eachChildOf = exports.advancer = exports.readCursor = exports.writeCursor = exports.WriteCursor = exports.ReadCursor = exports.isValidPathItem = void 0;
56
- function assert(pred, msg) {
57
- if (!pred)
58
- throw new Error(msg);
59
- }
60
- __name(assert, "assert");
61
- const isObject = /* @__PURE__ */ __name((o) => o != null && typeof o == "object" && !Array.isArray(o), "isObject"), isGreaterKey = /* @__PURE__ */ __name((a, b) => (
47
+ dt.default = lt;
48
+ var ft = {};
49
+ (function(n) {
50
+ Object.defineProperty(n, "__esModule", { value: !0 }), n.eachChildOf = n.advancer = n.readCursor = n.writeCursor = n.WriteCursor = n.ReadCursor = n.isValidPathItem = void 0;
51
+ function e(O, o) {
52
+ if (!O)
53
+ throw new Error(o);
54
+ }
55
+ const t = (O) => O != null && typeof O == "object" && !Array.isArray(O), i = (O, o) => (
62
56
  // All the numbers, then all the letters. Just as the gods of ascii intended.
63
- typeof a == typeof b ? a > b : typeof a == "string" && typeof b == "number"
64
- ), "isGreaterKey");
65
- function copyAll(c, w) {
66
- for (let _k in c) {
67
- const k = _k;
68
- w.write(k, c[k]);
57
+ typeof O == typeof o ? O > o : typeof O == "string" && typeof o == "number"
58
+ );
59
+ function s(O, o) {
60
+ for (let c in O) {
61
+ const h = c;
62
+ o.write(h, O[h]);
69
63
  }
70
64
  }
71
- __name(copyAll, "copyAll"), exports.isValidPathItem = (k) => typeof k == "number" || typeof k == "string" && k !== "__proto__";
72
- const _Cursor = class _Cursor {
73
- constructor(op = null) {
74
- this.parents = [], this.indexes = [], this.lcIdx = -1, this.idx = -1, this.container = op;
65
+ n.isValidPathItem = (O) => typeof O == "number" || typeof O == "string" && O !== "__proto__";
66
+ class d {
67
+ constructor(o = null) {
68
+ this.parents = [], this.indexes = [], this.lcIdx = -1, this.idx = -1, this.container = o;
75
69
  }
76
70
  ascend() {
77
- assert(this.parents.length === this.indexes.length / 2), this.idx === 0 ? this.parents.length ? (this.lcIdx = this.indexes.pop(), this.container = this.parents.pop(), this.idx = this.indexes.pop()) : (this.lcIdx = 0, this.idx = -1) : (assert(this.idx > 0), this.idx--, isObject(this.container[this.idx]) && this.idx--);
71
+ e(this.parents.length === this.indexes.length / 2), this.idx === 0 ? this.parents.length ? (this.lcIdx = this.indexes.pop(), this.container = this.parents.pop(), this.idx = this.indexes.pop()) : (this.lcIdx = 0, this.idx = -1) : (e(this.idx > 0), this.idx--, t(this.container[this.idx]) && this.idx--);
78
72
  }
79
73
  getPath() {
80
- const path = [];
81
- let c = this.container, p = this.parents.length - 1, i = this.idx;
82
- for (; i >= 0; )
83
- path.unshift(c[i]), i === 0 ? (i = this.indexes[p * 2], c = this.parents[p--]) : i -= isObject(c[i - 1]) ? 2 : 1;
84
- return path;
74
+ const o = [];
75
+ let c = this.container, h = this.parents.length - 1, k = this.idx;
76
+ for (; k >= 0; )
77
+ o.unshift(c[k]), k === 0 ? (k = this.indexes[h * 2], c = this.parents[h--]) : k -= t(c[k - 1]) ? 2 : 1;
78
+ return o;
85
79
  }
86
- };
87
- __name(_Cursor, "Cursor");
88
- let Cursor = _Cursor;
89
- const _ReadCursor = class _ReadCursor extends Cursor {
80
+ }
81
+ class l extends d {
90
82
  get() {
91
83
  return this.container ? this.container.slice(this.idx + 1) : null;
92
84
  }
93
85
  // Its only valid to call this after descending into a child.
94
86
  getKey() {
95
- return assert(this.container != null, "Invalid call to getKey before cursor descended"), this.container[this.idx];
87
+ return e(this.container != null, "Invalid call to getKey before cursor descended"), this.container[this.idx];
96
88
  }
97
89
  getComponent() {
98
- let c;
99
- return this.container && this.container.length > this.idx + 1 && isObject(c = this.container[this.idx + 1]) ? c : null;
90
+ let o;
91
+ return this.container && this.container.length > this.idx + 1 && t(o = this.container[this.idx + 1]) ? o : null;
100
92
  }
101
93
  descendFirst() {
102
- let i = this.idx + 1;
103
- if (!this.container || i >= this.container.length || isObject(this.container[i]) && i + 1 >= this.container.length)
94
+ let o = this.idx + 1;
95
+ if (!this.container || o >= this.container.length || t(this.container[o]) && o + 1 >= this.container.length)
104
96
  return !1;
105
- isObject(this.container[i]) && i++;
106
- const firstChild = this.container[i];
107
- return Array.isArray(firstChild) ? (this.indexes.push(this.idx), this.parents.push(this.container), this.indexes.push(i), this.idx = 0, this.container = firstChild) : this.idx = i, !0;
97
+ t(this.container[o]) && o++;
98
+ const c = this.container[o];
99
+ return Array.isArray(c) ? (this.indexes.push(this.idx), this.parents.push(this.container), this.indexes.push(o), this.idx = 0, this.container = c) : this.idx = o, !0;
108
100
  }
109
101
  nextSibling() {
110
- if (assert(this.parents.length === this.indexes.length / 2), this.idx > 0 || this.parents.length === 0)
102
+ if (e(this.parents.length === this.indexes.length / 2), this.idx > 0 || this.parents.length === 0)
111
103
  return !1;
112
- const i = this.indexes[this.indexes.length - 1] + 1, c = this.parents[this.parents.length - 1];
113
- return i >= c.length ? !1 : (assert(!isNaN(i)), this.indexes[this.indexes.length - 1] = i, this.container = c[i], !0);
104
+ const o = this.indexes[this.indexes.length - 1] + 1, c = this.parents[this.parents.length - 1];
105
+ return o >= c.length ? !1 : (e(!isNaN(o)), this.indexes[this.indexes.length - 1] = o, this.container = c[o], !0);
114
106
  }
115
- _init(_container, _idx, _parents, _indexes) {
116
- this.container = _container, this.idx = _idx, this.parents = _parents.slice(), this.indexes = _indexes.slice();
107
+ _init(o, c, h, k) {
108
+ this.container = o, this.idx = c, this.parents = h.slice(), this.indexes = k.slice();
117
109
  }
118
110
  clone() {
119
- const c = new _ReadCursor();
120
- return c._init(this.container, this.idx, this.parents, this.indexes), c;
111
+ const o = new l();
112
+ return o._init(this.container, this.idx, this.parents, this.indexes), o;
121
113
  }
122
114
  *[Symbol.iterator]() {
123
115
  if (this.descendFirst()) {
@@ -130,51 +122,49 @@ var cursor = {};
130
122
  // TODO(cleanup): Consider moving these functions out of cursor, since
131
123
  // they're really just helper methods.
132
124
  // It'd be really nice to do this using generators.
133
- traverse(w, fn) {
134
- const c = this.getComponent();
135
- c && fn(c, w);
136
- for (const key of this)
137
- w && w.descend(key), this.traverse(w, fn), w && w.ascend();
125
+ traverse(o, c) {
126
+ const h = this.getComponent();
127
+ h && c(h, o);
128
+ for (const k of this)
129
+ o && o.descend(k), this.traverse(o, c), o && o.ascend();
138
130
  }
139
- eachPick(w, fn) {
140
- this.traverse(w, (c, w2) => {
141
- c.p != null && fn(c.p, w2);
131
+ eachPick(o, c) {
132
+ this.traverse(o, (h, k) => {
133
+ h.p != null && c(h.p, k);
142
134
  });
143
135
  }
144
- eachDrop(w, fn) {
145
- this.traverse(w, (c, w2) => {
146
- c.d != null && fn(c.d, w2);
136
+ eachDrop(o, c) {
137
+ this.traverse(o, (h, k) => {
138
+ h.d != null && c(h.d, k);
147
139
  });
148
140
  }
149
- };
150
- __name(_ReadCursor, "ReadCursor");
151
- let ReadCursor = _ReadCursor;
152
- exports.ReadCursor = ReadCursor;
153
- const _WriteCursor = class _WriteCursor extends Cursor {
154
- constructor(op = null) {
155
- super(op), this.pendingDescent = [], this._op = op;
141
+ }
142
+ n.ReadCursor = l;
143
+ class a extends d {
144
+ constructor(o = null) {
145
+ super(o), this.pendingDescent = [], this._op = o;
156
146
  }
157
147
  flushDescent() {
158
- assert(this.parents.length === this.indexes.length / 2), this.container === null && (this._op = this.container = []);
159
- for (let j = 0; j < this.pendingDescent.length; j++) {
160
- const k = this.pendingDescent[j];
161
- let i = this.idx + 1;
162
- if (i < this.container.length && isObject(this.container[i]) && i++, assert(i === this.container.length || !isObject(this.container[i])), i === this.container.length)
163
- this.container.push(k), this.idx = i;
164
- else if (this.container[i] === k)
165
- this.idx = i;
148
+ e(this.parents.length === this.indexes.length / 2), this.container === null && (this._op = this.container = []);
149
+ for (let o = 0; o < this.pendingDescent.length; o++) {
150
+ const c = this.pendingDescent[o];
151
+ let h = this.idx + 1;
152
+ if (h < this.container.length && t(this.container[h]) && h++, e(h === this.container.length || !t(this.container[h])), h === this.container.length)
153
+ this.container.push(c), this.idx = h;
154
+ else if (this.container[h] === c)
155
+ this.idx = h;
166
156
  else {
167
- if (!Array.isArray(this.container[i])) {
168
- const oldChild = this.container.splice(i, this.container.length - i);
169
- this.container.push(oldChild), this.lcIdx > -1 && (this.lcIdx = i);
157
+ if (!Array.isArray(this.container[h])) {
158
+ const k = this.container.splice(h, this.container.length - h);
159
+ this.container.push(k), this.lcIdx > -1 && (this.lcIdx = h);
170
160
  }
171
- for (this.indexes.push(this.idx), this.parents.push(this.container), this.lcIdx !== -1 && (assert(isGreaterKey(k, this.container[this.lcIdx][0])), i = this.lcIdx + 1, this.lcIdx = -1); i < this.container.length && isGreaterKey(k, this.container[i][0]); )
172
- i++;
173
- if (this.indexes.push(i), this.idx = 0, i < this.container.length && this.container[i][0] === k)
174
- this.container = this.container[i];
161
+ for (this.indexes.push(this.idx), this.parents.push(this.container), this.lcIdx !== -1 && (e(i(c, this.container[this.lcIdx][0])), h = this.lcIdx + 1, this.lcIdx = -1); h < this.container.length && i(c, this.container[h][0]); )
162
+ h++;
163
+ if (this.indexes.push(h), this.idx = 0, h < this.container.length && this.container[h][0] === c)
164
+ this.container = this.container[h];
175
165
  else {
176
- const child = [k];
177
- this.container.splice(i, 0, child), this.container = child;
166
+ const k = [c];
167
+ this.container.splice(h, 0, k), this.container = k;
178
168
  }
179
169
  }
180
170
  }
@@ -188,448 +178,437 @@ var cursor = {};
188
178
  // components.
189
179
  getComponent() {
190
180
  this.flushDescent();
191
- const i = this.idx + 1;
192
- if (i < this.container.length && isObject(this.container[i]))
193
- return this.container[i];
181
+ const o = this.idx + 1;
182
+ if (o < this.container.length && t(this.container[o]))
183
+ return this.container[o];
194
184
  {
195
- const component = {};
196
- return this.container.splice(i, 0, component), component;
185
+ const c = {};
186
+ return this.container.splice(o, 0, c), c;
197
187
  }
198
188
  }
199
- write(key, value) {
200
- const component = this.getComponent();
201
- assert(component[key] == null || component[key] === value, "Internal consistency error: Overwritten component. File a bug"), component[key] = value;
189
+ write(o, c) {
190
+ const h = this.getComponent();
191
+ e(h[o] == null || h[o] === c, "Internal consistency error: Overwritten component. File a bug"), h[o] = c;
202
192
  }
203
193
  get() {
204
194
  return this._op;
205
195
  }
206
- descend(key) {
207
- if (!exports.isValidPathItem(key))
196
+ descend(o) {
197
+ if (!n.isValidPathItem(o))
208
198
  throw Error("Invalid JSON key");
209
- this.pendingDescent.push(key);
199
+ this.pendingDescent.push(o);
210
200
  }
211
- descendPath(path) {
212
- return this.pendingDescent.push(...path), this;
201
+ descendPath(o) {
202
+ return this.pendingDescent.push(...o), this;
213
203
  }
214
204
  ascend() {
215
205
  this.pendingDescent.length ? this.pendingDescent.pop() : super.ascend();
216
206
  }
217
- mergeTree(data, mergeFn = copyAll) {
218
- if (data === null)
207
+ mergeTree(o, c = s) {
208
+ if (o === null)
219
209
  return;
220
- if (assert(Array.isArray(data)), data === this._op)
210
+ if (e(Array.isArray(o)), o === this._op)
221
211
  throw Error("Cannot merge into my own tree");
222
- const _lcIdx = this.lcIdx, oldDepth = this.parents.length;
223
- let depth = 0;
224
- for (let i = 0; i < data.length; i++) {
225
- const c = data[i];
226
- typeof c == "string" || typeof c == "number" ? (depth++, this.descend(c)) : Array.isArray(c) ? this.mergeTree(c, mergeFn) : typeof c == "object" && mergeFn(c, this);
212
+ const h = this.lcIdx, k = this.parents.length;
213
+ let Z = 0;
214
+ for (let pe = 0; pe < o.length; pe++) {
215
+ const J = o[pe];
216
+ typeof J == "string" || typeof J == "number" ? (Z++, this.descend(J)) : Array.isArray(J) ? this.mergeTree(J, c) : typeof J == "object" && c(J, this);
227
217
  }
228
- for (; depth--; )
218
+ for (; Z--; )
229
219
  this.ascend();
230
- this.lcIdx = this.parents.length === oldDepth ? _lcIdx : -1;
220
+ this.lcIdx = this.parents.length === k ? h : -1;
231
221
  }
232
- at(path, fn) {
233
- this.descendPath(path), fn(this);
234
- for (let i = 0; i < path.length; i++)
222
+ at(o, c) {
223
+ this.descendPath(o), c(this);
224
+ for (let h = 0; h < o.length; h++)
235
225
  this.ascend();
236
226
  return this;
237
227
  }
238
228
  // This is used by helpers, so the strict ordering guarantees are
239
229
  // relaxed.
240
- writeAtPath(path, key, value) {
241
- return this.at(path, () => this.write(key, value)), this.reset(), this;
230
+ writeAtPath(o, c, h) {
231
+ return this.at(o, () => this.write(c, h)), this.reset(), this;
242
232
  }
243
- writeMove(path1, path2, slot = 0) {
244
- return this.writeAtPath(path1, "p", slot).writeAtPath(path2, "d", slot);
233
+ writeMove(o, c, h = 0) {
234
+ return this.writeAtPath(o, "p", h).writeAtPath(c, "d", h);
245
235
  }
246
236
  getPath() {
247
- const path = super.getPath();
248
- return path.push(...this.pendingDescent), path;
237
+ const o = super.getPath();
238
+ return o.push(...this.pendingDescent), o;
249
239
  }
250
- };
251
- __name(_WriteCursor, "WriteCursor");
252
- let WriteCursor = _WriteCursor;
253
- exports.WriteCursor = WriteCursor, exports.writeCursor = () => new WriteCursor(), exports.readCursor = (op) => new ReadCursor(op);
254
- function advancer(r, listMap, listAdv) {
255
- let didDescend, valid;
256
- valid = didDescend = r ? r.descendFirst() : !1;
257
- function adv(ktarget) {
258
- let k2_;
259
- for (; valid; ) {
260
- const k2 = k2_ = r.getKey();
261
- if (ktarget != null) {
262
- let skip = !1;
263
- if (listMap && typeof k2 == "number" && (k2_ = listMap(k2, r.getComponent()), k2_ < 0 && (k2_ = ~k2_, skip = !0)), isGreaterKey(k2_, ktarget))
240
+ }
241
+ n.WriteCursor = a, n.writeCursor = () => new a(), n.readCursor = (O) => new l(O);
242
+ function E(O, o, c) {
243
+ let h, k;
244
+ k = h = O ? O.descendFirst() : !1;
245
+ function Z(pe) {
246
+ let J;
247
+ for (; k; ) {
248
+ const Ie = J = O.getKey();
249
+ if (pe != null) {
250
+ let xe = !1;
251
+ if (o && typeof Ie == "number" && (J = o(Ie, O.getComponent()), J < 0 && (J = ~J, xe = !0)), i(J, pe))
264
252
  return null;
265
- if (k2_ === ktarget && !skip)
266
- return r;
253
+ if (J === pe && !xe)
254
+ return O;
267
255
  }
268
- listAdv && typeof k2_ == "number" && listAdv(k2_, r.getComponent()), valid = r.nextSibling();
256
+ c && typeof J == "number" && c(J, O.getComponent()), k = O.nextSibling();
269
257
  }
270
258
  return null;
271
259
  }
272
- return __name(adv, "adv"), adv.end = () => {
273
- didDescend && r.ascend();
274
- }, adv;
275
- }
276
- __name(advancer, "advancer"), exports.advancer = advancer;
277
- function eachChildOf(r1, r2, fn) {
278
- let hasChild1, descended1, hasChild2, descended2;
279
- for (hasChild1 = descended1 = r1 && r1.descendFirst(), hasChild2 = descended2 = r2 && r2.descendFirst(); hasChild1 || hasChild2; ) {
280
- let k1 = hasChild1 ? r1.getKey() : null, k2 = hasChild2 ? r2.getKey() : null;
281
- k1 !== null && k2 !== null && (isGreaterKey(k2, k1) ? k2 = null : k1 !== k2 && (k1 = null)), fn(k1 == null ? k2 : k1, k1 != null ? r1 : null, k2 != null ? r2 : null), k1 != null && hasChild1 && (hasChild1 = r1.nextSibling()), k2 != null && hasChild2 && (hasChild2 = r2.nextSibling());
260
+ return Z.end = () => {
261
+ h && O.ascend();
262
+ }, Z;
263
+ }
264
+ n.advancer = E;
265
+ function W(O, o, c) {
266
+ let h, k, Z, pe;
267
+ for (h = k = O && O.descendFirst(), Z = pe = o && o.descendFirst(); h || Z; ) {
268
+ let J = h ? O.getKey() : null, Ie = Z ? o.getKey() : null;
269
+ J !== null && Ie !== null && (i(Ie, J) ? Ie = null : J !== Ie && (J = null)), c(J == null ? Ie : J, J != null ? O : null, Ie != null ? o : null), J != null && h && (h = O.nextSibling()), Ie != null && Z && (Z = o.nextSibling());
282
270
  }
283
- descended1 && r1.ascend(), descended2 && r2.ascend();
284
- }
285
- __name(eachChildOf, "eachChildOf"), exports.eachChildOf = eachChildOf;
286
- })(cursor);
287
- var types = {};
288
- (function(exports) {
289
- Object.defineProperty(exports, "__esModule", { value: !0 }), exports.ConflictType = void 0, function(ConflictType) {
290
- ConflictType[ConflictType.RM_UNEXPECTED_CONTENT = 1] = "RM_UNEXPECTED_CONTENT", ConflictType[ConflictType.DROP_COLLISION = 2] = "DROP_COLLISION", ConflictType[ConflictType.BLACKHOLE = 3] = "BLACKHOLE";
291
- }(exports.ConflictType || (exports.ConflictType = {}));
292
- })(types);
293
- var dist = {}, unicount = {}, hasRequiredUnicount;
294
- function requireUnicount() {
295
- return hasRequiredUnicount || (hasRequiredUnicount = 1, Object.defineProperty(unicount, "__esModule", { value: !0 }), unicount.uniToStrPos = unicount.strPosToUni = void 0, unicount.strPosToUni = (s, strOffset = s.length) => {
296
- let pairs = 0, i = 0;
297
- for (; i < strOffset; i++) {
298
- const code = s.charCodeAt(i);
299
- code >= 55296 && code <= 57343 && (pairs++, i++);
271
+ k && O.ascend(), pe && o.ascend();
272
+ }
273
+ n.eachChildOf = W;
274
+ })(ft);
275
+ var ht = {};
276
+ (function(n) {
277
+ Object.defineProperty(n, "__esModule", { value: !0 }), n.ConflictType = void 0, function(e) {
278
+ e[e.RM_UNEXPECTED_CONTENT = 1] = "RM_UNEXPECTED_CONTENT", e[e.DROP_COLLISION = 2] = "DROP_COLLISION", e[e.BLACKHOLE = 3] = "BLACKHOLE";
279
+ }(n.ConflictType || (n.ConflictType = {}));
280
+ })(ht);
281
+ var it = {}, Fe = {}, vt;
282
+ function pt() {
283
+ return vt || (vt = 1, Object.defineProperty(Fe, "__esModule", { value: !0 }), Fe.uniToStrPos = Fe.strPosToUni = void 0, Fe.strPosToUni = (n, e = n.length) => {
284
+ let t = 0, i = 0;
285
+ for (; i < e; i++) {
286
+ const s = n.charCodeAt(i);
287
+ s >= 55296 && s <= 57343 && (t++, i++);
300
288
  }
301
- if (i !== strOffset)
289
+ if (i !== e)
302
290
  throw Error("Invalid offset - splits unicode bytes");
303
- return i - pairs;
304
- }, unicount.uniToStrPos = (s, uniOffset) => {
305
- let pos = 0;
306
- for (; uniOffset > 0; uniOffset--) {
307
- const code = s.charCodeAt(pos);
308
- pos += code >= 55296 && code <= 57343 ? 2 : 1;
291
+ return i - t;
292
+ }, Fe.uniToStrPos = (n, e) => {
293
+ let t = 0;
294
+ for (; e > 0; e--) {
295
+ const i = n.charCodeAt(t);
296
+ t += i >= 55296 && i <= 57343 ? 2 : 1;
309
297
  }
310
- return pos;
311
- }), unicount;
298
+ return t;
299
+ }), Fe;
312
300
  }
313
- __name(requireUnicount, "requireUnicount");
314
- var type = {}, hasRequiredType;
315
- function requireType() {
316
- return hasRequiredType || (hasRequiredType = 1, function(exports) {
317
- Object.defineProperty(exports, "__esModule", { value: !0 }), exports.uniSlice = exports.dlen = exports.eachOp = void 0;
318
- const unicount_1 = requireUnicount(), checkOp = /* @__PURE__ */ __name((op) => {
319
- if (!Array.isArray(op))
301
+ var st = {}, yt;
302
+ function at() {
303
+ return yt || (yt = 1, function(n) {
304
+ Object.defineProperty(n, "__esModule", { value: !0 }), n.uniSlice = n.dlen = n.eachOp = void 0;
305
+ const e = pt(), t = (f) => {
306
+ if (!Array.isArray(f))
320
307
  throw Error("Op must be an array of components");
321
- let last = null;
322
- for (let i = 0; i < op.length; i++) {
323
- const c = op[i];
324
- switch (typeof c) {
308
+ let _ = null;
309
+ for (let w = 0; w < f.length; w++) {
310
+ const L = f[w];
311
+ switch (typeof L) {
325
312
  case "object":
326
- if (typeof c.d != "number" && typeof c.d != "string")
313
+ if (typeof L.d != "number" && typeof L.d != "string")
327
314
  throw Error("Delete must be number or string");
328
- if (exports.dlen(c.d) <= 0)
315
+ if (n.dlen(L.d) <= 0)
329
316
  throw Error("Deletes must not be empty");
330
317
  break;
331
318
  case "string":
332
- if (!(c.length > 0))
319
+ if (!(L.length > 0))
333
320
  throw Error("Inserts cannot be empty");
334
321
  break;
335
322
  case "number":
336
- if (!(c > 0))
323
+ if (!(L > 0))
337
324
  throw Error("Skip components must be >0");
338
- if (typeof last == "number")
325
+ if (typeof _ == "number")
339
326
  throw Error("Adjacent skip components should be combined");
340
327
  break;
341
328
  }
342
- last = c;
329
+ _ = L;
343
330
  }
344
- if (typeof last == "number")
331
+ if (typeof _ == "number")
345
332
  throw Error("Op has a trailing skip");
346
- }, "checkOp");
347
- function eachOp(op, fn) {
348
- let prePos = 0, postPos = 0;
349
- for (let i = 0; i < op.length; i++) {
350
- const c = op[i];
351
- switch (fn(c, prePos, postPos), typeof c) {
333
+ };
334
+ function i(f, _) {
335
+ let w = 0, L = 0;
336
+ for (let z = 0; z < f.length; z++) {
337
+ const H = f[z];
338
+ switch (_(H, w, L), typeof H) {
352
339
  case "object":
353
- prePos += exports.dlen(c.d);
340
+ w += n.dlen(H.d);
354
341
  break;
355
342
  case "string":
356
- postPos += unicount_1.strPosToUni(c);
343
+ L += e.strPosToUni(H);
357
344
  break;
358
345
  case "number":
359
- prePos += c, postPos += c;
346
+ w += H, L += H;
360
347
  break;
361
348
  }
362
349
  }
363
350
  }
364
- __name(eachOp, "eachOp"), exports.eachOp = eachOp;
365
- function mapOp(op, fn) {
366
- const newOp = [], append = makeAppend(newOp);
367
- return eachOp(op, (c, prePos, postPos) => {
368
- append(fn(c, prePos, postPos));
369
- }), trim(newOp);
351
+ n.eachOp = i;
352
+ function s(f, _) {
353
+ const w = [], L = a(w);
354
+ return i(f, (z, H, De) => {
355
+ L(_(z, H, De));
356
+ }), o(w);
370
357
  }
371
- __name(mapOp, "mapOp");
372
- const id = /* @__PURE__ */ __name((x) => x, "id"), normalize = /* @__PURE__ */ __name((op) => mapOp(op, id), "normalize");
373
- exports.dlen = (d) => typeof d == "number" ? d : unicount_1.strPosToUni(d);
374
- const makeAppend = /* @__PURE__ */ __name((op) => (component) => {
375
- if (!(!component || component.d === 0 || component.d === "")) if (op.length === 0)
376
- op.push(component);
377
- else if (typeof component == typeof op[op.length - 1])
378
- if (typeof component == "object") {
379
- const last = op[op.length - 1];
380
- last.d = typeof last.d == "string" && typeof component.d == "string" ? last.d + component.d : exports.dlen(last.d) + exports.dlen(component.d);
358
+ const d = (f) => f, l = (f) => s(f, d);
359
+ n.dlen = (f) => typeof f == "number" ? f : e.strPosToUni(f);
360
+ const a = (f) => (_) => {
361
+ if (!(!_ || _.d === 0 || _.d === "")) if (f.length === 0)
362
+ f.push(_);
363
+ else if (typeof _ == typeof f[f.length - 1])
364
+ if (typeof _ == "object") {
365
+ const w = f[f.length - 1];
366
+ w.d = typeof w.d == "string" && typeof _.d == "string" ? w.d + _.d : n.dlen(w.d) + n.dlen(_.d);
381
367
  } else
382
- op[op.length - 1] += component;
368
+ f[f.length - 1] += _;
383
369
  else
384
- op.push(component);
385
- }, "makeAppend"), componentLength = /* @__PURE__ */ __name((c) => typeof c == "number" ? c : typeof c == "string" ? unicount_1.strPosToUni(c) : typeof c.d == "number" ? c.d : unicount_1.strPosToUni(c.d), "componentLength");
386
- exports.uniSlice = (s, startUni, endUni) => {
387
- const start = unicount_1.uniToStrPos(s, startUni), end = endUni == null ? 1 / 0 : unicount_1.uniToStrPos(s, endUni);
388
- return s.slice(start, end);
370
+ f.push(_);
371
+ }, E = (f) => typeof f == "number" ? f : typeof f == "string" ? e.strPosToUni(f) : typeof f.d == "number" ? f.d : e.strPosToUni(f.d);
372
+ n.uniSlice = (f, _, w) => {
373
+ const L = e.uniToStrPos(f, _), z = w == null ? 1 / 0 : e.uniToStrPos(f, w);
374
+ return f.slice(L, z);
389
375
  };
390
- const dslice = /* @__PURE__ */ __name((d, start, end) => typeof d == "number" ? end == null ? d - start : Math.min(d, end) - start : exports.uniSlice(d, start, end), "dslice"), makeTake = /* @__PURE__ */ __name((op) => {
391
- let idx = 0, offset = 0;
392
- return { take: /* @__PURE__ */ __name((n, indivisableField) => {
393
- if (idx === op.length)
394
- return n === -1 ? null : n;
395
- const c = op[idx];
396
- let part;
397
- if (typeof c == "number")
398
- return n === -1 || c - offset <= n ? (part = c - offset, ++idx, offset = 0, part) : (offset += n, n);
399
- if (typeof c == "string") {
400
- if (n === -1 || indivisableField === "i" || unicount_1.strPosToUni(c.slice(offset)) <= n)
401
- return part = c.slice(offset), ++idx, offset = 0, part;
376
+ const W = (f, _, w) => typeof f == "number" ? w == null ? f - _ : Math.min(f, w) - _ : n.uniSlice(f, _, w), O = (f) => {
377
+ let _ = 0, w = 0;
378
+ return { take: (H, De) => {
379
+ if (_ === f.length)
380
+ return H === -1 ? null : H;
381
+ const ue = f[_];
382
+ let ne;
383
+ if (typeof ue == "number")
384
+ return H === -1 || ue - w <= H ? (ne = ue - w, ++_, w = 0, ne) : (w += H, H);
385
+ if (typeof ue == "string") {
386
+ if (H === -1 || De === "i" || e.strPosToUni(ue.slice(w)) <= H)
387
+ return ne = ue.slice(w), ++_, w = 0, ne;
402
388
  {
403
- const offset2 = offset + unicount_1.uniToStrPos(c.slice(offset), n);
404
- return part = c.slice(offset, offset2), offset = offset2, part;
389
+ const ae = w + e.uniToStrPos(ue.slice(w), H);
390
+ return ne = ue.slice(w, ae), w = ae, ne;
405
391
  }
406
392
  } else {
407
- if (n === -1 || indivisableField === "d" || exports.dlen(c.d) - offset <= n)
408
- return part = { d: dslice(c.d, offset) }, ++idx, offset = 0, part;
393
+ if (H === -1 || De === "d" || n.dlen(ue.d) - w <= H)
394
+ return ne = { d: W(ue.d, w) }, ++_, w = 0, ne;
409
395
  {
410
- let result = dslice(c.d, offset, offset + n);
411
- return offset += n, { d: result };
396
+ let ae = W(ue.d, w, w + H);
397
+ return w += H, { d: ae };
412
398
  }
413
399
  }
414
- }, "take"), peek: /* @__PURE__ */ __name(() => op[idx], "peek") };
415
- }, "makeTake"), trim = /* @__PURE__ */ __name((op) => (op.length > 0 && typeof op[op.length - 1] == "number" && op.pop(), op), "trim");
416
- function transform(op1, op2, side) {
417
- if (side !== "left" && side !== "right")
418
- throw Error("side (" + side + ") must be 'left' or 'right'");
419
- checkOp(op1), checkOp(op2);
420
- const newOp = [], append = makeAppend(newOp), { take, peek } = makeTake(op1);
421
- for (let i = 0; i < op2.length; i++) {
422
- const c2 = op2[i];
423
- let length, c1;
424
- switch (typeof c2) {
400
+ }, peek: () => f[_] };
401
+ }, o = (f) => (f.length > 0 && typeof f[f.length - 1] == "number" && f.pop(), f);
402
+ function c(f, _, w) {
403
+ if (w !== "left" && w !== "right")
404
+ throw Error("side (" + w + ") must be 'left' or 'right'");
405
+ t(f), t(_);
406
+ const L = [], z = a(L), { take: H, peek: De } = O(f);
407
+ for (let ne = 0; ne < _.length; ne++) {
408
+ const ae = _[ne];
409
+ let ge, Ae;
410
+ switch (typeof ae) {
425
411
  case "number":
426
- for (length = c2; length > 0; )
427
- c1 = take(length, "i"), append(c1), typeof c1 != "string" && (length -= componentLength(c1));
412
+ for (ge = ae; ge > 0; )
413
+ Ae = H(ge, "i"), z(Ae), typeof Ae != "string" && (ge -= E(Ae));
428
414
  break;
429
415
  case "string":
430
- side === "left" && typeof peek() == "string" && append(take(-1)), append(unicount_1.strPosToUni(c2));
416
+ w === "left" && typeof De() == "string" && z(H(-1)), z(e.strPosToUni(ae));
431
417
  break;
432
418
  case "object":
433
- for (length = exports.dlen(c2.d); length > 0; )
434
- switch (c1 = take(length, "i"), typeof c1) {
419
+ for (ge = n.dlen(ae.d); ge > 0; )
420
+ switch (Ae = H(ge, "i"), typeof Ae) {
435
421
  case "number":
436
- length -= c1;
422
+ ge -= Ae;
437
423
  break;
438
424
  case "string":
439
- append(c1);
425
+ z(Ae);
440
426
  break;
441
427
  case "object":
442
- length -= exports.dlen(c1.d);
428
+ ge -= n.dlen(Ae.d);
443
429
  }
444
430
  break;
445
431
  }
446
432
  }
447
- let c;
448
- for (; c = take(-1); )
449
- append(c);
450
- return trim(newOp);
433
+ let ue;
434
+ for (; ue = H(-1); )
435
+ z(ue);
436
+ return o(L);
451
437
  }
452
- __name(transform, "transform");
453
- function compose(op1, op2) {
454
- checkOp(op1), checkOp(op2);
455
- const result = [], append = makeAppend(result), { take } = makeTake(op1);
456
- for (let i = 0; i < op2.length; i++) {
457
- const component = op2[i];
458
- let length, chunk;
459
- switch (typeof component) {
438
+ function h(f, _) {
439
+ t(f), t(_);
440
+ const w = [], L = a(w), { take: z } = O(f);
441
+ for (let De = 0; De < _.length; De++) {
442
+ const ue = _[De];
443
+ let ne, ae;
444
+ switch (typeof ue) {
460
445
  case "number":
461
- for (length = component; length > 0; )
462
- chunk = take(length, "d"), append(chunk), typeof chunk != "object" && (length -= componentLength(chunk));
446
+ for (ne = ue; ne > 0; )
447
+ ae = z(ne, "d"), L(ae), typeof ae != "object" && (ne -= E(ae));
463
448
  break;
464
449
  case "string":
465
- append(component);
450
+ L(ue);
466
451
  break;
467
452
  case "object":
468
- length = exports.dlen(component.d);
469
- let offset = 0;
470
- for (; offset < length; )
471
- switch (chunk = take(length - offset, "d"), typeof chunk) {
453
+ ne = n.dlen(ue.d);
454
+ let ge = 0;
455
+ for (; ge < ne; )
456
+ switch (ae = z(ne - ge, "d"), typeof ae) {
472
457
  case "number":
473
- append({ d: dslice(component.d, offset, offset + chunk) }), offset += chunk;
458
+ L({ d: W(ue.d, ge, ge + ae) }), ge += ae;
474
459
  break;
475
460
  case "string":
476
- offset += unicount_1.strPosToUni(chunk);
461
+ ge += e.strPosToUni(ae);
477
462
  break;
478
463
  case "object":
479
- append(chunk);
464
+ L(ae);
480
465
  }
481
466
  break;
482
467
  }
483
468
  }
484
- let c;
485
- for (; c = take(-1); )
486
- append(c);
487
- return trim(result);
469
+ let H;
470
+ for (; H = z(-1); )
471
+ L(H);
472
+ return o(w);
488
473
  }
489
- __name(compose, "compose");
490
- const transformPosition = /* @__PURE__ */ __name((cursor2, op) => {
491
- let pos = 0;
492
- for (let i = 0; i < op.length && cursor2 > pos; i++) {
493
- const c = op[i];
494
- switch (typeof c) {
474
+ const k = (f, _) => {
475
+ let w = 0;
476
+ for (let L = 0; L < _.length && f > w; L++) {
477
+ const z = _[L];
478
+ switch (typeof z) {
495
479
  case "number": {
496
- pos += c;
480
+ w += z;
497
481
  break;
498
482
  }
499
483
  case "string":
500
- const offset = unicount_1.strPosToUni(c);
501
- pos += offset, cursor2 += offset;
484
+ const H = e.strPosToUni(z);
485
+ w += H, f += H;
502
486
  break;
503
487
  case "object":
504
- cursor2 -= Math.min(exports.dlen(c.d), cursor2 - pos);
488
+ f -= Math.min(n.dlen(z.d), f - w);
505
489
  break;
506
490
  }
507
491
  }
508
- return cursor2;
509
- }, "transformPosition"), transformSelection = /* @__PURE__ */ __name((selection, op) => typeof selection == "number" ? transformPosition(selection, op) : selection.map((s) => transformPosition(s, op)), "transformSelection");
510
- function makeInvertible(op, doc, ropeImpl) {
511
- return mapOp(op, (c, prePos) => typeof c == "object" && typeof c.d == "number" ? { d: ropeImpl.slice(doc, prePos, prePos + c.d) } : c);
492
+ return f;
493
+ }, Z = (f, _) => typeof f == "number" ? k(f, _) : f.map((w) => k(w, _));
494
+ function pe(f, _, w) {
495
+ return s(f, (L, z) => typeof L == "object" && typeof L.d == "number" ? { d: w.slice(_, z, z + L.d) } : L);
512
496
  }
513
- __name(makeInvertible, "makeInvertible");
514
- function invert(op) {
515
- return mapOp(op, (c) => {
516
- switch (typeof c) {
497
+ function J(f) {
498
+ return s(f, (_) => {
499
+ switch (typeof _) {
517
500
  case "object":
518
- if (typeof c.d == "number")
501
+ if (typeof _.d == "number")
519
502
  throw Error("Cannot invert text op: Deleted characters missing from operation. makeInvertible must be called first.");
520
- return c.d;
503
+ return _.d;
521
504
  case "string":
522
- return { d: c };
505
+ return { d: _ };
523
506
  case "number":
524
- return c;
507
+ return _;
525
508
  }
526
509
  });
527
510
  }
528
- __name(invert, "invert");
529
- function stripInvertible(op) {
530
- return mapOp(op, (c) => typeof c == "object" && typeof c.d == "string" ? { d: unicount_1.strPosToUni(c.d) } : c);
511
+ function Ie(f) {
512
+ return s(f, (_) => typeof _ == "object" && typeof _.d == "string" ? { d: e.strPosToUni(_.d) } : _);
531
513
  }
532
- __name(stripInvertible, "stripInvertible");
533
- function isInvertible(op) {
534
- let invertible = !0;
535
- return eachOp(op, (c) => {
536
- typeof c == "object" && typeof c.d == "number" && (invertible = !1);
537
- }), invertible;
514
+ function xe(f) {
515
+ let _ = !0;
516
+ return i(f, (w) => {
517
+ typeof w == "object" && typeof w.d == "number" && (_ = !1);
518
+ }), _;
538
519
  }
539
- __name(isInvertible, "isInvertible");
540
- function makeType(ropeImpl) {
520
+ function ve(f) {
541
521
  return {
542
522
  name: "text-unicode",
543
523
  uri: "http://sharejs.org/types/text-unicode",
544
- trim,
545
- normalize,
546
- checkOp,
524
+ trim: o,
525
+ normalize: l,
526
+ checkOp: t,
547
527
  /** Create a new text snapshot.
548
528
  *
549
529
  * @param {string} initial - initial snapshot data. Optional. Defaults to ''.
550
530
  * @returns {Snap} Initial document snapshot object
551
531
  */
552
- create(initial = "") {
553
- if (typeof initial != "string")
532
+ create(_ = "") {
533
+ if (typeof _ != "string")
554
534
  throw Error("Initial data must be a string");
555
- return ropeImpl.create(initial);
535
+ return f.create(_);
556
536
  },
557
537
  /** Apply an operation to a document snapshot
558
538
  */
559
- apply(str, op) {
560
- checkOp(op);
561
- const builder = ropeImpl.builder(str);
562
- for (let i = 0; i < op.length; i++) {
563
- const component = op[i];
564
- switch (typeof component) {
539
+ apply(_, w) {
540
+ t(w);
541
+ const L = f.builder(_);
542
+ for (let z = 0; z < w.length; z++) {
543
+ const H = w[z];
544
+ switch (typeof H) {
565
545
  case "number":
566
- builder.skip(component);
546
+ L.skip(H);
567
547
  break;
568
548
  case "string":
569
- builder.append(component);
549
+ L.append(H);
570
550
  break;
571
551
  case "object":
572
- builder.del(exports.dlen(component.d));
552
+ L.del(n.dlen(H.d));
573
553
  break;
574
554
  }
575
555
  }
576
- return builder.build();
556
+ return L.build();
577
557
  },
578
- transform,
579
- compose,
580
- transformPosition,
581
- transformSelection,
582
- isInvertible,
583
- makeInvertible(op, doc) {
584
- return makeInvertible(op, doc, ropeImpl);
558
+ transform: c,
559
+ compose: h,
560
+ transformPosition: k,
561
+ transformSelection: Z,
562
+ isInvertible: xe,
563
+ makeInvertible(_, w) {
564
+ return pe(_, w, f);
585
565
  },
586
- stripInvertible,
587
- invert,
588
- invertWithDoc(op, doc) {
589
- return invert(makeInvertible(op, doc, ropeImpl));
566
+ stripInvertible: Ie,
567
+ invert: J,
568
+ invertWithDoc(_, w) {
569
+ return J(pe(_, w, f));
590
570
  },
591
- isNoop: /* @__PURE__ */ __name((op) => op.length === 0, "isNoop")
571
+ isNoop: (_) => _.length === 0
592
572
  };
593
573
  }
594
- __name(makeType, "makeType"), exports.default = makeType;
595
- }(type)), type;
574
+ n.default = ve;
575
+ }(st)), st;
596
576
  }
597
- __name(requireType, "requireType");
598
- var api = {}, hasRequiredApi;
599
- function requireApi() {
600
- if (hasRequiredApi) return api;
601
- hasRequiredApi = 1, Object.defineProperty(api, "__esModule", { value: !0 });
602
- const type_1 = requireType(), unicount_1 = requireUnicount();
603
- function api$1(getSnapshot, submitOp) {
577
+ var Qe = {}, mt;
578
+ function Ht() {
579
+ if (mt) return Qe;
580
+ mt = 1, Object.defineProperty(Qe, "__esModule", { value: !0 });
581
+ const n = at(), e = pt();
582
+ function t(i, s) {
604
583
  return {
605
584
  // Returns the text content of the document
606
- get: getSnapshot,
585
+ get: i,
607
586
  // Returns the number of characters in the string
608
587
  getLength() {
609
- return getSnapshot().length;
588
+ return i().length;
610
589
  },
611
590
  // Insert the specified text at the given position in the document
612
- insert(pos, text, callback) {
613
- const uniPos = unicount_1.strPosToUni(getSnapshot(), pos);
614
- return submitOp([uniPos, text], callback);
591
+ insert(d, l, a) {
592
+ const E = e.strPosToUni(i(), d);
593
+ return s([E, l], a);
615
594
  },
616
- remove(pos, lengthOrContent, callback) {
617
- const uniPos = unicount_1.strPosToUni(getSnapshot(), pos);
618
- return submitOp([uniPos, { d: lengthOrContent }], callback);
595
+ remove(d, l, a) {
596
+ const E = e.strPosToUni(i(), d);
597
+ return s([E, { d: l }], a);
619
598
  },
620
599
  // When you use this API, you should implement these two methods
621
600
  // in your editing context.
622
601
  //onInsert: function(pos, text) {},
623
602
  //onRemove: function(pos, removedLength) {},
624
- _onOp(op) {
625
- type_1.eachOp(op, (component, prePos, postPos) => {
626
- switch (typeof component) {
603
+ _onOp(d) {
604
+ n.eachOp(d, (l, a, E) => {
605
+ switch (typeof l) {
627
606
  case "string":
628
- this.onInsert && this.onInsert(postPos, component);
607
+ this.onInsert && this.onInsert(E, l);
629
608
  break;
630
609
  case "object":
631
- const dl = type_1.dlen(component.d);
632
- this.onRemove && this.onRemove(postPos, dl);
610
+ const W = n.dlen(l.d);
611
+ this.onRemove && this.onRemove(E, W);
633
612
  }
634
613
  });
635
614
  },
@@ -637,1062 +616,1044 @@ function requireApi() {
637
616
  onRemove: null
638
617
  };
639
618
  }
640
- return __name(api$1, "api$1"), api.default = api$1, api$1.provides = { text: !0 }, api;
619
+ return Qe.default = t, t.provides = { text: !0 }, Qe;
641
620
  }
642
- __name(requireApi, "requireApi");
643
- var hasRequiredDist;
644
- function requireDist() {
645
- return hasRequiredDist || (hasRequiredDist = 1, function(exports) {
646
- var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o, m, k, k2) {
647
- k2 === void 0 && (k2 = k), Object.defineProperty(o, k2, { enumerable: !0, get: /* @__PURE__ */ __name(function() {
648
- return m[k];
649
- }, "get") });
650
- } : function(o, m, k, k2) {
651
- k2 === void 0 && (k2 = k), o[k2] = m[k];
652
- }), __setModuleDefault = commonjsGlobal && commonjsGlobal.__setModuleDefault || (Object.create ? function(o, v) {
653
- Object.defineProperty(o, "default", { enumerable: !0, value: v });
654
- } : function(o, v) {
655
- o.default = v;
656
- }), __importStar = commonjsGlobal && commonjsGlobal.__importStar || function(mod) {
657
- if (mod && mod.__esModule) return mod;
658
- var result = {};
659
- if (mod != null) for (var k in mod) Object.hasOwnProperty.call(mod, k) && __createBinding(result, mod, k);
660
- return __setModuleDefault(result, mod), result;
661
- }, __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) {
662
- return mod && mod.__esModule ? mod : { default: mod };
621
+ var bt;
622
+ function Kt() {
623
+ return bt || (bt = 1, function(n) {
624
+ var e = Ce && Ce.__createBinding || (Object.create ? function(c, h, k, Z) {
625
+ Z === void 0 && (Z = k), Object.defineProperty(c, Z, { enumerable: !0, get: function() {
626
+ return h[k];
627
+ } });
628
+ } : function(c, h, k, Z) {
629
+ Z === void 0 && (Z = k), c[Z] = h[k];
630
+ }), t = Ce && Ce.__setModuleDefault || (Object.create ? function(c, h) {
631
+ Object.defineProperty(c, "default", { enumerable: !0, value: h });
632
+ } : function(c, h) {
633
+ c.default = h;
634
+ }), i = Ce && Ce.__importStar || function(c) {
635
+ if (c && c.__esModule) return c;
636
+ var h = {};
637
+ if (c != null) for (var k in c) Object.hasOwnProperty.call(c, k) && e(h, c, k);
638
+ return t(h, c), h;
639
+ }, s = Ce && Ce.__importDefault || function(c) {
640
+ return c && c.__esModule ? c : { default: c };
663
641
  };
664
- Object.defineProperty(exports, "__esModule", { value: !0 }), exports.type = exports.remove = exports.insert = void 0;
665
- const unicount_1 = requireUnicount(), type_1 = __importStar(requireType()), api_1 = __importDefault(requireApi()), ropeImplUnicodeString = {
666
- create(s) {
667
- return s;
642
+ Object.defineProperty(n, "__esModule", { value: !0 }), n.type = n.remove = n.insert = void 0;
643
+ const d = pt(), l = i(at()), a = s(Ht()), E = {
644
+ create(c) {
645
+ return c;
668
646
  },
669
- toString(s) {
670
- return s;
647
+ toString(c) {
648
+ return c;
671
649
  },
672
- builder(oldDoc) {
673
- if (typeof oldDoc != "string")
674
- throw Error("Invalid document snapshot: " + oldDoc);
675
- const newDoc = [];
650
+ builder(c) {
651
+ if (typeof c != "string")
652
+ throw Error("Invalid document snapshot: " + c);
653
+ const h = [];
676
654
  return {
677
- skip(n) {
678
- let offset = unicount_1.uniToStrPos(oldDoc, n);
679
- if (offset > oldDoc.length)
655
+ skip(k) {
656
+ let Z = d.uniToStrPos(c, k);
657
+ if (Z > c.length)
680
658
  throw Error("The op is too long for this document");
681
- newDoc.push(oldDoc.slice(0, offset)), oldDoc = oldDoc.slice(offset);
659
+ h.push(c.slice(0, Z)), c = c.slice(Z);
682
660
  },
683
- append(s) {
684
- newDoc.push(s);
661
+ append(k) {
662
+ h.push(k);
685
663
  },
686
- del(n) {
687
- oldDoc = oldDoc.slice(unicount_1.uniToStrPos(oldDoc, n));
664
+ del(k) {
665
+ c = c.slice(d.uniToStrPos(c, k));
688
666
  },
689
667
  build() {
690
- return newDoc.join("") + oldDoc;
668
+ return h.join("") + c;
691
669
  }
692
670
  };
693
671
  },
694
- slice: type_1.uniSlice
695
- }, textString = type_1.default(ropeImplUnicodeString), type2 = Object.assign(Object.assign({}, textString), { api: api_1.default });
696
- exports.type = type2, exports.insert = (pos, text) => text.length === 0 ? [] : pos === 0 ? [text] : [pos, text], exports.remove = (pos, textOrLen) => type_1.dlen(textOrLen) === 0 ? [] : pos === 0 ? [{ d: textOrLen }] : [pos, { d: textOrLen }];
697
- var type_2 = requireType();
698
- Object.defineProperty(exports, "makeType", { enumerable: !0, get: /* @__PURE__ */ __name(function() {
699
- return type_2.default;
700
- }, "get") });
701
- }(dist)), dist;
672
+ slice: l.uniSlice
673
+ }, W = l.default(E), O = Object.assign(Object.assign({}, W), { api: a.default });
674
+ n.type = O, n.insert = (c, h) => h.length === 0 ? [] : c === 0 ? [h] : [c, h], n.remove = (c, h) => l.dlen(h) === 0 ? [] : c === 0 ? [{ d: h }] : [c, { d: h }];
675
+ var o = at();
676
+ Object.defineProperty(n, "makeType", { enumerable: !0, get: function() {
677
+ return o.default;
678
+ } });
679
+ }(it)), it;
702
680
  }
703
- __name(requireDist, "requireDist");
704
- (function(exports) {
705
- var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) {
706
- return mod && mod.__esModule ? mod : {
707
- default: mod
681
+ (function(n) {
682
+ var e = Ce && Ce.__importDefault || function(r) {
683
+ return r && r.__esModule ? r : {
684
+ default: r
708
685
  };
709
686
  };
710
- Object.defineProperty(exports, "__esModule", {
687
+ Object.defineProperty(n, "__esModule", {
711
688
  value: !0
712
- }), exports.editOp = exports.replaceOp = exports.insertOp = exports.moveOp = exports.removeOp = exports.type = void 0;
713
- const deepEqual_js_1 = __importDefault(deepEqual$1), deepClone_js_1 = __importDefault(deepClone$1), cursor_js_1 = cursor, types_js_1 = types;
714
- function assert(pred, msg) {
715
- if (!pred) throw new Error(msg);
689
+ }), n.editOp = n.replaceOp = n.insertOp = n.moveOp = n.removeOp = n.type = void 0;
690
+ const t = e(ct), i = e(dt), s = ft, d = ht;
691
+ function l(r, u) {
692
+ if (!r) throw new Error(u);
716
693
  }
717
- __name(assert, "assert"), exports.type = {
694
+ n.type = {
718
695
  name: "json1",
719
696
  uri: "http://sharejs.org/types/JSONv1",
720
- readCursor: cursor_js_1.readCursor,
721
- writeCursor: cursor_js_1.writeCursor,
722
- create: /* @__PURE__ */ __name((data) => data, "create"),
723
- isNoop: /* @__PURE__ */ __name((op) => op == null, "isNoop"),
724
- setDebug(val) {
697
+ readCursor: s.readCursor,
698
+ writeCursor: s.writeCursor,
699
+ create: (r) => r,
700
+ isNoop: (r) => r == null,
701
+ setDebug(r) {
725
702
  },
726
- registerSubtype,
727
- checkValidOp,
728
- normalize,
729
- apply,
730
- transformPosition,
731
- compose,
732
- tryTransform,
733
- transform,
734
- makeInvertible,
735
- invert,
736
- invertWithDoc,
737
- RM_UNEXPECTED_CONTENT: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
738
- DROP_COLLISION: types_js_1.ConflictType.DROP_COLLISION,
739
- BLACKHOLE: types_js_1.ConflictType.BLACKHOLE,
740
- transformNoConflict: /* @__PURE__ */ __name((op1, op2, side) => transformWithConflictsPred(() => !0, op1, op2, side), "transformNoConflict"),
741
- typeAllowingConflictsPred: /* @__PURE__ */ __name((allowConflict) => Object.assign(Object.assign({}, exports.type), {
742
- transform: /* @__PURE__ */ __name((op1, op2, side) => transformWithConflictsPred(allowConflict, op1, op2, side), "transform")
743
- }), "typeAllowingConflictsPred")
703
+ registerSubtype: J,
704
+ checkValidOp: z,
705
+ normalize: H,
706
+ apply: De,
707
+ transformPosition: ue,
708
+ compose: ne,
709
+ tryTransform: nt,
710
+ transform: At,
711
+ makeInvertible: Ae,
712
+ invert: ae,
713
+ invertWithDoc: Dt,
714
+ RM_UNEXPECTED_CONTENT: d.ConflictType.RM_UNEXPECTED_CONTENT,
715
+ DROP_COLLISION: d.ConflictType.DROP_COLLISION,
716
+ BLACKHOLE: d.ConflictType.BLACKHOLE,
717
+ transformNoConflict: (r, u, y) => _t(() => !0, r, u, y),
718
+ typeAllowingConflictsPred: (r) => Object.assign(Object.assign({}, n.type), {
719
+ transform: (u, y, D) => _t(r, u, y, D)
720
+ })
721
+ };
722
+ const a = (r) => r ? r.getComponent() : null;
723
+ function E(r) {
724
+ return r && typeof r == "object" && !Array.isArray(r);
725
+ }
726
+ const W = (r) => Array.isArray(r) ? r.slice() : r !== null && typeof r == "object" ? Object.assign({}, r) : r, O = (r) => r && (r.p != null || r.r !== void 0), o = (r) => r && (r.d != null || r.i !== void 0);
727
+ function c(r, u) {
728
+ return l(r != null), typeof u == "number" ? (l(Array.isArray(r), "Invalid key - child is not an array"), (r = r.slice()).splice(u, 1)) : (l(E(r), "Invalid key - child is not an object"), delete (r = Object.assign({}, r))[u]), r;
729
+ }
730
+ function h(r, u, y) {
731
+ return typeof u == "number" ? (l(r != null, "Container is missing for key"), l(Array.isArray(r), "Cannot use numerical key for object container"), l(r.length >= u, "Cannot insert into out of bounds index"), r.splice(u, 0, y)) : (l(E(r), "Cannot insert into missing item"), l(r[u] === void 0, "Trying to overwrite value at key. Your op needs to remove it first"), r[u] = y), y;
732
+ }
733
+ n.removeOp = (r, u = !0) => s.writeCursor().writeAtPath(r, "r", u).get(), n.moveOp = (r, u) => s.writeCursor().writeMove(r, u).get(), n.insertOp = (r, u) => s.writeCursor().writeAtPath(r, "i", u).get(), n.replaceOp = (r, u, y) => s.writeCursor().at(r, (D) => {
734
+ D.write("r", u), D.write("i", y);
735
+ }).get(), n.editOp = (r, u, y, D = !1) => s.writeCursor().at(r, (m) => _(m, u, y, D)).get();
736
+ const k = (r, u) => r != null && (typeof u == "number" ? Array.isArray(r) : typeof r == "object"), Z = (r, u) => k(r, u) ? r[u] : void 0, pe = {};
737
+ function J(r) {
738
+ let u = r.type ? r.type : r;
739
+ u.name && (pe[u.name] = u), u.uri && (pe[u.uri] = u);
740
+ }
741
+ const Ie = (r) => {
742
+ const u = pe[r];
743
+ if (u) return u;
744
+ throw Error("Missing type: " + r);
744
745
  };
745
- const getComponent = /* @__PURE__ */ __name((r) => r ? r.getComponent() : null, "getComponent");
746
- function isObject(o) {
747
- return o && typeof o == "object" && !Array.isArray(o);
748
- }
749
- __name(isObject, "isObject");
750
- const shallowClone = /* @__PURE__ */ __name((obj) => Array.isArray(obj) ? obj.slice() : obj !== null && typeof obj == "object" ? Object.assign({}, obj) : obj, "shallowClone"), hasPick = /* @__PURE__ */ __name((c) => c && (c.p != null || c.r !== void 0), "hasPick"), hasDrop = /* @__PURE__ */ __name((c) => c && (c.d != null || c.i !== void 0), "hasDrop");
751
- function removeChild(container, key) {
752
- return assert(container != null), typeof key == "number" ? (assert(Array.isArray(container), "Invalid key - child is not an array"), (container = container.slice()).splice(key, 1)) : (assert(isObject(container), "Invalid key - child is not an object"), delete (container = Object.assign({}, container))[key]), container;
753
- }
754
- __name(removeChild, "removeChild");
755
- function insertChildMut(container, key, value) {
756
- return typeof key == "number" ? (assert(container != null, "Container is missing for key"), assert(Array.isArray(container), "Cannot use numerical key for object container"), assert(container.length >= key, "Cannot insert into out of bounds index"), container.splice(key, 0, value)) : (assert(isObject(container), "Cannot insert into missing item"), assert(container[key] === void 0, "Trying to overwrite value at key. Your op needs to remove it first"), container[key] = value), value;
757
- }
758
- __name(insertChildMut, "insertChildMut"), exports.removeOp = (path, value = !0) => cursor_js_1.writeCursor().writeAtPath(path, "r", value).get(), exports.moveOp = (from, to) => cursor_js_1.writeCursor().writeMove(from, to).get(), exports.insertOp = (path, value) => cursor_js_1.writeCursor().writeAtPath(path, "i", value).get(), exports.replaceOp = (path, oldVal, newVal) => cursor_js_1.writeCursor().at(path, (w) => {
759
- w.write("r", oldVal), w.write("i", newVal);
760
- }).get(), exports.editOp = (path, type2, subOp, preserveNoop = !1) => cursor_js_1.writeCursor().at(path, (w) => writeEdit(w, type2, subOp, preserveNoop)).get();
761
- const isValidKey = /* @__PURE__ */ __name((container, key) => container != null && (typeof key == "number" ? Array.isArray(container) : typeof container == "object"), "isValidKey"), maybeGetChild = /* @__PURE__ */ __name((container, key) => isValidKey(container, key) ? container[key] : void 0, "maybeGetChild"), subtypes = {};
762
- function registerSubtype(subtype) {
763
- let _subtype = subtype.type ? subtype.type : subtype;
764
- _subtype.name && (subtypes[_subtype.name] = _subtype), _subtype.uri && (subtypes[_subtype.uri] = _subtype);
765
- }
766
- __name(registerSubtype, "registerSubtype");
767
- const typeOrThrow = /* @__PURE__ */ __name((name) => {
768
- const type2 = subtypes[name];
769
- if (type2) return type2;
770
- throw Error("Missing type: " + name);
771
- }, "typeOrThrow");
772
- registerSubtype(requireDist());
773
- const add = /* @__PURE__ */ __name((a, b) => a + b, "add");
774
- registerSubtype({
746
+ J(Kt());
747
+ const xe = (r, u) => r + u;
748
+ J({
775
749
  name: "number",
776
- apply: add,
777
- compose: add,
778
- invert: /* @__PURE__ */ __name((n) => -n, "invert"),
779
- transform: /* @__PURE__ */ __name((a) => a, "transform")
750
+ apply: xe,
751
+ compose: xe,
752
+ invert: (r) => -r,
753
+ transform: (r) => r
780
754
  });
781
- const getEditType = /* @__PURE__ */ __name((c) => c == null ? null : c.et ? typeOrThrow(c.et) : c.es ? subtypes["text-unicode"] : c.ena != null ? subtypes.number : null, "getEditType"), getEdit = /* @__PURE__ */ __name((c) => c.es ? c.es : c.ena != null ? c.ena : c.e, "getEdit"), writeEdit = /* @__PURE__ */ __name((w, typeOrName, edit, preserveNoop = !1) => {
782
- const [type2, name] = typeof typeOrName == "string" ? [typeOrThrow(typeOrName), typeOrName] : [typeOrName, typeOrName.name];
783
- !preserveNoop && type2.isNoop && type2.isNoop(edit) || (name === "number" ? w.write("ena", edit) : name === "text-unicode" ? w.write("es", edit) : (w.write("et", name), w.write("e", edit)));
784
- }, "writeEdit");
785
- function checkNonNegInteger(n) {
786
- assert(typeof n == "number"), assert(n >= 0), assert(n === (0 | n));
787
- }
788
- __name(checkNonNegInteger, "checkNonNegInteger");
789
- function checkScalar(s) {
790
- typeof s == "number" ? checkNonNegInteger(s) : assert(typeof s == "string");
791
- }
792
- __name(checkScalar, "checkScalar");
793
- function checkValidOp(op) {
794
- if (op === null) return;
795
- const pickedSlots = /* @__PURE__ */ new Set(), droppedSlots = /* @__PURE__ */ new Set(), checkComponent = /* @__PURE__ */ __name((e) => {
796
- let empty = !0, hasEdit = !1;
797
- for (let k in e) {
798
- const v = e[k];
799
- if (empty = !1, assert(k === "p" || k === "r" || k === "d" || k === "i" || k === "e" || k === "es" || k === "ena" || k === "et", "Invalid component item '" + k + "'"), k === "p") checkNonNegInteger(v), assert(!pickedSlots.has(v)), pickedSlots.add(v), assert(e.r === void 0);
800
- else if (k === "d") checkNonNegInteger(v), assert(!droppedSlots.has(v)), droppedSlots.add(v), assert(e.i === void 0);
801
- else if (k === "e" || k === "es" || k === "ena") {
802
- assert(!hasEdit), hasEdit = !0;
803
- const t = getEditType(e);
804
- assert(t, "Missing type in edit"), t.checkValidOp && t.checkValidOp(getEdit(e));
755
+ const ve = (r) => r == null ? null : r.et ? Ie(r.et) : r.es ? pe["text-unicode"] : r.ena != null ? pe.number : null, f = (r) => r.es ? r.es : r.ena != null ? r.ena : r.e, _ = (r, u, y, D = !1) => {
756
+ const [m, C] = typeof u == "string" ? [Ie(u), u] : [u, u.name];
757
+ !D && m.isNoop && m.isNoop(y) || (C === "number" ? r.write("ena", y) : C === "text-unicode" ? r.write("es", y) : (r.write("et", C), r.write("e", y)));
758
+ };
759
+ function w(r) {
760
+ l(typeof r == "number"), l(r >= 0), l(r === (0 | r));
761
+ }
762
+ function L(r) {
763
+ typeof r == "number" ? w(r) : l(typeof r == "string");
764
+ }
765
+ function z(r) {
766
+ if (r === null) return;
767
+ const u = /* @__PURE__ */ new Set(), y = /* @__PURE__ */ new Set(), D = (C) => {
768
+ let $ = !0, j = !1;
769
+ for (let p in C) {
770
+ const v = C[p];
771
+ if ($ = !1, l(p === "p" || p === "r" || p === "d" || p === "i" || p === "e" || p === "es" || p === "ena" || p === "et", "Invalid component item '" + p + "'"), p === "p") w(v), l(!u.has(v)), u.add(v), l(C.r === void 0);
772
+ else if (p === "d") w(v), l(!y.has(v)), y.add(v), l(C.i === void 0);
773
+ else if (p === "e" || p === "es" || p === "ena") {
774
+ l(!j), j = !0;
775
+ const b = ve(C);
776
+ l(b, "Missing type in edit"), b.checkValidOp && b.checkValidOp(f(C));
805
777
  }
806
778
  }
807
- assert(!empty);
808
- }, "checkComponent"), checkDescent = /* @__PURE__ */ __name((descent, isRoot, removed) => {
809
- if (!Array.isArray(descent)) throw Error("Op must be null or a list");
810
- if (descent.length === 0) throw Error("Empty descent");
811
- isRoot || checkScalar(descent[0]);
812
- let last = 1, numDescents = 0, lastKey = 0;
813
- for (let i = 0; i < descent.length; i++) {
814
- const d = descent[i];
815
- if (assert(d != null), Array.isArray(d)) {
816
- const key = checkDescent(d, !1);
817
- if (numDescents) {
818
- const t1 = typeof lastKey, t2 = typeof key;
819
- t1 === t2 ? assert(lastKey < key, "descent keys are not in order") : assert(t1 === "number" && t2 === "string");
779
+ l(!$);
780
+ }, m = (C, $, j) => {
781
+ if (!Array.isArray(C)) throw Error("Op must be null or a list");
782
+ if (C.length === 0) throw Error("Empty descent");
783
+ $ || L(C[0]);
784
+ let p = 1, v = 0, b = 0;
785
+ for (let I = 0; I < C.length; I++) {
786
+ const T = C[I];
787
+ if (l(T != null), Array.isArray(T)) {
788
+ const G = m(T, !1);
789
+ if (v) {
790
+ const g = typeof b, N = typeof G;
791
+ g === N ? l(b < G, "descent keys are not in order") : l(g === "number" && N === "string");
820
792
  }
821
- lastKey = key, numDescents++, last = 3;
822
- } else typeof d == "object" ? (assert(last === 1, `Prev not scalar - instead ${last}`), checkComponent(d), last = 2) : (assert(last !== 3), checkScalar(d), assert(cursor_js_1.isValidPathItem(d), "Invalid path key"), last = 1);
793
+ b = G, v++, p = 3;
794
+ } else typeof T == "object" ? (l(p === 1, `Prev not scalar - instead ${p}`), D(T), p = 2) : (l(p !== 3), L(T), l(s.isValidPathItem(T), "Invalid path key"), p = 1);
823
795
  }
824
- return assert(numDescents !== 1, "Operation makes multiple descents. Remove some []"), assert(last === 2 || last === 3), descent[0];
825
- }, "checkDescent");
826
- checkDescent(op, !0), assert(pickedSlots.size === droppedSlots.size, "Mismatched picks and drops in op");
827
- for (let i = 0; i < pickedSlots.size; i++) assert(pickedSlots.has(i)), assert(droppedSlots.has(i));
828
- }
829
- __name(checkValidOp, "checkValidOp");
830
- function normalize(op) {
831
- let nextSlot = 0, slotMap = [];
832
- const w = cursor_js_1.writeCursor();
833
- return w.mergeTree(op, (c, w2) => {
834
- const t = getEditType(c);
835
- if (t) {
836
- const op2 = getEdit(c);
837
- writeEdit(w2, t, t.normalize ? t.normalize(op2) : op2);
796
+ return l(v !== 1, "Operation makes multiple descents. Remove some []"), l(p === 2 || p === 3), C[0];
797
+ };
798
+ m(r, !0), l(u.size === y.size, "Mismatched picks and drops in op");
799
+ for (let C = 0; C < u.size; C++) l(u.has(C)), l(y.has(C));
800
+ }
801
+ function H(r) {
802
+ let u = 0, y = [];
803
+ const D = s.writeCursor();
804
+ return D.mergeTree(r, (m, C) => {
805
+ const $ = ve(m);
806
+ if ($) {
807
+ const p = f(m);
808
+ _(C, $, $.normalize ? $.normalize(p) : p);
838
809
  }
839
- for (const k of ["r", "p", "i", "d"]) if (c[k] !== void 0) {
840
- const r = k === "p" || k === "d" ? (inSlot = c[k], slotMap[inSlot] == null && (slotMap[inSlot] = nextSlot++), slotMap[inSlot]) : c[k];
841
- w2.write(k, r);
810
+ for (const p of ["r", "p", "i", "d"]) if (m[p] !== void 0) {
811
+ const v = p === "p" || p === "d" ? (j = m[p], y[j] == null && (y[j] = u++), y[j]) : m[p];
812
+ C.write(p, v);
842
813
  }
843
- var inSlot;
844
- }), w.get();
845
- }
846
- __name(normalize, "normalize");
847
- function apply(snapshot, op) {
848
- if (checkValidOp(op), op === null) return snapshot;
849
- const held = [];
850
- return (/* @__PURE__ */ __name(function drop(root, descent) {
851
- let subDoc = root, i = 0, rootContainer = {
852
- root
853
- }, m = 0, container = rootContainer, key = "root";
854
- function mut() {
855
- for (; m < i; m++) {
856
- let d = descent[m];
857
- typeof d != "object" && (assert(isValidKey(container, key)), container = container[key] = shallowClone(container[key]), key = d);
814
+ var j;
815
+ }), D.get();
816
+ }
817
+ function De(r, u) {
818
+ if (z(u), u === null) return r;
819
+ const y = [];
820
+ return function D(m, C) {
821
+ let $ = m, j = 0, p = {
822
+ root: m
823
+ }, v = 0, b = p, I = "root";
824
+ function T() {
825
+ for (; v < j; v++) {
826
+ let G = C[v];
827
+ typeof G != "object" && (l(k(b, I)), b = b[I] = W(b[I]), I = G);
858
828
  }
859
829
  }
860
- for (__name(mut, "mut"); i < descent.length; i++) {
861
- const d = descent[i];
862
- if (Array.isArray(d)) {
863
- const child = drop(subDoc, d);
864
- child !== subDoc && child !== void 0 && (mut(), subDoc = container[key] = child);
865
- } else if (typeof d == "object") {
866
- d.d != null ? (mut(), subDoc = insertChildMut(container, key, held[d.d])) : d.i !== void 0 && (mut(), subDoc = insertChildMut(container, key, d.i));
867
- const t = getEditType(d);
868
- if (t) mut(), subDoc = container[key] = t.apply(subDoc, getEdit(d));
869
- else if (d.e !== void 0) throw Error("Subtype " + d.et + " undefined");
870
- } else subDoc = maybeGetChild(subDoc, d);
830
+ for (; j < C.length; j++) {
831
+ const G = C[j];
832
+ if (Array.isArray(G)) {
833
+ const g = D($, G);
834
+ g !== $ && g !== void 0 && (T(), $ = b[I] = g);
835
+ } else if (typeof G == "object") {
836
+ G.d != null ? (T(), $ = h(b, I, y[G.d])) : G.i !== void 0 && (T(), $ = h(b, I, G.i));
837
+ const g = ve(G);
838
+ if (g) T(), $ = b[I] = g.apply($, f(G));
839
+ else if (G.e !== void 0) throw Error("Subtype " + G.et + " undefined");
840
+ } else $ = Z($, G);
871
841
  }
872
- return rootContainer.root;
873
- }, "drop"))(snapshot = (/* @__PURE__ */ __name(function pick(subDoc, descent) {
874
- const stack = [];
875
- let i = 0;
876
- for (; i < descent.length; i++) {
877
- const d = descent[i];
878
- if (Array.isArray(d)) break;
879
- typeof d != "object" && (stack.push(subDoc), subDoc = maybeGetChild(subDoc, d));
842
+ return p.root;
843
+ }(r = function D(m, C) {
844
+ const $ = [];
845
+ let j = 0;
846
+ for (; j < C.length; j++) {
847
+ const I = C[j];
848
+ if (Array.isArray(I)) break;
849
+ typeof I != "object" && ($.push(m), m = Z(m, I));
880
850
  }
881
- for (let j = descent.length - 1; j >= i; j--) subDoc = pick(subDoc, descent[j]);
882
- for (--i; i >= 0; i--) {
883
- const d = descent[i];
884
- if (typeof d != "object") {
885
- const container = stack.pop();
886
- subDoc = subDoc === maybeGetChild(container, d) ? container : subDoc === void 0 ? removeChild(container, d) : (k = d, v = subDoc, (obj = shallowClone(obj = container))[k] = v, obj);
887
- } else hasPick(d) && (assert(subDoc !== void 0, "Cannot pick up or remove undefined"), d.p != null && (held[d.p] = subDoc), subDoc = void 0);
851
+ for (let I = C.length - 1; I >= j; I--) m = D(m, C[I]);
852
+ for (--j; j >= 0; j--) {
853
+ const I = C[j];
854
+ if (typeof I != "object") {
855
+ const T = $.pop();
856
+ m = m === Z(T, I) ? T : m === void 0 ? c(T, I) : (v = I, b = m, (p = W(p = T))[v] = b, p);
857
+ } else O(I) && (l(m !== void 0, "Cannot pick up or remove undefined"), I.p != null && (y[I.p] = m), m = void 0);
888
858
  }
889
- var obj, k, v;
890
- return subDoc;
891
- }, "pick"))(snapshot, op), op);
892
- }
893
- __name(apply, "apply");
894
- function transformPosition(path, op) {
895
- path = path.slice(), checkValidOp(op);
896
- const r = cursor_js_1.readCursor(op);
897
- let pickedAtSlot, pickIndex, removed = !1;
898
- const advStack = [];
899
- for (let i = 0; ; i++) {
900
- const k = path[i], c = r.getComponent();
901
- if (c && (c.r !== void 0 ? removed = !0 : c.p != null && (removed = !1, pickedAtSlot = c.p, pickIndex = i)), i >= path.length) break;
902
- let pickOffset = 0;
903
- const pickAdv = cursor_js_1.advancer(r, void 0, (k2, c2) => {
904
- hasPick(c2) && pickOffset++;
859
+ var p, v, b;
860
+ return m;
861
+ }(r, u), u);
862
+ }
863
+ function ue(r, u) {
864
+ r = r.slice(), z(u);
865
+ const y = s.readCursor(u);
866
+ let D, m, C = !1;
867
+ const $ = [];
868
+ for (let p = 0; ; p++) {
869
+ const v = r[p], b = y.getComponent();
870
+ if (b && (b.r !== void 0 ? C = !0 : b.p != null && (C = !1, D = b.p, m = p)), p >= r.length) break;
871
+ let I = 0;
872
+ const T = s.advancer(y, void 0, (g, N) => {
873
+ O(N) && I++;
905
874
  });
906
- advStack.unshift(pickAdv);
907
- const hasNext = pickAdv(k);
908
- if (typeof k == "number" && (path[i] -= pickOffset), !hasNext) break;
875
+ $.unshift(T);
876
+ const G = T(v);
877
+ if (typeof v == "number" && (r[p] -= I), !G) break;
909
878
  }
910
- if (advStack.forEach((pickAdv) => pickAdv.end()), removed) return null;
911
- const handleDrop = /* @__PURE__ */ __name(() => {
912
- let i = 0;
913
- if (pickedAtSlot != null) {
914
- const rPath = r.getPath();
915
- i = rPath.length, path = rPath.concat(path.slice(pickIndex));
879
+ if ($.forEach((p) => p.end()), C) return null;
880
+ const j = () => {
881
+ let p = 0;
882
+ if (D != null) {
883
+ const v = y.getPath();
884
+ p = v.length, r = v.concat(r.slice(m));
916
885
  }
917
- for (; i < path.length; i++) {
918
- const k = path[i], c = getComponent(r), et = getEditType(c);
919
- if (et) {
920
- const e = getEdit(c);
921
- et.transformPosition && (path[i] = et.transformPosition(path[i], e));
886
+ for (; p < r.length; p++) {
887
+ const v = r[p], b = a(y), I = ve(b);
888
+ if (I) {
889
+ const g = f(b);
890
+ I.transformPosition && (r[p] = I.transformPosition(r[p], g));
922
891
  break;
923
892
  }
924
- let dropOffset = 0;
925
- const hasNext = cursor_js_1.advancer(r, (k2, c2) => hasDrop(c2) ? ~(k2 - dropOffset) : k2 - dropOffset, (k2, c2) => {
926
- hasDrop(c2) && dropOffset++;
927
- })(k);
928
- if (typeof k == "number" && (path[i] += dropOffset), !hasNext) break;
893
+ let T = 0;
894
+ const G = s.advancer(y, (g, N) => o(N) ? ~(g - T) : g - T, (g, N) => {
895
+ o(N) && T++;
896
+ })(v);
897
+ if (typeof v == "number" && (r[p] += T), !G) break;
929
898
  }
930
- }, "handleDrop");
931
- return pickedAtSlot != null ? r.eachDrop(null, (slot) => {
932
- slot === pickedAtSlot && handleDrop();
933
- }) : handleDrop(), path;
934
- }
935
- __name(transformPosition, "transformPosition");
936
- function compose(op1, op2) {
937
- if (checkValidOp(op1), checkValidOp(op2), op1 == null) return op2;
938
- if (op2 == null) return op1;
939
- let nextSlot = 0;
940
- const r1 = cursor_js_1.readCursor(op1), r2 = cursor_js_1.readCursor(op2), w = cursor_js_1.writeCursor(), heldPickWrites = [], heldDropWrites = [], held1Pick = [], held2Drop = [], p1SlotMap = [], p2SlotMap = [], visitedOp2EditCs = /* @__PURE__ */ new Set();
941
- r1.traverse(null, (c) => {
942
- c.p != null && (held1Pick[c.p] = r1.clone());
943
- }), r2.traverse(null, (c) => {
944
- c.d != null && (held2Drop[c.d] = r2.clone());
899
+ };
900
+ return D != null ? y.eachDrop(null, (p) => {
901
+ p === D && j();
902
+ }) : j(), r;
903
+ }
904
+ function ne(r, u) {
905
+ if (z(r), z(u), r == null) return u;
906
+ if (u == null) return r;
907
+ let y = 0;
908
+ const D = s.readCursor(r), m = s.readCursor(u), C = s.writeCursor(), $ = [], j = [], p = [], v = [], b = [], I = [], T = /* @__PURE__ */ new Set();
909
+ D.traverse(null, (g) => {
910
+ g.p != null && (p[g.p] = D.clone());
911
+ }), m.traverse(null, (g) => {
912
+ g.d != null && (v[g.d] = m.clone());
945
913
  });
946
- const w2 = cursor_js_1.writeCursor();
947
- return (/* @__PURE__ */ __name(function xfBoundary(r1Pick, r1Drop, r2Pick, r2Drop, litIn, rmParent, wd, wp) {
948
- assert(r1Drop || r2Pick);
949
- const c1d = getComponent(r1Drop), c2p = getComponent(r2Pick), rmHere = !!c2p && c2p.r !== void 0, insHere = !!c1d && c1d.i !== void 0, drop1Slot = c1d ? c1d.d : null, pick2Slot = c2p ? c2p.p : null, rmChildren = (rmParent || rmHere) && pick2Slot == null;
950
- if (pick2Slot != null) r2Drop = held2Drop[pick2Slot], wd = heldDropWrites[pick2Slot] = new cursor_js_1.WriteCursor();
951
- else if (c2p && c2p.r !== void 0) r2Drop = null;
914
+ const G = s.writeCursor();
915
+ return function g(N, re, te, K, se, Te, me, _e) {
916
+ l(re || te);
917
+ const oe = a(re), Pe = a(te), Me = !!Pe && Pe.r !== void 0, Le = !!oe && oe.i !== void 0, Ue = oe ? oe.d : null, Ee = Pe ? Pe.p : null, $e = (Te || Me) && Ee == null;
918
+ if (Ee != null) K = v[Ee], me = j[Ee] = new s.WriteCursor();
919
+ else if (Pe && Pe.r !== void 0) K = null;
952
920
  else {
953
- const c2d2 = getComponent(r2Drop);
954
- c2d2 && c2d2.d != null && (r2Drop = null);
921
+ const P = a(K);
922
+ P && P.d != null && (K = null);
955
923
  }
956
- const c2d = getComponent(r2Drop);
957
- if (drop1Slot != null) if (r1Pick = held1Pick[drop1Slot], wp = heldPickWrites[drop1Slot] = new cursor_js_1.WriteCursor(), rmChildren) rmParent && !rmHere && wp.write("r", !0);
924
+ const Q = a(K);
925
+ if (Ue != null) if (N = p[Ue], _e = $[Ue] = new s.WriteCursor(), $e) Te && !Me && _e.write("r", !0);
958
926
  else {
959
- const slot = p1SlotMap[drop1Slot] = nextSlot++;
960
- wd.write("d", slot);
927
+ const P = b[Ue] = y++;
928
+ me.write("d", P);
961
929
  }
962
- else if (c1d && c1d.i !== void 0) r1Pick = null;
930
+ else if (oe && oe.i !== void 0) N = null;
963
931
  else {
964
- const c1p = getComponent(r1Pick);
965
- c1p && c1p.p != null && (r1Pick = null);
932
+ const P = a(N);
933
+ P && P.p != null && (N = null);
966
934
  }
967
- let litOut;
968
- insHere ? (assert(litIn === void 0), litOut = c1d.i) : litOut = litIn;
969
- const insComponent = (pick2Slot == null ? !insHere || rmParent || rmHere : litOut === void 0) ? null : wd.getComponent();
970
- if (pick2Slot != null) {
971
- if (!(litIn !== void 0 || insHere)) {
972
- const slot = drop1Slot != null ? p1SlotMap[drop1Slot] : nextSlot++;
973
- p2SlotMap[pick2Slot] = slot, wp.write("p", slot);
935
+ let U;
936
+ Le ? (l(se === void 0), U = oe.i) : U = se;
937
+ const B = (Ee == null ? !Le || Te || Me : U === void 0) ? null : me.getComponent();
938
+ if (Ee != null) {
939
+ if (!(se !== void 0 || Le)) {
940
+ const P = Ue != null ? b[Ue] : y++;
941
+ I[Ee] = P, _e.write("p", P);
974
942
  }
975
- } else rmHere && (insHere || litIn !== void 0 || (c2p.r, wp.write("r", c2p.r)));
976
- const type1 = rmChildren ? null : getEditType(c1d), type2 = getEditType(c2d);
977
- if ((type1 || type2) && (type1 && type1.name, type2 && type2.name), type1 && type2) {
978
- assert(type1 === type2);
979
- const e1 = getEdit(c1d), e2 = getEdit(c2d), r = type1.compose(e1, e2);
980
- writeEdit(wd, type1, r), visitedOp2EditCs.add(c2d);
981
- } else type1 ? writeEdit(wd, type1, getEdit(c1d)) : type2 && (writeEdit(wd, type2, getEdit(c2d)), visitedOp2EditCs.add(c2d));
982
- const hasContainerLiteral = typeof litOut == "object" && litOut != null;
983
- let isCloned = !1, p1PickOff = 0, p1DropOff = 0, p2PickOff = 0, p2DropOff = 0, litOff = 0;
984
- const p2DropAdv = cursor_js_1.advancer(r2Drop, (k, c) => hasDrop(c) ? p2DropOff - k - 1 : k - p2DropOff, (k, c) => {
985
- hasDrop(c) && p2DropOff++;
986
- }), p1PickAdv = cursor_js_1.advancer(r1Pick, (k, c) => hasPick(c) ? p1PickOff - k - 1 : k - p1PickOff, (k, c) => {
987
- hasPick(c) && p1PickOff++;
943
+ } else Me && (Le || se !== void 0 || (Pe.r, _e.write("r", Pe.r)));
944
+ const M = $e ? null : ve(oe), A = ve(Q);
945
+ if ((M || A) && (M && M.name, A && A.name), M && A) {
946
+ l(M === A);
947
+ const P = f(oe), x = f(Q), he = M.compose(P, x);
948
+ _(me, M, he), T.add(Q);
949
+ } else M ? _(me, M, f(oe)) : A && (_(me, A, f(Q)), T.add(Q));
950
+ const R = typeof U == "object" && U != null;
951
+ let X = !1, Y = 0, ee = 0, fe = 0, de = 0, le = 0;
952
+ const ye = s.advancer(K, (P, x) => o(x) ? de - P - 1 : P - de, (P, x) => {
953
+ o(x) && de++;
954
+ }), q = s.advancer(N, (P, x) => O(x) ? Y - P - 1 : P - Y, (P, x) => {
955
+ O(x) && Y++;
988
956
  });
989
- if (cursor_js_1.eachChildOf(r1Drop, r2Pick, (inKey, _p1Drop, _p2Pick) => {
990
- let _p1Pick, _p2Drop, p1PickKey = inKey, p2DropKey = inKey, litKey = inKey;
991
- if (typeof inKey == "number") {
992
- let p2Mid = inKey + p2PickOff;
993
- _p2Drop = p2DropAdv(p2Mid), p2DropKey = p2Mid + p2DropOff;
994
- let p1Mid = inKey + p1DropOff;
995
- _p1Pick = p1PickAdv(p1Mid), hasDrop(getComponent(_p2Drop)) && (_p1Pick = null), p1PickKey = p1Mid + p1PickOff, litKey = inKey + litOff, assert(p1PickKey >= 0, "p1PickKey is negative"), assert(p2DropKey >= 0, "p2DropKey is negative");
996
- const hd1 = hasDrop(getComponent(_p1Drop)), hp2 = hasPick(getComponent(_p2Pick));
997
- (hd1 || hp2 && !rmChildren) && litOff--, hd1 && p1DropOff--, hp2 && p2PickOff--;
998
- } else _p1Pick = p1PickAdv(inKey), _p2Drop = p2DropAdv(inKey);
999
- wp.descend(p1PickKey), wd.descend(p2DropKey);
1000
- const _lit = hasContainerLiteral && !hasDrop(getComponent(_p1Drop)) ? litOut[litKey] : void 0, _litResult = xfBoundary(_p1Pick, _p1Drop, _p2Pick, _p2Drop, _lit, rmChildren, wd, wp);
1001
- var container, key, child;
1002
- hasContainerLiteral && !rmChildren ? _lit !== _litResult && (isCloned || (litOut = Array.isArray(litOut) ? litOut.slice() : Object.assign({}, litOut), isCloned = !0), container = litOut, child = _litResult, typeof (key = litKey) == "number" ? (assert(Array.isArray(container)), assert(key < container.length)) : (assert(!Array.isArray(container)), assert(container[key] !== void 0)), child === void 0 ? typeof key == "number" ? container.splice(key, 1) : delete container[key] : container[key] = child) : assert(_litResult === void 0), wd.ascend(), wp.ascend();
1003
- }), p1PickAdv.end(), p2DropAdv.end(), insComponent != null) insComponent.i = litOut;
1004
- else if (!rmParent && !rmHere && pick2Slot == null) return litOut;
1005
- }, "xfBoundary"))(r1, r1.clone(), r2, r2.clone(), void 0, !1, w, w2), w.reset(), w.mergeTree(w2.get()), w.reset(), w.get(), heldPickWrites.map((w3) => w3.get()), heldDropWrites.map((w3) => w3.get()), r1.traverse(w, (c, w3) => {
1006
- const slot1 = c.p;
1007
- if (slot1 != null) {
1008
- const slot = p1SlotMap[slot1];
1009
- slot != null && w3.write("p", slot);
1010
- const _w = heldPickWrites[slot1];
1011
- _w && _w.get(), _w && w3.mergeTree(_w.get());
1012
- } else c.r !== void 0 && w3.write("r", c.r);
1013
- }), w.reset(), w.get(), r2.traverse(w, (c, w3) => {
1014
- const slot2 = c.d;
1015
- if (slot2 != null) {
1016
- const slot = p2SlotMap[slot2];
1017
- slot != null && w3.write("d", slot);
1018
- const _w = heldDropWrites[slot2];
1019
- _w && w3.mergeTree(_w.get());
1020
- } else c.i !== void 0 && w3.write("i", c.i);
1021
- const t = getEditType(c);
1022
- t && !visitedOp2EditCs.has(c) && writeEdit(w3, t, getEdit(c));
1023
- }), w.get();
1024
- }
1025
- __name(compose, "compose");
1026
- function invert(op) {
1027
- if (op == null) return null;
1028
- const r = new cursor_js_1.ReadCursor(op), w = new cursor_js_1.WriteCursor();
1029
- let editsToTransform;
1030
- const heldPick = [], heldWrites = [];
1031
- return (/* @__PURE__ */ __name(function invertSimple(r2, w2, subDoc) {
1032
- const c = r2.getComponent();
1033
- let insertHere, subdocModified = !1;
1034
- if (c) {
1035
- c.p != null && (w2.write("d", c.p), heldPick[c.p] = r2.clone()), c.r !== void 0 && w2.write("i", c.r), c.d != null && (w2.write("p", c.d), subDoc = void 0), c.i !== void 0 && (subDoc = insertHere = c.i);
1036
- const t = getEditType(c);
1037
- t && (subDoc === void 0 ? (editsToTransform || (editsToTransform = /* @__PURE__ */ new Set()), editsToTransform.add(c)) : (getEdit(c), subDoc = t.apply(subDoc, getEdit(c)), subdocModified = !0));
957
+ if (s.eachChildOf(re, te, (P, x, he) => {
958
+ let be, We, He = P, Ne = P, Ye = P;
959
+ if (typeof P == "number") {
960
+ let Oe = P + fe;
961
+ We = ye(Oe), Ne = Oe + de;
962
+ let ce = P + ee;
963
+ be = q(ce), o(a(We)) && (be = null), He = ce + Y, Ye = P + le, l(He >= 0, "p1PickKey is negative"), l(Ne >= 0, "p2DropKey is negative");
964
+ const Re = o(a(x)), Ge = O(a(he));
965
+ (Re || Ge && !$e) && le--, Re && ee--, Ge && fe--;
966
+ } else be = q(P), We = ye(P);
967
+ _e.descend(He), me.descend(Ne);
968
+ const ze = R && !o(a(x)) ? U[Ye] : void 0, Se = g(be, x, he, We, ze, $e, me, _e);
969
+ var je, S, ie;
970
+ R && !$e ? ze !== Se && (X || (U = Array.isArray(U) ? U.slice() : Object.assign({}, U), X = !0), je = U, ie = Se, typeof (S = Ye) == "number" ? (l(Array.isArray(je)), l(S < je.length)) : (l(!Array.isArray(je)), l(je[S] !== void 0)), ie === void 0 ? typeof S == "number" ? je.splice(S, 1) : delete je[S] : je[S] = ie) : l(Se === void 0), me.ascend(), _e.ascend();
971
+ }), q.end(), ye.end(), B != null) B.i = U;
972
+ else if (!Te && !Me && Ee == null) return U;
973
+ }(D, D.clone(), m, m.clone(), void 0, !1, C, G), C.reset(), C.mergeTree(G.get()), C.reset(), C.get(), $.map((g) => g.get()), j.map((g) => g.get()), D.traverse(C, (g, N) => {
974
+ const re = g.p;
975
+ if (re != null) {
976
+ const te = b[re];
977
+ te != null && N.write("p", te);
978
+ const K = $[re];
979
+ K && K.get(), K && N.mergeTree(K.get());
980
+ } else g.r !== void 0 && N.write("r", g.r);
981
+ }), C.reset(), C.get(), m.traverse(C, (g, N) => {
982
+ const re = g.d;
983
+ if (re != null) {
984
+ const K = I[re];
985
+ K != null && N.write("d", K);
986
+ const se = j[re];
987
+ se && N.mergeTree(se.get());
988
+ } else g.i !== void 0 && N.write("i", g.i);
989
+ const te = ve(g);
990
+ te && !T.has(g) && _(N, te, f(g));
991
+ }), C.get();
992
+ }
993
+ function ae(r) {
994
+ if (r == null) return null;
995
+ const u = new s.ReadCursor(r), y = new s.WriteCursor();
996
+ let D;
997
+ const m = [], C = [];
998
+ return function $(j, p, v) {
999
+ const b = j.getComponent();
1000
+ let I, T = !1;
1001
+ if (b) {
1002
+ b.p != null && (p.write("d", b.p), m[b.p] = j.clone()), b.r !== void 0 && p.write("i", b.r), b.d != null && (p.write("p", b.d), v = void 0), b.i !== void 0 && (v = I = b.i);
1003
+ const g = ve(b);
1004
+ g && (v === void 0 ? (D || (D = /* @__PURE__ */ new Set()), D.add(b)) : (f(b), v = g.apply(v, f(b)), T = !0));
1038
1005
  }
1039
- let dropOff = 0;
1040
- for (const key of r2) {
1041
- w2.descend(key);
1042
- const raw = typeof key == "number" ? key - dropOff : key, childIn = maybeGetChild(subDoc, raw);
1043
- hasDrop(r2.getComponent()) && dropOff++;
1044
- const childOut = invertSimple(r2, w2, childIn);
1045
- if (subDoc !== void 0 && childOut !== void 0) {
1046
- if (subdocModified || (subdocModified = !0, subDoc = shallowClone(subDoc)), !isValidKey(subDoc, raw)) throw Error("Cannot modify child - invalid operation");
1047
- subDoc[raw] = childOut;
1006
+ let G = 0;
1007
+ for (const g of j) {
1008
+ p.descend(g);
1009
+ const N = typeof g == "number" ? g - G : g, re = Z(v, N);
1010
+ o(j.getComponent()) && G++;
1011
+ const te = $(j, p, re);
1012
+ if (v !== void 0 && te !== void 0) {
1013
+ if (T || (T = !0, v = W(v)), !k(v, N)) throw Error("Cannot modify child - invalid operation");
1014
+ v[N] = te;
1048
1015
  }
1049
- w2.ascend();
1016
+ p.ascend();
1050
1017
  }
1051
- if (insertHere === void 0) return subdocModified ? subDoc : void 0;
1052
- w2.write("r", subDoc);
1053
- }, "invertSimple"))(r, w, void 0), editsToTransform && (w.reset(), (/* @__PURE__ */ __name(function transformEdits(rPick, rDrop, w2) {
1054
- const cd = rDrop.getComponent();
1055
- if (cd) {
1056
- const dropSlot = cd.d;
1057
- if (dropSlot != null && (rPick = heldPick[dropSlot], w2 = heldWrites[dropSlot] = cursor_js_1.writeCursor()), editsToTransform.has(cd)) {
1058
- const t = getEditType(cd);
1059
- if (!t.invert) throw Error(`Cannot invert subtype ${t.name}`);
1060
- writeEdit(w2, t, t.invert(getEdit(cd)));
1018
+ if (I === void 0) return T ? v : void 0;
1019
+ p.write("r", v);
1020
+ }(u, y, void 0), D && (y.reset(), function $(j, p, v) {
1021
+ const b = p.getComponent();
1022
+ if (b) {
1023
+ const g = b.d;
1024
+ if (g != null && (j = m[g], v = C[g] = s.writeCursor()), D.has(b)) {
1025
+ const N = ve(b);
1026
+ if (!N.invert) throw Error(`Cannot invert subtype ${N.name}`);
1027
+ _(v, N, N.invert(f(b)));
1061
1028
  }
1062
1029
  }
1063
- let pickOff = 0, dropOff = 0;
1064
- const ap = cursor_js_1.advancer(rPick, (k, c) => hasPick(c) ? pickOff - k - 1 : k - pickOff, (k, c) => {
1065
- hasPick(c) && pickOff++;
1030
+ let I = 0, T = 0;
1031
+ const G = s.advancer(j, (g, N) => O(N) ? I - g - 1 : g - I, (g, N) => {
1032
+ O(N) && I++;
1066
1033
  });
1067
- for (const key of rDrop) if (typeof key == "number") {
1068
- const mid = key - dropOff, _rPick = ap(mid), raw = mid + pickOff;
1069
- w2.descend(raw), transformEdits(_rPick, rDrop, w2), hasDrop(rDrop.getComponent()) && dropOff++, w2.ascend();
1070
- } else w2.descend(key), transformEdits(ap(key), rDrop, w2), w2.ascend();
1071
- ap.end();
1072
- }, "transformEdits"))(r.clone(), r, w), heldWrites.length && (w.reset(), r.traverse(w, (c, w2) => {
1073
- const slot = c.p;
1074
- if (slot != null) {
1075
- const _w = heldWrites[slot];
1076
- _w && _w.get(), _w && w2.mergeTree(_w.get());
1034
+ for (const g of p) if (typeof g == "number") {
1035
+ const N = g - T, re = G(N), te = N + I;
1036
+ v.descend(te), $(re, p, v), o(p.getComponent()) && T++, v.ascend();
1037
+ } else v.descend(g), $(G(g), p, v), v.ascend();
1038
+ G.end();
1039
+ }(u.clone(), u, y), C.length && (y.reset(), u.traverse(y, ($, j) => {
1040
+ const p = $.p;
1041
+ if (p != null) {
1042
+ const v = C[p];
1043
+ v && v.get(), v && j.mergeTree(v.get());
1077
1044
  }
1078
- }))), w.get();
1079
- }
1080
- __name(invert, "invert");
1081
- const anyComponent = /* @__PURE__ */ __name((op, fn) => op.some((c) => typeof c == "object" && (Array.isArray(c) ? anyComponent(c, fn) : fn(c))), "anyComponent");
1082
- function makeInvertible(op, doc) {
1083
- if (op == null || !anyComponent(op, (c) => {
1084
- var _a2;
1085
- return c.r !== void 0 || ((_a2 = getEditType(c)) === null || _a2 === void 0 ? void 0 : _a2.makeInvertible) != null;
1086
- })) return op;
1087
- const r = new cursor_js_1.ReadCursor(op), w = new cursor_js_1.WriteCursor();
1088
- let hasEdits = !1;
1089
- const heldPick = [], heldDoc = [], traversePick = /* @__PURE__ */ __name((r2, w2, subDoc) => {
1090
- const c = r2.getComponent();
1091
- let modified = !1;
1092
- if (c) {
1093
- c.d != null && w2.write("d", c.d), c.i !== void 0 && w2.write("i", c.i);
1094
- const pickSlot = c.p;
1095
- if (pickSlot != null && (heldPick[pickSlot] = r2.clone(), assert(subDoc !== void 0, "Operation picks up at an invalid key"), heldDoc[pickSlot] = subDoc, w2.write("p", c.p)), c.r !== void 0 && subDoc === void 0) throw Error("Invalid doc / op in makeInvertible: removed item missing from doc");
1096
- const t = getEditType(c);
1097
- t && (t.makeInvertible ? hasEdits = !0 : writeEdit(w2, t, getEdit(c), !0));
1045
+ }))), y.get();
1046
+ }
1047
+ const ge = (r, u) => r.some((y) => typeof y == "object" && (Array.isArray(y) ? ge(y, u) : u(y)));
1048
+ function Ae(r, u) {
1049
+ if (r == null || !ge(r, (p) => {
1050
+ var v;
1051
+ return p.r !== void 0 || ((v = ve(p)) === null || v === void 0 ? void 0 : v.makeInvertible) != null;
1052
+ })) return r;
1053
+ const y = new s.ReadCursor(r), D = new s.WriteCursor();
1054
+ let m = !1;
1055
+ const C = [], $ = [], j = (p, v, b) => {
1056
+ const I = p.getComponent();
1057
+ let T = !1;
1058
+ if (I) {
1059
+ I.d != null && v.write("d", I.d), I.i !== void 0 && v.write("i", I.i);
1060
+ const g = I.p;
1061
+ if (g != null && (C[g] = p.clone(), l(b !== void 0, "Operation picks up at an invalid key"), $[g] = b, v.write("p", I.p)), I.r !== void 0 && b === void 0) throw Error("Invalid doc / op in makeInvertible: removed item missing from doc");
1062
+ const N = ve(I);
1063
+ N && (N.makeInvertible ? m = !0 : _(v, N, f(I), !0));
1098
1064
  }
1099
- let listOff = 0;
1100
- for (const key of r2) {
1101
- w2.descend(key);
1102
- const keyRaw = typeof key == "number" ? key - listOff : key, childIn = maybeGetChild(subDoc, keyRaw), childOut = traversePick(r2, w2, childIn);
1103
- childIn !== childOut && (modified || (modified = !0, subDoc = shallowClone(subDoc)), childOut === void 0 ? (subDoc = removeChild(subDoc, keyRaw), typeof key == "number" && listOff++) : subDoc[keyRaw] = childOut), w2.ascend();
1065
+ let G = 0;
1066
+ for (const g of p) {
1067
+ v.descend(g);
1068
+ const N = typeof g == "number" ? g - G : g, re = Z(b, N), te = j(p, v, re);
1069
+ re !== te && (T || (T = !0, b = W(b)), te === void 0 ? (b = c(b, N), typeof g == "number" && G++) : b[N] = te), v.ascend();
1104
1070
  }
1105
- return c && (c.r !== void 0 ? (w2.write("r", deepClone_js_1.default(subDoc)), subDoc = void 0) : c.p != null && (subDoc = void 0)), subDoc;
1106
- }, "traversePick");
1107
- return traversePick(r, w, doc), w.get(), hasEdits && (w.reset(), (/* @__PURE__ */ __name(function traverseDrop(rPick, rDrop, w2, subDoc, isLiteral) {
1108
- const c = rDrop.getComponent();
1109
- if (c) {
1110
- c.i !== void 0 ? (subDoc = c.i, isLiteral = !0) : c.d != null && (subDoc = heldDoc[c.d], rPick = heldPick[c.d], isLiteral = !1, c.d);
1111
- let t = getEditType(c);
1112
- if (t && t.makeInvertible) {
1113
- const edit = getEdit(c);
1114
- writeEdit(w2, t, t.makeInvertible(edit, subDoc), !0);
1071
+ return I && (I.r !== void 0 ? (v.write("r", i.default(b)), b = void 0) : I.p != null && (b = void 0)), b;
1072
+ };
1073
+ return j(y, D, u), D.get(), m && (D.reset(), function p(v, b, I, T, G) {
1074
+ const g = b.getComponent();
1075
+ if (g) {
1076
+ g.i !== void 0 ? (T = g.i, G = !0) : g.d != null && (T = $[g.d], v = C[g.d], G = !1, g.d);
1077
+ let K = ve(g);
1078
+ if (K && K.makeInvertible) {
1079
+ const se = f(g);
1080
+ _(I, K, K.makeInvertible(se, T), !0);
1115
1081
  }
1116
1082
  }
1117
- let pickOff = 0, dropOff = 0;
1118
- const ap = cursor_js_1.advancer(rPick, (k, c2) => hasPick(c2) ? pickOff - k - 1 : k - pickOff, (k, c2) => {
1119
- hasPick(c2) && pickOff++;
1083
+ let N = 0, re = 0;
1084
+ const te = s.advancer(v, (K, se) => O(se) ? N - K - 1 : K - N, (K, se) => {
1085
+ O(se) && N++;
1120
1086
  });
1121
- for (const key of rDrop) if (typeof key == "number") {
1122
- const mid = key - dropOff, _rPick = ap(mid), raw = mid + pickOff, child = maybeGetChild(subDoc, isLiteral ? mid : raw);
1123
- w2.descend(key), traverseDrop(_rPick, rDrop, w2, child, isLiteral), hasDrop(rDrop.getComponent()) && dropOff++, w2.ascend();
1087
+ for (const K of b) if (typeof K == "number") {
1088
+ const se = K - re, Te = te(se), me = se + N, _e = Z(T, G ? se : me);
1089
+ I.descend(K), p(Te, b, I, _e, G), o(b.getComponent()) && re++, I.ascend();
1124
1090
  } else {
1125
- const child = maybeGetChild(subDoc, key);
1126
- w2.descend(key), traverseDrop(ap(key), rDrop, w2, child, isLiteral), w2.ascend();
1091
+ const se = Z(T, K);
1092
+ I.descend(K), p(te(K), b, I, se, G), I.ascend();
1127
1093
  }
1128
- ap.end();
1129
- }, "traverseDrop"))(r.clone(), r, w, doc, !1)), w.get();
1130
- }
1131
- __name(makeInvertible, "makeInvertible");
1132
- function invertWithDoc(op, doc) {
1133
- return invert(makeInvertible(op, doc));
1134
- }
1135
- __name(invertWithDoc, "invertWithDoc");
1136
- const shallowCloneOp = /* @__PURE__ */ __name((op) => {
1137
- if (op == null) return null;
1138
- const result = op.slice();
1139
- for (let i = 0; i < op.length; i++) {
1140
- const c = result[i];
1141
- Array.isArray(c) && (result[i] = shallowCloneOp(c));
1094
+ te.end();
1095
+ }(y.clone(), y, D, u, !1)), D.get();
1096
+ }
1097
+ function Dt(r, u) {
1098
+ return ae(Ae(r, u));
1099
+ }
1100
+ const tt = (r) => {
1101
+ if (r == null) return null;
1102
+ const u = r.slice();
1103
+ for (let y = 0; y < r.length; y++) {
1104
+ const D = u[y];
1105
+ Array.isArray(D) && (u[y] = tt(D));
1142
1106
  }
1143
- return result;
1144
- }, "shallowCloneOp");
1145
- function tryTransform(op1, op2, direction) {
1146
- assert(direction === "left" || direction === "right", "Direction must be left or right");
1147
- const side = direction === "left" ? 0 : 1;
1148
- if (op2 == null) return {
1107
+ return u;
1108
+ };
1109
+ function nt(r, u, y) {
1110
+ l(y === "left" || y === "right", "Direction must be left or right");
1111
+ const D = y === "left" ? 0 : 1;
1112
+ if (u == null) return {
1149
1113
  ok: !0,
1150
- result: op1
1114
+ result: r
1151
1115
  };
1152
- checkValidOp(op1), checkValidOp(op2);
1153
- let conflict = null;
1154
- const heldOp1PickByOp1 = [], heldOp1DropByOp1 = [], heldOp2PickByOp2 = [], heldOp2DropByOp2 = [], heldOp1PickByOp2 = [], heldOp2PickByOp1 = [], heldOp2DropByOp1 = [], heldOp2RmForOp1 = [], heldOp1RmForOp2 = [], cancelledOp2 = [], discardedOp2Drop = [], heldPickWrites = [], heldDropWrites = [], op1PickAtOp2Pick = [], op1PicksOp2DropSlots = [];
1155
- let nextSlot = 0;
1156
- const r1 = cursor_js_1.readCursor(op1), r2 = cursor_js_1.readCursor(op2), w = cursor_js_1.writeCursor();
1157
- if ((/* @__PURE__ */ __name(function scanOp2Pick(r2Pick, r1Pick = null, removed1) {
1158
- const c1 = getComponent(r1Pick);
1159
- c1 && (c1.r !== void 0 ? removed1 = r1Pick.clone() : c1.p != null && (removed1 = null, heldOp2PickByOp1[c1.p] = r2Pick.clone()));
1160
- const c2 = r2Pick.getComponent();
1161
- let slot2;
1162
- c2 && (slot2 = c2.p) != null && (heldOp1PickByOp2[slot2] = r1Pick ? r1Pick.clone() : null, heldOp2PickByOp2[slot2] = r2Pick.clone(), removed1 && (cancelledOp2[slot2] = !0, heldOp1RmForOp2[slot2] = removed1), c1 && c1.p != null && (op1PickAtOp2Pick[slot2] = c1.p));
1163
- const ap1 = cursor_js_1.advancer(r1Pick);
1164
- for (const key of r2Pick) scanOp2Pick(r2Pick, ap1(key), removed1);
1165
- ap1.end();
1166
- }, "scanOp2Pick"))(r2, r1, null), (/* @__PURE__ */ __name(function scanOp2Drop(r1Pick, r2Pick, r2Drop, pickSlot1, removed1) {
1167
- const c2d = r2Drop.getComponent();
1168
- let slot2, droppedHere = !1;
1169
- c2d && ((slot2 = c2d.d) != null ? (heldOp2DropByOp2[slot2] = r2Drop.clone(), pickSlot1 != null && (op1PicksOp2DropSlots[pickSlot1] == null && (op1PicksOp2DropSlots[pickSlot1] = []), op1PicksOp2DropSlots[pickSlot1].push(slot2)), r1Pick = heldOp1PickByOp2[slot2] || null, r2Pick = heldOp2PickByOp2[slot2] || null, cancelledOp2[slot2] ? (removed1 && (discardedOp2Drop[slot2] = !0), removed1 = heldOp1RmForOp2[slot2] || null) : !removed1 || side !== 1 && op1PickAtOp2Pick[slot2] != null || conflict == null && (conflict = {
1170
- type: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
1171
- op1: exports.removeOp(removed1.getPath()),
1172
- op2: exports.moveOp(r2Pick.getPath(), r2Drop.getPath())
1173
- }), droppedHere = !0) : c2d.i !== void 0 && (r1Pick = r2Pick = null, droppedHere = !0, removed1 && conflict == null && (conflict = {
1174
- type: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
1175
- op1: exports.removeOp(removed1.getPath()),
1176
- op2: exports.insertOp(r2Drop.getPath(), c2d.i)
1116
+ z(r), z(u);
1117
+ let m = null;
1118
+ const C = [], $ = [], j = [], p = [], v = [], b = [], I = [], T = [], G = [], g = [], N = [], re = [], te = [], K = [], se = [];
1119
+ let Te = 0;
1120
+ const me = s.readCursor(r), _e = s.readCursor(u), oe = s.writeCursor();
1121
+ if (function Q(U, B = null, M) {
1122
+ const A = a(B);
1123
+ A && (A.r !== void 0 ? M = B.clone() : A.p != null && (M = null, b[A.p] = U.clone()));
1124
+ const R = U.getComponent();
1125
+ let X;
1126
+ R && (X = R.p) != null && (v[X] = B ? B.clone() : null, j[X] = U.clone(), M && (g[X] = !0, G[X] = M), A && A.p != null && (K[X] = A.p));
1127
+ const Y = s.advancer(B);
1128
+ for (const ee of U) Q(U, Y(ee), M);
1129
+ Y.end();
1130
+ }(_e, me, null), function Q(U, B, M, A, R) {
1131
+ const X = M.getComponent();
1132
+ let Y, ee = !1;
1133
+ X && ((Y = X.d) != null ? (p[Y] = M.clone(), A != null && (se[A] == null && (se[A] = []), se[A].push(Y)), U = v[Y] || null, B = j[Y] || null, g[Y] ? (R && (N[Y] = !0), R = G[Y] || null) : !R || D !== 1 && K[Y] != null || m == null && (m = {
1134
+ type: d.ConflictType.RM_UNEXPECTED_CONTENT,
1135
+ op1: n.removeOp(R.getPath()),
1136
+ op2: n.moveOp(B.getPath(), M.getPath())
1137
+ }), ee = !0) : X.i !== void 0 && (U = B = null, ee = !0, R && m == null && (m = {
1138
+ type: d.ConflictType.RM_UNEXPECTED_CONTENT,
1139
+ op1: n.removeOp(R.getPath()),
1140
+ op2: n.insertOp(M.getPath(), X.i)
1177
1141
  })));
1178
- const c1p = getComponent(r1Pick);
1179
- c1p && (c1p.r !== void 0 ? removed1 = r1Pick.clone() : c1p.p != null && (c1p.p, pickSlot1 = c1p.p, removed1 = null));
1180
- const t2 = getEditType(c2d);
1181
- t2 && removed1 && conflict == null && (conflict = {
1182
- type: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
1183
- op1: exports.removeOp(removed1.getPath()),
1184
- op2: exports.editOp(r2Drop.getPath(), t2, getEdit(c2d), !0)
1142
+ const fe = a(U);
1143
+ fe && (fe.r !== void 0 ? R = U.clone() : fe.p != null && (fe.p, A = fe.p, R = null));
1144
+ const de = ve(X);
1145
+ de && R && m == null && (m = {
1146
+ type: d.ConflictType.RM_UNEXPECTED_CONTENT,
1147
+ op1: n.removeOp(R.getPath()),
1148
+ op2: n.editOp(M.getPath(), de, f(X), !0)
1185
1149
  });
1186
- let p2PickOff = 0, p2DropOff = 0;
1187
- const ap2 = cursor_js_1.advancer(r2Pick, (k, c) => hasPick(c) ? p2PickOff - k - 1 : k - p2PickOff, (k, c) => {
1188
- hasPick(c) && p2PickOff++;
1189
- }), ap1 = cursor_js_1.advancer(r1Pick);
1190
- for (const key of r2Drop) if (typeof key == "number") {
1191
- const p2Mid = key - p2DropOff, _p2Pick = ap2(p2Mid);
1192
- p2DropOff += +scanOp2Drop(ap1(p2Mid + p2PickOff), _p2Pick, r2Drop, pickSlot1, removed1);
1150
+ let le = 0, ye = 0;
1151
+ const q = s.advancer(B, (x, he) => O(he) ? le - x - 1 : x - le, (x, he) => {
1152
+ O(he) && le++;
1153
+ }), P = s.advancer(U);
1154
+ for (const x of M) if (typeof x == "number") {
1155
+ const he = x - ye, be = q(he);
1156
+ ye += +Q(P(he + le), be, M, A, R);
1193
1157
  } else {
1194
- const _p2Pick = ap2(key);
1195
- scanOp2Drop(ap1(key), _p2Pick, r2Drop, pickSlot1, removed1);
1158
+ const he = q(x);
1159
+ Q(P(x), he, M, A, R);
1196
1160
  }
1197
- return ap2.end(), ap1.end(), droppedHere;
1198
- }, "scanOp2Drop"))(r1, r2, r2.clone(), null, null), heldOp2DropByOp2.map((x) => x && x.get()), conflict) return {
1161
+ return q.end(), P.end(), ee;
1162
+ }(me, _e, _e.clone(), null, null), p.map((Q) => Q && Q.get()), m) return {
1199
1163
  ok: !1,
1200
- conflict
1164
+ conflict: m
1201
1165
  };
1202
- discardedOp2Drop.map((x) => !!x);
1203
- const pickComponents = [];
1204
- let cancelledRemoves = null;
1205
- (/* @__PURE__ */ __name(function writeOp1Pick(r1Pick, r2Pick, r2Drop, w2, removed2) {
1206
- let iAmMoved = !1;
1207
- const c2p = getComponent(r2Pick);
1208
- if (hasPick(c2p)) {
1209
- const slot2 = c2p.p;
1210
- slot2 != null ? (r2Drop = heldOp2DropByOp2[slot2], w2 = heldPickWrites[slot2] = cursor_js_1.writeCursor(), iAmMoved = !0, removed2 = null) : (r2Drop = null, removed2 = r2Pick.clone());
1211
- } else hasDrop(getComponent(r2Drop)) && (r2Drop = null);
1212
- const c1 = r1Pick.getComponent();
1213
- if (c1) {
1214
- const slot1 = c1.p;
1215
- slot1 != null ? (removed2 && (heldOp2RmForOp1[slot1] = removed2), pickComponents[slot1] = removed2 || side === 1 && iAmMoved ? null : w2.getComponent(), heldOp1PickByOp1[slot1] = r1Pick.clone(), r2Drop && (heldOp2DropByOp1[slot1] = r2Drop.clone())) : c1.r !== void 0 && (removed2 || w2.write("r", !0), (removed2 || iAmMoved) && (cancelledRemoves == null && (cancelledRemoves = /* @__PURE__ */ new Set()), cancelledRemoves.add(c1)));
1166
+ N.map((Q) => !!Q);
1167
+ const Pe = [];
1168
+ let Me = null;
1169
+ (function Q(U, B, M, A, R) {
1170
+ let X = !1;
1171
+ const Y = a(B);
1172
+ if (O(Y)) {
1173
+ const q = Y.p;
1174
+ q != null ? (M = p[q], A = re[q] = s.writeCursor(), X = !0, R = null) : (M = null, R = B.clone());
1175
+ } else o(a(M)) && (M = null);
1176
+ const ee = U.getComponent();
1177
+ if (ee) {
1178
+ const q = ee.p;
1179
+ q != null ? (R && (T[q] = R), Pe[q] = R || D === 1 && X ? null : A.getComponent(), C[q] = U.clone(), M && (I[q] = M.clone())) : ee.r !== void 0 && (R || A.write("r", !0), (R || X) && (Me == null && (Me = /* @__PURE__ */ new Set()), Me.add(ee)));
1216
1180
  }
1217
- let p2PickOff = 0, p2DropOff = 0;
1218
- const ap2Pick = cursor_js_1.advancer(r2Pick, void 0, (k, c) => {
1219
- hasPick(c) && p2PickOff++;
1220
- }), ap2Drop = cursor_js_1.advancer(r2Drop, (k, c) => hasDrop(c) ? ~(k - p2DropOff) : k - p2DropOff, (k, c) => {
1221
- hasDrop(c) && p2DropOff++;
1181
+ let fe = 0, de = 0;
1182
+ const le = s.advancer(B, void 0, (q, P) => {
1183
+ O(P) && fe++;
1184
+ }), ye = s.advancer(M, (q, P) => o(P) ? ~(q - de) : q - de, (q, P) => {
1185
+ o(P) && de++;
1222
1186
  });
1223
- if (r1Pick) for (const key of r1Pick) if (typeof key == "string") {
1224
- const p2Pick_ = ap2Pick(key), p2Drop_ = ap2Drop(key);
1225
- w2.descend(key), writeOp1Pick(r1Pick, p2Pick_, p2Drop_, w2, removed2), w2.ascend();
1187
+ if (U) for (const q of U) if (typeof q == "string") {
1188
+ const P = le(q), x = ye(q);
1189
+ A.descend(q), Q(U, P, x, A, R), A.ascend();
1226
1190
  } else {
1227
- const p2Pick_ = ap2Pick(key), p2Mid = key - p2PickOff, p2Drop_ = hasPick(getComponent(p2Pick_)) ? null : ap2Drop(p2Mid), finalKey = p2Mid + p2DropOff;
1228
- assert(finalKey >= 0), w2.descend(finalKey), writeOp1Pick(r1Pick, p2Pick_, p2Drop_, w2, removed2), w2.ascend();
1191
+ const P = le(q), x = q - fe, he = O(a(P)) ? null : ye(x), be = x + de;
1192
+ l(be >= 0), A.descend(be), Q(U, P, he, A, R), A.ascend();
1229
1193
  }
1230
- ap2Pick.end(), ap2Drop.end();
1231
- }, "writeOp1Pick"))(r1, r2, r2.clone(), w, null), w.reset();
1232
- let outputSlotMap = [];
1233
- if ((/* @__PURE__ */ __name(function writeOp1Drop(p1Pick, p1Drop, p2Pick, p2Drop, w2, removed2) {
1234
- assert(p1Drop);
1235
- const c1d = p1Drop.getComponent();
1236
- let c2d = getComponent(p2Drop), droppedHere = !1;
1237
- const insOrMv = /* @__PURE__ */ __name((r12, r22, c) => r12 ? exports.moveOp(r12.getPath(), r22.getPath()) : exports.insertOp(r22.getPath(), c.i), "insOrMv");
1238
- if (hasDrop(c1d)) {
1239
- const slot1 = c1d.d;
1240
- slot1 != null && (heldOp1DropByOp1[slot1] = p1Drop.clone());
1241
- const pc = slot1 != null ? pickComponents[slot1] : null;
1242
- let identical = !1;
1243
- if (c1d.i !== void 0 || slot1 != null && pc) {
1244
- let slot2;
1245
- c2d && (c2d.i !== void 0 || (slot2 = c2d.d) != null && !cancelledOp2[slot2]) && (identical = slot2 != null ? slot1 != null && slot1 === op1PickAtOp2Pick[slot2] : deepEqual_js_1.default(c2d.i, c1d.i), identical || slot2 != null && side !== 1 && op1PickAtOp2Pick[slot2] != null || conflict == null && (conflict = {
1246
- type: types_js_1.ConflictType.DROP_COLLISION,
1247
- op1: insOrMv(slot1 != null ? heldOp1PickByOp1[slot1] : null, p1Drop, c1d),
1248
- op2: insOrMv(slot2 != null ? heldOp2PickByOp2[slot2] : null, p2Drop, c2d)
1249
- })), identical || (removed2 ? conflict == null && (conflict = {
1250
- type: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
1251
- op1: insOrMv(slot1 != null ? heldOp1PickByOp1[slot1] : null, p1Drop, c1d),
1252
- op2: exports.removeOp(removed2.getPath())
1253
- }) : (slot1 != null ? (outputSlotMap[nextSlot] = slot1, w2.write("d", pc.p = nextSlot++)) : w2.write("i", deepClone_js_1.default(c1d.i)), droppedHere = !0));
1254
- } else if (slot1 != null && !pc) {
1255
- const h = heldOp2RmForOp1[slot1];
1256
- h && (removed2 = h.clone());
1194
+ le.end(), ye.end();
1195
+ })(me, _e, _e.clone(), oe, null), oe.reset();
1196
+ let Le = [];
1197
+ if (function Q(U, B, M, A, R, X) {
1198
+ l(B);
1199
+ const Y = B.getComponent();
1200
+ let ee = a(A), fe = !1;
1201
+ const de = (S, ie, Oe) => S ? n.moveOp(S.getPath(), ie.getPath()) : n.insertOp(ie.getPath(), Oe.i);
1202
+ if (o(Y)) {
1203
+ const S = Y.d;
1204
+ S != null && ($[S] = B.clone());
1205
+ const ie = S != null ? Pe[S] : null;
1206
+ let Oe = !1;
1207
+ if (Y.i !== void 0 || S != null && ie) {
1208
+ let ce;
1209
+ ee && (ee.i !== void 0 || (ce = ee.d) != null && !g[ce]) && (Oe = ce != null ? S != null && S === K[ce] : t.default(ee.i, Y.i), Oe || ce != null && D !== 1 && K[ce] != null || m == null && (m = {
1210
+ type: d.ConflictType.DROP_COLLISION,
1211
+ op1: de(S != null ? C[S] : null, B, Y),
1212
+ op2: de(ce != null ? j[ce] : null, A, ee)
1213
+ })), Oe || (X ? m == null && (m = {
1214
+ type: d.ConflictType.RM_UNEXPECTED_CONTENT,
1215
+ op1: de(S != null ? C[S] : null, B, Y),
1216
+ op2: n.removeOp(X.getPath())
1217
+ }) : (S != null ? (Le[Te] = S, R.write("d", ie.p = Te++)) : R.write("i", i.default(Y.i)), fe = !0));
1218
+ } else if (S != null && !ie) {
1219
+ const ce = T[S];
1220
+ ce && (X = ce.clone());
1257
1221
  }
1258
- slot1 != null ? (p1Pick = heldOp1PickByOp1[slot1], p2Pick = heldOp2PickByOp1[slot1], p2Drop = heldOp2DropByOp1[slot1]) : c1d.i !== void 0 && (p1Pick = p2Pick = null, identical || (p2Drop = null));
1259
- } else hasPick(getComponent(p1Pick)) && (p1Pick = p2Pick = p2Drop = null);
1260
- const c1p = getComponent(p1Pick), c2p = getComponent(p2Pick);
1261
- if (hasPick(c2p)) {
1262
- const slot2 = c2p.p;
1263
- c2p.r !== void 0 && (!c1p || c1p.r === void 0) || cancelledOp2[slot2] ? (p2Drop = null, removed2 = p2Pick.clone()) : slot2 != null && (p2Drop = heldOp2DropByOp2[slot2], side !== 1 && op1PickAtOp2Pick[slot2] != null || ((w2 = heldDropWrites[slot2]) || (w2 = heldDropWrites[slot2] = cursor_js_1.writeCursor()), w2.reset(), removed2 = null));
1264
- } else !hasDrop(c1d) && hasDrop(c2d) && (p2Drop = null);
1265
- c2d = p2Drop != null ? p2Drop.getComponent() : null;
1266
- const t1 = getEditType(c1d);
1267
- if (t1) {
1268
- const e1 = getEdit(c1d);
1269
- if (removed2) conflict == null && (conflict = {
1270
- type: types_js_1.ConflictType.RM_UNEXPECTED_CONTENT,
1271
- op1: exports.editOp(p1Drop.getPath(), t1, e1, !0),
1272
- op2: exports.removeOp(removed2.getPath())
1222
+ S != null ? (U = C[S], M = b[S], A = I[S]) : Y.i !== void 0 && (U = M = null, Oe || (A = null));
1223
+ } else O(a(U)) && (U = M = A = null);
1224
+ const le = a(U), ye = a(M);
1225
+ if (O(ye)) {
1226
+ const S = ye.p;
1227
+ ye.r !== void 0 && (!le || le.r === void 0) || g[S] ? (A = null, X = M.clone()) : S != null && (A = p[S], D !== 1 && K[S] != null || ((R = te[S]) || (R = te[S] = s.writeCursor()), R.reset(), X = null));
1228
+ } else !o(Y) && o(ee) && (A = null);
1229
+ ee = A != null ? A.getComponent() : null;
1230
+ const q = ve(Y);
1231
+ if (q) {
1232
+ const S = f(Y);
1233
+ if (X) m == null && (m = {
1234
+ type: d.ConflictType.RM_UNEXPECTED_CONTENT,
1235
+ op1: n.editOp(B.getPath(), q, S, !0),
1236
+ op2: n.removeOp(X.getPath())
1273
1237
  });
1274
1238
  else {
1275
- const t2 = getEditType(c2d);
1276
- let e;
1277
- if (t2) {
1278
- if (t1 !== t2) throw Error("Transforming incompatible types");
1279
- const e2 = getEdit(c2d);
1280
- e = t1.transform(e1, e2, direction);
1281
- } else e = deepClone_js_1.default(e1);
1282
- writeEdit(w2, t1, e);
1239
+ const ie = ve(ee);
1240
+ let Oe;
1241
+ if (ie) {
1242
+ if (q !== ie) throw Error("Transforming incompatible types");
1243
+ const ce = f(ee);
1244
+ Oe = q.transform(S, ce, y);
1245
+ } else Oe = i.default(S);
1246
+ _(R, q, Oe);
1283
1247
  }
1284
1248
  }
1285
- let p1PickOff = 0, p1DropOff = 0, p2PickOff = 0, p2DropOff = 0, outPickOff = 0, outDropOff = 0, p1pValid = p1Pick != null && p1Pick.descendFirst(), p1pDidDescend = p1pValid;
1286
- const ap2p = cursor_js_1.advancer(p2Pick, void 0, (k, c) => {
1287
- hasPick(c) && p2PickOff++;
1249
+ let P = 0, x = 0, he = 0, be = 0, We = 0, He = 0, Ne = U != null && U.descendFirst(), Ye = Ne;
1250
+ const ze = s.advancer(M, void 0, (S, ie) => {
1251
+ O(ie) && he++;
1288
1252
  });
1289
- let p2dValid = p2Drop != null && p2Drop.descendFirst(), p2dDidDescend = p2dValid;
1290
- for (const key of p1Drop) if (typeof key == "number") {
1291
- let _p1Pick;
1292
- const hd1 = hasDrop(p1Drop.getComponent()), k1Mid = key - p1DropOff;
1253
+ let Se = A != null && A.descendFirst(), je = Se;
1254
+ for (const S of B) if (typeof S == "number") {
1255
+ let ie;
1256
+ const Oe = o(B.getComponent()), ce = S - x;
1293
1257
  {
1294
- let p1k;
1295
- for (; p1pValid && typeof (p1k = p1Pick.getKey()) == "number"; ) {
1296
- p1k += p1PickOff;
1297
- const c = p1Pick.getComponent(), hp = hasPick(c);
1298
- if (p1k > k1Mid || p1k === k1Mid && (!hp || side === 0 && hd1)) break;
1299
- if (hp) {
1300
- p1PickOff--;
1301
- const slot1 = c.p;
1302
- op1PickAtOp2Pick.includes(slot1), c.d, getComponent(heldDropWrites[c.d]), hasPick(getComponent(heldDropWrites[c.d])), (c.r === void 0 || cancelledRemoves && cancelledRemoves.has(c)) && (slot1 == null || !pickComponents[slot1] || side !== 1 && op1PickAtOp2Pick.includes(slot1)) || outPickOff--;
1258
+ let Be;
1259
+ for (; Ne && typeof (Be = U.getKey()) == "number"; ) {
1260
+ Be += P;
1261
+ const ke = U.getComponent(), Xe = O(ke);
1262
+ if (Be > ce || Be === ce && (!Xe || D === 0 && Oe)) break;
1263
+ if (Xe) {
1264
+ P--;
1265
+ const Ke = ke.p;
1266
+ K.includes(Ke), ke.d, a(te[ke.d]), O(a(te[ke.d])), (ke.r === void 0 || Me && Me.has(ke)) && (Ke == null || !Pe[Ke] || D !== 1 && K.includes(Ke)) || We--;
1303
1267
  }
1304
- p1pValid = p1Pick.nextSibling();
1268
+ Ne = U.nextSibling();
1305
1269
  }
1306
- _p1Pick = p1pValid && p1k === k1Mid ? p1Pick : null;
1270
+ ie = Ne && Be === ce ? U : null;
1307
1271
  }
1308
- const raw = k1Mid - p1PickOff;
1309
- let _p2Pick = ap2p(raw);
1310
- const k2Mid = raw - p2PickOff;
1311
- let _p2Drop = null;
1272
+ const Re = ce - P;
1273
+ let Ge = ze(Re);
1274
+ const rt = Re - he;
1275
+ let Je = null;
1312
1276
  {
1313
- let p2dk, op2Mid;
1314
- for (; p2dValid && typeof (p2dk = p2Drop.getKey()) == "number"; ) {
1315
- op2Mid = p2dk - p2DropOff;
1316
- const c = p2Drop.getComponent(), hd2 = hasDrop(c);
1317
- if (op2Mid > k2Mid) break;
1318
- if (op2Mid === k2Mid) {
1319
- if (!hd2) {
1320
- _p2Drop = p2Drop;
1277
+ let Be, ke;
1278
+ for (; Se && typeof (Be = A.getKey()) == "number"; ) {
1279
+ ke = Be - be;
1280
+ const Xe = A.getComponent(), Ke = o(Xe);
1281
+ if (ke > rt) break;
1282
+ if (ke === rt) {
1283
+ if (!Ke) {
1284
+ Je = A;
1321
1285
  break;
1322
1286
  }
1323
1287
  {
1324
- if (side === 0 && hd1) {
1325
- _p2Drop = p2Drop;
1288
+ if (D === 0 && Oe) {
1289
+ Je = A;
1326
1290
  break;
1327
1291
  }
1328
- const hp2 = _p2Pick && hasPick(_p2Pick.getComponent());
1329
- if (side === 0 && hp2) break;
1292
+ const Ve = Ge && O(Ge.getComponent());
1293
+ if (D === 0 && Ve) break;
1330
1294
  }
1331
1295
  }
1332
- if (hd2) {
1333
- const slot2 = c.d;
1334
- op1PickAtOp2Pick[slot2], c.i === void 0 && (cancelledOp2[slot2] || op1PickAtOp2Pick[slot2] != null && side !== 1) ? (cancelledOp2[slot2] || op1PickAtOp2Pick[slot2] != null && side === 0) && (p2DropOff++, outDropOff--) : p2DropOff++;
1296
+ if (Ke) {
1297
+ const Ve = Xe.d;
1298
+ K[Ve], Xe.i === void 0 && (g[Ve] || K[Ve] != null && D !== 1) ? (g[Ve] || K[Ve] != null && D === 0) && (be++, He--) : be++;
1335
1299
  }
1336
- p2dValid = p2Drop.nextSibling();
1300
+ Se = A.nextSibling();
1337
1301
  }
1338
1302
  }
1339
- const descend = k2Mid + p2DropOff + outPickOff + outDropOff;
1340
- assert(descend >= 0, "trying to descend to a negative index"), w2.descend(descend), hd1 && (_p1Pick = _p2Pick = _p2Drop = null, p1DropOff++), writeOp1Drop(_p1Pick, p1Drop, _p2Pick, _p2Drop, w2, removed2) && outDropOff++, w2.ascend();
1303
+ const Ot = rt + be + We + He;
1304
+ l(Ot >= 0, "trying to descend to a negative index"), R.descend(Ot), Oe && (ie = Ge = Je = null, x++), Q(ie, B, Ge, Je, R, X) && He++, R.ascend();
1341
1305
  } else {
1342
- let p1k;
1343
- for (; p1pValid && (p1k = p1Pick.getKey(), typeof p1k != "string" || !(p1k > key || p1k === key)); ) p1pValid = p1Pick.nextSibling();
1344
- const _p1Pick = p1pValid && p1k === key ? p1Pick : null, _p2Pick = ap2p(key);
1345
- let p2dk;
1346
- for (; p2dValid && (p2dk = p2Drop.getKey(), typeof p2dk != "string" || !(p2dk > key || p2dk === key)); ) p2dValid = p2Drop.nextSibling();
1347
- const _p2Drop = p2dValid && p2dk === key ? p2Drop : null;
1348
- w2.descend(key), writeOp1Drop(_p1Pick, p1Drop, _p2Pick, _p2Drop, w2, removed2), w2.ascend();
1306
+ let ie;
1307
+ for (; Ne && (ie = U.getKey(), typeof ie != "string" || !(ie > S || ie === S)); ) Ne = U.nextSibling();
1308
+ const Oe = Ne && ie === S ? U : null, ce = ze(S);
1309
+ let Re;
1310
+ for (; Se && (Re = A.getKey(), typeof Re != "string" || !(Re > S || Re === S)); ) Se = A.nextSibling();
1311
+ const Ge = Se && Re === S ? A : null;
1312
+ R.descend(S), Q(Oe, B, ce, Ge, R, X), R.ascend();
1349
1313
  }
1350
- return ap2p.end(), p1pDidDescend && p1Pick.ascend(), p2dDidDescend && p2Drop.ascend(), droppedHere;
1351
- }, "writeOp1Drop"))(r1, r1.clone(), r2, r2.clone(), w, null), conflict) return {
1314
+ return ze.end(), Ye && U.ascend(), je && A.ascend(), fe;
1315
+ }(me, me.clone(), _e, _e.clone(), oe, null), m) return {
1352
1316
  ok: !1,
1353
- conflict
1317
+ conflict: m
1354
1318
  };
1355
- w.reset();
1356
- const eachDrop = /* @__PURE__ */ __name((r, w2, fn) => r.traverse(w2, (c, w3) => {
1357
- c.d != null && fn(c.d, r, w3);
1358
- }), "eachDrop");
1359
- (cancelledOp2.length || heldPickWrites.length) && (eachDrop(r2, w, (slot2, r, w2) => {
1360
- cancelledOp2[slot2] && !discardedOp2Drop[slot2] && w2.write("r", !0), heldPickWrites[slot2] && w2.mergeTree(heldPickWrites[slot2].get());
1361
- }), w.reset());
1362
- const heldOutDropRead = [], heldOutDropWrites = [];
1363
- if ((heldDropWrites.length || cancelledOp2.length) && !conflict) {
1364
- const rOut = cursor_js_1.readCursor(shallowCloneOp(w.get()));
1365
- if (eachDrop(rOut, null, (slotOut, r) => {
1366
- heldOutDropRead[slotOut] = r.clone();
1367
- }), heldDropWrites.forEach((hdw) => {
1368
- hdw && eachDrop(cursor_js_1.readCursor(hdw.get()), null, (slotOut, r) => {
1369
- heldOutDropRead[slotOut] = r.clone();
1319
+ oe.reset();
1320
+ const Ue = (Q, U, B) => Q.traverse(U, (M, A) => {
1321
+ M.d != null && B(M.d, Q, A);
1322
+ });
1323
+ (g.length || re.length) && (Ue(_e, oe, (Q, U, B) => {
1324
+ g[Q] && !N[Q] && B.write("r", !0), re[Q] && B.mergeTree(re[Q].get());
1325
+ }), oe.reset());
1326
+ const Ee = [], $e = [];
1327
+ if ((te.length || g.length) && !m) {
1328
+ const Q = s.readCursor(tt(oe.get()));
1329
+ if (Ue(Q, null, (U, B) => {
1330
+ Ee[U] = B.clone();
1331
+ }), te.forEach((U) => {
1332
+ U && Ue(s.readCursor(U.get()), null, (B, M) => {
1333
+ Ee[B] = M.clone();
1370
1334
  });
1371
- }), (/* @__PURE__ */ __name(function writeHeldOp2Drop(p2Drop, outPick, outDrop, w2, parentC, removedOut) {
1372
- const coutp = getComponent(outPick);
1373
- if (coutp && hasPick(coutp)) if (coutp.p != null) {
1374
- const slot = coutp.p;
1375
- heldOutDropRead[slot].getPath(), outDrop = heldOutDropRead[slot], w2 = heldOutDropWrites[slot] = cursor_js_1.writeCursor();
1376
- } else coutp.r !== void 0 && (outDrop = null);
1377
- else hasDrop(getComponent(outDrop)) && (outDrop = null);
1378
- const c2 = p2Drop.getComponent();
1379
- if (c2) {
1380
- let slot2;
1381
- if ((slot2 = c2.d) != null) {
1382
- const _w = heldDropWrites[slot2];
1383
- _w && (_w.get(), w2.mergeTree(_w.get()), outDrop = cursor_js_1.readCursor(_w.get()));
1335
+ }), function U(B, M, A, R, X, Y) {
1336
+ const ee = a(M);
1337
+ if (ee && O(ee)) if (ee.p != null) {
1338
+ const P = ee.p;
1339
+ Ee[P].getPath(), A = Ee[P], R = $e[P] = s.writeCursor();
1340
+ } else ee.r !== void 0 && (A = null);
1341
+ else o(a(A)) && (A = null);
1342
+ const fe = B.getComponent();
1343
+ if (fe) {
1344
+ let P;
1345
+ if ((P = fe.d) != null) {
1346
+ const x = te[P];
1347
+ x && (x.get(), R.mergeTree(x.get()), A = s.readCursor(x.get()));
1384
1348
  }
1385
1349
  }
1386
- let outPickOff = 0, outDropOff = 0;
1387
- const oPickAdv = cursor_js_1.advancer(outPick, void 0, (k, c) => {
1388
- hasPick(c) && outPickOff--;
1389
- }), oDropAdv = cursor_js_1.advancer(outDrop, (k, c) => hasDrop(c) ? -(k - outDropOff) - 1 : k - outDropOff, (k, c) => {
1390
- hasDrop(c) && outDropOff++;
1350
+ let de = 0, le = 0;
1351
+ const ye = s.advancer(M, void 0, (P, x) => {
1352
+ O(x) && de--;
1353
+ }), q = s.advancer(A, (P, x) => o(x) ? -(P - le) - 1 : P - le, (P, x) => {
1354
+ o(x) && le++;
1391
1355
  });
1392
- for (const o2dk of p2Drop) if (typeof o2dk == "number") {
1393
- const _outPick = oPickAdv(o2dk), rmid = o2dk + outPickOff, _outDrop = oDropAdv(rmid), rfinal = rmid + outDropOff;
1394
- w2.descend(rfinal), writeHeldOp2Drop(p2Drop, _outPick, _outDrop, w2), w2.ascend();
1395
- } else w2.descend(o2dk), writeHeldOp2Drop(p2Drop, oPickAdv(o2dk), oDropAdv(o2dk), w2), w2.ascend();
1396
- oPickAdv.end(), oDropAdv.end();
1397
- }, "writeHeldOp2Drop"))(r2, rOut, rOut.clone(), w), w.reset(), conflict) return {
1356
+ for (const P of B) if (typeof P == "number") {
1357
+ const x = ye(P), he = P + de, be = q(he), We = he + le;
1358
+ R.descend(We), U(B, x, be, R), R.ascend();
1359
+ } else R.descend(P), U(B, ye(P), q(P), R), R.ascend();
1360
+ ye.end(), q.end();
1361
+ }(_e, Q, Q.clone(), oe), oe.reset(), m) return {
1398
1362
  ok: !1,
1399
- conflict
1363
+ conflict: m
1400
1364
  };
1401
- if (w.get(), heldOutDropWrites.length) {
1402
- const heldOutDropContent = heldOutDropWrites.map((w2) => w2 ? w2.get() : null), rOut2 = cursor_js_1.readCursor(shallowCloneOp(w.get()));
1403
- if (eachDrop(rOut2, w, (slotOut, r, w2) => {
1404
- const data = heldOutDropContent[slotOut];
1405
- data && (w2.mergeTree(data), heldOutDropContent[slotOut] = null);
1406
- }), heldOutDropContent.find((x) => x)) {
1407
- const w1 = cursor_js_1.writeCursor(), w2 = cursor_js_1.writeCursor();
1408
- let nextSlot1 = 0, nextSlot2 = 0;
1409
- heldOutDropContent.forEach((data) => {
1410
- data != null && eachDrop(cursor_js_1.readCursor(data), null, (c) => {
1411
- const slot1 = outputSlotMap[c];
1412
- w1.writeMove(heldOp1PickByOp1[slot1].getPath(), heldOp1DropByOp1[slot1].getPath(), nextSlot1++);
1413
- const slot2s = op1PicksOp2DropSlots[slot1];
1414
- slot2s && slot2s.forEach((slot2) => {
1415
- cancelledOp2[slot2] || side !== 1 && op1PickAtOp2Pick[slot2] != null || w2.writeMove(heldOp2PickByOp2[slot2].getPath(), heldOp2DropByOp2[slot2].getPath(), nextSlot2++);
1365
+ if (oe.get(), $e.length) {
1366
+ const U = $e.map((M) => M ? M.get() : null), B = s.readCursor(tt(oe.get()));
1367
+ if (Ue(B, oe, (M, A, R) => {
1368
+ const X = U[M];
1369
+ X && (R.mergeTree(X), U[M] = null);
1370
+ }), U.find((M) => M)) {
1371
+ const M = s.writeCursor(), A = s.writeCursor();
1372
+ let R = 0, X = 0;
1373
+ U.forEach((Y) => {
1374
+ Y != null && Ue(s.readCursor(Y), null, (ee) => {
1375
+ const fe = Le[ee];
1376
+ M.writeMove(C[fe].getPath(), $[fe].getPath(), R++);
1377
+ const de = se[fe];
1378
+ de && de.forEach((le) => {
1379
+ g[le] || D !== 1 && K[le] != null || A.writeMove(j[le].getPath(), p[le].getPath(), X++);
1416
1380
  });
1417
1381
  });
1418
- }), conflict = {
1419
- type: types_js_1.ConflictType.BLACKHOLE,
1420
- op1: w1.get(),
1421
- op2: w2.get()
1382
+ }), m = {
1383
+ type: d.ConflictType.BLACKHOLE,
1384
+ op1: M.get(),
1385
+ op2: A.get()
1422
1386
  };
1423
1387
  }
1424
1388
  }
1425
1389
  }
1426
- return conflict ? {
1390
+ return m ? {
1427
1391
  ok: !1,
1428
- conflict
1392
+ conflict: m
1429
1393
  } : {
1430
1394
  ok: !0,
1431
- result: w.get()
1395
+ result: oe.get()
1432
1396
  };
1433
1397
  }
1434
- __name(tryTransform, "tryTransform");
1435
- const throwConflictErr = /* @__PURE__ */ __name((conflict) => {
1436
- const err = new Error("Transform detected write conflict");
1437
- throw err.conflict = conflict, err.type = err.name = "writeConflict", err;
1438
- }, "throwConflictErr");
1439
- function transform(op1, op2, side) {
1440
- const res = tryTransform(op1, op2, side);
1441
- if (res.ok) return res.result;
1442
- throwConflictErr(res.conflict);
1443
- }
1444
- __name(transform, "transform");
1445
- const opThatRemovesDE = /* @__PURE__ */ __name((op) => {
1446
- const w = cursor_js_1.writeCursor();
1447
- return cursor_js_1.readCursor(op).traverse(w, (c, w2) => {
1448
- (hasDrop(c) || getEditType(c)) && w2.write("r", !0);
1449
- }), w.get();
1450
- }, "opThatRemovesDE"), resolveConflict = /* @__PURE__ */ __name((conflict, side) => {
1451
- const { type: type2, op1, op2 } = conflict;
1452
- switch (type2) {
1453
- case types_js_1.ConflictType.DROP_COLLISION:
1454
- return side === "left" ? [null, opThatRemovesDE(op2)] : [opThatRemovesDE(op1), null];
1455
- case types_js_1.ConflictType.RM_UNEXPECTED_CONTENT:
1456
- let op1HasRemove = !1;
1457
- return cursor_js_1.readCursor(op1).traverse(null, (c) => {
1458
- c.r !== void 0 && (op1HasRemove = !0);
1459
- }), op1HasRemove ? [null, opThatRemovesDE(op2)] : [opThatRemovesDE(op1), null];
1460
- case types_js_1.ConflictType.BLACKHOLE:
1461
- return [opThatRemovesDE(op1), opThatRemovesDE(op2)];
1398
+ const gt = (r) => {
1399
+ const u = new Error("Transform detected write conflict");
1400
+ throw u.conflict = r, u.type = u.name = "writeConflict", u;
1401
+ };
1402
+ function At(r, u, y) {
1403
+ const D = nt(r, u, y);
1404
+ if (D.ok) return D.result;
1405
+ gt(D.conflict);
1406
+ }
1407
+ const qe = (r) => {
1408
+ const u = s.writeCursor();
1409
+ return s.readCursor(r).traverse(u, (y, D) => {
1410
+ (o(y) || ve(y)) && D.write("r", !0);
1411
+ }), u.get();
1412
+ }, Pt = (r, u) => {
1413
+ const { type: y, op1: D, op2: m } = r;
1414
+ switch (y) {
1415
+ case d.ConflictType.DROP_COLLISION:
1416
+ return u === "left" ? [null, qe(m)] : [qe(D), null];
1417
+ case d.ConflictType.RM_UNEXPECTED_CONTENT:
1418
+ let C = !1;
1419
+ return s.readCursor(D).traverse(null, ($) => {
1420
+ $.r !== void 0 && (C = !0);
1421
+ }), C ? [null, qe(m)] : [qe(D), null];
1422
+ case d.ConflictType.BLACKHOLE:
1423
+ return [qe(D), qe(m)];
1462
1424
  default:
1463
- throw Error("Unrecognised conflict: " + type2);
1425
+ throw Error("Unrecognised conflict: " + y);
1464
1426
  }
1465
- }, "resolveConflict");
1466
- function transformWithConflictsPred(allowConflict, op1, op2, side) {
1467
- let r2Aggregate = null;
1427
+ };
1428
+ function _t(r, u, y, D) {
1429
+ let m = null;
1468
1430
  for (; ; ) {
1469
- const res = tryTransform(op1, op2, side);
1470
- if (res.ok) return compose(r2Aggregate, res.result);
1431
+ const C = nt(u, y, D);
1432
+ if (C.ok) return ne(m, C.result);
1471
1433
  {
1472
- const { conflict } = res;
1473
- allowConflict(conflict) || throwConflictErr(conflict);
1474
- const [r1, r2] = resolveConflict(conflict, side);
1475
- op1 = compose(normalize(op1), r1), op2 = compose(normalize(op2), r2), r2Aggregate = compose(r2Aggregate, r2);
1434
+ const { conflict: $ } = C;
1435
+ r($) || gt($);
1436
+ const [j, p] = Pt($, D);
1437
+ u = ne(H(u), j), y = ne(H(y), p), m = ne(m, p);
1476
1438
  }
1477
1439
  }
1478
1440
  }
1479
- __name(transformWithConflictsPred, "transformWithConflictsPred");
1480
- })(json1_release);
1481
- (function(exports) {
1482
- var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o, m, k, k2) {
1483
- k2 === void 0 && (k2 = k), Object.defineProperty(o, k2, { enumerable: !0, get: /* @__PURE__ */ __name(function() {
1484
- return m[k];
1485
- }, "get") });
1486
- } : function(o, m, k, k2) {
1487
- k2 === void 0 && (k2 = k), o[k2] = m[k];
1488
- }), __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function(m, exports2) {
1489
- for (var p in m) p !== "default" && !exports2.hasOwnProperty(p) && __createBinding(exports2, m, p);
1441
+ })(Et);
1442
+ (function(n) {
1443
+ var e = Ce && Ce.__createBinding || (Object.create ? function(d, l, a, E) {
1444
+ E === void 0 && (E = a), Object.defineProperty(d, E, { enumerable: !0, get: function() {
1445
+ return l[a];
1446
+ } });
1447
+ } : function(d, l, a, E) {
1448
+ E === void 0 && (E = a), d[E] = l[a];
1449
+ }), t = Ce && Ce.__exportStar || function(d, l) {
1450
+ for (var a in d) a !== "default" && !l.hasOwnProperty(a) && e(l, d, a);
1490
1451
  };
1491
- Object.defineProperty(exports, "__esModule", { value: !0 }), __exportStar(json1_release, exports);
1492
- var cursor_js_1 = cursor;
1493
- Object.defineProperty(exports, "ReadCursor", { enumerable: !0, get: /* @__PURE__ */ __name(function() {
1494
- return cursor_js_1.ReadCursor;
1495
- }, "get") }), Object.defineProperty(exports, "WriteCursor", { enumerable: !0, get: /* @__PURE__ */ __name(function() {
1496
- return cursor_js_1.WriteCursor;
1497
- }, "get") });
1498
- var types_1 = types;
1499
- Object.defineProperty(exports, "ConflictType", { enumerable: !0, get: /* @__PURE__ */ __name(function() {
1500
- return types_1.ConflictType;
1501
- }, "get") });
1502
- })(dist$1);
1503
- const _UnitDrawingService = class _UnitDrawingService {
1452
+ Object.defineProperty(n, "__esModule", { value: !0 }), t(Et, n);
1453
+ var i = ft;
1454
+ Object.defineProperty(n, "ReadCursor", { enumerable: !0, get: function() {
1455
+ return i.ReadCursor;
1456
+ } }), Object.defineProperty(n, "WriteCursor", { enumerable: !0, get: function() {
1457
+ return i.WriteCursor;
1458
+ } });
1459
+ var s = ht;
1460
+ Object.defineProperty(n, "ConflictType", { enumerable: !0, get: function() {
1461
+ return s.ConflictType;
1462
+ } });
1463
+ })(F);
1464
+ class Vt {
1504
1465
  constructor() {
1505
- __publicField(this, "drawingManagerData", {});
1506
- __publicField(this, "_oldDrawingManagerData", {});
1507
- __publicField(this, "_focusDrawings", []);
1508
- __publicField(this, "_remove$", new Subject());
1509
- __publicField(this, "remove$", this._remove$.asObservable());
1510
- __publicField(this, "_add$", new Subject());
1511
- __publicField(this, "add$", this._add$.asObservable());
1512
- __publicField(this, "_update$", new Subject());
1513
- __publicField(this, "update$", this._update$.asObservable());
1514
- __publicField(this, "_order$", new Subject());
1515
- __publicField(this, "order$", this._order$.asObservable());
1516
- __publicField(this, "_group$", new Subject());
1517
- __publicField(this, "group$", this._group$.asObservable());
1518
- __publicField(this, "_ungroup$", new Subject());
1519
- __publicField(this, "ungroup$", this._ungroup$.asObservable());
1520
- __publicField(this, "_refreshTransform$", new Subject());
1521
- __publicField(this, "refreshTransform$", this._refreshTransform$.asObservable());
1522
- __publicField(this, "_visible$", new Subject());
1523
- __publicField(this, "visible$", this._visible$.asObservable());
1466
+ V(this, "drawingManagerData", {});
1467
+ V(this, "_oldDrawingManagerData", {});
1468
+ V(this, "_focusDrawings", []);
1469
+ V(this, "_remove$", new we());
1470
+ V(this, "remove$", this._remove$.asObservable());
1471
+ V(this, "_add$", new we());
1472
+ V(this, "add$", this._add$.asObservable());
1473
+ V(this, "_update$", new we());
1474
+ V(this, "update$", this._update$.asObservable());
1475
+ V(this, "_order$", new we());
1476
+ V(this, "order$", this._order$.asObservable());
1477
+ V(this, "_group$", new we());
1478
+ V(this, "group$", this._group$.asObservable());
1479
+ V(this, "_ungroup$", new we());
1480
+ V(this, "ungroup$", this._ungroup$.asObservable());
1481
+ V(this, "_refreshTransform$", new we());
1482
+ V(this, "refreshTransform$", this._refreshTransform$.asObservable());
1483
+ V(this, "_visible$", new we());
1484
+ V(this, "visible$", this._visible$.asObservable());
1524
1485
  // private readonly _externalUpdate$ = new Subject<T[]>();
1525
1486
  // readonly externalUpdate$ = this._externalUpdate$.asObservable();
1526
- __publicField(this, "_focus$", new Subject());
1527
- __publicField(this, "focus$", this._focus$.asObservable());
1528
- __publicField(this, "_featurePluginUpdate$", new Subject());
1529
- __publicField(this, "featurePluginUpdate$", this._featurePluginUpdate$.asObservable());
1530
- __publicField(this, "_featurePluginAdd$", new Subject());
1531
- __publicField(this, "featurePluginAdd$", this._featurePluginAdd$.asObservable());
1532
- __publicField(this, "_featurePluginRemove$", new Subject());
1533
- __publicField(this, "featurePluginRemove$", this._featurePluginRemove$.asObservable());
1534
- __publicField(this, "_featurePluginOrderUpdate$", new Subject());
1535
- __publicField(this, "featurePluginOrderUpdate$", this._featurePluginOrderUpdate$.asObservable());
1536
- __publicField(this, "_featurePluginGroupUpdate$", new Subject());
1537
- __publicField(this, "featurePluginGroupUpdate$", this._featurePluginGroupUpdate$.asObservable());
1538
- __publicField(this, "_featurePluginUngroupUpdate$", new Subject());
1539
- __publicField(this, "featurePluginUngroupUpdate$", this._featurePluginUngroupUpdate$.asObservable());
1540
- __publicField(this, "_visible", !0);
1541
- __publicField(this, "_editable", !0);
1487
+ V(this, "_focus$", new we());
1488
+ V(this, "focus$", this._focus$.asObservable());
1489
+ V(this, "_featurePluginUpdate$", new we());
1490
+ V(this, "featurePluginUpdate$", this._featurePluginUpdate$.asObservable());
1491
+ V(this, "_featurePluginAdd$", new we());
1492
+ V(this, "featurePluginAdd$", this._featurePluginAdd$.asObservable());
1493
+ V(this, "_featurePluginRemove$", new we());
1494
+ V(this, "featurePluginRemove$", this._featurePluginRemove$.asObservable());
1495
+ V(this, "_featurePluginOrderUpdate$", new we());
1496
+ V(this, "featurePluginOrderUpdate$", this._featurePluginOrderUpdate$.asObservable());
1497
+ V(this, "_featurePluginGroupUpdate$", new we());
1498
+ V(this, "featurePluginGroupUpdate$", this._featurePluginGroupUpdate$.asObservable());
1499
+ V(this, "_featurePluginUngroupUpdate$", new we());
1500
+ V(this, "featurePluginUngroupUpdate$", this._featurePluginUngroupUpdate$.asObservable());
1501
+ V(this, "_visible", !0);
1502
+ V(this, "_editable", !0);
1542
1503
  }
1543
1504
  dispose() {
1544
1505
  this._remove$.complete(), this._add$.complete(), this._update$.complete(), this._order$.complete(), this._focus$.complete(), this._featurePluginUpdate$.complete(), this._featurePluginAdd$.complete(), this._featurePluginRemove$.complete(), this._featurePluginOrderUpdate$.complete(), this.drawingManagerData = {}, this._oldDrawingManagerData = {};
1545
1506
  }
1546
- visibleNotification(visibleParams) {
1547
- this._visible$.next(visibleParams);
1507
+ visibleNotification(e) {
1508
+ this._visible$.next(e);
1548
1509
  }
1549
- refreshTransform(updateParams) {
1550
- updateParams.forEach((updateParam) => {
1551
- const param = this._getCurrentBySearch(updateParam);
1552
- param != null && (param.transform = updateParam.transform, param.transforms = updateParam.transforms, param.isMultiTransform = updateParam.isMultiTransform);
1553
- }), this.refreshTransformNotification(updateParams);
1510
+ refreshTransform(e) {
1511
+ e.forEach((t) => {
1512
+ const i = this._getCurrentBySearch(t);
1513
+ i != null && (i.transform = t.transform, i.transforms = t.transforms, i.isMultiTransform = t.isMultiTransform);
1514
+ }), this.refreshTransformNotification(e);
1554
1515
  }
1555
- getDrawingDataForUnit(unitId) {
1556
- return this.drawingManagerData[unitId] || {};
1516
+ getDrawingDataForUnit(e) {
1517
+ return this.drawingManagerData[e] || {};
1557
1518
  }
1558
- removeDrawingDataForUnit(unitId) {
1559
- const subUnits = this.drawingManagerData[unitId];
1560
- if (subUnits == null)
1519
+ removeDrawingDataForUnit(e) {
1520
+ const t = this.drawingManagerData[e];
1521
+ if (t == null)
1561
1522
  return;
1562
- delete this.drawingManagerData[unitId];
1563
- const drawings = [];
1564
- Object.keys(subUnits).forEach((subUnitId) => {
1565
- const subUnit = subUnits[subUnitId];
1566
- (subUnit == null ? void 0 : subUnit.data) != null && Object.keys(subUnit.data).forEach((drawingId) => {
1567
- drawings.push({ unitId, subUnitId, drawingId });
1523
+ delete this.drawingManagerData[e];
1524
+ const i = [];
1525
+ Object.keys(t).forEach((s) => {
1526
+ const d = t[s];
1527
+ (d == null ? void 0 : d.data) != null && Object.keys(d.data).forEach((l) => {
1528
+ i.push({ unitId: e, subUnitId: s, drawingId: l });
1568
1529
  });
1569
- }), drawings.length > 0 && this.removeNotification(drawings);
1570
- }
1571
- registerDrawingData(unitId, data) {
1572
- this.drawingManagerData[unitId] = data;
1573
- }
1574
- initializeNotification(unitId) {
1575
- const drawings = [], data = this.drawingManagerData[unitId];
1576
- data != null && (Object.keys(data).forEach((subUnitId) => {
1577
- this._establishDrawingMap(unitId, subUnitId);
1578
- const subUnitData = data[subUnitId];
1579
- Object.keys(subUnitData.data).forEach((drawingId) => {
1580
- const drawing = subUnitData.data[drawingId];
1581
- drawing.unitId = unitId, drawing.subUnitId = subUnitId, drawings.push(drawing);
1530
+ }), i.length > 0 && this.removeNotification(i);
1531
+ }
1532
+ registerDrawingData(e, t) {
1533
+ this.drawingManagerData[e] = t;
1534
+ }
1535
+ initializeNotification(e) {
1536
+ const t = [], i = this.drawingManagerData[e];
1537
+ i != null && (Object.keys(i).forEach((s) => {
1538
+ this._establishDrawingMap(e, s);
1539
+ const d = i[s];
1540
+ Object.keys(d.data).forEach((l) => {
1541
+ const a = d.data[l];
1542
+ a.unitId = e, a.subUnitId = s, t.push(a);
1582
1543
  });
1583
- }), drawings.length > 0 && this.addNotification(drawings));
1544
+ }), t.length > 0 && this.addNotification(t));
1584
1545
  }
1585
- getDrawingData(unitId, subUnitId) {
1586
- return this._getDrawingData(unitId, subUnitId);
1546
+ getDrawingData(e, t) {
1547
+ return this._getDrawingData(e, t);
1587
1548
  }
1588
1549
  // Use in doc only.
1589
- setDrawingData(unitId, subUnitId, data) {
1590
- this.drawingManagerData[unitId][subUnitId].data = data;
1591
- }
1592
- getBatchAddOp(insertParams) {
1593
- const objects = [], ops = [], invertOps = [];
1594
- insertParams.forEach((insertParam) => {
1595
- const { op: op2, invertOp: invertOp2 } = this._addByParam(insertParam);
1596
- objects.push({ unitId: insertParam.unitId, subUnitId: insertParam.subUnitId, drawingId: insertParam.drawingId }), ops.push(op2), invertOps.push(invertOp2);
1550
+ setDrawingData(e, t, i) {
1551
+ this.drawingManagerData[e][t].data = i;
1552
+ }
1553
+ getBatchAddOp(e) {
1554
+ const t = [], i = [], s = [];
1555
+ e.forEach((W) => {
1556
+ const { op: O, invertOp: o } = this._addByParam(W);
1557
+ t.push({ unitId: W.unitId, subUnitId: W.subUnitId, drawingId: W.drawingId }), i.push(O), s.push(o);
1597
1558
  });
1598
- const op = ops.reduce(dist$1.type.compose, null), invertOp = invertOps.reduce(dist$1.type.compose, null), { unitId, subUnitId } = insertParams[0];
1599
- return { undo: invertOp, redo: op, unitId, subUnitId, objects };
1600
- }
1601
- getBatchRemoveOp(removeParams) {
1602
- const ops = [], invertOps = [];
1603
- removeParams.forEach((removeParam) => {
1604
- const { op: op2, invertOp: invertOp2 } = this._removeByParam(removeParam);
1605
- ops.unshift(op2), invertOps.push(invertOp2);
1559
+ const d = i.reduce(F.type.compose, null), l = s.reduce(F.type.compose, null), { unitId: a, subUnitId: E } = e[0];
1560
+ return { undo: l, redo: d, unitId: a, subUnitId: E, objects: t };
1561
+ }
1562
+ getBatchRemoveOp(e) {
1563
+ const t = [], i = [];
1564
+ e.forEach((E) => {
1565
+ const { op: W, invertOp: O } = this._removeByParam(E);
1566
+ t.unshift(W), i.push(O);
1606
1567
  });
1607
- const op = ops.reduce(dist$1.type.compose, null), invertOp = invertOps.reduce(dist$1.type.compose, null), { unitId, subUnitId } = removeParams[0];
1608
- return { undo: invertOp, redo: op, unitId, subUnitId, objects: removeParams };
1609
- }
1610
- getBatchUpdateOp(updateParams) {
1611
- const objects = [], ops = [], invertOps = [];
1612
- updateParams.forEach((updateParam) => {
1613
- const { op: op2, invertOp: invertOp2 } = this._updateByParam(updateParam);
1614
- objects.push({ unitId: updateParam.unitId, subUnitId: updateParam.subUnitId, drawingId: updateParam.drawingId }), ops.push(op2), invertOps.push(invertOp2);
1568
+ const s = t.reduce(F.type.compose, null), d = i.reduce(F.type.compose, null), { unitId: l, subUnitId: a } = e[0];
1569
+ return { undo: d, redo: s, unitId: l, subUnitId: a, objects: e };
1570
+ }
1571
+ getBatchUpdateOp(e) {
1572
+ const t = [], i = [], s = [];
1573
+ e.forEach((W) => {
1574
+ const { op: O, invertOp: o } = this._updateByParam(W);
1575
+ t.push({ unitId: W.unitId, subUnitId: W.subUnitId, drawingId: W.drawingId }), i.push(O), s.push(o);
1615
1576
  });
1616
- const op = ops.reduce(dist$1.type.compose, null), invertOp = invertOps.reduce(dist$1.type.compose, null), { unitId, subUnitId } = updateParams[0];
1617
- return { undo: invertOp, redo: op, unitId, subUnitId, objects };
1577
+ const d = i.reduce(F.type.compose, null), l = s.reduce(F.type.compose, null), { unitId: a, subUnitId: E } = e[0];
1578
+ return { undo: l, redo: d, unitId: a, subUnitId: E, objects: t };
1618
1579
  }
1619
- removeNotification(removeParams) {
1620
- this._remove$.next(removeParams);
1580
+ removeNotification(e) {
1581
+ this._remove$.next(e);
1621
1582
  }
1622
- addNotification(insertParams) {
1623
- this._add$.next(insertParams);
1583
+ addNotification(e) {
1584
+ this._add$.next(e);
1624
1585
  }
1625
- updateNotification(updateParams) {
1626
- this._update$.next(updateParams);
1586
+ updateNotification(e) {
1587
+ this._update$.next(e);
1627
1588
  }
1628
- orderNotification(orderParams) {
1629
- this._order$.next(orderParams);
1589
+ orderNotification(e) {
1590
+ this._order$.next(e);
1630
1591
  }
1631
- groupUpdateNotification(groupParams) {
1632
- this._group$.next(groupParams);
1592
+ groupUpdateNotification(e) {
1593
+ this._group$.next(e);
1633
1594
  }
1634
- ungroupUpdateNotification(groupParams) {
1635
- this._ungroup$.next(groupParams);
1595
+ ungroupUpdateNotification(e) {
1596
+ this._ungroup$.next(e);
1636
1597
  }
1637
- refreshTransformNotification(refreshParams) {
1638
- this._refreshTransform$.next(refreshParams);
1598
+ refreshTransformNotification(e) {
1599
+ this._refreshTransform$.next(e);
1639
1600
  }
1640
- getGroupDrawingOp(groupParams) {
1641
- const ops = [], { unitId, subUnitId } = groupParams[0].parent;
1642
- groupParams.forEach((groupParam) => {
1643
- ops.push(this._getGroupDrawingOp(groupParam));
1601
+ getGroupDrawingOp(e) {
1602
+ const t = [], { unitId: i, subUnitId: s } = e[0].parent;
1603
+ e.forEach((a) => {
1604
+ t.push(this._getGroupDrawingOp(a));
1644
1605
  });
1645
- const op = ops.reduce(dist$1.type.compose, null);
1646
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: groupParams };
1606
+ const d = t.reduce(F.type.compose, null);
1607
+ return { undo: F.type.invertWithDoc(d, this.drawingManagerData), redo: d, unitId: i, subUnitId: s, objects: e };
1647
1608
  }
1648
- getUngroupDrawingOp(groupParams) {
1649
- const ops = [], { unitId, subUnitId } = groupParams[0].parent;
1650
- groupParams.forEach((groupParam) => {
1651
- ops.push(this._getUngroupDrawingOp(groupParam));
1609
+ getUngroupDrawingOp(e) {
1610
+ const t = [], { unitId: i, subUnitId: s } = e[0].parent;
1611
+ e.forEach((a) => {
1612
+ t.push(this._getUngroupDrawingOp(a));
1652
1613
  });
1653
- const op = ops.reduce(dist$1.type.compose, null);
1654
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: groupParams };
1614
+ const d = t.reduce(F.type.compose, null);
1615
+ return { undo: F.type.invertWithDoc(d, this.drawingManagerData), redo: d, unitId: i, subUnitId: s, objects: e };
1655
1616
  }
1656
- getDrawingsByGroup(groupParam) {
1657
- const { unitId, subUnitId, drawingId } = groupParam;
1658
- if (this.getDrawingByParam({ unitId, subUnitId, drawingId }) == null)
1617
+ getDrawingsByGroup(e) {
1618
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1619
+ if (this.getDrawingByParam({ unitId: t, subUnitId: i, drawingId: s }) == null)
1659
1620
  return [];
1660
- const drawings = this._getDrawingData(unitId, subUnitId), children = [];
1661
- return Object.keys(drawings).forEach((key) => {
1662
- const drawing = drawings[key];
1663
- drawing.groupId === drawingId && children.push(drawing);
1664
- }), children;
1665
- }
1666
- _getGroupDrawingOp(groupParam) {
1667
- const { parent, children } = groupParam, { unitId: groupUnitId, subUnitId: groupSubUnitId, drawingId: groupDrawingId } = parent, ops = [];
1668
- ops.push(
1669
- dist$1.insertOp([groupUnitId, groupSubUnitId, "data", groupDrawingId], parent)
1621
+ const l = this._getDrawingData(t, i), a = [];
1622
+ return Object.keys(l).forEach((E) => {
1623
+ const W = l[E];
1624
+ W.groupId === s && a.push(W);
1625
+ }), a;
1626
+ }
1627
+ _getGroupDrawingOp(e) {
1628
+ const { parent: t, children: i } = e, { unitId: s, subUnitId: d, drawingId: l } = t, a = [];
1629
+ a.push(
1630
+ F.insertOp([s, d, "data", l], t)
1670
1631
  );
1671
- let maxChildIndex = Number.NEGATIVE_INFINITY;
1672
- return children.forEach((child) => {
1673
- const { unitId, subUnitId, drawingId } = child, index = this._hasDrawingOrder({ unitId, subUnitId, drawingId });
1674
- maxChildIndex = Math.max(maxChildIndex, index), ops.push(
1675
- ...this._getUpdateParamCompareOp(child, this.getDrawingByParam({ unitId, subUnitId, drawingId }))
1632
+ let E = Number.NEGATIVE_INFINITY;
1633
+ return i.forEach((W) => {
1634
+ const { unitId: O, subUnitId: o, drawingId: c } = W, h = this._hasDrawingOrder({ unitId: O, subUnitId: o, drawingId: c });
1635
+ E = Math.max(E, h), a.push(
1636
+ ...this._getUpdateParamCompareOp(W, this.getDrawingByParam({ unitId: O, subUnitId: o, drawingId: c }))
1676
1637
  );
1677
- }), maxChildIndex === Number.NEGATIVE_INFINITY && (maxChildIndex = this._getDrawingOrder(groupUnitId, groupSubUnitId).length), ops.push(
1678
- dist$1.insertOp([groupUnitId, groupSubUnitId, "order", maxChildIndex], groupDrawingId)
1679
- ), ops.reduce(dist$1.type.compose, null);
1680
- }
1681
- _getUngroupDrawingOp(groupParam) {
1682
- const { parent, children } = groupParam, { unitId: groupUnitId, subUnitId: groupSubUnitId, drawingId: groupDrawingId } = parent, ops = [];
1683
- return children.forEach((child) => {
1684
- const { unitId, subUnitId, drawingId } = child;
1685
- ops.push(
1686
- ...this._getUpdateParamCompareOp(child, this.getDrawingByParam({ unitId, subUnitId, drawingId }))
1638
+ }), E === Number.NEGATIVE_INFINITY && (E = this._getDrawingOrder(s, d).length), a.push(
1639
+ F.insertOp([s, d, "order", E], l)
1640
+ ), a.reduce(F.type.compose, null);
1641
+ }
1642
+ _getUngroupDrawingOp(e) {
1643
+ const { parent: t, children: i } = e, { unitId: s, subUnitId: d, drawingId: l } = t, a = [];
1644
+ return i.forEach((E) => {
1645
+ const { unitId: W, subUnitId: O, drawingId: o } = E;
1646
+ a.push(
1647
+ ...this._getUpdateParamCompareOp(E, this.getDrawingByParam({ unitId: W, subUnitId: O, drawingId: o }))
1687
1648
  );
1688
- }), ops.push(
1689
- dist$1.removeOp([groupUnitId, groupSubUnitId, "data", groupDrawingId], !0)
1690
- ), ops.push(
1691
- dist$1.removeOp([groupUnitId, groupSubUnitId, "order", this._getDrawingOrder(groupUnitId, groupSubUnitId).indexOf(groupDrawingId)], !0)
1692
- ), ops.reduce(dist$1.type.compose, null);
1649
+ }), a.push(
1650
+ F.removeOp([s, d, "data", l], !0)
1651
+ ), a.push(
1652
+ F.removeOp([s, d, "order", this._getDrawingOrder(s, d).indexOf(l)], !0)
1653
+ ), a.reduce(F.type.compose, null);
1693
1654
  }
1694
- applyJson1(unitId, subUnitId, jsonOp) {
1695
- this._establishDrawingMap(unitId, subUnitId), this._oldDrawingManagerData = { ...this.drawingManagerData }, this.drawingManagerData = dist$1.type.apply(this.drawingManagerData, jsonOp);
1655
+ applyJson1(e, t, i) {
1656
+ this._establishDrawingMap(e, t), this._oldDrawingManagerData = { ...this.drawingManagerData }, this.drawingManagerData = F.type.apply(this.drawingManagerData, i);
1696
1657
  }
1697
1658
  // private _fillMissingFields(jsonOp: JSONOp) {
1698
1659
  // if (jsonOp == null) {
@@ -1714,163 +1675,163 @@ const _UnitDrawingService = class _UnitDrawingService {
1714
1675
  // }
1715
1676
  // }
1716
1677
  // }
1717
- featurePluginUpdateNotification(updateParams) {
1718
- this._featurePluginUpdate$.next(updateParams);
1678
+ featurePluginUpdateNotification(e) {
1679
+ this._featurePluginUpdate$.next(e);
1719
1680
  }
1720
- featurePluginOrderUpdateNotification(drawingOrderUpdateParam) {
1721
- this._featurePluginOrderUpdate$.next(drawingOrderUpdateParam);
1681
+ featurePluginOrderUpdateNotification(e) {
1682
+ this._featurePluginOrderUpdate$.next(e);
1722
1683
  }
1723
- featurePluginAddNotification(insertParams) {
1724
- this._featurePluginAdd$.next(insertParams);
1684
+ featurePluginAddNotification(e) {
1685
+ this._featurePluginAdd$.next(e);
1725
1686
  }
1726
- featurePluginRemoveNotification(removeParams) {
1727
- this._featurePluginRemove$.next(removeParams);
1687
+ featurePluginRemoveNotification(e) {
1688
+ this._featurePluginRemove$.next(e);
1728
1689
  }
1729
- featurePluginGroupUpdateNotification(groupParams) {
1730
- this._featurePluginGroupUpdate$.next(groupParams);
1690
+ featurePluginGroupUpdateNotification(e) {
1691
+ this._featurePluginGroupUpdate$.next(e);
1731
1692
  }
1732
- featurePluginUngroupUpdateNotification(groupParams) {
1733
- this._featurePluginUngroupUpdate$.next(groupParams);
1693
+ featurePluginUngroupUpdateNotification(e) {
1694
+ this._featurePluginUngroupUpdate$.next(e);
1734
1695
  }
1735
- getDrawingByParam(param) {
1736
- return this._getCurrentBySearch(param);
1696
+ getDrawingByParam(e) {
1697
+ return this._getCurrentBySearch(e);
1737
1698
  }
1738
- getOldDrawingByParam(param) {
1739
- return this._getOldBySearch(param);
1699
+ getOldDrawingByParam(e) {
1700
+ return this._getOldBySearch(e);
1740
1701
  }
1741
- getDrawingOKey(oKey) {
1742
- const [unitId, subUnitId, drawingId] = oKey.split("#-#");
1743
- return this._getCurrentBySearch({ unitId, subUnitId, drawingId });
1702
+ getDrawingOKey(e) {
1703
+ const [t, i, s] = e.split("#-#");
1704
+ return this._getCurrentBySearch({ unitId: t, subUnitId: i, drawingId: s });
1744
1705
  }
1745
- focusDrawing(params) {
1746
- if (params == null) {
1706
+ focusDrawing(e) {
1707
+ if (e == null) {
1747
1708
  this._focusDrawings = [], this._focus$.next([]);
1748
1709
  return;
1749
1710
  }
1750
- const drawingParams = [];
1751
- params.forEach((param) => {
1752
- var _a2;
1753
- const { unitId, subUnitId, drawingId } = param, item = (_a2 = this._getDrawingData(unitId, subUnitId)) == null ? void 0 : _a2[drawingId];
1754
- item != null && drawingParams.push(item);
1755
- }), drawingParams.length > 0 && (this._focusDrawings = drawingParams, this._focus$.next(drawingParams));
1711
+ const t = [];
1712
+ e.forEach((i) => {
1713
+ var E;
1714
+ const { unitId: s, subUnitId: d, drawingId: l } = i, a = (E = this._getDrawingData(s, d)) == null ? void 0 : E[l];
1715
+ a != null && t.push(a);
1716
+ }), t.length > 0 && (this._focusDrawings = t, this._focus$.next(t));
1756
1717
  }
1757
1718
  getFocusDrawings() {
1758
- const drawingParams = [];
1759
- return this._focusDrawings.forEach((param) => {
1760
- var _a2;
1761
- const { unitId, subUnitId, drawingId } = param, item = (_a2 = this._getDrawingData(unitId, subUnitId)) == null ? void 0 : _a2[drawingId];
1762
- item != null && drawingParams.push(item);
1763
- }), drawingParams;
1719
+ const e = [];
1720
+ return this._focusDrawings.forEach((t) => {
1721
+ var a;
1722
+ const { unitId: i, subUnitId: s, drawingId: d } = t, l = (a = this._getDrawingData(i, s)) == null ? void 0 : a[d];
1723
+ l != null && e.push(l);
1724
+ }), e;
1764
1725
  }
1765
- getDrawingOrder(unitId, subUnitId) {
1766
- return this._getDrawingOrder(unitId, subUnitId);
1726
+ getDrawingOrder(e, t) {
1727
+ return this._getDrawingOrder(e, t);
1767
1728
  }
1768
1729
  // Use in doc only.
1769
- setDrawingOrder(unitId, subUnitId, order) {
1770
- this.drawingManagerData[unitId][subUnitId].order = order;
1730
+ setDrawingOrder(e, t, i) {
1731
+ this.drawingManagerData[e][t].order = i;
1771
1732
  }
1772
- orderUpdateNotification(orderParams) {
1773
- this._order$.next(orderParams);
1733
+ orderUpdateNotification(e) {
1734
+ this._order$.next(e);
1774
1735
  }
1775
- getForwardDrawingsOp(orderParams) {
1776
- const { unitId, subUnitId, drawingIds } = orderParams, ops = [], orders = this.getDrawingOrder(unitId, subUnitId), newIds = [...drawingIds];
1777
- drawingIds.forEach((drawingId) => {
1778
- const index = this._hasDrawingOrder({ unitId, subUnitId, drawingId });
1779
- if (index === -1 || index === orders.length - 1)
1736
+ getForwardDrawingsOp(e) {
1737
+ const { unitId: t, subUnitId: i, drawingIds: s } = e, d = [], l = this.getDrawingOrder(t, i), a = [...s];
1738
+ s.forEach((O) => {
1739
+ const o = this._hasDrawingOrder({ unitId: t, subUnitId: i, drawingId: O });
1740
+ if (o === -1 || o === l.length - 1)
1780
1741
  return;
1781
- const op2 = dist$1.moveOp([unitId, subUnitId, "order", index], [unitId, subUnitId, "order", index + 1]);
1782
- ops.push(op2), newIds.includes(orders[index + 1]) || newIds.push(orders[index + 1]);
1742
+ const c = F.moveOp([t, i, "order", o], [t, i, "order", o + 1]);
1743
+ d.push(c), a.includes(l[o + 1]) || a.push(l[o + 1]);
1783
1744
  });
1784
- const op = ops.reduce(dist$1.type.compose, null);
1785
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: { ...orderParams, drawingIds: newIds } };
1786
- }
1787
- getBackwardDrawingOp(orderParams) {
1788
- const { unitId, subUnitId, drawingIds } = orderParams, ops = [], orders = this.getDrawingOrder(unitId, subUnitId), newIds = [...drawingIds];
1789
- drawingIds.forEach((drawingId) => {
1790
- const index = this._hasDrawingOrder({ unitId, subUnitId, drawingId });
1791
- if (index === -1 || index === 0)
1745
+ const E = d.reduce(F.type.compose, null);
1746
+ return { undo: F.type.invertWithDoc(E, this.drawingManagerData), redo: E, unitId: t, subUnitId: i, objects: { ...e, drawingIds: a } };
1747
+ }
1748
+ getBackwardDrawingOp(e) {
1749
+ const { unitId: t, subUnitId: i, drawingIds: s } = e, d = [], l = this.getDrawingOrder(t, i), a = [...s];
1750
+ s.forEach((O) => {
1751
+ const o = this._hasDrawingOrder({ unitId: t, subUnitId: i, drawingId: O });
1752
+ if (o === -1 || o === 0)
1792
1753
  return;
1793
- const op2 = dist$1.moveOp([unitId, subUnitId, "order", index], [unitId, subUnitId, "order", index - 1]);
1794
- ops.push(op2), newIds.includes(orders[index - 1]) || newIds.push(orders[index - 1]);
1754
+ const c = F.moveOp([t, i, "order", o], [t, i, "order", o - 1]);
1755
+ d.push(c), a.includes(l[o - 1]) || a.push(l[o - 1]);
1795
1756
  });
1796
- const op = ops.reduce(dist$1.type.compose, null);
1797
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: { ...orderParams, drawingIds: newIds } };
1798
- }
1799
- getFrontDrawingsOp(orderParams) {
1800
- const { unitId, subUnitId, drawingIds } = orderParams, orderDrawingIds = this._getOrderFromSearchParams(unitId, subUnitId, drawingIds), newIds = [...drawingIds], orders = this.getDrawingOrder(unitId, subUnitId), ops = [];
1801
- orderDrawingIds.forEach((orderDrawingId) => {
1802
- const { drawingId } = orderDrawingId, index = this._getDrawingCount(unitId, subUnitId) - 1, op2 = dist$1.moveOp([unitId, subUnitId, "order", this._getDrawingOrder(unitId, subUnitId).indexOf(drawingId)], [unitId, subUnitId, "order", index]);
1803
- ops.push(op2), newIds.includes(orders[index]) || newIds.push(orders[index]);
1757
+ const E = d.reduce(F.type.compose, null);
1758
+ return { undo: F.type.invertWithDoc(E, this.drawingManagerData), redo: E, unitId: t, subUnitId: i, objects: { ...e, drawingIds: a } };
1759
+ }
1760
+ getFrontDrawingsOp(e) {
1761
+ const { unitId: t, subUnitId: i, drawingIds: s } = e, d = this._getOrderFromSearchParams(t, i, s), l = [...s], a = this.getDrawingOrder(t, i), E = [];
1762
+ d.forEach((o) => {
1763
+ const { drawingId: c } = o, h = this._getDrawingCount(t, i) - 1, k = F.moveOp([t, i, "order", this._getDrawingOrder(t, i).indexOf(c)], [t, i, "order", h]);
1764
+ E.push(k), l.includes(a[h]) || l.push(a[h]);
1804
1765
  });
1805
- const op = ops.reduce(dist$1.type.compose, null);
1806
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: { ...orderParams, drawingIds: newIds } };
1807
- }
1808
- getBackDrawingsOp(orderParams) {
1809
- const { unitId, subUnitId, drawingIds } = orderParams, orderSearchParams = this._getOrderFromSearchParams(unitId, subUnitId, drawingIds, !0), newIds = [...drawingIds], orders = this.getDrawingOrder(unitId, subUnitId), ops = [];
1810
- orderSearchParams.forEach((orderSearchParam) => {
1811
- const { drawingId } = orderSearchParam, op2 = dist$1.moveOp([unitId, subUnitId, "order", this._getDrawingOrder(unitId, subUnitId).indexOf(drawingId)], [unitId, subUnitId, "order", 0]);
1812
- ops.push(op2), newIds.includes(orders[0]) || newIds.push(orders[0]);
1766
+ const W = E.reduce(F.type.compose, null);
1767
+ return { undo: F.type.invertWithDoc(W, this.drawingManagerData), redo: W, unitId: t, subUnitId: i, objects: { ...e, drawingIds: l } };
1768
+ }
1769
+ getBackDrawingsOp(e) {
1770
+ const { unitId: t, subUnitId: i, drawingIds: s } = e, d = this._getOrderFromSearchParams(t, i, s, !0), l = [...s], a = this.getDrawingOrder(t, i), E = [];
1771
+ d.forEach((o) => {
1772
+ const { drawingId: c } = o, h = F.moveOp([t, i, "order", this._getDrawingOrder(t, i).indexOf(c)], [t, i, "order", 0]);
1773
+ E.push(h), l.includes(a[0]) || l.push(a[0]);
1813
1774
  });
1814
- const op = ops.reduce(dist$1.type.compose, null);
1815
- return { undo: dist$1.type.invertWithDoc(op, this.drawingManagerData), redo: op, unitId, subUnitId, objects: { ...orderParams, drawingIds: newIds } };
1775
+ const W = E.reduce(F.type.compose, null);
1776
+ return { undo: F.type.invertWithDoc(W, this.drawingManagerData), redo: W, unitId: t, subUnitId: i, objects: { ...e, drawingIds: l } };
1816
1777
  }
1817
- _getDrawingCount(unitId, subUnitId) {
1818
- return this.getDrawingOrder(unitId, subUnitId).length || 0;
1778
+ _getDrawingCount(e, t) {
1779
+ return this.getDrawingOrder(e, t).length || 0;
1819
1780
  }
1820
- _getOrderFromSearchParams(unitId, subUnitId, drawingIds, isDesc = !1) {
1821
- return drawingIds.map((drawingId) => {
1822
- const zIndex = this._hasDrawingOrder({ unitId, subUnitId, drawingId });
1823
- return { drawingId, zIndex };
1824
- }).sort(isDesc === !1 ? sortRules : sortRulesByDesc);
1781
+ _getOrderFromSearchParams(e, t, i, s = !1) {
1782
+ return i.map((d) => {
1783
+ const l = this._hasDrawingOrder({ unitId: e, subUnitId: t, drawingId: d });
1784
+ return { drawingId: d, zIndex: l };
1785
+ }).sort(s === !1 ? Nt : Rt);
1825
1786
  }
1826
- _hasDrawingOrder(searchParam) {
1827
- if (searchParam == null)
1787
+ _hasDrawingOrder(e) {
1788
+ if (e == null)
1828
1789
  return -1;
1829
- const { unitId, subUnitId, drawingId } = searchParam;
1830
- return this._establishDrawingMap(unitId, subUnitId), this._getDrawingOrder(unitId, subUnitId).indexOf(drawingId);
1790
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1791
+ return this._establishDrawingMap(t, i), this._getDrawingOrder(t, i).indexOf(s);
1831
1792
  }
1832
- _getCurrentBySearch(searchParam) {
1833
- var _a2, _b, _c;
1834
- if (searchParam == null)
1793
+ _getCurrentBySearch(e) {
1794
+ var d, l, a;
1795
+ if (e == null)
1835
1796
  return;
1836
- const { unitId, subUnitId, drawingId } = searchParam;
1837
- return (_c = (_b = (_a2 = this.drawingManagerData[unitId]) == null ? void 0 : _a2[subUnitId]) == null ? void 0 : _b.data) == null ? void 0 : _c[drawingId];
1797
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1798
+ return (a = (l = (d = this.drawingManagerData[t]) == null ? void 0 : d[i]) == null ? void 0 : l.data) == null ? void 0 : a[s];
1838
1799
  }
1839
- _getOldBySearch(searchParam) {
1840
- var _a2, _b, _c;
1841
- if (searchParam == null)
1800
+ _getOldBySearch(e) {
1801
+ var d, l, a;
1802
+ if (e == null)
1842
1803
  return;
1843
- const { unitId, subUnitId, drawingId } = searchParam;
1844
- return (_c = (_b = (_a2 = this._oldDrawingManagerData[unitId]) == null ? void 0 : _a2[subUnitId]) == null ? void 0 : _b.data) == null ? void 0 : _c[drawingId];
1804
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1805
+ return (a = (l = (d = this._oldDrawingManagerData[t]) == null ? void 0 : d[i]) == null ? void 0 : l.data) == null ? void 0 : a[s];
1845
1806
  }
1846
- _establishDrawingMap(unitId, subUnitId, drawingId) {
1847
- var _a2;
1848
- return this.drawingManagerData[unitId] || (this.drawingManagerData[unitId] = {}), this.drawingManagerData[unitId][subUnitId] || (this.drawingManagerData[unitId][subUnitId] = {
1807
+ _establishDrawingMap(e, t, i) {
1808
+ var s;
1809
+ return this.drawingManagerData[e] || (this.drawingManagerData[e] = {}), this.drawingManagerData[e][t] || (this.drawingManagerData[e][t] = {
1849
1810
  data: {},
1850
1811
  order: []
1851
- }), drawingId == null ? null : (_a2 = this.drawingManagerData[unitId][subUnitId].data) == null ? void 0 : _a2[drawingId];
1812
+ }), i == null ? null : (s = this.drawingManagerData[e][t].data) == null ? void 0 : s[i];
1852
1813
  }
1853
- _addByParam(insertParam) {
1854
- const { unitId, subUnitId, drawingId } = insertParam;
1855
- this._establishDrawingMap(unitId, subUnitId, drawingId);
1856
- const op1 = dist$1.insertOp([unitId, subUnitId, "data", drawingId], insertParam), op2 = dist$1.insertOp([unitId, subUnitId, "order", this._getDrawingOrder(unitId, subUnitId).length], drawingId), op = [op1, op2].reduce(dist$1.type.compose, null), invertOp = dist$1.type.invertWithDoc(op, this.drawingManagerData);
1857
- return { op, invertOp };
1814
+ _addByParam(e) {
1815
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1816
+ this._establishDrawingMap(t, i, s);
1817
+ const d = F.insertOp([t, i, "data", s], e), l = F.insertOp([t, i, "order", this._getDrawingOrder(t, i).length], s), a = [d, l].reduce(F.type.compose, null), E = F.type.invertWithDoc(a, this.drawingManagerData);
1818
+ return { op: a, invertOp: E };
1858
1819
  }
1859
- _removeByParam(searchParam) {
1860
- if (searchParam == null)
1820
+ _removeByParam(e) {
1821
+ if (e == null)
1861
1822
  return { op: [], invertOp: [] };
1862
- const { unitId, subUnitId, drawingId } = searchParam;
1863
- if (this._establishDrawingMap(unitId, subUnitId, drawingId) == null)
1823
+ const { unitId: t, subUnitId: i, drawingId: s } = e;
1824
+ if (this._establishDrawingMap(t, i, s) == null)
1864
1825
  return { op: [], invertOp: [] };
1865
- const op1 = dist$1.removeOp([unitId, subUnitId, "data", drawingId], !0), op2 = dist$1.removeOp([unitId, subUnitId, "order", this._getDrawingOrder(unitId, subUnitId).indexOf(drawingId)], !0), op = [op1, op2].reduce(dist$1.type.compose, null), invertOp = dist$1.type.invertWithDoc(op, this.drawingManagerData);
1866
- return { op, invertOp };
1826
+ const l = F.removeOp([t, i, "data", s], !0), a = F.removeOp([t, i, "order", this._getDrawingOrder(t, i).indexOf(s)], !0), E = [l, a].reduce(F.type.compose, null), W = F.type.invertWithDoc(E, this.drawingManagerData);
1827
+ return { op: E, invertOp: W };
1867
1828
  }
1868
- _updateByParam(updateParam) {
1869
- const { unitId, subUnitId, drawingId } = updateParam, object = this._establishDrawingMap(unitId, subUnitId, drawingId);
1870
- if (object == null)
1829
+ _updateByParam(e) {
1830
+ const { unitId: t, subUnitId: i, drawingId: s } = e, d = this._establishDrawingMap(t, i, s);
1831
+ if (d == null)
1871
1832
  return { op: [], invertOp: [] };
1872
- const op = this._getUpdateParamCompareOp(updateParam, object).reduce(dist$1.type.compose, null), invertOp = dist$1.type.invertWithDoc(op, this.drawingManagerData);
1873
- return { op, invertOp };
1833
+ const a = this._getUpdateParamCompareOp(e, d).reduce(F.type.compose, null), E = F.type.invertWithDoc(a, this.drawingManagerData);
1834
+ return { op: a, invertOp: E };
1874
1835
  }
1875
1836
  // private _initializeDrawingData(updateParam: T, oldParam: T) {
1876
1837
  // Object.keys(updateParam).forEach((key) => {
@@ -1879,22 +1840,22 @@ const _UnitDrawingService = class _UnitDrawingService {
1879
1840
  // }
1880
1841
  // });
1881
1842
  // }
1882
- _getUpdateParamCompareOp(newParam, oldParam) {
1883
- const { unitId, subUnitId, drawingId } = newParam, ops = [];
1884
- return Object.keys(newParam).forEach((key) => {
1885
- const newVal = newParam[key], oldVal = oldParam[key];
1886
- oldVal !== newVal && ops.push(
1887
- dist$1.replaceOp([unitId, subUnitId, "data", drawingId, key], oldVal, newVal)
1843
+ _getUpdateParamCompareOp(e, t) {
1844
+ const { unitId: i, subUnitId: s, drawingId: d } = e, l = [];
1845
+ return Object.keys(e).forEach((a) => {
1846
+ const E = e[a], W = t[a];
1847
+ W !== E && l.push(
1848
+ F.replaceOp([i, s, "data", d, a], W, E)
1888
1849
  );
1889
- }), ops;
1850
+ }), l;
1890
1851
  }
1891
- _getDrawingData(unitId, subUnitId) {
1892
- var _a2, _b;
1893
- return ((_b = (_a2 = this.drawingManagerData[unitId]) == null ? void 0 : _a2[subUnitId]) == null ? void 0 : _b.data) || {};
1852
+ _getDrawingData(e, t) {
1853
+ var i, s;
1854
+ return ((s = (i = this.drawingManagerData[e]) == null ? void 0 : i[t]) == null ? void 0 : s.data) || {};
1894
1855
  }
1895
- _getDrawingOrder(unitId, subUnitId) {
1896
- var _a2, _b;
1897
- return ((_b = (_a2 = this.drawingManagerData[unitId]) == null ? void 0 : _a2[subUnitId]) == null ? void 0 : _b.order) || [];
1856
+ _getDrawingOrder(e, t) {
1857
+ var i, s;
1858
+ return ((s = (i = this.drawingManagerData[e]) == null ? void 0 : i[t]) == null ? void 0 : s.order) || [];
1898
1859
  }
1899
1860
  getDrawingVisible() {
1900
1861
  return this._visible;
@@ -1902,84 +1863,80 @@ const _UnitDrawingService = class _UnitDrawingService {
1902
1863
  getDrawingEditable() {
1903
1864
  return this._editable;
1904
1865
  }
1905
- setDrawingVisible(visible) {
1906
- this._visible = visible;
1866
+ setDrawingVisible(e) {
1867
+ this._visible = e;
1907
1868
  }
1908
- setDrawingEditable(editable) {
1909
- this._editable = editable;
1869
+ setDrawingEditable(e) {
1870
+ this._editable = e;
1910
1871
  }
1911
- };
1912
- __name(_UnitDrawingService, "UnitDrawingService");
1913
- let UnitDrawingService = _UnitDrawingService;
1914
- const _DrawingManagerService = class _DrawingManagerService extends UnitDrawingService {
1915
- };
1916
- __name(_DrawingManagerService, "DrawingManagerService");
1917
- let DrawingManagerService = _DrawingManagerService;
1918
- function getDrawingShapeKeyByDrawingSearch({ unitId, subUnitId, drawingId }, index) {
1919
- return typeof index == "number" ? `${unitId}#-#${subUnitId}#-#${drawingId}#-#${index}` : `${unitId}#-#${subUnitId}#-#${drawingId}`;
1920
1872
  }
1921
- __name(getDrawingShapeKeyByDrawingSearch, "getDrawingShapeKeyByDrawingSearch");
1922
- const getImageSize = /* @__PURE__ */ __name(async (src) => new Promise((resolve, reject) => {
1923
- const image = new Image();
1924
- image.src = src, image.onload = () => {
1925
- resolve({
1926
- width: image.width,
1927
- height: image.height,
1928
- image
1873
+ class Ft extends Vt {
1874
+ }
1875
+ function dn({ unitId: n, subUnitId: e, drawingId: t }, i) {
1876
+ return typeof i == "number" ? `${n}#-#${e}#-#${t}#-#${i}` : `${n}#-#${e}#-#${t}`;
1877
+ }
1878
+ const fn = async (n) => new Promise((e, t) => {
1879
+ const i = new Image();
1880
+ i.src = n, i.onload = () => {
1881
+ e({
1882
+ width: i.width,
1883
+ height: i.height,
1884
+ image: i
1929
1885
  });
1930
- }, image.onerror = (error) => {
1931
- reject(error);
1886
+ }, i.onerror = (s) => {
1887
+ t(s);
1932
1888
  };
1933
- }), "getImageSize");
1934
- var ImageSourceType = /* @__PURE__ */ ((ImageSourceType2) => (ImageSourceType2.URL = "URL", ImageSourceType2.UUID = "UUID", ImageSourceType2.BASE64 = "BASE64", ImageSourceType2))(ImageSourceType || {}), ImageUploadStatusType = /* @__PURE__ */ ((ImageUploadStatusType2) => (ImageUploadStatusType2.SUCCUSS = "0", ImageUploadStatusType2.ERROR_EXCEED_SIZE = "1", ImageUploadStatusType2.ERROR_IMAGE_TYPE = "2", ImageUploadStatusType2.ERROR_UPLOAD_COUNT_LIMIT = "3", ImageUploadStatusType2.ERROR_IMAGE = "4", ImageUploadStatusType2))(ImageUploadStatusType || {});
1935
- const IImageIoService = createIdentifier("core.image-io.service"), _ImageIoService = class _ImageIoService {
1889
+ });
1890
+ var et = /* @__PURE__ */ ((n) => (n.URL = "URL", n.UUID = "UUID", n.BASE64 = "BASE64", n))(et || {}), Ze = /* @__PURE__ */ ((n) => (n.SUCCUSS = "0", n.ERROR_EXCEED_SIZE = "1", n.ERROR_IMAGE_TYPE = "2", n.ERROR_UPLOAD_COUNT_LIMIT = "3", n.ERROR_IMAGE = "4", n))(Ze || {});
1891
+ const qt = Ct("core.image-io.service");
1892
+ class zt {
1936
1893
  constructor() {
1937
- __publicField(this, "_waitCount", 0);
1938
- __publicField(this, "_change$", new Subject());
1939
- __publicField(this, "change$", this._change$);
1940
- __publicField(this, "_imageSourceCache", /* @__PURE__ */ new Map());
1941
- }
1942
- setWaitCount(count) {
1943
- this._waitCount = count, this._change$.next(count);
1944
- }
1945
- getImageSourceCache(source, imageSourceType) {
1946
- if (imageSourceType === ImageSourceType.BASE64) {
1947
- const image = new Image();
1948
- return image.src = source, image;
1894
+ V(this, "_waitCount", 0);
1895
+ V(this, "_change$", new we());
1896
+ V(this, "change$", this._change$);
1897
+ V(this, "_imageSourceCache", /* @__PURE__ */ new Map());
1898
+ }
1899
+ setWaitCount(e) {
1900
+ this._waitCount = e, this._change$.next(e);
1901
+ }
1902
+ getImageSourceCache(e, t) {
1903
+ if (t === et.BASE64) {
1904
+ const i = new Image();
1905
+ return i.src = e, i;
1949
1906
  }
1950
- return this._imageSourceCache.get(source);
1907
+ return this._imageSourceCache.get(e);
1951
1908
  }
1952
- addImageSourceCache(source, imageSourceType, imageSource) {
1953
- imageSourceType === ImageSourceType.BASE64 || imageSource == null || this._imageSourceCache.set(source, imageSource);
1909
+ addImageSourceCache(e, t, i) {
1910
+ t === et.BASE64 || i == null || this._imageSourceCache.set(e, i);
1954
1911
  }
1955
- async getImage(imageId) {
1956
- return Promise.resolve(imageId);
1912
+ async getImage(e) {
1913
+ return Promise.resolve(e);
1957
1914
  }
1958
- async saveImage(imageFile) {
1959
- return new Promise((resolve, reject) => {
1960
- if (!DRAWING_IMAGE_ALLOW_IMAGE_LIST.includes(imageFile.type)) {
1961
- reject(new Error(ImageUploadStatusType.ERROR_IMAGE_TYPE)), this._decreaseWaiting();
1915
+ async saveImage(e) {
1916
+ return new Promise((t, i) => {
1917
+ if (!Bt.includes(e.type)) {
1918
+ i(new Error(Ze.ERROR_IMAGE_TYPE)), this._decreaseWaiting();
1962
1919
  return;
1963
1920
  }
1964
- if (imageFile.size > DRAWING_IMAGE_ALLOW_SIZE) {
1965
- reject(new Error(ImageUploadStatusType.ERROR_EXCEED_SIZE)), this._decreaseWaiting();
1921
+ if (e.size > Gt) {
1922
+ i(new Error(Ze.ERROR_EXCEED_SIZE)), this._decreaseWaiting();
1966
1923
  return;
1967
1924
  }
1968
- const reader = new FileReader();
1969
- reader.readAsDataURL(imageFile), reader.onload = (evt) => {
1970
- var _a2;
1971
- const replaceSrc = (_a2 = evt.target) == null ? void 0 : _a2.result;
1972
- if (replaceSrc == null) {
1973
- reject(new Error(ImageUploadStatusType.ERROR_IMAGE)), this._decreaseWaiting();
1925
+ const s = new FileReader();
1926
+ s.readAsDataURL(e), s.onload = (d) => {
1927
+ var E;
1928
+ const l = (E = d.target) == null ? void 0 : E.result;
1929
+ if (l == null) {
1930
+ i(new Error(Ze.ERROR_IMAGE)), this._decreaseWaiting();
1974
1931
  return;
1975
1932
  }
1976
- const imageId = Tools.generateRandomId(6);
1977
- resolve({
1978
- imageId,
1979
- imageSourceType: ImageSourceType.BASE64,
1980
- source: replaceSrc,
1981
- base64Cache: replaceSrc,
1982
- status: ImageUploadStatusType.SUCCUSS
1933
+ const a = kt.generateRandomId(6);
1934
+ t({
1935
+ imageId: a,
1936
+ imageSourceType: et.BASE64,
1937
+ source: l,
1938
+ base64Cache: l,
1939
+ status: Ze.SUCCUSS
1983
1940
  }), this._decreaseWaiting();
1984
1941
  };
1985
1942
  });
@@ -1987,57 +1944,55 @@ const IImageIoService = createIdentifier("core.image-io.service"), _ImageIoServi
1987
1944
  _decreaseWaiting() {
1988
1945
  this._waitCount -= 1, this._change$.next(this._waitCount);
1989
1946
  }
1990
- };
1991
- __name(_ImageIoService, "ImageIoService");
1992
- let ImageIoService = _ImageIoService;
1993
- const DEFAULT_DOCUMENT_SUB_COMPONENT_ID = "__default_document_sub_component_id20231101__";
1994
- var ArrangeTypeEnum = /* @__PURE__ */ ((ArrangeTypeEnum2) => (ArrangeTypeEnum2[ArrangeTypeEnum2.forward = 0] = "forward", ArrangeTypeEnum2[ArrangeTypeEnum2.backward = 1] = "backward", ArrangeTypeEnum2[ArrangeTypeEnum2.front = 2] = "front", ArrangeTypeEnum2[ArrangeTypeEnum2.back = 3] = "back", ArrangeTypeEnum2))(ArrangeTypeEnum || {}), DrawingTypeEnum = /* @__PURE__ */ ((DrawingTypeEnum2) => (DrawingTypeEnum2[DrawingTypeEnum2.UNRECOGNIZED = -1] = "UNRECOGNIZED", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_IMAGE = 0] = "DRAWING_IMAGE", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_SHAPE = 1] = "DRAWING_SHAPE", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_CHART = 2] = "DRAWING_CHART", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_TABLE = 3] = "DRAWING_TABLE", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_SMART_ART = 4] = "DRAWING_SMART_ART", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_VIDEO = 5] = "DRAWING_VIDEO", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_GROUP = 6] = "DRAWING_GROUP", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_UNIT = 7] = "DRAWING_UNIT", DrawingTypeEnum2[DrawingTypeEnum2.DRAWING_DOM = 8] = "DRAWING_DOM", DrawingTypeEnum2))(DrawingTypeEnum || {});
1995
- const IDrawingManagerService = createIdentifier("univer.drawing-manager.service"), PLUGIN_CONFIG_KEY = "drawing.config", defaultPluginConfig = {};
1996
- var __defProp2 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __decorateClass = /* @__PURE__ */ __name((decorators, target, key, kind) => {
1997
- for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
1998
- (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
1999
- return kind && result && __defProp2(target, key, result), result;
2000
- }, "__decorateClass"), __decorateParam = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam");
2001
- const PLUGIN_NAME = "UNIVER_DRAWING_PLUGIN";
2002
- var _a;
2003
- let UniverDrawingPlugin = (_a = class extends Plugin {
2004
- constructor(_config = defaultPluginConfig, _injector, _configService) {
2005
- super(), this._config = _config, this._injector = _injector, this._configService = _configService;
2006
- const { ...rest } = this._config;
2007
- this._configService.setConfig(PLUGIN_CONFIG_KEY, rest);
1947
+ }
1948
+ const hn = "__default_document_sub_component_id20231101__";
1949
+ var Xt = /* @__PURE__ */ ((n) => (n[n.forward = 0] = "forward", n[n.backward = 1] = "backward", n[n.front = 2] = "front", n[n.back = 3] = "back", n))(Xt || {}), Yt = /* @__PURE__ */ ((n) => (n[n.UNRECOGNIZED = -1] = "UNRECOGNIZED", n[n.DRAWING_IMAGE = 0] = "DRAWING_IMAGE", n[n.DRAWING_SHAPE = 1] = "DRAWING_SHAPE", n[n.DRAWING_CHART = 2] = "DRAWING_CHART", n[n.DRAWING_TABLE = 3] = "DRAWING_TABLE", n[n.DRAWING_SMART_ART = 4] = "DRAWING_SMART_ART", n[n.DRAWING_VIDEO = 5] = "DRAWING_VIDEO", n[n.DRAWING_GROUP = 6] = "DRAWING_GROUP", n[n.DRAWING_UNIT = 7] = "DRAWING_UNIT", n[n.DRAWING_DOM = 8] = "DRAWING_DOM", n))(Yt || {});
1950
+ const Zt = Ct("univer.drawing-manager.service"), Jt = "drawing.config", Qt = {};
1951
+ var en = Object.defineProperty, tn = Object.getOwnPropertyDescriptor, nn = (n, e, t, i) => {
1952
+ for (var s = i > 1 ? void 0 : i ? tn(e, t) : e, d = n.length - 1, l; d >= 0; d--)
1953
+ (l = n[d]) && (s = (i ? l(e, t, s) : l(s)) || s);
1954
+ return i && s && en(e, t, s), s;
1955
+ }, wt = (n, e) => (t, i) => e(t, i, n);
1956
+ const rn = "UNIVER_DRAWING_PLUGIN";
1957
+ var ot;
1958
+ let It = (ot = class extends Tt {
1959
+ constructor(n = Qt, e, t) {
1960
+ super(), this._config = n, this._injector = e, this._configService = t;
1961
+ const { ...i } = this._config;
1962
+ this._configService.setConfig(Jt, i);
2008
1963
  }
2009
1964
  onStarting() {
2010
1965
  this._initDependencies();
2011
1966
  }
2012
1967
  _initDependencies() {
2013
- var _a2;
2014
- mergeOverrideWithDependencies([
2015
- [IImageIoService, { useClass: ImageIoService }],
2016
- [IDrawingManagerService, { useClass: DrawingManagerService }]
2017
- ], (_a2 = this._config) == null ? void 0 : _a2.override).forEach((d) => this._injector.add(d));
2018
- }
2019
- }, __name(_a, "UniverDrawingPlugin"), __publicField(_a, "pluginName", PLUGIN_NAME), _a);
2020
- UniverDrawingPlugin = __decorateClass([
2021
- __decorateParam(1, Inject(Injector)),
2022
- __decorateParam(2, IConfigService)
2023
- ], UniverDrawingPlugin);
1968
+ var t;
1969
+ $t([
1970
+ [qt, { useClass: zt }],
1971
+ [Zt, { useClass: Ft }]
1972
+ ], (t = this._config) == null ? void 0 : t.override).forEach((i) => this._injector.add(i));
1973
+ }
1974
+ }, V(ot, "pluginName", rn), ot);
1975
+ It = nn([
1976
+ wt(1, St(jt)),
1977
+ wt(2, Wt)
1978
+ ], It);
2024
1979
  export {
2025
- ArrangeTypeEnum,
2026
- DEFAULT_DOCUMENT_SUB_COMPONENT_ID,
2027
- DRAWING_IMAGE_ALLOW_IMAGE_LIST,
2028
- DRAWING_IMAGE_ALLOW_SIZE,
2029
- DRAWING_IMAGE_COUNT_LIMIT,
2030
- DRAWING_IMAGE_HEIGHT_LIMIT,
2031
- DRAWING_IMAGE_WIDTH_LIMIT,
2032
- DrawingManagerService,
2033
- DrawingTypeEnum,
2034
- IDrawingManagerService,
2035
- IImageIoService,
2036
- ImageIoService,
2037
- ImageSourceType,
2038
- ImageUploadStatusType,
2039
- UnitDrawingService,
2040
- UniverDrawingPlugin,
2041
- getDrawingShapeKeyByDrawingSearch,
2042
- getImageSize
1980
+ Xt as ArrangeTypeEnum,
1981
+ hn as DEFAULT_DOCUMENT_SUB_COMPONENT_ID,
1982
+ Bt as DRAWING_IMAGE_ALLOW_IMAGE_LIST,
1983
+ Gt as DRAWING_IMAGE_ALLOW_SIZE,
1984
+ un as DRAWING_IMAGE_COUNT_LIMIT,
1985
+ cn as DRAWING_IMAGE_HEIGHT_LIMIT,
1986
+ an as DRAWING_IMAGE_WIDTH_LIMIT,
1987
+ Ft as DrawingManagerService,
1988
+ Yt as DrawingTypeEnum,
1989
+ Zt as IDrawingManagerService,
1990
+ qt as IImageIoService,
1991
+ zt as ImageIoService,
1992
+ et as ImageSourceType,
1993
+ Ze as ImageUploadStatusType,
1994
+ Vt as UnitDrawingService,
1995
+ It as UniverDrawingPlugin,
1996
+ dn as getDrawingShapeKeyByDrawingSearch,
1997
+ fn as getImageSize
2043
1998
  };