import _concat from './_concat.js'; import _curry2 from './_curry2.js'; import _xfBase from './_xfBase.js'; var XAperture = /*#__PURE__*/function () { function XAperture(n, xf) { this.xf = xf; this.pos = 0; this.full = false; this.acc = new Array(n); } XAperture.prototype['@@transducer/init'] = _xfBase.init; XAperture.prototype['@@transducer/result'] = function (result) { this.acc = null; return this.xf['@@transducer/result'](result); }; XAperture.prototype['@@transducer/step'] = function (result, input) { this.store(input); return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; }; XAperture.prototype.store = function (input) { this.acc[this.pos] = input; this.pos += 1; if (this.pos === this.acc.length) { this.pos = 0; this.full = true; } }; XAperture.prototype.getCopy = function () { return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos)); }; return XAperture; }(); var _xaperture = /*#__PURE__*/_curry2(function _xaperture(n, xf) { return new XAperture(n, xf); }); export default _xaperture;