export default { minimum() { return this._spec.minimum(); }, maximum() { return this._spec.maximum(); }, greedy() { return (this._greedy.textValue === ''); }, hasSkip() { return this.minimum() === 0; }, hasLoop() { return this.maximum() === -1 || this.maximum() > 1; }, contentPosition() { var x = 0, y = 0; if (this.hasLoop()) { x = 10; } if (this.hasSkip()) { y = 10; x = 15; } return Snap.matrix().translate(x, y); }, label() { var maximum = this.maximum(), minimum = this.minimum(), formatTimes = times => { if (times === 1) { return 'once'; } else { return `${times} times`; } }; if (minimum >= 2 && maximum === -1) { return `${minimum - 1}+ times`; } else if (minimum <= 1 && maximum >= 2) { return `at most ${formatTimes(maximum - 1)}`; } else if (minimum >= 2 && maximum >= 2) { if (minimum === maximum) { return formatTimes(minimum - 1); } else { return `${minimum - 1}...${formatTimes(maximum - 1)}`; } } } }