UNPKG

fps-now

Version:

FPS meter for evergreen browsers

97 lines (69 loc) 3.01 kB
"use strict"; var _rafLoop = _interopRequireDefault(require("raf-loop")); var _eventemitter = _interopRequireDefault(require("eventemitter3")); var _meter = require("./meter"); var _dom = require("./dom"); var _utils = require("./utils"); var _temp; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var defaultOptions = { x: 64, y: 32, shape: [64, 32], visual: true, averageFPS: false }; module.exports = (_temp = /*#__PURE__*/ function (_EventEmitter) { _inheritsLoose(FPS, _EventEmitter); FPS.of = function of(opts) { return new FPS(opts); }; function FPS(opts) { var _this; _this = _EventEmitter.call(this) || this; _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "start", function () { _this.engine.start(); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "stop", function () { _this.engine.stop(); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "update", function (fps) { _this.history.push(fps); _this.history.shift(); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "render", function () { _this.dom.title.innerHTML = _this.getFps().toFixed(1); (0, _dom.renderGraph)(_this.ctx, _this.shape, _this.history); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "getFps", function () { return _this.opts.averageFPS ? (0, _utils.average)(_this.history) : (0, _utils.tail)(_this.history); }); _this.opts = Object.assign(defaultOptions, opts); _this.shape = _this.opts.shape || [_this.opts.x, _this.opts.y]; _this.dom = _this.opts.visual && (0, _dom.createElements)('fps', _this.shape); _this.meter = new _meter.Meter({ every: 1, decay: 0.15 }); _this.meter.on('data', _this.update); _this.meter.once('data', _this.start); if (_this.opts.visual) { _this.ctx = _this.dom.canvas.getContext('2d'); } _this.history = new Array(_this.shape[0]).fill(0); _this.engine = (0, _rafLoop.default)(function () { _this.meter.tick(); if (_this.opts.visual) { _this.render(); } _this.emit('tick', _this.opts.averageFPS ? (0, _utils.average)(_this.history) : _this.history); }); return _this; } return FPS; }(_eventemitter.default), _temp);