{
  "version": 3,
  "sources": ["../../src/quill-delta/OpIterator.ts"],
  "sourcesContent": ["/**\n * Internal dependencies\n */\nimport Op from './Op';\n\nexport default class Iterator {\n\tops: Op[];\n\tindex: number;\n\toffset: number;\n\n\tconstructor( ops: Op[] ) {\n\t\tthis.ops = ops;\n\t\tthis.index = 0;\n\t\tthis.offset = 0;\n\t}\n\n\thasNext(): boolean {\n\t\treturn this.peekLength() < Infinity;\n\t}\n\n\tnext( length?: number ): Op {\n\t\tif ( ! length ) {\n\t\t\tlength = Infinity;\n\t\t}\n\t\tconst nextOp = this.ops[ this.index ];\n\t\tif ( nextOp ) {\n\t\t\tconst offset = this.offset;\n\t\t\tconst opLength = Op.length( nextOp );\n\t\t\tif ( length >= opLength - offset ) {\n\t\t\t\tlength = opLength - offset;\n\t\t\t\tthis.index += 1;\n\t\t\t\tthis.offset = 0;\n\t\t\t} else {\n\t\t\t\tthis.offset += length;\n\t\t\t}\n\t\t\tif ( typeof nextOp.delete === 'number' ) {\n\t\t\t\treturn { delete: length };\n\t\t\t}\n\t\t\tconst retOp: Op = {};\n\t\t\tif ( nextOp.attributes ) {\n\t\t\t\tretOp.attributes = nextOp.attributes;\n\t\t\t}\n\t\t\tif ( typeof nextOp.retain === 'number' ) {\n\t\t\t\tretOp.retain = length;\n\t\t\t} else if (\n\t\t\t\ttypeof nextOp.retain === 'object' &&\n\t\t\t\tnextOp.retain !== null\n\t\t\t) {\n\t\t\t\t// offset should === 0, length should === 1\n\t\t\t\tretOp.retain = nextOp.retain;\n\t\t\t} else if ( typeof nextOp.insert === 'string' ) {\n\t\t\t\tretOp.insert = nextOp.insert.substr( offset, length );\n\t\t\t} else {\n\t\t\t\t// offset should === 0, length should === 1\n\t\t\t\tretOp.insert = nextOp.insert;\n\t\t\t}\n\t\t\treturn retOp;\n\t\t}\n\t\treturn { retain: Infinity };\n\t}\n\n\tpeek(): Op {\n\t\treturn this.ops[ this.index ];\n\t}\n\n\tpeekLength(): number {\n\t\tif ( this.ops[ this.index ] ) {\n\t\t\t// Should never return 0 if our index is being managed correctly\n\t\t\treturn Op.length( this.ops[ this.index ] ) - this.offset;\n\t\t}\n\t\treturn Infinity;\n\t}\n\n\tpeekType(): string {\n\t\tconst op = this.ops[ this.index ];\n\t\tif ( op ) {\n\t\t\tif ( typeof op.delete === 'number' ) {\n\t\t\t\treturn 'delete';\n\t\t\t} else if (\n\t\t\t\ttypeof op.retain === 'number' ||\n\t\t\t\t( typeof op.retain === 'object' && op.retain !== null )\n\t\t\t) {\n\t\t\t\treturn 'retain';\n\t\t\t}\n\t\t\treturn 'insert';\n\t\t}\n\t\treturn 'retain';\n\t}\n\n\trest(): Op[] {\n\t\tif ( ! this.hasNext() ) {\n\t\t\treturn [];\n\t\t} else if ( this.offset === 0 ) {\n\t\t\treturn this.ops.slice( this.index );\n\t\t}\n\t\tconst offset = this.offset;\n\t\tconst index = this.index;\n\t\tconst next = this.next();\n\t\tconst rest = this.ops.slice( this.index );\n\t\tthis.offset = offset;\n\t\tthis.index = index;\n\t\treturn [ next ].concat( rest );\n\t}\n}\n"],
  "mappings": ";AAGA,OAAO,QAAQ;AAEf,IAAqB,WAArB,MAA8B;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAa,KAAY;AACxB,SAAK,MAAM;AACX,SAAK,QAAQ;AACb,SAAK,SAAS;AAAA,EACf;AAAA,EAEA,UAAmB;AAClB,WAAO,KAAK,WAAW,IAAI;AAAA,EAC5B;AAAA,EAEA,KAAM,QAAsB;AAC3B,QAAK,CAAE,QAAS;AACf,eAAS;AAAA,IACV;AACA,UAAM,SAAS,KAAK,IAAK,KAAK,KAAM;AACpC,QAAK,QAAS;AACb,YAAM,SAAS,KAAK;AACpB,YAAM,WAAW,GAAG,OAAQ,MAAO;AACnC,UAAK,UAAU,WAAW,QAAS;AAClC,iBAAS,WAAW;AACpB,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MACf,OAAO;AACN,aAAK,UAAU;AAAA,MAChB;AACA,UAAK,OAAO,OAAO,WAAW,UAAW;AACxC,eAAO,EAAE,QAAQ,OAAO;AAAA,MACzB;AACA,YAAM,QAAY,CAAC;AACnB,UAAK,OAAO,YAAa;AACxB,cAAM,aAAa,OAAO;AAAA,MAC3B;AACA,UAAK,OAAO,OAAO,WAAW,UAAW;AACxC,cAAM,SAAS;AAAA,MAChB,WACC,OAAO,OAAO,WAAW,YACzB,OAAO,WAAW,MACjB;AAED,cAAM,SAAS,OAAO;AAAA,MACvB,WAAY,OAAO,OAAO,WAAW,UAAW;AAC/C,cAAM,SAAS,OAAO,OAAO,OAAQ,QAAQ,MAAO;AAAA,MACrD,OAAO;AAEN,cAAM,SAAS,OAAO;AAAA,MACvB;AACA,aAAO;AAAA,IACR;AACA,WAAO,EAAE,QAAQ,SAAS;AAAA,EAC3B;AAAA,EAEA,OAAW;AACV,WAAO,KAAK,IAAK,KAAK,KAAM;AAAA,EAC7B;AAAA,EAEA,aAAqB;AACpB,QAAK,KAAK,IAAK,KAAK,KAAM,GAAI;AAE7B,aAAO,GAAG,OAAQ,KAAK,IAAK,KAAK,KAAM,CAAE,IAAI,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,WAAmB;AAClB,UAAM,KAAK,KAAK,IAAK,KAAK,KAAM;AAChC,QAAK,IAAK;AACT,UAAK,OAAO,GAAG,WAAW,UAAW;AACpC,eAAO;AAAA,MACR,WACC,OAAO,GAAG,WAAW,YACnB,OAAO,GAAG,WAAW,YAAY,GAAG,WAAW,MAChD;AACD,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR;AAAA,EAEA,OAAa;AACZ,QAAK,CAAE,KAAK,QAAQ,GAAI;AACvB,aAAO,CAAC;AAAA,IACT,WAAY,KAAK,WAAW,GAAI;AAC/B,aAAO,KAAK,IAAI,MAAO,KAAK,KAAM;AAAA,IACnC;AACA,UAAM,SAAS,KAAK;AACpB,UAAM,QAAQ,KAAK;AACnB,UAAM,OAAO,KAAK,KAAK;AACvB,UAAM,OAAO,KAAK,IAAI,MAAO,KAAK,KAAM;AACxC,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,WAAO,CAAE,IAAK,EAAE,OAAQ,IAAK;AAAA,EAC9B;AACD;",
  "names": []
}
