"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * GraphemerIterator * * Takes a string and a "BreakHandler" method during initialisation * and creates an iterable object that returns individual graphemes. * * @param str {string} * @return GraphemerIterator */ class GraphemerIterator { constructor(str, nextBreak) { this._index = 0; this._str = str; this._nextBreak = nextBreak; } [Symbol.iterator]() { return this; } next() { let brk; if ((brk = this._nextBreak(this._str, this._index)) < this._str.length) { const value = this._str.slice(this._index, brk); this._index = brk; return { value: value, done: false }; } if (this._index < this._str.length) { const value = this._str.slice(this._index); this._index = this._str.length; return { value: value, done: false }; } return { value: undefined, done: true }; } } exports.default = GraphemerIterator;