prosemirror-transform 1.7.5 → 1.9.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/CHANGELOG.md +18 -0
- package/dist/index.cjs +233 -476
- package/dist/index.d.cts +31 -1
- package/dist/index.d.ts +31 -1
- package/dist/index.js +91 -5
- package/package.json +2 -2
- package/src/README.md +1 -0
- package/src/attr_step.ts +45 -0
- package/src/index.ts +1 -1
- package/src/mark.ts +4 -2
- package/src/replace_step.ts +2 -1
- package/src/structure.ts +31 -1
- package/src/transform.ts +9 -1
package/dist/index.cjs
CHANGED
|
@@ -1,64 +1,44 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
|
|
5
3
|
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
|
|
6
|
-
|
|
7
|
-
function
|
|
8
|
-
|
|
9
|
-
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
|
|
10
|
-
|
|
4
|
+
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
|
|
5
|
+
function _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf("[native code]") !== -1; } catch (e) { return typeof fn === "function"; } }
|
|
11
6
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
12
|
-
|
|
13
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
14
|
-
|
|
7
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
15
8
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
16
|
-
|
|
17
9
|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
18
|
-
|
|
19
10
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
20
|
-
|
|
21
11
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
22
|
-
|
|
23
|
-
function
|
|
24
|
-
|
|
12
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
13
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
25
14
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
26
|
-
|
|
27
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
28
|
-
|
|
15
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
29
16
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
30
|
-
|
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
18
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
31
19
|
var prosemirrorModel = require('prosemirror-model');
|
|
32
|
-
|
|
33
20
|
var lower16 = 0xffff;
|
|
34
21
|
var factor16 = Math.pow(2, 16);
|
|
35
|
-
|
|
36
22
|
function makeRecover(index, offset) {
|
|
37
23
|
return index + offset * factor16;
|
|
38
24
|
}
|
|
39
|
-
|
|
40
25
|
function recoverIndex(value) {
|
|
41
26
|
return value & lower16;
|
|
42
27
|
}
|
|
43
|
-
|
|
44
28
|
function recoverOffset(value) {
|
|
45
29
|
return (value - (value & lower16)) / factor16;
|
|
46
30
|
}
|
|
47
|
-
|
|
48
31
|
var DEL_BEFORE = 1,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
32
|
+
DEL_AFTER = 2,
|
|
33
|
+
DEL_ACROSS = 4,
|
|
34
|
+
DEL_SIDE = 8;
|
|
53
35
|
var MapResult = function () {
|
|
54
36
|
function MapResult(pos, delInfo, recover) {
|
|
55
37
|
_classCallCheck(this, MapResult);
|
|
56
|
-
|
|
57
38
|
this.pos = pos;
|
|
58
39
|
this.delInfo = delInfo;
|
|
59
40
|
this.recover = recover;
|
|
60
41
|
}
|
|
61
|
-
|
|
62
42
|
_createClass(MapResult, [{
|
|
63
43
|
key: "deleted",
|
|
64
44
|
get: function get() {
|
|
@@ -80,29 +60,22 @@ var MapResult = function () {
|
|
|
80
60
|
return (this.delInfo & DEL_ACROSS) > 0;
|
|
81
61
|
}
|
|
82
62
|
}]);
|
|
83
|
-
|
|
84
63
|
return MapResult;
|
|
85
64
|
}();
|
|
86
|
-
|
|
87
65
|
var StepMap = function () {
|
|
88
66
|
function StepMap(ranges) {
|
|
89
67
|
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
90
|
-
|
|
91
68
|
_classCallCheck(this, StepMap);
|
|
92
|
-
|
|
93
69
|
this.ranges = ranges;
|
|
94
70
|
this.inverted = inverted;
|
|
95
71
|
if (!ranges.length && StepMap.empty) return StepMap.empty;
|
|
96
72
|
}
|
|
97
|
-
|
|
98
73
|
_createClass(StepMap, [{
|
|
99
74
|
key: "recover",
|
|
100
75
|
value: function recover(value) {
|
|
101
76
|
var diff = 0,
|
|
102
|
-
|
|
103
|
-
if (!this.inverted) for (var i = 0; i < index; i++)
|
|
104
|
-
diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];
|
|
105
|
-
}
|
|
77
|
+
index = recoverIndex(value);
|
|
78
|
+
if (!this.inverted) for (var i = 0; i < index; i++) diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];
|
|
106
79
|
return this.ranges[index * 3] + diff + recoverOffset(value);
|
|
107
80
|
}
|
|
108
81
|
}, {
|
|
@@ -121,16 +94,14 @@ var StepMap = function () {
|
|
|
121
94
|
key: "_map",
|
|
122
95
|
value: function _map(pos, assoc, simple) {
|
|
123
96
|
var diff = 0,
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
97
|
+
oldIndex = this.inverted ? 2 : 1,
|
|
98
|
+
newIndex = this.inverted ? 1 : 2;
|
|
127
99
|
for (var i = 0; i < this.ranges.length; i += 3) {
|
|
128
100
|
var start = this.ranges[i] - (this.inverted ? diff : 0);
|
|
129
101
|
if (start > pos) break;
|
|
130
102
|
var oldSize = this.ranges[i + oldIndex],
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
103
|
+
newSize = this.ranges[i + newIndex],
|
|
104
|
+
end = start + oldSize;
|
|
134
105
|
if (pos <= end) {
|
|
135
106
|
var side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;
|
|
136
107
|
var result = start + diff + (side < 0 ? 0 : newSize);
|
|
@@ -140,43 +111,38 @@ var StepMap = function () {
|
|
|
140
111
|
if (assoc < 0 ? pos != start : pos != end) del |= DEL_SIDE;
|
|
141
112
|
return new MapResult(result, del, recover);
|
|
142
113
|
}
|
|
143
|
-
|
|
144
114
|
diff += newSize - oldSize;
|
|
145
115
|
}
|
|
146
|
-
|
|
147
116
|
return simple ? pos + diff : new MapResult(pos + diff, 0, null);
|
|
148
117
|
}
|
|
149
118
|
}, {
|
|
150
119
|
key: "touches",
|
|
151
120
|
value: function touches(pos, recover) {
|
|
152
121
|
var diff = 0,
|
|
153
|
-
|
|
122
|
+
index = recoverIndex(recover);
|
|
154
123
|
var oldIndex = this.inverted ? 2 : 1,
|
|
155
|
-
|
|
156
|
-
|
|
124
|
+
newIndex = this.inverted ? 1 : 2;
|
|
157
125
|
for (var i = 0; i < this.ranges.length; i += 3) {
|
|
158
126
|
var start = this.ranges[i] - (this.inverted ? diff : 0);
|
|
159
127
|
if (start > pos) break;
|
|
160
128
|
var oldSize = this.ranges[i + oldIndex],
|
|
161
|
-
|
|
129
|
+
end = start + oldSize;
|
|
162
130
|
if (pos <= end && i == index * 3) return true;
|
|
163
131
|
diff += this.ranges[i + newIndex] - oldSize;
|
|
164
132
|
}
|
|
165
|
-
|
|
166
133
|
return false;
|
|
167
134
|
}
|
|
168
135
|
}, {
|
|
169
136
|
key: "forEach",
|
|
170
137
|
value: function forEach(f) {
|
|
171
138
|
var oldIndex = this.inverted ? 2 : 1,
|
|
172
|
-
|
|
173
|
-
|
|
139
|
+
newIndex = this.inverted ? 1 : 2;
|
|
174
140
|
for (var i = 0, diff = 0; i < this.ranges.length; i += 3) {
|
|
175
141
|
var start = this.ranges[i],
|
|
176
|
-
|
|
177
|
-
|
|
142
|
+
oldStart = start - (this.inverted ? diff : 0),
|
|
143
|
+
newStart = start + (this.inverted ? 0 : diff);
|
|
178
144
|
var oldSize = this.ranges[i + oldIndex],
|
|
179
|
-
|
|
145
|
+
newSize = this.ranges[i + newIndex];
|
|
180
146
|
f(oldStart, oldStart + oldSize, newStart, newStart + newSize);
|
|
181
147
|
diff += newSize - oldSize;
|
|
182
148
|
}
|
|
@@ -197,27 +163,21 @@ var StepMap = function () {
|
|
|
197
163
|
return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);
|
|
198
164
|
}
|
|
199
165
|
}]);
|
|
200
|
-
|
|
201
166
|
return StepMap;
|
|
202
167
|
}();
|
|
203
|
-
|
|
204
168
|
StepMap.empty = new StepMap([]);
|
|
205
|
-
|
|
206
169
|
var Mapping = function () {
|
|
207
170
|
function Mapping() {
|
|
208
171
|
var maps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
209
172
|
var mirror = arguments.length > 1 ? arguments[1] : undefined;
|
|
210
173
|
var from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
211
174
|
var to = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : maps.length;
|
|
212
|
-
|
|
213
175
|
_classCallCheck(this, Mapping);
|
|
214
|
-
|
|
215
176
|
this.maps = maps;
|
|
216
177
|
this.mirror = mirror;
|
|
217
178
|
this.from = from;
|
|
218
179
|
this.to = to;
|
|
219
180
|
}
|
|
220
|
-
|
|
221
181
|
_createClass(Mapping, [{
|
|
222
182
|
key: "slice",
|
|
223
183
|
value: function slice() {
|
|
@@ -247,9 +207,7 @@ var Mapping = function () {
|
|
|
247
207
|
}, {
|
|
248
208
|
key: "getMirror",
|
|
249
209
|
value: function getMirror(n) {
|
|
250
|
-
if (this.mirror) for (var i = 0; i < this.mirror.length; i++)
|
|
251
|
-
if (this.mirror[i] == n) return this.mirror[i + (i % 2 ? -1 : 1)];
|
|
252
|
-
}
|
|
210
|
+
if (this.mirror) for (var i = 0; i < this.mirror.length; i++) if (this.mirror[i] == n) return this.mirror[i + (i % 2 ? -1 : 1)];
|
|
253
211
|
}
|
|
254
212
|
}, {
|
|
255
213
|
key: "setMirror",
|
|
@@ -277,11 +235,7 @@ var Mapping = function () {
|
|
|
277
235
|
value: function map(pos) {
|
|
278
236
|
var assoc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
279
237
|
if (this.mirror) return this._map(pos, assoc, true);
|
|
280
|
-
|
|
281
|
-
for (var i = this.from; i < this.to; i++) {
|
|
282
|
-
pos = this.maps[i].map(pos, assoc);
|
|
283
|
-
}
|
|
284
|
-
|
|
238
|
+
for (var i = this.from; i < this.to; i++) pos = this.maps[i].map(pos, assoc);
|
|
285
239
|
return pos;
|
|
286
240
|
}
|
|
287
241
|
}, {
|
|
@@ -294,39 +248,30 @@ var Mapping = function () {
|
|
|
294
248
|
key: "_map",
|
|
295
249
|
value: function _map(pos, assoc, simple) {
|
|
296
250
|
var delInfo = 0;
|
|
297
|
-
|
|
298
251
|
for (var i = this.from; i < this.to; i++) {
|
|
299
252
|
var map = this.maps[i],
|
|
300
|
-
|
|
301
|
-
|
|
253
|
+
result = map.mapResult(pos, assoc);
|
|
302
254
|
if (result.recover != null) {
|
|
303
255
|
var corr = this.getMirror(i);
|
|
304
|
-
|
|
305
256
|
if (corr != null && corr > i && corr < this.to) {
|
|
306
257
|
i = corr;
|
|
307
258
|
pos = this.maps[corr].recover(result.recover);
|
|
308
259
|
continue;
|
|
309
260
|
}
|
|
310
261
|
}
|
|
311
|
-
|
|
312
262
|
delInfo |= result.delInfo;
|
|
313
263
|
pos = result.pos;
|
|
314
264
|
}
|
|
315
|
-
|
|
316
265
|
return simple ? pos : new MapResult(pos, delInfo, null);
|
|
317
266
|
}
|
|
318
267
|
}]);
|
|
319
|
-
|
|
320
268
|
return Mapping;
|
|
321
269
|
}();
|
|
322
|
-
|
|
323
270
|
var stepsByID = Object.create(null);
|
|
324
|
-
|
|
325
271
|
var Step = function () {
|
|
326
272
|
function Step() {
|
|
327
273
|
_classCallCheck(this, Step);
|
|
328
274
|
}
|
|
329
|
-
|
|
330
275
|
_createClass(Step, [{
|
|
331
276
|
key: "getMap",
|
|
332
277
|
value: function getMap() {
|
|
@@ -354,18 +299,14 @@ var Step = function () {
|
|
|
354
299
|
return stepClass;
|
|
355
300
|
}
|
|
356
301
|
}]);
|
|
357
|
-
|
|
358
302
|
return Step;
|
|
359
303
|
}();
|
|
360
|
-
|
|
361
304
|
var StepResult = function () {
|
|
362
305
|
function StepResult(doc, failed) {
|
|
363
306
|
_classCallCheck(this, StepResult);
|
|
364
|
-
|
|
365
307
|
this.doc = doc;
|
|
366
308
|
this.failed = failed;
|
|
367
309
|
}
|
|
368
|
-
|
|
369
310
|
_createClass(StepResult, null, [{
|
|
370
311
|
key: "ok",
|
|
371
312
|
value: function ok(doc) {
|
|
@@ -387,47 +328,36 @@ var StepResult = function () {
|
|
|
387
328
|
}
|
|
388
329
|
}
|
|
389
330
|
}]);
|
|
390
|
-
|
|
391
331
|
return StepResult;
|
|
392
332
|
}();
|
|
393
|
-
|
|
394
333
|
function mapFragment(fragment, f, parent) {
|
|
395
334
|
var mapped = [];
|
|
396
|
-
|
|
397
335
|
for (var i = 0; i < fragment.childCount; i++) {
|
|
398
336
|
var child = fragment.child(i);
|
|
399
337
|
if (child.content.size) child = child.copy(mapFragment(child.content, f, child));
|
|
400
338
|
if (child.isInline) child = f(child, parent, i);
|
|
401
339
|
mapped.push(child);
|
|
402
340
|
}
|
|
403
|
-
|
|
404
341
|
return prosemirrorModel.Fragment.fromArray(mapped);
|
|
405
342
|
}
|
|
406
|
-
|
|
407
343
|
var AddMarkStep = function (_Step) {
|
|
408
344
|
_inherits(AddMarkStep, _Step);
|
|
409
|
-
|
|
410
345
|
var _super = _createSuper(AddMarkStep);
|
|
411
|
-
|
|
412
346
|
function AddMarkStep(from, to, mark) {
|
|
413
347
|
var _this;
|
|
414
|
-
|
|
415
348
|
_classCallCheck(this, AddMarkStep);
|
|
416
|
-
|
|
417
349
|
_this = _super.call(this);
|
|
418
350
|
_this.from = from;
|
|
419
351
|
_this.to = to;
|
|
420
352
|
_this.mark = mark;
|
|
421
353
|
return _this;
|
|
422
354
|
}
|
|
423
|
-
|
|
424
355
|
_createClass(AddMarkStep, [{
|
|
425
356
|
key: "apply",
|
|
426
357
|
value: function apply(doc) {
|
|
427
358
|
var _this2 = this;
|
|
428
|
-
|
|
429
359
|
var oldSlice = doc.slice(this.from, this.to),
|
|
430
|
-
|
|
360
|
+
$from = doc.resolve(this.from);
|
|
431
361
|
var parent = $from.node($from.sharedDepth(this.to));
|
|
432
362
|
var slice = new prosemirrorModel.Slice(mapFragment(oldSlice.content, function (node, parent) {
|
|
433
363
|
if (!node.isAtom || !parent.type.allowsMarkType(_this2.mark.type)) return node;
|
|
@@ -444,7 +374,7 @@ var AddMarkStep = function (_Step) {
|
|
|
444
374
|
key: "map",
|
|
445
375
|
value: function map(mapping) {
|
|
446
376
|
var from = mapping.mapResult(this.from, 1),
|
|
447
|
-
|
|
377
|
+
to = mapping.mapResult(this.to, -1);
|
|
448
378
|
if (from.deleted && to.deleted || from.pos >= to.pos) return null;
|
|
449
379
|
return new AddMarkStep(from.pos, to.pos, this.mark);
|
|
450
380
|
}
|
|
@@ -471,34 +401,25 @@ var AddMarkStep = function (_Step) {
|
|
|
471
401
|
return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));
|
|
472
402
|
}
|
|
473
403
|
}]);
|
|
474
|
-
|
|
475
404
|
return AddMarkStep;
|
|
476
405
|
}(Step);
|
|
477
|
-
|
|
478
406
|
Step.jsonID("addMark", AddMarkStep);
|
|
479
|
-
|
|
480
407
|
var RemoveMarkStep = function (_Step2) {
|
|
481
408
|
_inherits(RemoveMarkStep, _Step2);
|
|
482
|
-
|
|
483
409
|
var _super2 = _createSuper(RemoveMarkStep);
|
|
484
|
-
|
|
485
410
|
function RemoveMarkStep(from, to, mark) {
|
|
486
411
|
var _this3;
|
|
487
|
-
|
|
488
412
|
_classCallCheck(this, RemoveMarkStep);
|
|
489
|
-
|
|
490
413
|
_this3 = _super2.call(this);
|
|
491
414
|
_this3.from = from;
|
|
492
415
|
_this3.to = to;
|
|
493
416
|
_this3.mark = mark;
|
|
494
417
|
return _this3;
|
|
495
418
|
}
|
|
496
|
-
|
|
497
419
|
_createClass(RemoveMarkStep, [{
|
|
498
420
|
key: "apply",
|
|
499
421
|
value: function apply(doc) {
|
|
500
422
|
var _this4 = this;
|
|
501
|
-
|
|
502
423
|
var oldSlice = doc.slice(this.from, this.to);
|
|
503
424
|
var slice = new prosemirrorModel.Slice(mapFragment(oldSlice.content, function (node) {
|
|
504
425
|
return node.mark(_this4.mark.removeFromSet(node.marks));
|
|
@@ -514,7 +435,7 @@ var RemoveMarkStep = function (_Step2) {
|
|
|
514
435
|
key: "map",
|
|
515
436
|
value: function map(mapping) {
|
|
516
437
|
var from = mapping.mapResult(this.from, 1),
|
|
517
|
-
|
|
438
|
+
to = mapping.mapResult(this.to, -1);
|
|
518
439
|
if (from.deleted && to.deleted || from.pos >= to.pos) return null;
|
|
519
440
|
return new RemoveMarkStep(from.pos, to.pos, this.mark);
|
|
520
441
|
}
|
|
@@ -541,28 +462,20 @@ var RemoveMarkStep = function (_Step2) {
|
|
|
541
462
|
return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));
|
|
542
463
|
}
|
|
543
464
|
}]);
|
|
544
|
-
|
|
545
465
|
return RemoveMarkStep;
|
|
546
466
|
}(Step);
|
|
547
|
-
|
|
548
467
|
Step.jsonID("removeMark", RemoveMarkStep);
|
|
549
|
-
|
|
550
468
|
var AddNodeMarkStep = function (_Step3) {
|
|
551
469
|
_inherits(AddNodeMarkStep, _Step3);
|
|
552
|
-
|
|
553
470
|
var _super3 = _createSuper(AddNodeMarkStep);
|
|
554
|
-
|
|
555
471
|
function AddNodeMarkStep(pos, mark) {
|
|
556
472
|
var _this5;
|
|
557
|
-
|
|
558
473
|
_classCallCheck(this, AddNodeMarkStep);
|
|
559
|
-
|
|
560
474
|
_this5 = _super3.call(this);
|
|
561
475
|
_this5.pos = pos;
|
|
562
476
|
_this5.mark = mark;
|
|
563
477
|
return _this5;
|
|
564
478
|
}
|
|
565
|
-
|
|
566
479
|
_createClass(AddNodeMarkStep, [{
|
|
567
480
|
key: "apply",
|
|
568
481
|
value: function apply(doc) {
|
|
@@ -575,19 +488,13 @@ var AddNodeMarkStep = function (_Step3) {
|
|
|
575
488
|
key: "invert",
|
|
576
489
|
value: function invert(doc) {
|
|
577
490
|
var node = doc.nodeAt(this.pos);
|
|
578
|
-
|
|
579
491
|
if (node) {
|
|
580
492
|
var newSet = this.mark.addToSet(node.marks);
|
|
581
|
-
|
|
582
493
|
if (newSet.length == node.marks.length) {
|
|
583
|
-
for (var i = 0; i < node.marks.length; i++)
|
|
584
|
-
if (!node.marks[i].isInSet(newSet)) return new AddNodeMarkStep(this.pos, node.marks[i]);
|
|
585
|
-
}
|
|
586
|
-
|
|
494
|
+
for (var i = 0; i < node.marks.length; i++) if (!node.marks[i].isInSet(newSet)) return new AddNodeMarkStep(this.pos, node.marks[i]);
|
|
587
495
|
return new AddNodeMarkStep(this.pos, this.mark);
|
|
588
496
|
}
|
|
589
497
|
}
|
|
590
|
-
|
|
591
498
|
return new RemoveNodeMarkStep(this.pos, this.mark);
|
|
592
499
|
}
|
|
593
500
|
}, {
|
|
@@ -612,28 +519,20 @@ var AddNodeMarkStep = function (_Step3) {
|
|
|
612
519
|
return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));
|
|
613
520
|
}
|
|
614
521
|
}]);
|
|
615
|
-
|
|
616
522
|
return AddNodeMarkStep;
|
|
617
523
|
}(Step);
|
|
618
|
-
|
|
619
524
|
Step.jsonID("addNodeMark", AddNodeMarkStep);
|
|
620
|
-
|
|
621
525
|
var RemoveNodeMarkStep = function (_Step4) {
|
|
622
526
|
_inherits(RemoveNodeMarkStep, _Step4);
|
|
623
|
-
|
|
624
527
|
var _super4 = _createSuper(RemoveNodeMarkStep);
|
|
625
|
-
|
|
626
528
|
function RemoveNodeMarkStep(pos, mark) {
|
|
627
529
|
var _this6;
|
|
628
|
-
|
|
629
530
|
_classCallCheck(this, RemoveNodeMarkStep);
|
|
630
|
-
|
|
631
531
|
_this6 = _super4.call(this);
|
|
632
532
|
_this6.pos = pos;
|
|
633
533
|
_this6.mark = mark;
|
|
634
534
|
return _this6;
|
|
635
535
|
}
|
|
636
|
-
|
|
637
536
|
_createClass(RemoveNodeMarkStep, [{
|
|
638
537
|
key: "apply",
|
|
639
538
|
value: function apply(doc) {
|
|
@@ -671,24 +570,16 @@ var RemoveNodeMarkStep = function (_Step4) {
|
|
|
671
570
|
return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));
|
|
672
571
|
}
|
|
673
572
|
}]);
|
|
674
|
-
|
|
675
573
|
return RemoveNodeMarkStep;
|
|
676
574
|
}(Step);
|
|
677
|
-
|
|
678
575
|
Step.jsonID("removeNodeMark", RemoveNodeMarkStep);
|
|
679
|
-
|
|
680
576
|
var ReplaceStep = function (_Step5) {
|
|
681
577
|
_inherits(ReplaceStep, _Step5);
|
|
682
|
-
|
|
683
578
|
var _super5 = _createSuper(ReplaceStep);
|
|
684
|
-
|
|
685
579
|
function ReplaceStep(from, to, slice) {
|
|
686
580
|
var _this7;
|
|
687
|
-
|
|
688
581
|
var structure = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
689
|
-
|
|
690
582
|
_classCallCheck(this, ReplaceStep);
|
|
691
|
-
|
|
692
583
|
_this7 = _super5.call(this);
|
|
693
584
|
_this7.from = from;
|
|
694
585
|
_this7.to = to;
|
|
@@ -696,7 +587,6 @@ var ReplaceStep = function (_Step5) {
|
|
|
696
587
|
_this7.structure = structure;
|
|
697
588
|
return _this7;
|
|
698
589
|
}
|
|
699
|
-
|
|
700
590
|
_createClass(ReplaceStep, [{
|
|
701
591
|
key: "apply",
|
|
702
592
|
value: function apply(doc) {
|
|
@@ -717,7 +607,7 @@ var ReplaceStep = function (_Step5) {
|
|
|
717
607
|
key: "map",
|
|
718
608
|
value: function map(mapping) {
|
|
719
609
|
var from = mapping.mapResult(this.from, 1),
|
|
720
|
-
|
|
610
|
+
to = mapping.mapResult(this.to, -1);
|
|
721
611
|
if (from.deletedAcross && to.deletedAcross) return null;
|
|
722
612
|
return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);
|
|
723
613
|
}
|
|
@@ -725,13 +615,11 @@ var ReplaceStep = function (_Step5) {
|
|
|
725
615
|
key: "merge",
|
|
726
616
|
value: function merge(other) {
|
|
727
617
|
if (!(other instanceof ReplaceStep) || other.structure || this.structure) return null;
|
|
728
|
-
|
|
729
618
|
if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {
|
|
730
619
|
var slice = this.slice.size + other.slice.size == 0 ? prosemirrorModel.Slice.empty : new prosemirrorModel.Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);
|
|
731
620
|
return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);
|
|
732
621
|
} else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {
|
|
733
622
|
var _slice = this.slice.size + other.slice.size == 0 ? prosemirrorModel.Slice.empty : new prosemirrorModel.Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);
|
|
734
|
-
|
|
735
623
|
return new ReplaceStep(other.from, this.to, _slice, this.structure);
|
|
736
624
|
} else {
|
|
737
625
|
return null;
|
|
@@ -756,24 +644,16 @@ var ReplaceStep = function (_Step5) {
|
|
|
756
644
|
return new ReplaceStep(json.from, json.to, prosemirrorModel.Slice.fromJSON(schema, json.slice), !!json.structure);
|
|
757
645
|
}
|
|
758
646
|
}]);
|
|
759
|
-
|
|
760
647
|
return ReplaceStep;
|
|
761
648
|
}(Step);
|
|
762
|
-
|
|
763
649
|
Step.jsonID("replace", ReplaceStep);
|
|
764
|
-
|
|
765
650
|
var ReplaceAroundStep = function (_Step6) {
|
|
766
651
|
_inherits(ReplaceAroundStep, _Step6);
|
|
767
|
-
|
|
768
652
|
var _super6 = _createSuper(ReplaceAroundStep);
|
|
769
|
-
|
|
770
653
|
function ReplaceAroundStep(from, to, gapFrom, gapTo, slice, insert) {
|
|
771
654
|
var _this8;
|
|
772
|
-
|
|
773
655
|
var structure = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
774
|
-
|
|
775
656
|
_classCallCheck(this, ReplaceAroundStep);
|
|
776
|
-
|
|
777
657
|
_this8 = _super6.call(this);
|
|
778
658
|
_this8.from = from;
|
|
779
659
|
_this8.to = to;
|
|
@@ -784,7 +664,6 @@ var ReplaceAroundStep = function (_Step6) {
|
|
|
784
664
|
_this8.structure = structure;
|
|
785
665
|
return _this8;
|
|
786
666
|
}
|
|
787
|
-
|
|
788
667
|
_createClass(ReplaceAroundStep, [{
|
|
789
668
|
key: "apply",
|
|
790
669
|
value: function apply(doc) {
|
|
@@ -810,9 +689,9 @@ var ReplaceAroundStep = function (_Step6) {
|
|
|
810
689
|
key: "map",
|
|
811
690
|
value: function map(mapping) {
|
|
812
691
|
var from = mapping.mapResult(this.from, 1),
|
|
813
|
-
|
|
814
|
-
var gapFrom = mapping.map(this.gapFrom, -1)
|
|
815
|
-
|
|
692
|
+
to = mapping.mapResult(this.to, -1);
|
|
693
|
+
var gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);
|
|
694
|
+
var gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);
|
|
816
695
|
if (from.deletedAcross && to.deletedAcross || gapFrom < from.pos || gapTo > to.pos) return null;
|
|
817
696
|
return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);
|
|
818
697
|
}
|
|
@@ -838,54 +717,43 @@ var ReplaceAroundStep = function (_Step6) {
|
|
|
838
717
|
return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, prosemirrorModel.Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);
|
|
839
718
|
}
|
|
840
719
|
}]);
|
|
841
|
-
|
|
842
720
|
return ReplaceAroundStep;
|
|
843
721
|
}(Step);
|
|
844
|
-
|
|
845
722
|
Step.jsonID("replaceAround", ReplaceAroundStep);
|
|
846
|
-
|
|
847
723
|
function contentBetween(doc, from, to) {
|
|
848
724
|
var $from = doc.resolve(from),
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
725
|
+
dist = to - from,
|
|
726
|
+
depth = $from.depth;
|
|
852
727
|
while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {
|
|
853
728
|
depth--;
|
|
854
729
|
dist--;
|
|
855
730
|
}
|
|
856
|
-
|
|
857
731
|
if (dist > 0) {
|
|
858
732
|
var next = $from.node(depth).maybeChild($from.indexAfter(depth));
|
|
859
|
-
|
|
860
733
|
while (dist > 0) {
|
|
861
734
|
if (!next || next.isLeaf) return true;
|
|
862
735
|
next = next.firstChild;
|
|
863
736
|
dist--;
|
|
864
737
|
}
|
|
865
738
|
}
|
|
866
|
-
|
|
867
739
|
return false;
|
|
868
740
|
}
|
|
869
|
-
|
|
870
741
|
function _addMark(tr, from, to, mark) {
|
|
871
742
|
var removed = [],
|
|
872
|
-
|
|
743
|
+
added = [];
|
|
873
744
|
var removing, adding;
|
|
874
745
|
tr.doc.nodesBetween(from, to, function (node, pos, parent) {
|
|
875
746
|
if (!node.isInline) return;
|
|
876
747
|
var marks = node.marks;
|
|
877
|
-
|
|
878
748
|
if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {
|
|
879
749
|
var start = Math.max(pos, from),
|
|
880
|
-
|
|
750
|
+
end = Math.min(pos + node.nodeSize, to);
|
|
881
751
|
var newSet = mark.addToSet(marks);
|
|
882
|
-
|
|
883
752
|
for (var i = 0; i < marks.length; i++) {
|
|
884
753
|
if (!marks[i].isInSet(newSet)) {
|
|
885
754
|
if (removing && removing.to == start && removing.mark.eq(marks[i])) removing.to = end;else removed.push(removing = new RemoveMarkStep(start, end, marks[i]));
|
|
886
755
|
}
|
|
887
756
|
}
|
|
888
|
-
|
|
889
757
|
if (adding && adding.to == start) adding.to = end;else added.push(adding = new AddMarkStep(start, end, mark));
|
|
890
758
|
}
|
|
891
759
|
});
|
|
@@ -896,19 +764,16 @@ function _addMark(tr, from, to, mark) {
|
|
|
896
764
|
return tr.step(s);
|
|
897
765
|
});
|
|
898
766
|
}
|
|
899
|
-
|
|
900
767
|
function _removeMark(tr, from, to, mark) {
|
|
901
768
|
var matched = [],
|
|
902
|
-
|
|
769
|
+
step = 0;
|
|
903
770
|
tr.doc.nodesBetween(from, to, function (node, pos) {
|
|
904
771
|
if (!node.isInline) return;
|
|
905
772
|
step++;
|
|
906
773
|
var toRemove = null;
|
|
907
|
-
|
|
908
774
|
if (mark instanceof prosemirrorModel.MarkType) {
|
|
909
775
|
var set = node.marks,
|
|
910
|
-
|
|
911
|
-
|
|
776
|
+
found;
|
|
912
777
|
while (found = mark.isInSet(set)) {
|
|
913
778
|
(toRemove || (toRemove = [])).push(found);
|
|
914
779
|
set = found.removeFromSet(set);
|
|
@@ -918,19 +783,15 @@ function _removeMark(tr, from, to, mark) {
|
|
|
918
783
|
} else {
|
|
919
784
|
toRemove = node.marks;
|
|
920
785
|
}
|
|
921
|
-
|
|
922
786
|
if (toRemove && toRemove.length) {
|
|
923
787
|
var end = Math.min(pos + node.nodeSize, to);
|
|
924
|
-
|
|
925
788
|
for (var i = 0; i < toRemove.length; i++) {
|
|
926
789
|
var style = toRemove[i],
|
|
927
|
-
|
|
928
|
-
|
|
790
|
+
_found = void 0;
|
|
929
791
|
for (var j = 0; j < matched.length; j++) {
|
|
930
792
|
var m = matched[j];
|
|
931
793
|
if (m.step == step - 1 && style.eq(matched[j].style)) _found = m;
|
|
932
794
|
}
|
|
933
|
-
|
|
934
795
|
if (_found) {
|
|
935
796
|
_found.to = end;
|
|
936
797
|
_found.step = step;
|
|
@@ -949,108 +810,82 @@ function _removeMark(tr, from, to, mark) {
|
|
|
949
810
|
return tr.step(new RemoveMarkStep(m.from, m.to, m.style));
|
|
950
811
|
});
|
|
951
812
|
}
|
|
952
|
-
|
|
953
813
|
function _clearIncompatible(tr, pos, parentType) {
|
|
954
814
|
var match = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : parentType.contentMatch;
|
|
815
|
+
var clearNewlines = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
955
816
|
var node = tr.doc.nodeAt(pos);
|
|
956
817
|
var replSteps = [],
|
|
957
|
-
|
|
958
|
-
|
|
818
|
+
cur = pos + 1;
|
|
959
819
|
for (var i = 0; i < node.childCount; i++) {
|
|
960
820
|
var child = node.child(i),
|
|
961
|
-
|
|
821
|
+
end = cur + child.nodeSize;
|
|
962
822
|
var allowed = match.matchType(child.type);
|
|
963
|
-
|
|
964
823
|
if (!allowed) {
|
|
965
824
|
replSteps.push(new ReplaceStep(cur, end, prosemirrorModel.Slice.empty));
|
|
966
825
|
} else {
|
|
967
826
|
match = allowed;
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
if (!parentType.allowsMarkType(child.marks[j].type)) tr.step(new RemoveMarkStep(cur, end, child.marks[j]));
|
|
971
|
-
}
|
|
972
|
-
|
|
973
|
-
if (child.isText && !parentType.spec.code) {
|
|
827
|
+
for (var j = 0; j < child.marks.length; j++) if (!parentType.allowsMarkType(child.marks[j].type)) tr.step(new RemoveMarkStep(cur, end, child.marks[j]));
|
|
828
|
+
if (clearNewlines && child.isText && parentType.whitespace != "pre") {
|
|
974
829
|
var m = void 0,
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
830
|
+
newline = /\r?\n|\r/g,
|
|
831
|
+
slice = void 0;
|
|
978
832
|
while (m = newline.exec(child.text)) {
|
|
979
833
|
if (!slice) slice = new prosemirrorModel.Slice(prosemirrorModel.Fragment.from(parentType.schema.text(" ", parentType.allowedMarks(child.marks))), 0, 0);
|
|
980
834
|
replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));
|
|
981
835
|
}
|
|
982
836
|
}
|
|
983
837
|
}
|
|
984
|
-
|
|
985
838
|
cur = end;
|
|
986
839
|
}
|
|
987
|
-
|
|
988
840
|
if (!match.validEnd) {
|
|
989
841
|
var fill = match.fillBefore(prosemirrorModel.Fragment.empty, true);
|
|
990
842
|
tr.replace(cur, cur, new prosemirrorModel.Slice(fill, 0, 0));
|
|
991
843
|
}
|
|
992
|
-
|
|
993
|
-
for (var _i = replSteps.length - 1; _i >= 0; _i--) {
|
|
994
|
-
tr.step(replSteps[_i]);
|
|
995
|
-
}
|
|
844
|
+
for (var _i = replSteps.length - 1; _i >= 0; _i--) tr.step(replSteps[_i]);
|
|
996
845
|
}
|
|
997
|
-
|
|
998
846
|
function canCut(node, start, end) {
|
|
999
847
|
return (start == 0 || node.canReplace(start, node.childCount)) && (end == node.childCount || node.canReplace(0, end));
|
|
1000
848
|
}
|
|
1001
|
-
|
|
1002
849
|
function liftTarget(range) {
|
|
1003
850
|
var parent = range.parent;
|
|
1004
851
|
var content = parent.content.cutByIndex(range.startIndex, range.endIndex);
|
|
1005
|
-
|
|
1006
852
|
for (var depth = range.depth;; --depth) {
|
|
1007
853
|
var node = range.$from.node(depth);
|
|
1008
854
|
var index = range.$from.index(depth),
|
|
1009
|
-
|
|
855
|
+
endIndex = range.$to.indexAfter(depth);
|
|
1010
856
|
if (depth < range.depth && node.canReplace(index, endIndex, content)) return depth;
|
|
1011
857
|
if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex)) break;
|
|
1012
858
|
}
|
|
1013
|
-
|
|
1014
859
|
return null;
|
|
1015
860
|
}
|
|
1016
|
-
|
|
1017
861
|
function _lift(tr, range, target) {
|
|
1018
862
|
var $from = range.$from,
|
|
1019
|
-
|
|
1020
|
-
|
|
863
|
+
$to = range.$to,
|
|
864
|
+
depth = range.depth;
|
|
1021
865
|
var gapStart = $from.before(depth + 1),
|
|
1022
|
-
|
|
866
|
+
gapEnd = $to.after(depth + 1);
|
|
1023
867
|
var start = gapStart,
|
|
1024
|
-
|
|
868
|
+
end = gapEnd;
|
|
1025
869
|
var before = prosemirrorModel.Fragment.empty,
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
} else {
|
|
1034
|
-
start--;
|
|
1035
|
-
}
|
|
870
|
+
openStart = 0;
|
|
871
|
+
for (var d = depth, splitting = false; d > target; d--) if (splitting || $from.index(d) > 0) {
|
|
872
|
+
splitting = true;
|
|
873
|
+
before = prosemirrorModel.Fragment.from($from.node(d).copy(before));
|
|
874
|
+
openStart++;
|
|
875
|
+
} else {
|
|
876
|
+
start--;
|
|
1036
877
|
}
|
|
1037
|
-
|
|
1038
878
|
var after = prosemirrorModel.Fragment.empty,
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
} else {
|
|
1047
|
-
end++;
|
|
1048
|
-
}
|
|
879
|
+
openEnd = 0;
|
|
880
|
+
for (var _d = depth, _splitting = false; _d > target; _d--) if (_splitting || $to.after(_d + 1) < $to.end(_d)) {
|
|
881
|
+
_splitting = true;
|
|
882
|
+
after = prosemirrorModel.Fragment.from($to.node(_d).copy(after));
|
|
883
|
+
openEnd++;
|
|
884
|
+
} else {
|
|
885
|
+
end++;
|
|
1049
886
|
}
|
|
1050
|
-
|
|
1051
887
|
tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new prosemirrorModel.Slice(before.append(after), openStart, openEnd), before.size - openStart, true));
|
|
1052
888
|
}
|
|
1053
|
-
|
|
1054
889
|
function findWrapping(range, nodeType) {
|
|
1055
890
|
var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1056
891
|
var innerRange = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : range;
|
|
@@ -1062,80 +897,94 @@ function findWrapping(range, nodeType) {
|
|
|
1062
897
|
attrs: attrs
|
|
1063
898
|
}).concat(inner.map(withAttrs));
|
|
1064
899
|
}
|
|
1065
|
-
|
|
1066
900
|
function withAttrs(type) {
|
|
1067
901
|
return {
|
|
1068
902
|
type: type,
|
|
1069
903
|
attrs: null
|
|
1070
904
|
};
|
|
1071
905
|
}
|
|
1072
|
-
|
|
1073
906
|
function findWrappingOutside(range, type) {
|
|
1074
907
|
var parent = range.parent,
|
|
1075
|
-
|
|
1076
|
-
|
|
908
|
+
startIndex = range.startIndex,
|
|
909
|
+
endIndex = range.endIndex;
|
|
1077
910
|
var around = parent.contentMatchAt(startIndex).findWrapping(type);
|
|
1078
911
|
if (!around) return null;
|
|
1079
912
|
var outer = around.length ? around[0] : type;
|
|
1080
913
|
return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;
|
|
1081
914
|
}
|
|
1082
|
-
|
|
1083
915
|
function findWrappingInside(range, type) {
|
|
1084
916
|
var parent = range.parent,
|
|
1085
|
-
|
|
1086
|
-
|
|
917
|
+
startIndex = range.startIndex,
|
|
918
|
+
endIndex = range.endIndex;
|
|
1087
919
|
var inner = parent.child(startIndex);
|
|
1088
920
|
var inside = type.contentMatch.findWrapping(inner.type);
|
|
1089
921
|
if (!inside) return null;
|
|
1090
922
|
var lastType = inside.length ? inside[inside.length - 1] : type;
|
|
1091
923
|
var innerMatch = lastType.contentMatch;
|
|
1092
|
-
|
|
1093
|
-
for (var i = startIndex; innerMatch && i < endIndex; i++) {
|
|
1094
|
-
innerMatch = innerMatch.matchType(parent.child(i).type);
|
|
1095
|
-
}
|
|
1096
|
-
|
|
924
|
+
for (var i = startIndex; innerMatch && i < endIndex; i++) innerMatch = innerMatch.matchType(parent.child(i).type);
|
|
1097
925
|
if (!innerMatch || !innerMatch.validEnd) return null;
|
|
1098
926
|
return inside;
|
|
1099
927
|
}
|
|
1100
|
-
|
|
1101
928
|
function _wrap2(tr, range, wrappers) {
|
|
1102
929
|
var content = prosemirrorModel.Fragment.empty;
|
|
1103
|
-
|
|
1104
930
|
for (var i = wrappers.length - 1; i >= 0; i--) {
|
|
1105
931
|
if (content.size) {
|
|
1106
932
|
var match = wrappers[i].type.contentMatch.matchFragment(content);
|
|
1107
933
|
if (!match || !match.validEnd) throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper");
|
|
1108
934
|
}
|
|
1109
|
-
|
|
1110
935
|
content = prosemirrorModel.Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));
|
|
1111
936
|
}
|
|
1112
|
-
|
|
1113
937
|
var start = range.start,
|
|
1114
|
-
|
|
938
|
+
end = range.end;
|
|
1115
939
|
tr.step(new ReplaceAroundStep(start, end, start, end, new prosemirrorModel.Slice(content, 0, 0), wrappers.length, true));
|
|
1116
940
|
}
|
|
1117
|
-
|
|
1118
941
|
function _setBlockType(tr, from, to, type, attrs) {
|
|
1119
942
|
if (!type.isTextblock) throw new RangeError("Type given to setBlockType should be a textblock");
|
|
1120
943
|
var mapFrom = tr.steps.length;
|
|
1121
944
|
tr.doc.nodesBetween(from, to, function (node, pos) {
|
|
1122
945
|
if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {
|
|
1123
|
-
|
|
946
|
+
var convertNewlines = null;
|
|
947
|
+
if (type.schema.linebreakReplacement) {
|
|
948
|
+
var pre = type.whitespace == "pre",
|
|
949
|
+
supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);
|
|
950
|
+
if (pre && !supportLinebreak) convertNewlines = false;else if (!pre && supportLinebreak) convertNewlines = true;
|
|
951
|
+
}
|
|
952
|
+
if (convertNewlines === false) replaceLinebreaks(tr, node, pos, mapFrom);
|
|
953
|
+
_clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);
|
|
1124
954
|
var mapping = tr.mapping.slice(mapFrom);
|
|
1125
955
|
var startM = mapping.map(pos, 1),
|
|
1126
|
-
|
|
956
|
+
endM = mapping.map(pos + node.nodeSize, 1);
|
|
1127
957
|
tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new prosemirrorModel.Slice(prosemirrorModel.Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));
|
|
958
|
+
if (convertNewlines === true) replaceNewlines(tr, node, pos, mapFrom);
|
|
1128
959
|
return false;
|
|
1129
960
|
}
|
|
1130
961
|
});
|
|
1131
962
|
}
|
|
1132
|
-
|
|
963
|
+
function replaceNewlines(tr, node, pos, mapFrom) {
|
|
964
|
+
node.forEach(function (child, offset) {
|
|
965
|
+
if (child.isText) {
|
|
966
|
+
var m,
|
|
967
|
+
newline = /\r?\n|\r/g;
|
|
968
|
+
while (m = newline.exec(child.text)) {
|
|
969
|
+
var start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);
|
|
970
|
+
tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
function replaceLinebreaks(tr, node, pos, mapFrom) {
|
|
976
|
+
node.forEach(function (child, offset) {
|
|
977
|
+
if (child.type == child.type.schema.linebreakReplacement) {
|
|
978
|
+
var start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);
|
|
979
|
+
tr.replaceWith(start, start + 1, node.type.schema.text("\n"));
|
|
980
|
+
}
|
|
981
|
+
});
|
|
982
|
+
}
|
|
1133
983
|
function canChangeType(doc, pos, type) {
|
|
1134
984
|
var $pos = doc.resolve(pos),
|
|
1135
|
-
|
|
985
|
+
index = $pos.index();
|
|
1136
986
|
return $pos.parent.canReplaceWith(index, index + 1, type);
|
|
1137
987
|
}
|
|
1138
|
-
|
|
1139
988
|
function _setNodeMarkup(tr, pos, type, attrs, marks) {
|
|
1140
989
|
var node = tr.doc.nodeAt(pos);
|
|
1141
990
|
if (!node) throw new RangeError("No node at given position");
|
|
@@ -1145,19 +994,16 @@ function _setNodeMarkup(tr, pos, type, attrs, marks) {
|
|
|
1145
994
|
if (!type.validContent(node.content)) throw new RangeError("Invalid content for node type " + type.name);
|
|
1146
995
|
tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new prosemirrorModel.Slice(prosemirrorModel.Fragment.from(newNode), 0, 0), 1, true));
|
|
1147
996
|
}
|
|
1148
|
-
|
|
1149
997
|
function canSplit(doc, pos) {
|
|
1150
998
|
var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
1151
999
|
var typesAfter = arguments.length > 3 ? arguments[3] : undefined;
|
|
1152
1000
|
var $pos = doc.resolve(pos),
|
|
1153
|
-
|
|
1001
|
+
base = $pos.depth - depth;
|
|
1154
1002
|
var innerType = typesAfter && typesAfter[typesAfter.length - 1] || $pos.parent;
|
|
1155
1003
|
if (base < 0 || $pos.parent.type.spec.isolating || !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) || !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount))) return false;
|
|
1156
|
-
|
|
1157
1004
|
for (var d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {
|
|
1158
1005
|
var node = $pos.node(d),
|
|
1159
|
-
|
|
1160
|
-
|
|
1006
|
+
_index = $pos.index(d);
|
|
1161
1007
|
if (node.type.spec.isolating) return false;
|
|
1162
1008
|
var rest = node.content.cutByIndex(_index, node.childCount);
|
|
1163
1009
|
var overrideChild = typesAfter && typesAfter[i + 1];
|
|
@@ -1165,47 +1011,38 @@ function canSplit(doc, pos) {
|
|
|
1165
1011
|
var after = typesAfter && typesAfter[i] || node;
|
|
1166
1012
|
if (!node.canReplace(_index + 1, node.childCount) || !after.type.validContent(rest)) return false;
|
|
1167
1013
|
}
|
|
1168
|
-
|
|
1169
1014
|
var index = $pos.indexAfter(base);
|
|
1170
1015
|
var baseType = typesAfter && typesAfter[0];
|
|
1171
1016
|
return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);
|
|
1172
1017
|
}
|
|
1173
|
-
|
|
1174
1018
|
function _split(tr, pos) {
|
|
1175
1019
|
var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
1176
1020
|
var typesAfter = arguments.length > 3 ? arguments[3] : undefined;
|
|
1177
1021
|
var $pos = tr.doc.resolve(pos),
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1022
|
+
before = prosemirrorModel.Fragment.empty,
|
|
1023
|
+
after = prosemirrorModel.Fragment.empty;
|
|
1181
1024
|
for (var d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {
|
|
1182
1025
|
before = prosemirrorModel.Fragment.from($pos.node(d).copy(before));
|
|
1183
1026
|
var typeAfter = typesAfter && typesAfter[i];
|
|
1184
1027
|
after = prosemirrorModel.Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));
|
|
1185
1028
|
}
|
|
1186
|
-
|
|
1187
1029
|
tr.step(new ReplaceStep(pos, pos, new prosemirrorModel.Slice(before.append(after), depth, depth), true));
|
|
1188
1030
|
}
|
|
1189
|
-
|
|
1190
1031
|
function canJoin(doc, pos) {
|
|
1191
1032
|
var $pos = doc.resolve(pos),
|
|
1192
|
-
|
|
1033
|
+
index = $pos.index();
|
|
1193
1034
|
return joinable($pos.nodeBefore, $pos.nodeAfter) && $pos.parent.canReplace(index, index + 1);
|
|
1194
1035
|
}
|
|
1195
|
-
|
|
1196
1036
|
function joinable(a, b) {
|
|
1197
1037
|
return !!(a && b && !a.isLeaf && a.canAppend(b));
|
|
1198
1038
|
}
|
|
1199
|
-
|
|
1200
1039
|
function joinPoint(doc, pos) {
|
|
1201
1040
|
var dir = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
|
1202
1041
|
var $pos = doc.resolve(pos);
|
|
1203
|
-
|
|
1204
1042
|
for (var d = $pos.depth;; d--) {
|
|
1205
1043
|
var before = void 0,
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1044
|
+
after = void 0,
|
|
1045
|
+
index = $pos.index(d);
|
|
1209
1046
|
if (d == $pos.depth) {
|
|
1210
1047
|
before = $pos.nodeBefore;
|
|
1211
1048
|
after = $pos.nodeAfter;
|
|
@@ -1217,18 +1054,15 @@ function joinPoint(doc, pos) {
|
|
|
1217
1054
|
before = $pos.node(d).maybeChild(index - 1);
|
|
1218
1055
|
after = $pos.node(d + 1);
|
|
1219
1056
|
}
|
|
1220
|
-
|
|
1221
1057
|
if (before && !before.isTextblock && joinable(before, after) && $pos.node(d).canReplace(index, index + 1)) return pos;
|
|
1222
1058
|
if (d == 0) break;
|
|
1223
1059
|
pos = dir < 0 ? $pos.before(d) : $pos.after(d);
|
|
1224
1060
|
}
|
|
1225
1061
|
}
|
|
1226
|
-
|
|
1227
1062
|
function _join(tr, pos, depth) {
|
|
1228
1063
|
var step = new ReplaceStep(pos - depth, pos + depth, prosemirrorModel.Slice.empty, true);
|
|
1229
1064
|
tr.step(step);
|
|
1230
1065
|
}
|
|
1231
|
-
|
|
1232
1066
|
function insertPoint(doc, pos, nodeType) {
|
|
1233
1067
|
var $pos = doc.resolve(pos);
|
|
1234
1068
|
if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType)) return pos;
|
|
@@ -1239,67 +1073,53 @@ function insertPoint(doc, pos, nodeType) {
|
|
|
1239
1073
|
}
|
|
1240
1074
|
if ($pos.parentOffset == $pos.parent.content.size) for (var _d2 = $pos.depth - 1; _d2 >= 0; _d2--) {
|
|
1241
1075
|
var _index2 = $pos.indexAfter(_d2);
|
|
1242
|
-
|
|
1243
1076
|
if ($pos.node(_d2).canReplaceWith(_index2, _index2, nodeType)) return $pos.after(_d2 + 1);
|
|
1244
1077
|
if (_index2 < $pos.node(_d2).childCount) return null;
|
|
1245
1078
|
}
|
|
1246
1079
|
return null;
|
|
1247
1080
|
}
|
|
1248
|
-
|
|
1249
1081
|
function dropPoint(doc, pos, slice) {
|
|
1250
1082
|
var $pos = doc.resolve(pos);
|
|
1251
1083
|
if (!slice.content.size) return pos;
|
|
1252
1084
|
var content = slice.content;
|
|
1253
|
-
|
|
1254
|
-
for (var i = 0; i < slice.openStart; i++) {
|
|
1255
|
-
content = content.firstChild.content;
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1085
|
+
for (var i = 0; i < slice.openStart; i++) content = content.firstChild.content;
|
|
1258
1086
|
for (var pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {
|
|
1259
1087
|
for (var d = $pos.depth; d >= 0; d--) {
|
|
1260
1088
|
var bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;
|
|
1261
1089
|
var insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);
|
|
1262
1090
|
var parent = $pos.node(d),
|
|
1263
|
-
|
|
1264
|
-
|
|
1091
|
+
fits = false;
|
|
1265
1092
|
if (pass == 1) {
|
|
1266
1093
|
fits = parent.canReplace(insertPos, insertPos, content);
|
|
1267
1094
|
} else {
|
|
1268
1095
|
var wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);
|
|
1269
1096
|
fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);
|
|
1270
1097
|
}
|
|
1271
|
-
|
|
1272
1098
|
if (fits) return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);
|
|
1273
1099
|
}
|
|
1274
1100
|
}
|
|
1275
|
-
|
|
1276
1101
|
return null;
|
|
1277
1102
|
}
|
|
1278
|
-
|
|
1279
1103
|
function replaceStep(doc, from) {
|
|
1280
1104
|
var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : from;
|
|
1281
1105
|
var slice = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prosemirrorModel.Slice.empty;
|
|
1282
1106
|
if (from == to && !slice.size) return null;
|
|
1283
1107
|
var $from = doc.resolve(from),
|
|
1284
|
-
|
|
1108
|
+
$to = doc.resolve(to);
|
|
1285
1109
|
if (fitsTrivially($from, $to, slice)) return new ReplaceStep(from, to, slice);
|
|
1286
1110
|
return new Fitter($from, $to, slice).fit();
|
|
1287
1111
|
}
|
|
1288
|
-
|
|
1289
1112
|
function fitsTrivially($from, $to, slice) {
|
|
1290
1113
|
return !slice.openStart && !slice.openEnd && $from.start() == $to.start() && $from.parent.canReplace($from.index(), $to.index(), slice.content);
|
|
1291
1114
|
}
|
|
1292
|
-
|
|
1293
1115
|
var Fitter = function () {
|
|
1294
1116
|
function Fitter($from, $to, unplaced) {
|
|
1295
1117
|
_classCallCheck(this, Fitter);
|
|
1296
|
-
|
|
1297
1118
|
this.$from = $from;
|
|
1298
1119
|
this.$to = $to;
|
|
1299
1120
|
this.unplaced = unplaced;
|
|
1300
1121
|
this.frontier = [];
|
|
1301
1122
|
this.placed = prosemirrorModel.Fragment.empty;
|
|
1302
|
-
|
|
1303
1123
|
for (var i = 0; i <= $from.depth; i++) {
|
|
1304
1124
|
var node = $from.node(i);
|
|
1305
1125
|
this.frontier.push({
|
|
@@ -1307,12 +1127,8 @@ var Fitter = function () {
|
|
|
1307
1127
|
match: node.contentMatchAt($from.indexAfter(i))
|
|
1308
1128
|
});
|
|
1309
1129
|
}
|
|
1310
|
-
|
|
1311
|
-
for (var _i2 = $from.depth; _i2 > 0; _i2--) {
|
|
1312
|
-
this.placed = prosemirrorModel.Fragment.from($from.node(_i2).copy(this.placed));
|
|
1313
|
-
}
|
|
1130
|
+
for (var _i2 = $from.depth; _i2 > 0; _i2--) this.placed = prosemirrorModel.Fragment.from($from.node(_i2).copy(this.placed));
|
|
1314
1131
|
}
|
|
1315
|
-
|
|
1316
1132
|
_createClass(Fitter, [{
|
|
1317
1133
|
key: "depth",
|
|
1318
1134
|
get: function get() {
|
|
@@ -1325,22 +1141,19 @@ var Fitter = function () {
|
|
|
1325
1141
|
var fit = this.findFittable();
|
|
1326
1142
|
if (fit) this.placeNodes(fit);else this.openMore() || this.dropNode();
|
|
1327
1143
|
}
|
|
1328
|
-
|
|
1329
1144
|
var moveInline = this.mustMoveInline(),
|
|
1330
|
-
|
|
1145
|
+
placedSize = this.placed.size - this.depth - this.$from.depth;
|
|
1331
1146
|
var $from = this.$from,
|
|
1332
|
-
|
|
1147
|
+
$to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));
|
|
1333
1148
|
if (!$to) return null;
|
|
1334
1149
|
var content = this.placed,
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1150
|
+
openStart = $from.depth,
|
|
1151
|
+
openEnd = $to.depth;
|
|
1338
1152
|
while (openStart && openEnd && content.childCount == 1) {
|
|
1339
1153
|
content = content.firstChild.content;
|
|
1340
1154
|
openStart--;
|
|
1341
1155
|
openEnd--;
|
|
1342
1156
|
}
|
|
1343
|
-
|
|
1344
1157
|
var slice = new prosemirrorModel.Slice(content, openStart, openEnd);
|
|
1345
1158
|
if (moveInline > -1) return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);
|
|
1346
1159
|
if (slice.size || $from.pos != this.$to.pos) return new ReplaceStep($from.pos, $to.pos, slice);
|
|
@@ -1350,40 +1163,32 @@ var Fitter = function () {
|
|
|
1350
1163
|
key: "findFittable",
|
|
1351
1164
|
value: function findFittable() {
|
|
1352
1165
|
var startDepth = this.unplaced.openStart;
|
|
1353
|
-
|
|
1354
1166
|
for (var cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {
|
|
1355
1167
|
var node = cur.firstChild;
|
|
1356
1168
|
if (cur.childCount > 1) openEnd = 0;
|
|
1357
|
-
|
|
1358
1169
|
if (node.type.spec.isolating && openEnd <= d) {
|
|
1359
1170
|
startDepth = d;
|
|
1360
1171
|
break;
|
|
1361
1172
|
}
|
|
1362
|
-
|
|
1363
1173
|
cur = node.content;
|
|
1364
1174
|
}
|
|
1365
|
-
|
|
1366
1175
|
for (var pass = 1; pass <= 2; pass++) {
|
|
1367
1176
|
for (var sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {
|
|
1368
1177
|
var fragment = void 0,
|
|
1369
|
-
|
|
1370
|
-
|
|
1178
|
+
parent = null;
|
|
1371
1179
|
if (sliceDepth) {
|
|
1372
1180
|
parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;
|
|
1373
1181
|
fragment = parent.content;
|
|
1374
1182
|
} else {
|
|
1375
1183
|
fragment = this.unplaced.content;
|
|
1376
1184
|
}
|
|
1377
|
-
|
|
1378
1185
|
var first = fragment.firstChild;
|
|
1379
|
-
|
|
1380
1186
|
for (var frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {
|
|
1381
1187
|
var _this$frontier$fronti = this.frontier[frontierDepth],
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1188
|
+
type = _this$frontier$fronti.type,
|
|
1189
|
+
match = _this$frontier$fronti.match,
|
|
1190
|
+
_wrap = void 0,
|
|
1191
|
+
inject = null;
|
|
1387
1192
|
if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(prosemirrorModel.Fragment.from(first), false)) : parent && type.compatibleContent(parent.type))) return {
|
|
1388
1193
|
sliceDepth: sliceDepth,
|
|
1389
1194
|
frontierDepth: frontierDepth,
|
|
@@ -1404,9 +1209,9 @@ var Fitter = function () {
|
|
|
1404
1209
|
key: "openMore",
|
|
1405
1210
|
value: function openMore() {
|
|
1406
1211
|
var _this$unplaced = this.unplaced,
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1212
|
+
content = _this$unplaced.content,
|
|
1213
|
+
openStart = _this$unplaced.openStart,
|
|
1214
|
+
openEnd = _this$unplaced.openEnd;
|
|
1410
1215
|
var inner = contentAt(content, openStart);
|
|
1411
1216
|
if (!inner.childCount || inner.firstChild.isLeaf) return false;
|
|
1412
1217
|
this.unplaced = new prosemirrorModel.Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));
|
|
@@ -1416,11 +1221,10 @@ var Fitter = function () {
|
|
|
1416
1221
|
key: "dropNode",
|
|
1417
1222
|
value: function dropNode() {
|
|
1418
1223
|
var _this$unplaced2 = this.unplaced,
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1224
|
+
content = _this$unplaced2.content,
|
|
1225
|
+
openStart = _this$unplaced2.openStart,
|
|
1226
|
+
openEnd = _this$unplaced2.openEnd;
|
|
1422
1227
|
var inner = contentAt(content, openStart);
|
|
1423
|
-
|
|
1424
1228
|
if (inner.childCount <= 1 && openStart > 0) {
|
|
1425
1229
|
var openAtEnd = content.size - openStart <= openStart + inner.size;
|
|
1426
1230
|
this.unplaced = new prosemirrorModel.Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);
|
|
@@ -1432,56 +1236,41 @@ var Fitter = function () {
|
|
|
1432
1236
|
key: "placeNodes",
|
|
1433
1237
|
value: function placeNodes(_ref) {
|
|
1434
1238
|
var sliceDepth = _ref.sliceDepth,
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
this.closeFrontierNode();
|
|
1442
|
-
}
|
|
1443
|
-
|
|
1444
|
-
if (wrap) for (var i = 0; i < wrap.length; i++) {
|
|
1445
|
-
this.openFrontierNode(wrap[i]);
|
|
1446
|
-
}
|
|
1239
|
+
frontierDepth = _ref.frontierDepth,
|
|
1240
|
+
parent = _ref.parent,
|
|
1241
|
+
inject = _ref.inject,
|
|
1242
|
+
wrap = _ref.wrap;
|
|
1243
|
+
while (this.depth > frontierDepth) this.closeFrontierNode();
|
|
1244
|
+
if (wrap) for (var i = 0; i < wrap.length; i++) this.openFrontierNode(wrap[i]);
|
|
1447
1245
|
var slice = this.unplaced,
|
|
1448
|
-
|
|
1246
|
+
fragment = parent ? parent.content : slice.content;
|
|
1449
1247
|
var openStart = slice.openStart - sliceDepth;
|
|
1450
1248
|
var taken = 0,
|
|
1451
|
-
|
|
1249
|
+
add = [];
|
|
1452
1250
|
var _this$frontier$fronti2 = this.frontier[frontierDepth],
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1251
|
+
match = _this$frontier$fronti2.match,
|
|
1252
|
+
type = _this$frontier$fronti2.type;
|
|
1456
1253
|
if (inject) {
|
|
1457
|
-
for (var
|
|
1458
|
-
add.push(inject.child(i));
|
|
1459
|
-
}
|
|
1460
|
-
|
|
1254
|
+
for (var _i3 = 0; _i3 < inject.childCount; _i3++) add.push(inject.child(_i3));
|
|
1461
1255
|
match = match.matchFragment(inject);
|
|
1462
1256
|
}
|
|
1463
|
-
|
|
1464
1257
|
var openEndCount = fragment.size + sliceDepth - (slice.content.size - slice.openEnd);
|
|
1465
|
-
|
|
1466
1258
|
while (taken < fragment.childCount) {
|
|
1467
1259
|
var next = fragment.child(taken),
|
|
1468
|
-
|
|
1260
|
+
matches = match.matchType(next.type);
|
|
1469
1261
|
if (!matches) break;
|
|
1470
1262
|
taken++;
|
|
1471
|
-
|
|
1472
1263
|
if (taken > 1 || openStart == 0 || next.content.size) {
|
|
1473
1264
|
match = matches;
|
|
1474
1265
|
add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));
|
|
1475
1266
|
}
|
|
1476
1267
|
}
|
|
1477
|
-
|
|
1478
1268
|
var toEnd = taken == fragment.childCount;
|
|
1479
1269
|
if (!toEnd) openEndCount = -1;
|
|
1480
1270
|
this.placed = addToFragment(this.placed, frontierDepth, prosemirrorModel.Fragment.from(add));
|
|
1481
1271
|
this.frontier[frontierDepth].match = match;
|
|
1482
1272
|
if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1) this.closeFrontierNode();
|
|
1483
|
-
|
|
1484
|
-
for (var _i3 = 0, cur = fragment; _i3 < openEndCount; _i3++) {
|
|
1273
|
+
for (var _i4 = 0, cur = fragment; _i4 < openEndCount; _i4++) {
|
|
1485
1274
|
var node = cur.lastChild;
|
|
1486
1275
|
this.frontier.push({
|
|
1487
1276
|
type: node.type,
|
|
@@ -1489,7 +1278,6 @@ var Fitter = function () {
|
|
|
1489
1278
|
});
|
|
1490
1279
|
cur = node.content;
|
|
1491
1280
|
}
|
|
1492
|
-
|
|
1493
1281
|
this.unplaced = !toEnd ? new prosemirrorModel.Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd) : sliceDepth == 0 ? prosemirrorModel.Slice.empty : new prosemirrorModel.Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);
|
|
1494
1282
|
}
|
|
1495
1283
|
}, {
|
|
@@ -1497,15 +1285,11 @@ var Fitter = function () {
|
|
|
1497
1285
|
value: function mustMoveInline() {
|
|
1498
1286
|
if (!this.$to.parent.isTextblock) return -1;
|
|
1499
1287
|
var top = this.frontier[this.depth],
|
|
1500
|
-
|
|
1288
|
+
level;
|
|
1501
1289
|
if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) || this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth) return -1;
|
|
1502
1290
|
var depth = this.$to.depth,
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
while (depth > 1 && after == this.$to.end(--depth)) {
|
|
1506
|
-
++after;
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1291
|
+
after = this.$to.after(depth);
|
|
1292
|
+
while (depth > 1 && after == this.$to.end(--depth)) ++after;
|
|
1509
1293
|
return after;
|
|
1510
1294
|
}
|
|
1511
1295
|
}, {
|
|
@@ -1513,20 +1297,18 @@ var Fitter = function () {
|
|
|
1513
1297
|
value: function findCloseLevel($to) {
|
|
1514
1298
|
scan: for (var i = Math.min(this.depth, $to.depth); i >= 0; i--) {
|
|
1515
1299
|
var _this$frontier$i = this.frontier[i],
|
|
1516
|
-
|
|
1517
|
-
|
|
1300
|
+
match = _this$frontier$i.match,
|
|
1301
|
+
type = _this$frontier$i.type;
|
|
1518
1302
|
var dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));
|
|
1519
1303
|
var fit = contentAfterFits($to, i, type, match, dropInner);
|
|
1520
1304
|
if (!fit) continue;
|
|
1521
|
-
|
|
1522
1305
|
for (var d = i - 1; d >= 0; d--) {
|
|
1523
1306
|
var _this$frontier$d = this.frontier[d],
|
|
1524
|
-
|
|
1525
|
-
|
|
1307
|
+
_match = _this$frontier$d.match,
|
|
1308
|
+
_type = _this$frontier$d.type;
|
|
1526
1309
|
var matches = contentAfterFits($to, d, _type, _match, true);
|
|
1527
1310
|
if (!matches || matches.childCount) continue scan;
|
|
1528
1311
|
}
|
|
1529
|
-
|
|
1530
1312
|
return {
|
|
1531
1313
|
depth: i,
|
|
1532
1314
|
fit: fit,
|
|
@@ -1539,20 +1321,14 @@ var Fitter = function () {
|
|
|
1539
1321
|
value: function close($to) {
|
|
1540
1322
|
var close = this.findCloseLevel($to);
|
|
1541
1323
|
if (!close) return null;
|
|
1542
|
-
|
|
1543
|
-
while (this.depth > close.depth) {
|
|
1544
|
-
this.closeFrontierNode();
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1324
|
+
while (this.depth > close.depth) this.closeFrontierNode();
|
|
1547
1325
|
if (close.fit.childCount) this.placed = addToFragment(this.placed, close.depth, close.fit);
|
|
1548
1326
|
$to = close.move;
|
|
1549
|
-
|
|
1550
1327
|
for (var d = close.depth + 1; d <= $to.depth; d++) {
|
|
1551
1328
|
var node = $to.node(d),
|
|
1552
|
-
|
|
1329
|
+
add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));
|
|
1553
1330
|
this.openFrontierNode(node.type, node.attrs, add);
|
|
1554
1331
|
}
|
|
1555
|
-
|
|
1556
1332
|
return $to;
|
|
1557
1333
|
}
|
|
1558
1334
|
}, {
|
|
@@ -1576,210 +1352,161 @@ var Fitter = function () {
|
|
|
1576
1352
|
if (add.childCount) this.placed = addToFragment(this.placed, this.frontier.length, add);
|
|
1577
1353
|
}
|
|
1578
1354
|
}]);
|
|
1579
|
-
|
|
1580
1355
|
return Fitter;
|
|
1581
1356
|
}();
|
|
1582
|
-
|
|
1583
1357
|
function dropFromFragment(fragment, depth, count) {
|
|
1584
1358
|
if (depth == 0) return fragment.cutByIndex(count, fragment.childCount);
|
|
1585
1359
|
return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));
|
|
1586
1360
|
}
|
|
1587
|
-
|
|
1588
1361
|
function addToFragment(fragment, depth, content) {
|
|
1589
1362
|
if (depth == 0) return fragment.append(content);
|
|
1590
1363
|
return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));
|
|
1591
1364
|
}
|
|
1592
|
-
|
|
1593
1365
|
function contentAt(fragment, depth) {
|
|
1594
|
-
for (var i = 0; i < depth; i++)
|
|
1595
|
-
fragment = fragment.firstChild.content;
|
|
1596
|
-
}
|
|
1597
|
-
|
|
1366
|
+
for (var i = 0; i < depth; i++) fragment = fragment.firstChild.content;
|
|
1598
1367
|
return fragment;
|
|
1599
1368
|
}
|
|
1600
|
-
|
|
1601
1369
|
function closeNodeStart(node, openStart, openEnd) {
|
|
1602
1370
|
if (openStart <= 0) return node;
|
|
1603
1371
|
var frag = node.content;
|
|
1604
1372
|
if (openStart > 1) frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));
|
|
1605
|
-
|
|
1606
1373
|
if (openStart > 0) {
|
|
1607
1374
|
frag = node.type.contentMatch.fillBefore(frag).append(frag);
|
|
1608
1375
|
if (openEnd <= 0) frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(prosemirrorModel.Fragment.empty, true));
|
|
1609
1376
|
}
|
|
1610
|
-
|
|
1611
1377
|
return node.copy(frag);
|
|
1612
1378
|
}
|
|
1613
|
-
|
|
1614
1379
|
function contentAfterFits($to, depth, type, match, open) {
|
|
1615
1380
|
var node = $to.node(depth),
|
|
1616
|
-
|
|
1381
|
+
index = open ? $to.indexAfter(depth) : $to.index(depth);
|
|
1617
1382
|
if (index == node.childCount && !type.compatibleContent(node.type)) return null;
|
|
1618
1383
|
var fit = match.fillBefore(node.content, true, index);
|
|
1619
1384
|
return fit && !invalidMarks(type, node.content, index) ? fit : null;
|
|
1620
1385
|
}
|
|
1621
|
-
|
|
1622
1386
|
function invalidMarks(type, fragment, start) {
|
|
1623
|
-
for (var i = start; i < fragment.childCount; i++)
|
|
1624
|
-
if (!type.allowsMarks(fragment.child(i).marks)) return true;
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1387
|
+
for (var i = start; i < fragment.childCount; i++) if (!type.allowsMarks(fragment.child(i).marks)) return true;
|
|
1627
1388
|
return false;
|
|
1628
1389
|
}
|
|
1629
|
-
|
|
1630
1390
|
function definesContent(type) {
|
|
1631
1391
|
return type.spec.defining || type.spec.definingForContent;
|
|
1632
1392
|
}
|
|
1633
|
-
|
|
1634
1393
|
function _replaceRange(tr, from, to, slice) {
|
|
1635
1394
|
if (!slice.size) return tr.deleteRange(from, to);
|
|
1636
1395
|
var $from = tr.doc.resolve(from),
|
|
1637
|
-
|
|
1396
|
+
$to = tr.doc.resolve(to);
|
|
1638
1397
|
if (fitsTrivially($from, $to, slice)) return tr.step(new ReplaceStep(from, to, slice));
|
|
1639
1398
|
var targetDepths = coveredDepths($from, tr.doc.resolve(to));
|
|
1640
1399
|
if (targetDepths[targetDepths.length - 1] == 0) targetDepths.pop();
|
|
1641
1400
|
var preferredTarget = -($from.depth + 1);
|
|
1642
1401
|
targetDepths.unshift(preferredTarget);
|
|
1643
|
-
|
|
1644
1402
|
for (var d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {
|
|
1645
1403
|
var spec = $from.node(d).type.spec;
|
|
1646
1404
|
if (spec.defining || spec.definingAsContext || spec.isolating) break;
|
|
1647
1405
|
if (targetDepths.indexOf(d) > -1) preferredTarget = d;else if ($from.before(d) == pos) targetDepths.splice(1, 0, -d);
|
|
1648
1406
|
}
|
|
1649
|
-
|
|
1650
1407
|
var preferredTargetIndex = targetDepths.indexOf(preferredTarget);
|
|
1651
1408
|
var leftNodes = [],
|
|
1652
|
-
|
|
1653
|
-
|
|
1409
|
+
preferredDepth = slice.openStart;
|
|
1654
1410
|
for (var content = slice.content, i = 0;; i++) {
|
|
1655
1411
|
var node = content.firstChild;
|
|
1656
1412
|
leftNodes.push(node);
|
|
1657
1413
|
if (i == slice.openStart) break;
|
|
1658
1414
|
content = node.content;
|
|
1659
1415
|
}
|
|
1660
|
-
|
|
1661
1416
|
for (var _d3 = preferredDepth - 1; _d3 >= 0; _d3--) {
|
|
1662
1417
|
var leftNode = leftNodes[_d3],
|
|
1663
|
-
|
|
1418
|
+
def = definesContent(leftNode.type);
|
|
1664
1419
|
if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1))) preferredDepth = _d3;else if (def || !leftNode.type.isTextblock) break;
|
|
1665
1420
|
}
|
|
1666
|
-
|
|
1667
1421
|
for (var j = slice.openStart; j >= 0; j--) {
|
|
1668
1422
|
var openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);
|
|
1669
1423
|
var insert = leftNodes[openDepth];
|
|
1670
1424
|
if (!insert) continue;
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
expand = true;
|
|
1675
|
-
|
|
1425
|
+
for (var _i5 = 0; _i5 < targetDepths.length; _i5++) {
|
|
1426
|
+
var targetDepth = targetDepths[(_i5 + preferredTargetIndex) % targetDepths.length],
|
|
1427
|
+
expand = true;
|
|
1676
1428
|
if (targetDepth < 0) {
|
|
1677
1429
|
expand = false;
|
|
1678
1430
|
targetDepth = -targetDepth;
|
|
1679
1431
|
}
|
|
1680
|
-
|
|
1681
1432
|
var parent = $from.node(targetDepth - 1),
|
|
1682
|
-
|
|
1433
|
+
index = $from.index(targetDepth - 1);
|
|
1683
1434
|
if (parent.canReplaceWith(index, index, insert.type, insert.marks)) return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new prosemirrorModel.Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));
|
|
1684
1435
|
}
|
|
1685
1436
|
}
|
|
1686
|
-
|
|
1687
1437
|
var startSteps = tr.steps.length;
|
|
1688
|
-
|
|
1689
|
-
for (var _i5 = targetDepths.length - 1; _i5 >= 0; _i5--) {
|
|
1438
|
+
for (var _i6 = targetDepths.length - 1; _i6 >= 0; _i6--) {
|
|
1690
1439
|
tr.replace(from, to, slice);
|
|
1691
1440
|
if (tr.steps.length > startSteps) break;
|
|
1692
|
-
var depth = targetDepths[
|
|
1441
|
+
var depth = targetDepths[_i6];
|
|
1693
1442
|
if (depth < 0) continue;
|
|
1694
1443
|
from = $from.before(depth);
|
|
1695
1444
|
to = $to.after(depth);
|
|
1696
1445
|
}
|
|
1697
1446
|
}
|
|
1698
|
-
|
|
1699
1447
|
function closeFragment(fragment, depth, oldOpen, newOpen, parent) {
|
|
1700
1448
|
if (depth < oldOpen) {
|
|
1701
1449
|
var first = fragment.firstChild;
|
|
1702
1450
|
fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));
|
|
1703
1451
|
}
|
|
1704
|
-
|
|
1705
1452
|
if (depth > newOpen) {
|
|
1706
1453
|
var match = parent.contentMatchAt(0);
|
|
1707
1454
|
var start = match.fillBefore(fragment).append(fragment);
|
|
1708
1455
|
fragment = start.append(match.matchFragment(start).fillBefore(prosemirrorModel.Fragment.empty, true));
|
|
1709
1456
|
}
|
|
1710
|
-
|
|
1711
1457
|
return fragment;
|
|
1712
1458
|
}
|
|
1713
|
-
|
|
1714
1459
|
function _replaceRangeWith(tr, from, to, node) {
|
|
1715
1460
|
if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {
|
|
1716
1461
|
var point = insertPoint(tr.doc, from, node.type);
|
|
1717
1462
|
if (point != null) from = to = point;
|
|
1718
1463
|
}
|
|
1719
|
-
|
|
1720
1464
|
tr.replaceRange(from, to, new prosemirrorModel.Slice(prosemirrorModel.Fragment.from(node), 0, 0));
|
|
1721
1465
|
}
|
|
1722
|
-
|
|
1723
1466
|
function _deleteRange(tr, from, to) {
|
|
1724
1467
|
var $from = tr.doc.resolve(from),
|
|
1725
|
-
|
|
1468
|
+
$to = tr.doc.resolve(to);
|
|
1726
1469
|
var covered = coveredDepths($from, $to);
|
|
1727
|
-
|
|
1728
1470
|
for (var i = 0; i < covered.length; i++) {
|
|
1729
1471
|
var depth = covered[i],
|
|
1730
|
-
|
|
1472
|
+
last = i == covered.length - 1;
|
|
1731
1473
|
if (last && depth == 0 || $from.node(depth).type.contentMatch.validEnd) return tr["delete"]($from.start(depth), $to.end(depth));
|
|
1732
1474
|
if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1)))) return tr["delete"]($from.before(depth), $to.after(depth));
|
|
1733
1475
|
}
|
|
1734
|
-
|
|
1735
1476
|
for (var d = 1; d <= $from.depth && d <= $to.depth; d++) {
|
|
1736
1477
|
if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d) return tr["delete"]($from.before(d), to);
|
|
1737
1478
|
}
|
|
1738
|
-
|
|
1739
1479
|
tr["delete"](from, to);
|
|
1740
1480
|
}
|
|
1741
|
-
|
|
1742
1481
|
function coveredDepths($from, $to) {
|
|
1743
1482
|
var result = [],
|
|
1744
|
-
|
|
1745
|
-
|
|
1483
|
+
minDepth = Math.min($from.depth, $to.depth);
|
|
1746
1484
|
for (var d = minDepth; d >= 0; d--) {
|
|
1747
1485
|
var start = $from.start(d);
|
|
1748
1486
|
if (start < $from.pos - ($from.depth - d) || $to.end(d) > $to.pos + ($to.depth - d) || $from.node(d).type.spec.isolating || $to.node(d).type.spec.isolating) break;
|
|
1749
1487
|
if (start == $to.start(d) || d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent && d && $to.start(d - 1) == start - 1) result.push(d);
|
|
1750
1488
|
}
|
|
1751
|
-
|
|
1752
1489
|
return result;
|
|
1753
1490
|
}
|
|
1754
|
-
|
|
1755
1491
|
var AttrStep = function (_Step7) {
|
|
1756
1492
|
_inherits(AttrStep, _Step7);
|
|
1757
|
-
|
|
1758
1493
|
var _super7 = _createSuper(AttrStep);
|
|
1759
|
-
|
|
1760
1494
|
function AttrStep(pos, attr, value) {
|
|
1761
1495
|
var _this9;
|
|
1762
|
-
|
|
1763
1496
|
_classCallCheck(this, AttrStep);
|
|
1764
|
-
|
|
1765
1497
|
_this9 = _super7.call(this);
|
|
1766
1498
|
_this9.pos = pos;
|
|
1767
1499
|
_this9.attr = attr;
|
|
1768
1500
|
_this9.value = value;
|
|
1769
1501
|
return _this9;
|
|
1770
1502
|
}
|
|
1771
|
-
|
|
1772
1503
|
_createClass(AttrStep, [{
|
|
1773
1504
|
key: "apply",
|
|
1774
1505
|
value: function apply(doc) {
|
|
1775
1506
|
var node = doc.nodeAt(this.pos);
|
|
1776
1507
|
if (!node) return StepResult.fail("No node at attribute step's position");
|
|
1777
1508
|
var attrs = Object.create(null);
|
|
1778
|
-
|
|
1779
|
-
for (var name in node.attrs) {
|
|
1780
|
-
attrs[name] = node.attrs[name];
|
|
1781
|
-
}
|
|
1782
|
-
|
|
1509
|
+
for (var name in node.attrs) attrs[name] = node.attrs[name];
|
|
1783
1510
|
attrs[this.attr] = this.value;
|
|
1784
1511
|
var updated = node.type.create(attrs, null, node.marks);
|
|
1785
1512
|
return StepResult.fromReplace(doc, this.pos, this.pos + 1, new prosemirrorModel.Slice(prosemirrorModel.Fragment.from(updated), 0, node.isLeaf ? 0 : 1));
|
|
@@ -1817,46 +1544,88 @@ var AttrStep = function (_Step7) {
|
|
|
1817
1544
|
return new AttrStep(json.pos, json.attr, json.value);
|
|
1818
1545
|
}
|
|
1819
1546
|
}]);
|
|
1820
|
-
|
|
1821
1547
|
return AttrStep;
|
|
1822
1548
|
}(Step);
|
|
1823
|
-
|
|
1824
1549
|
Step.jsonID("attr", AttrStep);
|
|
1825
|
-
|
|
1550
|
+
var DocAttrStep = function (_Step8) {
|
|
1551
|
+
_inherits(DocAttrStep, _Step8);
|
|
1552
|
+
var _super8 = _createSuper(DocAttrStep);
|
|
1553
|
+
function DocAttrStep(attr, value) {
|
|
1554
|
+
var _this10;
|
|
1555
|
+
_classCallCheck(this, DocAttrStep);
|
|
1556
|
+
_this10 = _super8.call(this);
|
|
1557
|
+
_this10.attr = attr;
|
|
1558
|
+
_this10.value = value;
|
|
1559
|
+
return _this10;
|
|
1560
|
+
}
|
|
1561
|
+
_createClass(DocAttrStep, [{
|
|
1562
|
+
key: "apply",
|
|
1563
|
+
value: function apply(doc) {
|
|
1564
|
+
var attrs = Object.create(null);
|
|
1565
|
+
for (var name in doc.attrs) attrs[name] = doc.attrs[name];
|
|
1566
|
+
attrs[this.attr] = this.value;
|
|
1567
|
+
var updated = doc.type.create(attrs, doc.content, doc.marks);
|
|
1568
|
+
return StepResult.ok(updated);
|
|
1569
|
+
}
|
|
1570
|
+
}, {
|
|
1571
|
+
key: "getMap",
|
|
1572
|
+
value: function getMap() {
|
|
1573
|
+
return StepMap.empty;
|
|
1574
|
+
}
|
|
1575
|
+
}, {
|
|
1576
|
+
key: "invert",
|
|
1577
|
+
value: function invert(doc) {
|
|
1578
|
+
return new DocAttrStep(this.attr, doc.attrs[this.attr]);
|
|
1579
|
+
}
|
|
1580
|
+
}, {
|
|
1581
|
+
key: "map",
|
|
1582
|
+
value: function map(mapping) {
|
|
1583
|
+
return this;
|
|
1584
|
+
}
|
|
1585
|
+
}, {
|
|
1586
|
+
key: "toJSON",
|
|
1587
|
+
value: function toJSON() {
|
|
1588
|
+
return {
|
|
1589
|
+
stepType: "docAttr",
|
|
1590
|
+
attr: this.attr,
|
|
1591
|
+
value: this.value
|
|
1592
|
+
};
|
|
1593
|
+
}
|
|
1594
|
+
}], [{
|
|
1595
|
+
key: "fromJSON",
|
|
1596
|
+
value: function fromJSON(schema, json) {
|
|
1597
|
+
if (typeof json.attr != "string") throw new RangeError("Invalid input for DocAttrStep.fromJSON");
|
|
1598
|
+
return new DocAttrStep(json.attr, json.value);
|
|
1599
|
+
}
|
|
1600
|
+
}]);
|
|
1601
|
+
return DocAttrStep;
|
|
1602
|
+
}(Step);
|
|
1603
|
+
Step.jsonID("docAttr", DocAttrStep);
|
|
1826
1604
|
exports.TransformError = function (_Error) {
|
|
1827
1605
|
_inherits(TransformError, _Error);
|
|
1828
|
-
|
|
1829
|
-
var _super8 = _createSuper(TransformError);
|
|
1830
|
-
|
|
1606
|
+
var _super9 = _createSuper(TransformError);
|
|
1831
1607
|
function TransformError() {
|
|
1832
1608
|
_classCallCheck(this, TransformError);
|
|
1833
|
-
|
|
1834
|
-
return _super8.apply(this, arguments);
|
|
1609
|
+
return _super9.apply(this, arguments);
|
|
1835
1610
|
}
|
|
1836
|
-
|
|
1837
1611
|
return _createClass(TransformError);
|
|
1838
1612
|
}(_wrapNativeSuper(Error));
|
|
1839
|
-
|
|
1840
1613
|
exports.TransformError = function TransformError(message) {
|
|
1841
1614
|
var err = Error.call(this, message);
|
|
1842
1615
|
err.__proto__ = TransformError.prototype;
|
|
1843
1616
|
return err;
|
|
1844
1617
|
};
|
|
1845
|
-
|
|
1846
1618
|
exports.TransformError.prototype = Object.create(Error.prototype);
|
|
1847
1619
|
exports.TransformError.prototype.constructor = exports.TransformError;
|
|
1848
1620
|
exports.TransformError.prototype.name = "TransformError";
|
|
1849
|
-
|
|
1850
1621
|
var Transform = function () {
|
|
1851
1622
|
function Transform(doc) {
|
|
1852
1623
|
_classCallCheck(this, Transform);
|
|
1853
|
-
|
|
1854
1624
|
this.doc = doc;
|
|
1855
1625
|
this.steps = [];
|
|
1856
1626
|
this.docs = [];
|
|
1857
1627
|
this.mapping = new Mapping();
|
|
1858
1628
|
}
|
|
1859
|
-
|
|
1860
1629
|
_createClass(Transform, [{
|
|
1861
1630
|
key: "before",
|
|
1862
1631
|
get: function get() {
|
|
@@ -1917,44 +1686,37 @@ var Transform = function () {
|
|
|
1917
1686
|
key: "replaceRange",
|
|
1918
1687
|
value: function replaceRange(from, to, slice) {
|
|
1919
1688
|
_replaceRange(this, from, to, slice);
|
|
1920
|
-
|
|
1921
1689
|
return this;
|
|
1922
1690
|
}
|
|
1923
1691
|
}, {
|
|
1924
1692
|
key: "replaceRangeWith",
|
|
1925
1693
|
value: function replaceRangeWith(from, to, node) {
|
|
1926
1694
|
_replaceRangeWith(this, from, to, node);
|
|
1927
|
-
|
|
1928
1695
|
return this;
|
|
1929
1696
|
}
|
|
1930
1697
|
}, {
|
|
1931
1698
|
key: "deleteRange",
|
|
1932
1699
|
value: function deleteRange(from, to) {
|
|
1933
1700
|
_deleteRange(this, from, to);
|
|
1934
|
-
|
|
1935
1701
|
return this;
|
|
1936
1702
|
}
|
|
1937
1703
|
}, {
|
|
1938
1704
|
key: "lift",
|
|
1939
1705
|
value: function lift(range, target) {
|
|
1940
1706
|
_lift(this, range, target);
|
|
1941
|
-
|
|
1942
1707
|
return this;
|
|
1943
1708
|
}
|
|
1944
1709
|
}, {
|
|
1945
1710
|
key: "join",
|
|
1946
1711
|
value: function join(pos) {
|
|
1947
1712
|
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
1948
|
-
|
|
1949
1713
|
_join(this, pos, depth);
|
|
1950
|
-
|
|
1951
1714
|
return this;
|
|
1952
1715
|
}
|
|
1953
1716
|
}, {
|
|
1954
1717
|
key: "wrap",
|
|
1955
1718
|
value: function wrap(range, wrappers) {
|
|
1956
1719
|
_wrap2(this, range, wrappers);
|
|
1957
|
-
|
|
1958
1720
|
return this;
|
|
1959
1721
|
}
|
|
1960
1722
|
}, {
|
|
@@ -1963,9 +1725,7 @@ var Transform = function () {
|
|
|
1963
1725
|
var to = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : from;
|
|
1964
1726
|
var type = arguments.length > 2 ? arguments[2] : undefined;
|
|
1965
1727
|
var attrs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
1966
|
-
|
|
1967
1728
|
_setBlockType(this, from, to, type, attrs);
|
|
1968
|
-
|
|
1969
1729
|
return this;
|
|
1970
1730
|
}
|
|
1971
1731
|
}, {
|
|
@@ -1973,9 +1733,7 @@ var Transform = function () {
|
|
|
1973
1733
|
value: function setNodeMarkup(pos, type) {
|
|
1974
1734
|
var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1975
1735
|
var marks = arguments.length > 3 ? arguments[3] : undefined;
|
|
1976
|
-
|
|
1977
1736
|
_setNodeMarkup(this, pos, type, attrs, marks);
|
|
1978
|
-
|
|
1979
1737
|
return this;
|
|
1980
1738
|
}
|
|
1981
1739
|
}, {
|
|
@@ -1984,6 +1742,12 @@ var Transform = function () {
|
|
|
1984
1742
|
this.step(new AttrStep(pos, attr, value));
|
|
1985
1743
|
return this;
|
|
1986
1744
|
}
|
|
1745
|
+
}, {
|
|
1746
|
+
key: "setDocAttribute",
|
|
1747
|
+
value: function setDocAttribute(attr, value) {
|
|
1748
|
+
this.step(new DocAttrStep(attr, value));
|
|
1749
|
+
return this;
|
|
1750
|
+
}
|
|
1987
1751
|
}, {
|
|
1988
1752
|
key: "addNodeMark",
|
|
1989
1753
|
value: function addNodeMark(pos, mark) {
|
|
@@ -1999,7 +1763,6 @@ var Transform = function () {
|
|
|
1999
1763
|
mark = mark.isInSet(node.marks);
|
|
2000
1764
|
if (!mark) return this;
|
|
2001
1765
|
}
|
|
2002
|
-
|
|
2003
1766
|
this.step(new RemoveNodeMarkStep(pos, mark));
|
|
2004
1767
|
return this;
|
|
2005
1768
|
}
|
|
@@ -2008,40 +1771,34 @@ var Transform = function () {
|
|
|
2008
1771
|
value: function split(pos) {
|
|
2009
1772
|
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
2010
1773
|
var typesAfter = arguments.length > 2 ? arguments[2] : undefined;
|
|
2011
|
-
|
|
2012
1774
|
_split(this, pos, depth, typesAfter);
|
|
2013
|
-
|
|
2014
1775
|
return this;
|
|
2015
1776
|
}
|
|
2016
1777
|
}, {
|
|
2017
1778
|
key: "addMark",
|
|
2018
1779
|
value: function addMark(from, to, mark) {
|
|
2019
1780
|
_addMark(this, from, to, mark);
|
|
2020
|
-
|
|
2021
1781
|
return this;
|
|
2022
1782
|
}
|
|
2023
1783
|
}, {
|
|
2024
1784
|
key: "removeMark",
|
|
2025
1785
|
value: function removeMark(from, to, mark) {
|
|
2026
1786
|
_removeMark(this, from, to, mark);
|
|
2027
|
-
|
|
2028
1787
|
return this;
|
|
2029
1788
|
}
|
|
2030
1789
|
}, {
|
|
2031
1790
|
key: "clearIncompatible",
|
|
2032
1791
|
value: function clearIncompatible(pos, parentType, match) {
|
|
2033
1792
|
_clearIncompatible(this, pos, parentType, match);
|
|
2034
|
-
|
|
2035
1793
|
return this;
|
|
2036
1794
|
}
|
|
2037
1795
|
}]);
|
|
2038
|
-
|
|
2039
1796
|
return Transform;
|
|
2040
1797
|
}();
|
|
2041
|
-
|
|
2042
1798
|
exports.AddMarkStep = AddMarkStep;
|
|
2043
1799
|
exports.AddNodeMarkStep = AddNodeMarkStep;
|
|
2044
1800
|
exports.AttrStep = AttrStep;
|
|
1801
|
+
exports.DocAttrStep = DocAttrStep;
|
|
2045
1802
|
exports.MapResult = MapResult;
|
|
2046
1803
|
exports.Mapping = Mapping;
|
|
2047
1804
|
exports.RemoveMarkStep = RemoveMarkStep;
|