first commit
This commit is contained in:
106
public/assets/quill-delta/dist/OpIterator.js
vendored
Normal file
106
public/assets/quill-delta/dist/OpIterator.js
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const Op_1 = require("./Op");
|
||||
class Iterator {
|
||||
constructor(ops) {
|
||||
this.ops = ops;
|
||||
this.index = 0;
|
||||
this.offset = 0;
|
||||
}
|
||||
hasNext() {
|
||||
return this.peekLength() < Infinity;
|
||||
}
|
||||
next(length) {
|
||||
if (!length) {
|
||||
length = Infinity;
|
||||
}
|
||||
const nextOp = this.ops[this.index];
|
||||
if (nextOp) {
|
||||
const offset = this.offset;
|
||||
const opLength = Op_1.default.length(nextOp);
|
||||
if (length >= opLength - offset) {
|
||||
length = opLength - offset;
|
||||
this.index += 1;
|
||||
this.offset = 0;
|
||||
}
|
||||
else {
|
||||
this.offset += length;
|
||||
}
|
||||
if (typeof nextOp.delete === 'number') {
|
||||
return { delete: length };
|
||||
}
|
||||
else {
|
||||
const retOp = {};
|
||||
if (nextOp.attributes) {
|
||||
retOp.attributes = nextOp.attributes;
|
||||
}
|
||||
if (typeof nextOp.retain === 'number') {
|
||||
retOp.retain = length;
|
||||
}
|
||||
else if (typeof nextOp.retain === 'object' &&
|
||||
nextOp.retain !== null) {
|
||||
// offset should === 0, length should === 1
|
||||
retOp.retain = nextOp.retain;
|
||||
}
|
||||
else if (typeof nextOp.insert === 'string') {
|
||||
retOp.insert = nextOp.insert.substr(offset, length);
|
||||
}
|
||||
else {
|
||||
// offset should === 0, length should === 1
|
||||
retOp.insert = nextOp.insert;
|
||||
}
|
||||
return retOp;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return { retain: Infinity };
|
||||
}
|
||||
}
|
||||
peek() {
|
||||
return this.ops[this.index];
|
||||
}
|
||||
peekLength() {
|
||||
if (this.ops[this.index]) {
|
||||
// Should never return 0 if our index is being managed correctly
|
||||
return Op_1.default.length(this.ops[this.index]) - this.offset;
|
||||
}
|
||||
else {
|
||||
return Infinity;
|
||||
}
|
||||
}
|
||||
peekType() {
|
||||
const op = this.ops[this.index];
|
||||
if (op) {
|
||||
if (typeof op.delete === 'number') {
|
||||
return 'delete';
|
||||
}
|
||||
else if (typeof op.retain === 'number' ||
|
||||
(typeof op.retain === 'object' && op.retain !== null)) {
|
||||
return 'retain';
|
||||
}
|
||||
else {
|
||||
return 'insert';
|
||||
}
|
||||
}
|
||||
return 'retain';
|
||||
}
|
||||
rest() {
|
||||
if (!this.hasNext()) {
|
||||
return [];
|
||||
}
|
||||
else if (this.offset === 0) {
|
||||
return this.ops.slice(this.index);
|
||||
}
|
||||
else {
|
||||
const offset = this.offset;
|
||||
const index = this.index;
|
||||
const next = this.next();
|
||||
const rest = this.ops.slice(this.index);
|
||||
this.offset = offset;
|
||||
this.index = index;
|
||||
return [next].concat(rest);
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.default = Iterator;
|
||||
//# sourceMappingURL=OpIterator.js.map
|
||||
Reference in New Issue
Block a user